From 1b299b9e579fe6ab3bb9bbdd518b6b426ba15a8d Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 13 Jul 2018 11:23:45 +0200
Subject: [PATCH] OO-3581: save the show/hide status of the timeline in the GUI
 preferences of the user

---
 .../ui/AbstractPageListController.java        | 24 +++++++++++++++----
 .../ui/BinderPageListController.java          |  5 ++++
 .../ui/DeletedPageListController.java         |  5 ++++
 .../portfolio/ui/MyPageListController.java    |  5 ++++
 4 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java
index 17f7b92c2d0..0c4b5c08fcc 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java
@@ -194,7 +194,13 @@ implements Activateable2, TooledController, FlexiTableComponentDelegate {
 			timelineSwitchOffButton = uifactory.addFormLink("timeline.switch.off", formLayout, Link.BUTTON_SMALL); 
 			timelineSwitchOffButton.setIconLeftCSS("o_icon o_icon-sm o_icon_toggle_off");
 			timelineSwitchOffButton.setElementCssClass("o_sel_timeline_off");
-			doSwitchTimelineOn();
+			
+			Object prefs = ureq.getUserSession().getGuiPreferences().get(this.getClass(), getTimelineSwitchPreferencesName(), "on");
+			if("on".equals(prefs)) {
+				doSwitchTimelineOn(ureq, false);
+			} else {
+				doSwitchTimelineOff(ureq, false);
+			}
 		} else {
 			flc.contextPut("timelineSwitch", Boolean.FALSE);
 		}
@@ -627,9 +633,9 @@ implements Activateable2, TooledController, FlexiTableComponentDelegate {
 				}
 			}
 		} else if(timelineSwitchOnButton == source) {
-			doSwitchTimelineOff();
+			doSwitchTimelineOff(ureq, true);
 		} else if(timelineSwitchOffButton == source) {
-			doSwitchTimelineOn();
+			doSwitchTimelineOn(ureq, true);
 		} else if(source instanceof FormLink) {
 			FormLink link = (FormLink)source;
 			String cmd = link.getCmd();
@@ -726,18 +732,26 @@ implements Activateable2, TooledController, FlexiTableComponentDelegate {
 		fireEvent(ureq, Event.CHANGED_EVENT);
 	}
 	
-	private void doSwitchTimelineOn() {
+	private void doSwitchTimelineOn(UserRequest ureq, boolean savePreferences) {
 		timelineSwitchOnButton.setVisible(true);
 		timelineSwitchOffButton.setVisible(false);
 		flc.contextPut("timelineSwitch", Boolean.TRUE);
+		if(savePreferences) {
+			ureq.getUserSession().getGuiPreferences().put(this.getClass(), getTimelineSwitchPreferencesName(), "on");
+		}
 	}
 	
-	private void doSwitchTimelineOff() {
+	private void doSwitchTimelineOff(UserRequest ureq, boolean savePreferences) {
 		timelineSwitchOnButton.setVisible(false);
 		timelineSwitchOffButton.setVisible(true);
 		flc.contextPut("timelineSwitch", Boolean.FALSE);
+		if(savePreferences) {
+			ureq.getUserSession().getGuiPreferences().put(this.getClass(), getTimelineSwitchPreferencesName(), "off");
+		}
 	}
 	
+	protected abstract String getTimelineSwitchPreferencesName();
+	
 	protected Assignment doStartAssignment(UserRequest ureq, PortfolioElementRow row) {
 		return doStartAssignment(ureq, row.getAssignment().getKey());
 	}
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 af9a321fe12..d4dd694b46e 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
@@ -126,6 +126,11 @@ public class BinderPageListController extends AbstractPageListController {
 			initialPanel.setCssClass("o_edit_mode");
 		}
 	}
+
+	@Override
+	protected String getTimelineSwitchPreferencesName() {
+		return "binder-timeline-switch-" + binder.getKey();
+	}
 	
 	private String getGuiPrefsKey(OLATResourceable binderOres) {
 		return new StringBuilder()
diff --git a/src/main/java/org/olat/modules/portfolio/ui/DeletedPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/DeletedPageListController.java
index e04ddf53b8a..1b787abc53a 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/DeletedPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/DeletedPageListController.java
@@ -83,6 +83,11 @@ public class DeletedPageListController extends AbstractPageListController {
 		tableEl.setSelectAllEnable(tableEl.getRendererType() == FlexiTableRendererType.classic);
 	}
 
+	@Override
+	protected String getTimelineSwitchPreferencesName() {
+		return "del-timeline-switch";
+	}
+
 	@Override
 	protected void loadModel(UserRequest ureq, String searchString) {
 		Map<Long,Long> numberOfCommentsMap = portfolioService.getNumberOfCommentsOnOwnedPage(getIdentity());
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 1f6146f8744..8e3145552a6 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
@@ -81,6 +81,11 @@ public class MyPageListController extends AbstractPageListController {
 		newEntryLink.setElementCssClass("o_sel_pf_new_entry");
 		stackPanel.addTool(newEntryLink, Align.right);
 	}
+	
+	@Override
+	protected String getTimelineSwitchPreferencesName() {
+		return "entries-timeline-switch";
+	}
 
 	@Override
 	protected void loadModel(UserRequest ureq, String searchString) {
-- 
GitLab