From 8bcf4cb97e89cd56fb964bb891f5b7a71311e1b5 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 26 Aug 2016 10:04:16 +0200
Subject: [PATCH] OO-2141: better handle of urls of already open tabs

---
 .../fullWebApp/BaseFullWebappController.java        |  2 +-
 .../olat/course/run/CourseRuntimeController.java    | 13 +++++++++++++
 .../java/org/olat/course/run/RunMainController.java |  5 +++++
 .../group/ui/homepage/GroupInfoMainController.java  |  5 ++++-
 .../ui/run/BusinessGroupMainRunController.java      |  8 +++++++-
 5 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java
index af90cd37ce2..e642f100c7c 100644
--- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java
+++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java
@@ -1173,7 +1173,7 @@ public class BaseFullWebappController extends BasicController implements DTabs,
 			}
 			doActivateDTab(dtabi);
 	
-			if(entries != null && !entries.isEmpty() && c instanceof Activateable2) {
+			if(c instanceof Activateable2) {
 				final Activateable2 activateable = ((Activateable2) c);
 				activateable.activate(ureq, entries, null);
 			}
diff --git a/src/main/java/org/olat/course/run/CourseRuntimeController.java b/src/main/java/org/olat/course/run/CourseRuntimeController.java
index 044ec3fd6db..236d46b19f1 100644
--- a/src/main/java/org/olat/course/run/CourseRuntimeController.java
+++ b/src/main/java/org/olat/course/run/CourseRuntimeController.java
@@ -886,6 +886,19 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im
 
 	@Override
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
+		if(entries == null || entries.isEmpty()) {
+			if(currentToolCtr != null) {
+				addToHistory(ureq, currentToolCtr);
+			} else {
+				Controller runtimeCtrl = getRuntimeController();
+				if(runtimeCtrl instanceof Activateable2) {
+					((Activateable2)runtimeCtrl).activate(ureq, entries, state);
+				} else {
+					addToHistory(ureq, runtimeCtrl);
+				}
+			}
+			return;
+		}
 
 		entries = removeRepositoryEntry(entries);
 		if(entries != null && entries.size() > 0) {
diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java
index 75842b3245c..d2b680a66d3 100644
--- a/src/main/java/org/olat/course/run/RunMainController.java
+++ b/src/main/java/org/olat/course/run/RunMainController.java
@@ -820,6 +820,11 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 	@Override
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
 		if(entries == null || entries.isEmpty()) {
+			if(currentNodeController != null) {
+				addToHistory(ureq, currentNodeController);
+			} else {
+				addToHistory(ureq, this);
+			}
 			return;
 		}
 		
diff --git a/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java b/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java
index 43fb231e392..280d59c4934 100644
--- a/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java
+++ b/src/main/java/org/olat/group/ui/homepage/GroupInfoMainController.java
@@ -117,7 +117,10 @@ public class GroupInfoMainController extends MainLayoutBasicController implement
 
 	@Override
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
-		if(entries == null || entries.isEmpty()) return;
+		if(entries == null || entries.isEmpty()) {
+			addToHistory(ureq);
+			return;
+		}
 		
 		ContextEntry entry = entries.get(0);
 		String menuItem = entry.getOLATResourceable().getResourceableTypeName();
diff --git a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java
index 6c1b80b8c4c..d622a6b8426 100644
--- a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java
+++ b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java
@@ -902,7 +902,13 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im
 
 	@Override
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
-		if(entries == null || entries.isEmpty() || needActivation) return;
+		if(needActivation) {
+			return;
+		}
+		if(entries == null || entries.isEmpty()) {
+			addToHistory(ureq);
+			return;
+		}
 		
 		// release edit lock if available
 		removeAsListenerAndDispose(bgEditCntrllr);
-- 
GitLab