@@ -617,10 +617,25 @@ Class.create("FilesList", SelectableElements, {
617
617
icon_class :( isSorted ?'icon-caret-' + ( this . _sortableTable . descending ?'down' :'up' ) :'' ) ,
618
618
isDefault :false ,
619
619
callback :function ( e ) {
620
+ var sortable = this . _sortableTable ;
620
621
var clickIndex = this . columnsDef . indexOf ( column ) ;
621
- var sorted = ( this . _sortableTable . sortColumn == clickIndex ) ;
622
- if ( sorted ) this . _sortableTable . descending = ! this . _sortableTable . descending ;
623
- this . _sortableTable . sort ( clickIndex , this . _sortableTable . descending ) ;
622
+ if ( sortable . paginationLoaderFunc ) {
623
+ var params = $H ( { } ) ;
624
+ if ( sortable . sortColumn != clickIndex ) {
625
+ sortable . descending = sortable . defaultDescending ;
626
+ } else {
627
+ sortable . descending = ! sortable . descending ;
628
+ }
629
+ var columnData = this . columnsDef [ clickIndex ] ;
630
+ params . set ( 'order_column' , columnData [ 'attributeName' ] || clickIndex ) ;
631
+ params . set ( 'order_direction' , ( sortable . descending ?'desc' :'asc' ) ) ;
632
+ sortable . paginationLoaderFunc ( params ) ;
633
+ } else {
634
+ var sorted = ( sortable . sortColumn == clickIndex ) ;
635
+ if ( sorted ) sortable . descending = ! sortable . descending ;
636
+ sortable . sort ( clickIndex , sortable . descending ) ;
637
+ }
638
+
624
639
} . bind ( this )
625
640
} ) ;
626
641
index ++ ;
@@ -660,7 +675,7 @@ Class.create("FilesList", SelectableElements, {
660
675
this . htmlElement . removeClassName ( 'fl-displayMode-' + f ) ;
661
676
}
662
677
} . bind ( this ) ) ;
663
- var scrollElement , buffer ;
678
+ var scrollElement , buffer , sortContainer , sortTypes , metaSortTypes , sortHeader ;
664
679
if ( this . _displayMode == "list" )
665
680
{
666
681
this . hiddenColumns = $A ( ) ;
@@ -762,25 +777,10 @@ Class.create("FilesList", SelectableElements, {
762
777
if ( event . metaValue ) this . addMetadataFilter ( event . metaName , event . metaValue + '*' ) ;
763
778
else this . removeMetadataFilter ( event . metaName ) ;
764
779
} . bind ( this ) ) ;
765
- this . _sortableTable = new AjxpSortable ( oElement , this . getVisibleSortTypes ( ) , this . htmlElement . down ( 'div.sort-table' ) ) ;
766
- if ( this . options . groupByData ) this . _sortableTable . setGroupByData ( this . options . groupByData ) ;
767
- this . _sortableTable . onsort = function ( ) {
768
- this . redistributeBackgrounds ( ) ;
769
- var ctxt = this . getCurrentContextNode ( ) ;
770
- ctxt . getMetadata ( ) . set ( "filesList.sortColumn" , '' + this . _sortableTable . sortColumn ) ;
771
- ctxt . getMetadata ( ) . set ( "filesList.descending" , this . _sortableTable . descending ) ;
772
- } . bind ( this ) ;
773
- if ( this . paginationData && this . paginationData . get ( 'remote_order' ) && parseInt ( this . paginationData . get ( 'total' ) ) > 1 ) {
774
- this . _sortableTable . setPaginationBehaviour ( function ( params ) {
775
- this . getCurrentContextNode ( ) . getMetadata ( ) . set ( "remote_order" , params ) ;
776
- var oThis = this ;
777
- this . crtContext . observeOnce ( "loaded" , function ( ) {
778
- oThis . crtContext = this ;
779
- oThis . fill ( oThis . crtContext ) ;
780
- } ) ;
781
- this . getCurrentContextNode ( ) . reload ( ) ;
782
- } . bind ( this ) , this . getVisibleColumns ( ) , this . paginationData . get ( 'currentOrderCol' ) || - 1 , this . paginationData . get ( 'currentOrderDir' ) ) ;
783
- }
780
+
781
+ sortContainer = oElement ;
782
+ sortTypes = this . getVisibleSortTypes ( ) ;
783
+ sortHeader = this . htmlElement . down ( 'div.sort-table' ) ;
784
784
785
785
this . observer = function ( e ) {
786
786
if ( this . options . fit && this . options . fit == 'height' ) fitHeightToBottom ( contentContainer , this . htmlElement ) ;
@@ -860,49 +860,8 @@ Class.create("FilesList", SelectableElements, {
860
860
this . _thumbSize = parseInt ( this . _fixedThumbSize ) ;
861
861
}
862
862
863
- this . _sortableTable = new AjxpSortable ( scrollElement , null , null ) ;
864
- this . _sortableTable . setMetaSortType ( this . columnsDef ) ;
865
- if ( this . options . groupByData ) this . _sortableTable . setGroupByData ( this . options . groupByData ) ;
866
- this . _sortableTable . onsort = function ( ) {
867
- var ctxt = this . getCurrentContextNode ( ) ;
868
- ctxt . getMetadata ( ) . set ( "filesList.sortColumn" , '' + this . _sortableTable . sortColumn ) ;
869
- ctxt . getMetadata ( ) . set ( "filesList.descending" , this . _sortableTable . descending ) ;
870
- } . bind ( this ) ;
871
- if ( ! this . options . noContextualMenu ) {
872
- if ( this . headerMenu ) {
873
- this . headerMenu . destroy ( ) ;
874
- delete this . headerMenu ;
875
- }
876
- this . headerMenu = new Proto . Menu ( {
877
- selector : '#content_pane div.panelHeader' ,
878
- className : 'menu desktop' ,
879
- menuItems : [ ] ,
880
- fade :true ,
881
- zIndex :2000 ,
882
- beforeShow : function ( ) {
883
- var items = $A ( [ ] ) ;
884
- var index = 0 ;
885
- this . columnsDef . each ( function ( column ) {
886
- var isSorted = this . _sortableTable . sortColumn == index ;
887
- items . push ( {
888
- name :( column . messageId ?MessageHash [ column . messageId ] :column . messageString ) ,
889
- alt :( column . messageId ?MessageHash [ column . messageId ] :column . messageString ) ,
890
- image :resolveImageSource ( ( isSorted ?"column-visible" :"transp" ) + ".png" , '/images/actions/ICON_SIZE' , 16 ) ,
891
- isDefault :false ,
892
- callback :function ( e ) {
893
- var clickIndex = this . columnsDef . indexOf ( column ) ;
894
- var sorted = ( this . _sortableTable . sortColumn == clickIndex ) ;
895
- if ( sorted ) this . _sortableTable . descending = ! this . _sortableTable . descending ;
896
- this . _sortableTable . sort ( clickIndex , this . _sortableTable . descending ) ;
897
- } . bind ( this )
898
- } ) ;
899
- index ++ ;
900
- } . bind ( this ) ) ;
901
- this . headerMenu . options . menuItems = items ;
902
- this . headerMenu . refreshList ( ) ;
903
- } . bind ( this )
904
- } ) ;
905
- }
863
+ sortContainer = scrollElement ;
864
+ metaSortTypes = this . columnsDef ;
906
865
907
866
if ( this . _displayMode == 'thumb' ) {
908
867
if ( this . slider ) {
@@ -927,14 +886,40 @@ Class.create("FilesList", SelectableElements, {
927
886
} ) ;
928
887
}
929
888
930
- //this.disableTextSelection(scrollElement, true);
931
889
if ( this . options . selectable == undefined || this . options . selectable === true ) {
932
890
this . initSelectableItems ( scrollElement , true , scrollElement , true ) ;
933
891
} else {
934
892
this . initNonSelectableItems ( scrollElement ) ;
935
893
}
936
894
}
937
895
896
+ this . _sortableTable = new AjxpSortable ( sortContainer , sortTypes , sortHeader ) ;
897
+ if ( metaSortTypes ) {
898
+ this . _sortableTable . setMetaSortType ( metaSortTypes ) ;
899
+ }
900
+ if ( this . options . groupByData ) this . _sortableTable . setGroupByData ( this . options . groupByData ) ;
901
+ this . _sortableTable . onsort = function ( ) {
902
+ if ( this . _displayMode == 'list' ) {
903
+ this . redistributeBackgrounds ( ) ;
904
+ }
905
+ var ctxt = this . getCurrentContextNode ( ) ;
906
+ ctxt . getMetadata ( ) . set ( "filesList.sortColumn" , '' + this . _sortableTable . sortColumn ) ;
907
+ ctxt . getMetadata ( ) . set ( "filesList.descending" , this . _sortableTable . descending ) ;
908
+ } . bind ( this ) ;
909
+ if ( this . paginationData && this . paginationData . get ( 'remote_order' ) ) {
910
+ this . _sortableTable . setPaginationBehaviour ( function ( params ) {
911
+ this . getCurrentContextNode ( ) . getMetadata ( ) . set ( "remote_order" , params ) ;
912
+ var oThis = this ;
913
+ this . crtContext . observeOnce ( "loaded" , function ( ) {
914
+ oThis . crtContext = this ;
915
+ oThis . fill ( oThis . crtContext ) ;
916
+ } ) ;
917
+ this . getCurrentContextNode ( ) . reload ( ) ;
918
+ } . bind ( this ) , this . getVisibleColumns ( ) , this . paginationData . get ( 'currentOrderCol' ) || - 1 , this . paginationData . get ( 'currentOrderDir' ) ) ;
919
+ if ( parseInt ( this . paginationData . get ( 'total' ) ) == 1 ) this . _sortableTable . paginationLoaderFunc = null ;
920
+ }
921
+
922
+
938
923
if ( this . options . replaceScroller ) {
939
924
this . scroller = new Element ( 'div' , { id :'filelist_scroller' + this . __currentInstanceIndex , className :'scroller_track' , style :"right:0px" } ) ;
940
925
this . scroller . insert ( '<div id="filelist_scrollbar_handle' + this . __currentInstanceIndex + '" class="scroller_handle"></div>' ) ;
@@ -1484,7 +1469,7 @@ Class.create("FilesList", SelectableElements, {
1484
1469
this . _sortableTable . sortColumn = - 1 ;
1485
1470
this . _sortableTable . updateHeaderArrows ( ) ;
1486
1471
}
1487
- if ( this . options . fixedSortColumn && this . options . fixedSortDirection ) {
1472
+ if ( this . options . fixedSortColumn && this . options . fixedSortDirection && ! contextNode . getMetadata ( ) . get ( "filesList.sortColumn" ) && ! this . paginationData ) {
1488
1473
var col = this . columnsDef . detect ( function ( c ) {
1489
1474
return c . attributeName == this . options . fixedSortColumn ;
1490
1475
} . bind ( this ) ) ;
@@ -2707,8 +2692,8 @@ Class.create("FilesList", SelectableElements, {
2707
2692
}
2708
2693
return null ;
2709
2694
}
2710
- } ,
2711
-
2695
+ } ,
2696
+
2712
2697
/**
2713
2698
* Check if a domnode is indeed an item of the list
2714
2699
* @param node DOMNode
@@ -2727,30 +2712,8 @@ Class.create("FilesList", SelectableElements, {
2727
2712
node . parentNode == this . _htmlElement ;
2728
2713
}
2729
2714
} ,
2730
-
2715
+
2731
2716
/* Indexable Collection Interface */
2732
- /**
2733
- * Get all items
2734
- * @returns Array
2735
- */
2736
- getItems : function ( ) {
2737
- if ( this . _displayMode == "list" )
2738
- {
2739
- return this . _htmlElement . rows || [ ] ;
2740
- }
2741
- else
2742
- {
2743
- var tmp = [ ] ;
2744
- var j = 0 ;
2745
- var cs = this . _htmlElement . childNodes ;
2746
- var l = cs . length ;
2747
- for ( var i = 0 ; i < l ; i ++ ) {
2748
- if ( cs [ i ] . nodeType == 1 )
2749
- tmp [ j ++ ] = cs [ i ] ;
2750
- }
2751
- return tmp ;
2752
- }
2753
- } ,
2754
2717
/**
2755
2718
* Find an item index
2756
2719
* @param el HTMLElement
@@ -2764,15 +2727,15 @@ Class.create("FilesList", SelectableElements, {
2764
2727
else
2765
2728
{
2766
2729
var j = 0 ;
2767
- var cs = this . _htmlElement . childNodes ;
2730
+ var cs = this . _htmlElement . select ( '.ajxpNodeProvider' ) ;
2768
2731
var l = cs . length ;
2769
2732
for ( var i = 0 ; i < l ; i ++ ) {
2770
2733
if ( cs [ i ] == el )
2771
2734
return j ;
2772
2735
if ( cs [ i ] . nodeType == 1 )
2773
2736
j ++ ;
2774
2737
}
2775
- return - 1 ;
2738
+ return - 1 ;
2776
2739
}
2777
2740
} ,
2778
2741
/**
@@ -2788,7 +2751,7 @@ Class.create("FilesList", SelectableElements, {
2788
2751
else
2789
2752
{
2790
2753
var j = 0 ;
2791
- var cs = this . _htmlElement . childNodes ;
2754
+ var cs = this . _htmlElement . select ( '.ajxpNodeProvider' ) ;
2792
2755
var l = cs . length ;
2793
2756
for ( var i = 0 ; i < l ; i ++ ) {
2794
2757
if ( cs [ i ] . nodeType == 1 ) {
0 commit comments