diff --git a/app/js/main.js b/app/js/main.js index a41ce06..e3d297d 100644 --- a/app/js/main.js +++ b/app/js/main.js @@ -123,3 +123,67 @@ $(document).ready(function() { } }); }); + + document.addEventListener('DOMContentLoaded', () => { + // Initialize Masonry + const masonryContainer = document.querySelector('[data-masonry]'); + const masonryInstance = new Masonry(masonryContainer, { + // horizontalOrder: false, // Maintains natural order in DOM + columnHeight: '.accordion', + // columnWidth: '.card', // Use the card width as the column reference + percentPosition: true + }); + + + // const sortContainer = document.getElementById('bookmarkSort'); + // Sortable.create(masonryContainer, { + // // animation: 150, // Smooth animations + // sort: true, + // ghostClass: 'bg-primary', + // onEnd: () => { + // // Trigger Masonry layout after drag-and-drop + // masonryInstance.layout(); + // } + // }); + + // Function to trigger layout after any accordion change + const updateMasonryLayout = () => masonryInstance.layout(); + + // Listen for all accordion collapse/expand events + masonryContainer.addEventListener('hidden.bs.collapse', updateMasonryLayout); + masonryContainer.addEventListener('shown.bs.collapse', updateMasonryLayout); + + // Observe dynamic content changes (e.g., rows added/removed) + const observer = new MutationObserver(() => { + updateMasonryLayout(); + }); + + // Observe all cards for changes in the DOM + document.querySelectorAll('.card').forEach((card) => { + observer.observe(card, { childList: true, subtree: true }); + }); + + jQuery(function($) { + var panelList = $('#bookmarkSort'); + + panelList.sortable({ + // Only make the .panel-heading child elements support dragging. + // Omit this to make then entire
  • ...
  • draggable. + handle: '.card', + update: function() { + console.error( 'update' ); + $('.bookmark-card', panelList).each(function(index, elem) { + var $listItem = $(elem), + + newIndex = $listItem.index(); + masonryInstance.layout(); + console.error( $listItem ); + console.error( index ); + console.error( newIndex ); + + // Persist the new indices. + }); + } + }); + }); +}); \ No newline at end of file diff --git a/app/plugins/bookmarks/controllers/api/bookmark_folders.php b/app/plugins/bookmarks/controllers/api/bookmark_folders.php index 62a88f8..37dfa27 100644 --- a/app/plugins/bookmarks/controllers/api/bookmark_folders.php +++ b/app/plugins/bookmarks/controllers/api/bookmark_folders.php @@ -47,8 +47,8 @@ class BookmarkFolders extends ApiController { $responseType = 'error'; $response = 'There was an error creating your folder.'; } else { - $responseType = 'success'; - $response = 'success'; + $responseType = 'id'; + $response = $result; } Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]); } @@ -68,4 +68,3 @@ class BookmarkFolders extends ApiController { Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]); } } - diff --git a/app/plugins/bookmarks/controllers/bookmarks.php b/app/plugins/bookmarks/controllers/bookmarks.php index 3c1e1c5..490ba73 100644 --- a/app/plugins/bookmarks/controllers/bookmarks.php +++ b/app/plugins/bookmarks/controllers/bookmarks.php @@ -70,12 +70,11 @@ class Bookmarks extends Controller { $folderObject->title = $folder->title; $folderObject->color = $folder->color; $folderObject->bookmarkListRows = Views::simpleView( 'bookmarks.components.bookmarkListRows', $folderObject->bookmarks ); - $panel->panel = Views::simpleView( 'bookmarks.components.bookmarkListPanel', [$folderObject] ); - $panelArray[] = $panel; + $panelArray[] = $folderObject; } } Components::set( 'foldersList', Views::simpleView( 'bookmarks.folders.list', $folders ) ); - Components::set( 'folderPanels', Views::simpleView( 'bookmarks.components.folderPanelList', $panelArray ) ); + Components::set( 'folderPanels', Views::simpleView( 'bookmarks.components.bookmarkListPanel', $panelArray ) ); Components::set( 'bookmarksList', Views::simpleView( 'bookmarks.bookmarks.list', $bookmarks ) ); return Views::view( 'bookmarks.dash' ); } @@ -121,8 +120,8 @@ class Bookmarks extends Controller { $folderObject->bookmarkListRows = Views::simpleView( 'bookmarks.components.bookmarkListRows', $folderObject->bookmarks ); $panel->panel = Views::simpleView( 'bookmarks.components.bookmarkListPanel', [$folderObject] ); $panelArray[] = $panel; - - return Views::view( 'bookmarks.components.folderPanelList', $panelArray ); + + return Views::view( 'bookmarks.bookmarks.listPage', $panelArray ); } public function createBookmark( $id = null ) { @@ -227,7 +226,7 @@ class Bookmarks extends Controller { if ( $folder == false ) { $folders = self::$folders->byUser(); Components::set( 'foldersList', Views::simpleView( 'bookmarks.folders.list', $folders ) ); - return Views::view( 'bookmarks.folders.listPage', $folders ); + return Views::view( 'bookmarks.folders.listPage' ); } if ( $folder->createdBy != App::$activeUser->ID ) { Session::flash( 'error', 'You do not have permission to view this folder.' ); diff --git a/app/plugins/bookmarks/models/folders.php b/app/plugins/bookmarks/models/folders.php index 4fe4481..7591fbe 100644 --- a/app/plugins/bookmarks/models/folders.php +++ b/app/plugins/bookmarks/models/folders.php @@ -171,4 +171,23 @@ class Folders extends DatabaseModel { } return $out; } + + public function filter( $data, $params = [] ) { + foreach ( $data as $instance ) { + if ( !is_object( $instance ) ) { + $instance = $data; + $end = true; + } + // Real Work Starts Here + $instance->prettyPrivacy = ucfirst( $instance->privacy ); + $instance->prettyTitle = ucfirst( $instance->title ); + // Real Work Ends Here + $out[] = $instance; + if ( !empty( $end ) ) { + $out = $out[0]; + break; + } + } + return $out; + } } diff --git a/app/plugins/bookmarks/views/bookmarks/list.html b/app/plugins/bookmarks/views/bookmarks/list.html index 1fa2a6a..7384b8a 100644 --- a/app/plugins/bookmarks/views/bookmarks/list.html +++ b/app/plugins/bookmarks/views/bookmarks/list.html @@ -21,7 +21,7 @@ {privacy} - + {/LOOP} @@ -34,4 +34,7 @@ {/ALT} - Create \ No newline at end of file + +
    + Create +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/bookmarks/listPage.html b/app/plugins/bookmarks/views/bookmarks/listPage.html index f975b06..45e81f0 100644 --- a/app/plugins/bookmarks/views/bookmarks/listPage.html +++ b/app/plugins/bookmarks/views/bookmarks/listPage.html @@ -1,8 +1,13 @@ - - -
    -
    +
    + {LOOP} Bookmark List - {bookmarksList} -
    -
    +
    + {panel} +
    + {/LOOP} + {ALT} +
    +

    no folders

    +
    + {/ALT} +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/bookmarks/view.html b/app/plugins/bookmarks/views/bookmarks/view.html index cb73a7f..6ab9258 100644 --- a/app/plugins/bookmarks/views/bookmarks/view.html +++ b/app/plugins/bookmarks/views/bookmarks/view.html @@ -100,7 +100,7 @@ {hideBtn} {archiveBtn} - Edit + Edit Delete diff --git a/app/plugins/bookmarks/views/components/bookmarkListPanel.html b/app/plugins/bookmarks/views/components/bookmarkListPanel.html index bfabdf8..a7f679f 100644 --- a/app/plugins/bookmarks/views/components/bookmarkListPanel.html +++ b/app/plugins/bookmarks/views/components/bookmarkListPanel.html @@ -1,21 +1,32 @@ -
    -
    - {title} -
    -
    -
    -
      - {bookmarkListRows} -
    -
    -
    +{/LOOP} +{ALT} +
    +

    no folders

    +
    +{/ALT} \ No newline at end of file diff --git a/app/plugins/bookmarks/views/components/bookmarkListRows.html b/app/plugins/bookmarks/views/components/bookmarkListRows.html index 8bd2e9f..9d83f3c 100644 --- a/app/plugins/bookmarks/views/components/bookmarkListRows.html +++ b/app/plugins/bookmarks/views/components/bookmarkListRows.html @@ -1,18 +1,18 @@ {LOOP} -
  • - {iconHtml} - {title} - +
  • + {iconHtml} + {title} + {hideBtn} {archiveBtn} - +
  • {/LOOP} {ALT} -
  • - No Bookmarks +
  • +

    No Bookmarks

  • {/ALT} \ No newline at end of file diff --git a/app/plugins/bookmarks/views/components/folderPanelList.html b/app/plugins/bookmarks/views/components/folderPanelList.html deleted file mode 100644 index 6e8c4a6..0000000 --- a/app/plugins/bookmarks/views/components/folderPanelList.html +++ /dev/null @@ -1,10 +0,0 @@ -{LOOP} -
    - {panel} -
    -{/LOOP} -{ALT} -
    -

    no folders

    -
    -{/ALT} \ No newline at end of file diff --git a/app/plugins/bookmarks/views/dash.html b/app/plugins/bookmarks/views/dash.html index 392423f..960fffd 100644 --- a/app/plugins/bookmarks/views/dash.html +++ b/app/plugins/bookmarks/views/dash.html @@ -1,17 +1,20 @@ -
    -
    - Unsorted Bookmarks +
    +
    + Unsorted Bookmarks {bookmarksList}
    -
    - Folders List +
    + Folders List {foldersList}
    -
    -
    - Bookmarks - {folderPanels} +
    +
    + Bookmarks +
    +
    + {folderPanels} +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/folders/list.html b/app/plugins/bookmarks/views/folders/list.html index e5df19a..7fabceb 100644 --- a/app/plugins/bookmarks/views/folders/list.html +++ b/app/plugins/bookmarks/views/folders/list.html @@ -2,9 +2,9 @@ - - - + + + @@ -13,11 +13,11 @@ {LOOP} - - + + - + {/LOOP} @@ -30,4 +30,6 @@ {/ALT}
    TitlePrivacyDescriptionTitlePrivacyDescription
    {title}{privacy}{prettyTitle}{prettyPrivacy} {description}
    - Create \ No newline at end of file +
    + Create +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/folders/listPage.html b/app/plugins/bookmarks/views/folders/listPage.html index e4f4a70..c6324f0 100644 --- a/app/plugins/bookmarks/views/folders/listPage.html +++ b/app/plugins/bookmarks/views/folders/listPage.html @@ -1,7 +1,8 @@ -
    -
    - Folders List +
    +
    + Folders List +
    {foldersList}
    -
    +
    \ No newline at end of file diff --git a/app/plugins/bookmarks/views/folders/view.html b/app/plugins/bookmarks/views/folders/view.html index ee0fae0..2136b76 100644 --- a/app/plugins/bookmarks/views/folders/view.html +++ b/app/plugins/bookmarks/views/folders/view.html @@ -59,7 +59,7 @@ Bookmarks - Edit + Edit Delete diff --git a/app/plugins/bookmarks/views/nav/folderTabs.html b/app/plugins/bookmarks/views/nav/folderTabs.html index 20d76c2..d3e18d9 100644 --- a/app/plugins/bookmarks/views/nav/folderTabs.html +++ b/app/plugins/bookmarks/views/nav/folderTabs.html @@ -1,4 +1,4 @@ -