From b3a31e3e815a5fc3afe90882ca56d97da2f63eb8 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 23 Mar 2017 14:42:57 +0100
Subject: [PATCH] OO-2642: don't remove the null order by

---
 .../flexible/elements/FlexiTableElement.java   | 13 +++++++++++++
 .../elements/table/FlexiTableElementImpl.java  | 18 ++++++++++++++++++
 .../portfolio/ui/BinderPageListController.java |  2 +-
 .../portfolio/ui/MyPageListController.java     |  3 ++-
 4 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
index 26a1ed05aaa..46d0e47b283 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
@@ -380,8 +380,21 @@ public interface FlexiTableElement extends FormItem {
 	
 	public void quickSearch(UserRequest ureq, String search);
 	
+	/**
+	 * Sort with the specified parameter. A null sort key
+	 * will remove the order by.
+	 * 
+	 * @param sortKey
+	 * @param asc
+	 */
 	public void sort(String sortKey, boolean asc);
 	
+	/**
+	 * Order by the specified setting.
+	 * @param sortKey The sort key cannot be null.
+	 */
+	public void sort(SortKey sortKey);
+	
 	@Override
 	public void reset();
 	
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
index e555603bd1f..5ad9313b221 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
@@ -984,6 +984,24 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 		selectSortOption(sortKey, asc);
 		component.setDirty(true);
 	}
+	
+	@Override
+	public void sort(SortKey sortKey) {
+		collapseAllDetails();
+		orderBy = new SortKey[]{ sortKey };
+		
+		if(dataModel instanceof SortableFlexiTableDataModel) {
+			((SortableFlexiTableDataModel<?>)dataModel).sort(sortKey);
+		} else if(dataSource != null) {
+			currentPage = 0;
+			dataSource.clear();
+			dataSource.load(getSearchText(), getSelectedFilters(), getConditionalQueries(), 0, getPageSize(), orderBy);
+		}
+		reorderMultiSelectIndex();
+		selectSortOption(sortKey.getKey(), sortKey.isAsc());
+		component.setDirty(true);
+	}
+	
 
 	private void reorderMultiSelectIndex() {
 		if(multiSelectedIndex == null) return;
diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
index a64228c2fc9..eecde81b545 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
@@ -349,7 +349,7 @@ public class BinderPageListController extends AbstractPageListController {
 			if(event instanceof FlexiTableRenderEvent) {
 				FlexiTableRenderEvent re = (FlexiTableRenderEvent)event;
 				if(re.getRendererType() == FlexiTableRendererType.custom) {
-					tableEl.sort(null, false);
+					tableEl.sort(new SortKey(null, false));
 				}
 			} else if(event instanceof SelectionEvent) {
 				SelectionEvent se = (SelectionEvent)event;
diff --git a/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
index 9bd0775b6b2..628ac0b8aaf 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.olat.core.commons.persistence.SortKey;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.form.flexible.FormItem;
@@ -151,7 +152,7 @@ public class MyPageListController extends AbstractPageListController {
 			if(event instanceof FlexiTableRenderEvent) {
 				FlexiTableRenderEvent re = (FlexiTableRenderEvent)event;
 				if(re.getRendererType() == FlexiTableRendererType.custom) {
-					tableEl.sort(null, false);
+					tableEl.sort(new SortKey(null, false));
 				}
 			} else if(event instanceof SelectionEvent) {
 				SelectionEvent se = (SelectionEvent)event;
-- 
GitLab