@@ -50,7 +50,7 @@ public function add_edit_collection($collection_id){
5050 }
5151
5252
53- public function list (){
53+ public function list (Request $ request ){
5454 $ collections = $ this ->userCollections (['VIEW_OWN ' ,'VIEW ' ,'MAINTAINER ' ]);
5555 $ stats = [];
5656 foreach ($ collections as $ collection ){
@@ -59,7 +59,32 @@ public function list(){
5959 "size " => $ collection ->size_active
6060 ];
6161 }
62- return view ('collections ' , ['title ' =>'Smart Repository ' ,'activePage ' =>'collections ' ,'titlePage ' =>'Collections ' ,'collections ' =>$ collections , 'stats ' =>$ stats ]);
62+
63+ // Handle sorting
64+ $ sort_by = $ request ->input ('sort_by ' , 'name_asc ' ); // default to alphabetical ascending
65+
66+ switch ($ sort_by ) {
67+ case 'name_asc ' :
68+ $ collections = $ collections ->sortBy ('name ' , SORT_NATURAL |SORT_FLAG_CASE );
69+ break ;
70+ case 'name_desc ' :
71+ $ collections = $ collections ->sortByDesc ('name ' , SORT_NATURAL |SORT_FLAG_CASE );
72+ break ;
73+ case 'size_asc ' :
74+ $ collections = $ collections ->sortBy (function ($ collection ) use ($ stats ) {
75+ return isset ($ stats [$ collection ->id ]) ? (int )$ stats [$ collection ->id ]->cnt : 0 ;
76+ });
77+ break ;
78+ case 'size_desc ' :
79+ $ collections = $ collections ->sortByDesc (function ($ collection ) use ($ stats ) {
80+ return isset ($ stats [$ collection ->id ]) ? (int )$ stats [$ collection ->id ]->cnt : 0 ;
81+ });
82+ break ;
83+ default :
84+ $ collections = $ collections ->sortBy ('name ' , SORT_NATURAL |SORT_FLAG_CASE );
85+ }
86+
87+ return view ('collections ' , ['title ' =>'Smart Repository ' ,'activePage ' =>'collections ' ,'titlePage ' =>'Collections ' ,'collections ' =>$ collections , 'stats ' =>$ stats , 'sort_by ' =>$ sort_by ]);
6388 }
6489
6590 public function save (Request $ request ){
0 commit comments