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 2d54269f507c4a90df60b178895eb11572594db5..717d796a5e5857bb2b97864f899d1f15085d3c67 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -1230,7 +1230,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 7ef69bfcb3b2ab699b91f9996aa1ec8f310620b3..7e9b5dff8dab66a772cbcd71202e112175fe9a35 100644 --- a/src/main/java/org/olat/course/run/CourseRuntimeController.java +++ b/src/main/java/org/olat/course/run/CourseRuntimeController.java @@ -319,7 +319,7 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im RunMainController run = getRunMainController(); if(run != null) { addCustomCSS(ureq); - run.toolCtrDone(ureq); + run.toolCtrDone(ureq, reSecurity); currentToolCtr = null; } } @@ -914,6 +914,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 f587518fdfcd11fc654683b99906b60908571055..71bd7ee5c5c85e226d5c03ea234465c199ec4905 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -519,7 +519,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene } } - protected void toolCtrDone(UserRequest ureq) { + protected void toolCtrDone(UserRequest ureq, RepositoryEntrySecurity reSecurity) { if (isInEditor) { isInEditor = false; // for clarity if (needsRebuildAfterPublish) { @@ -527,9 +527,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene // rebuild up the running structure for this user, after publish; course = CourseFactory.loadCourse(course.getResourceableId()); - uce = new UserCourseEnvironmentImpl(ureq.getUserSession().getIdentityEnvironment(), course.getCourseEnvironment(), getWindowControl(), - uce.getCoachedGroups(), uce.getParticipatingGroups(), uce.getWaitingLists(), - null, null, null); + uce = loadUserCourseEnvironment(ureq, reSecurity); // build score now uce.getScoreAccounting().evaluateAll(); navHandler = new NavigationHandler(uce, treeFilter, false); @@ -832,6 +830,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 43fb231e3925c42fb54934075227040d12c78ea1..280d59c4934e51f3bfc315ae38b00d7a72475529 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 2f609a6b5974d3b68553f21b3c43bb09619ca305..33d79b204b6c71afa13e5e3eb879d3dbb1f4478d 100644 --- a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java +++ b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java @@ -903,7 +903,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);