diff --git a/app/Http/Controllers/FileBrowser/BrowseController.php b/app/Http/Controllers/FileBrowser/BrowseController.php index 436672a1..6280b618 100644 --- a/app/Http/Controllers/FileBrowser/BrowseController.php +++ b/app/Http/Controllers/FileBrowser/BrowseController.php @@ -36,6 +36,7 @@ class BrowseController extends Controller ->with(['parent']) ->where('user_id', $user_id) ->whereIn('unique_id', filter_folders_ids($folders_trashed)) + ->sortable() ->get(); // Get files trashed @@ -43,6 +44,7 @@ class BrowseController extends Controller ->with(['parent']) ->where('user_id', $user_id) ->whereNotIn('folder_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'unique_id')))) + ->sortable() ->get(); // Collect folders and files to single array @@ -72,11 +74,13 @@ class BrowseController extends Controller $folders = FileManagerFolder::with(['parent', 'shared:token,id,item_id,permission,protected,expire_in']) ->where('user_id', $user_id) ->whereIn('unique_id', $folder_ids) + ->sortable() ->get(); $files = FileManagerFile::with(['parent', 'shared:token,id,item_id,permission,protected,expire_in']) ->where('user_id', $user_id) ->whereIn('unique_id', $file_ids) + ->sortable() ->get(); // Collect folders and files to single array @@ -91,7 +95,8 @@ class BrowseController extends Controller public function latest() { // Get User - $user = User::with(['latest_uploads']) + $user = User::with(['latest_uploads' => function($query) { + $query->sortable(); }]) ->where('id', Auth::id()) ->first(); @@ -107,7 +112,7 @@ class BrowseController extends Controller // Get User $uploads = FileManagerFile::with(['parent'])->where('user_id', Auth::id()) - ->whereUserScope('editor')->orderBy('created_at', 'DESC')->get(); + ->whereUserScope('editor')->sortable()->get(); return $uploads; } @@ -148,14 +153,12 @@ class BrowseController extends Controller $folders = FileManagerFolder::with(['parent', 'shared:token,id,item_id,permission,protected,expire_in']) ->where('user_id', $user_id) ->where('parent_id', $unique_id) - // ->orderBy('created_at', 'DESC') ->sortable(['name', 'DESC']) ->get(); $files = FileManagerFile::with(['parent', 'shared:token,id,item_id,permission,protected,expire_in']) ->where('user_id', $user_id) ->where('folder_id', $unique_id) - // ->orderBy('created_at', 'DESC') ->sortable(['name', 'DESC']) ->get(); diff --git a/app/User.php b/app/User.php index 106c5baf..036e1d18 100644 --- a/app/User.php +++ b/app/User.php @@ -195,10 +195,14 @@ class User extends Authenticatable */ public function getFolderTreeAttribute() { + + $sort = strtolower(request()->input('sort')); + $direction = strtolower(request()->input('direction')); + return FileManagerFolder::with(['folders.shared', 'shared:token,id,item_id,permission,protected,expire_in']) ->where('parent_id', 0) ->where('user_id', $this->id) - ->orderByDesc('created_at') + ->orderBy($sort , $direction) ->get(); } @@ -301,7 +305,10 @@ class User extends Authenticatable */ public function favourite_folders() { - return $this->belongsToMany(FileManagerFolder::class, 'favourite_folder', 'user_id', 'folder_unique_id', 'id', 'unique_id')->with('shared:token,id,item_id,permission,protected,expire_in'); + $sort = strtolower(request()->input('sort') ? request()->input('sort') : 'created_at' ); + $direction = strtolower(request()->input('direction') ? request()->input('direction') : 'desc'); + + return $this->belongsToMany(FileManagerFolder::class, 'favourite_folder', 'user_id', 'folder_unique_id', 'id', 'unique_id')->with('shared:token,id,item_id,permission,protected,expire_in')->orderBy($sort , $direction); } /** @@ -311,7 +318,7 @@ class User extends Authenticatable */ public function latest_uploads() { - return $this->hasMany(FileManagerFile::class)->with(['parent'])->orderBy('created_at', 'DESC')->take(40); + return $this->hasMany(FileManagerFile::class)->with(['parent'])->take(40); } /** diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 5b0a75c3..2a617755 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -27,10 +27,9 @@ "/chunks/database.js": "/chunks/database.js?id=0b21e6ff3bac5c963d9a", "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=464c8e70974d492ce7f6", "/chunks/environment-setup.js": "/chunks/environment-setup.js?id=826fbaa6cc4acab69f5d", - "/chunks/files.js": "/chunks/files.js?id=35936c1c34e3290a6072", + "/chunks/files.js": "/chunks/files.js?id=76b46f43df974e899836", "/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared-page~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared-page~chunks/user-subscription.js?id=8ccd35de575e8a91d02f", - "/chunks/files~chunks/shared-files.js": "/chunks/files~chunks/shared-files.js?id=b0fbc9ca0e4f56538924", - "/chunks/files~chunks/shared-files~chunks/shared-page.js": "/chunks/files~chunks/shared-files~chunks/shared-page.js?id=b7a5e83f69ec780a8a8a", + "/chunks/files~chunks/shared-files~chunks/shared-page.js": "/chunks/files~chunks/shared-files~chunks/shared-page.js?id=ac7424fc44caf9e64d1a", "/chunks/files~chunks/shared-page.js": "/chunks/files~chunks/shared-page.js?id=ed167949ea9398f0fbeb", "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=aba8c662fbc234892216", "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=7dfffa0f25308ba70b7a", @@ -56,8 +55,8 @@ "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=22e7978fe8a5cb488e52", "/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=367c9478591c7a4a2889", "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=7da589bd335deefd5f65", - "/chunks/shared-files.js": "/chunks/shared-files.js?id=07bf2c32935e1d8b9dac", - "/chunks/shared-page.js": "/chunks/shared-page.js?id=19e7fdb00a89d06ee29f", + "/chunks/shared-files.js": "/chunks/shared-files.js?id=5d9381e60cc1307f715a", + "/chunks/shared-page.js": "/chunks/shared-page.js?id=f0e6fb1cf70035c49362", "/chunks/sign-in.js": "/chunks/sign-in.js?id=703fbd23d18816590337", "/chunks/sign-up.js": "/chunks/sign-up.js?id=cedca52c29abfb3c58f1", "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=b99eb91043d1321187b9", @@ -76,12 +75,8 @@ "/chunks/user-storage.js": "/chunks/user-storage.js?id=a99910f95c3e39caa78b", "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=e8ea1e67f9ac0a835ed0", "/chunks/users.js": "/chunks/users.js?id=aba8837f40fbb79f99b4", - "/js/main.a76097b1c16b210f4474.hot-update.js": "/js/main.a76097b1c16b210f4474.hot-update.js", - "/chunks/files.a76097b1c16b210f4474.hot-update.js": "/chunks/files.a76097b1c16b210f4474.hot-update.js", - "/chunks/files~chunks/shared-files~chunks/shared-page.a76097b1c16b210f4474.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.a76097b1c16b210f4474.hot-update.js", - "/chunks/shared-files.a76097b1c16b210f4474.hot-update.js": "/chunks/shared-files.a76097b1c16b210f4474.hot-update.js", - "/js/main.417c204635751bec57ca.hot-update.js": "/js/main.417c204635751bec57ca.hot-update.js", - "/chunks/files.417c204635751bec57ca.hot-update.js": "/chunks/files.417c204635751bec57ca.hot-update.js", - "/chunks/files~chunks/shared-files~chunks/shared-page.417c204635751bec57ca.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.417c204635751bec57ca.hot-update.js", - "/chunks/shared-files.417c204635751bec57ca.hot-update.js": "/chunks/shared-files.417c204635751bec57ca.hot-update.js" + "/js/main.1f3d44f14db2262cc1c6.hot-update.js": "/js/main.1f3d44f14db2262cc1c6.hot-update.js", + "/js/main.3681a718c84b2523e874.hot-update.js": "/js/main.3681a718c84b2523e874.hot-update.js", + "/chunks/files~chunks/shared-files~chunks/shared-page.16e87dbca64505b5cfac.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared-page.16e87dbca64505b5cfac.hot-update.js", + "/js/main.9e6c37da83e8132013f6.hot-update.js": "/js/main.9e6c37da83e8132013f6.hot-update.js" } diff --git a/resources/js/components/FilesView/SortingAndPreview.vue b/resources/js/components/FilesView/SortingAndPreview.vue index d7e78484..a4918f89 100644 --- a/resources/js/components/FilesView/SortingAndPreview.vue +++ b/resources/js/components/FilesView/SortingAndPreview.vue @@ -28,7 +28,7 @@