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 6b23ae223779f2dc67313798ca0407cd2b3961ce..548897376ad6a4d58f005da063a83e2a7eb968af 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -67,6 +67,7 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.ChiefController; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.Reload; import org.olat.core.gui.control.ScreenMode; import org.olat.core.gui.control.ScreenMode.Mode; import org.olat.core.gui.control.VetoableCloseController; @@ -280,7 +281,7 @@ public class BaseFullWebappController extends BasicController implements DTabs, Object fullScreen = Windows.getWindows(ureq).getFullScreen(); if(Boolean.TRUE.equals(fullScreen)) { Windows.getWindows(ureq).setFullScreen(null); - screenMode.setMode(Mode.full); + screenMode.setMode(Mode.full, null); } // register for cycle event to be able to adjust the guimessage place @@ -968,15 +969,20 @@ public class BaseFullWebappController extends BasicController implements DTabs, } @Override - public boolean wishReload(UserRequest ureq, boolean erase) { + public Reload wishReload(UserRequest ureq, boolean erase) { boolean screen = getScreenMode().wishScreenModeSwitch(erase); - boolean r = (reload == null ? false : reload.booleanValue()); + String screenBusinessPath = null; + if(screen && StringHelper.containsNonWhitespace(getScreenMode().getBusinessPath())) { + screenBusinessPath = BusinessControlFactory.getInstance() + .getURLFromBusinessPathString(getScreenMode().getBusinessPath()); + } + boolean r = reload != null && reload.booleanValue(); if(erase && reload != null) { reload = null; } boolean l = checkAssessmentGuard(ureq, lockMode); - return l || r || screen; + return new Reload(l || r || screen, screenBusinessPath); } @Override @@ -986,6 +992,12 @@ public class BaseFullWebappController extends BasicController implements DTabs, return screen || l; } + @Override + public void resetReload() { + getScreenMode().reset(); + reload = null; + } + @Override public ScreenMode getScreenMode() { return screenMode; diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappPopupBrowserWindow.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappPopupBrowserWindow.java index 97428363b808cbd9631d3b23edcdf97222a922b3..b7d6fdf6621f1142bbb69a6f6daa655ab3664b75 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappPopupBrowserWindow.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappPopupBrowserWindow.java @@ -45,27 +45,17 @@ public class BaseFullWebappPopupBrowserWindow extends BaseFullWebappController i BaseFullWebappControllerParts baseFullWebappControllerParts) { super(ureq, baseFullWebappControllerParts); // apply custom css if available - if (contentCtrl != null && contentCtrl instanceof MainLayoutController) { + if (contentCtrl instanceof MainLayoutController) { MainLayoutController mainLayoutCtr = (MainLayoutController) contentCtrl; addCurrentCustomCSSToView(mainLayoutCtr.getCustomCSS()); } } - /* - * (non-Javadoc) - * - * @see - * org.olat.core.gui.control.generic.popup.PopupBrowserWindow#open(org.olat - * .core.gui.UserRequest) - */ @Override public void open(UserRequest ureq) { ureq.getDispatchResult().setResultingWindow(getWindowControl().getWindowBackOffice().getWindow()); } - /** - * @see org.olat.core.gui.control.generic.popup.PopupBrowserWindow#getPopupWindowControl() - */ @Override public WindowControl getPopupWindowControl() { return getWindowControl(); diff --git a/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsBackController.java b/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsBackController.java index 0ab9a1305bfe2ad67b4797ee8c9024cd78964cd2..11a977317b9de8339add20527d54eae3ac7f0220 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsBackController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsBackController.java @@ -121,7 +121,7 @@ public class LayoutMain3ColsBackController extends MainLayoutBasicController imp ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); if (cc != null) { thebaseChief = cc; - thebaseChief.getScreenMode().setMode(Mode.full); + thebaseChief.getScreenMode().setMode(Mode.full, null); } fullScreen = true; } @@ -133,7 +133,7 @@ public class LayoutMain3ColsBackController extends MainLayoutBasicController imp public void deactivate() { getWindowControl().pop(); if (fullScreen && thebaseChief != null) { - thebaseChief.getScreenMode().setMode(Mode.standard); + thebaseChief.getScreenMode().setMode(Mode.standard, null); } } diff --git a/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsController.java b/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsController.java index d8e3798af2f10f31df08d8e7e5bec178481d6ecb..f767b806ea92a80441e0ce411ffd206d439fe9e0 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsController.java @@ -194,7 +194,7 @@ public class LayoutMain3ColsController extends MainLayoutBasicController impleme ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); if (cc != null) { thebaseChief = cc; - thebaseChief.getScreenMode().setMode(Mode.full); + thebaseChief.getScreenMode().setMode(Mode.full, null); } else { Windows.getWindows(ureq).setFullScreen(Boolean.TRUE); } @@ -209,12 +209,12 @@ public class LayoutMain3ColsController extends MainLayoutBasicController impleme getWindowControl().pop(); if (fullScreen) { if(thebaseChief != null) { - thebaseChief.getScreenMode().setMode(Mode.standard); + thebaseChief.getScreenMode().setMode(Mode.standard, null); } else if (ureq != null){ ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); if (cc != null) { thebaseChief = cc; - thebaseChief.getScreenMode().setMode(Mode.standard); + thebaseChief.getScreenMode().setMode(Mode.standard, null); } } } diff --git a/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsPreviewController.java b/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsPreviewController.java index 2325149795044096b25acf26023ed92a400571ea..59ef551f7f8ad271c82f705d41d3274ff69c7f6e 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsPreviewController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/LayoutMain3ColsPreviewController.java @@ -114,7 +114,7 @@ public class LayoutMain3ColsPreviewController extends MainLayoutBasicController ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); if (cc != null) { thebaseChief = cc; - thebaseChief.getScreenMode().setMode(Mode.full); + thebaseChief.getScreenMode().setMode(Mode.full, null); } fullScreen = true; } @@ -125,7 +125,7 @@ public class LayoutMain3ColsPreviewController extends MainLayoutBasicController public void deactivate() { getWindowControl().pop(); if (fullScreen) { - thebaseChief.getScreenMode().setMode(Mode.standard); + thebaseChief.getScreenMode().setMode(Mode.standard, null); } } diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java index dd234346c19be4f09aca3ee4cb938f85063f267b..239ba037cc9e13f835a0fd366b9bfe97192ec531 100644 --- a/src/main/java/org/olat/core/gui/components/Window.java +++ b/src/main/java/org/olat/core/gui/components/Window.java @@ -56,6 +56,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.JSAndCSSAdder; import org.olat.core.gui.control.JSAndCSSAdderImpl; +import org.olat.core.gui.control.Reload; import org.olat.core.gui.control.WindowBackOffice; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.dtabs.DTabs; @@ -103,7 +104,7 @@ import org.olat.core.util.component.ComponentVisitor; public class Window extends AbstractComponent implements CustomCSSDelegate { private static final OLog log = Tracing.createLoggerFor(Window.class); - private static final DispatchResult NO_DISPATCHRESULT = new DispatchResult(false, false, false); + private static final DispatchResult NO_DISPATCHRESULT = new DispatchResult(false, false, Reload.NO_RELOAD); private static final String LOG_SEPARATOR = "^$^"; /** @@ -394,11 +395,13 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { // 3.) return to sender... boolean didDispatch = false; boolean forceReload = false; + String forceReloadBusinessPath = null; if (validForDispatching) { DispatchResult dispatchResult = doDispatchToComponent(ureq, null); didDispatch = dispatchResult.isDispatch(); incTimestamp = dispatchResult.isIncTimestamp(); forceReload = dispatchResult.isForceReload(); + forceReloadBusinessPath = dispatchResult.getReloadBusinessPath(); if (isDebugLog) { long durationAfterDoDispatchToComponent = System.currentTimeMillis() - debug_start; log.debug("Perf-Test: Window durationAfterDoDispatchToComponent=" + durationAfterDoDispatchToComponent); @@ -410,7 +413,10 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { //-----> if (didDispatch || inlineAfterBackForward) { if (forceReload) { //force RELOAD with a redirect to itself - String reRenderUri = buildURIFor(this, timestampID, null); + String reRenderUri = forceReloadBusinessPath; + if(reRenderUri == null) { + reRenderUri = buildURIFor(this, timestampID, null); + } Command rmrcom = CommandFactory.createParentRedirectTo(reRenderUri); wbackofficeImpl.sendCommandTo(rmrcom); } else if (didDispatch || !validForDispatching) { @@ -1217,7 +1223,7 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { } ChiefController chief = wbackofficeImpl.getChiefController(); - boolean reload = chief == null ? false : chief.wishReload(ureq, true); + Reload reload = chief == null ? null : chief.wishReload(ureq, true); return new DispatchResult(toDispatch, incTimestamp, reload); } @@ -1328,12 +1334,12 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { class DispatchResult { private final boolean dispatch; private final boolean incTimestamp; - private final boolean forceReload; + private final Reload reload; - public DispatchResult(boolean dispatch, boolean incTimestamp, boolean forceReload) { + public DispatchResult(boolean dispatch, boolean incTimestamp, Reload reload) { this.dispatch = dispatch; this.incTimestamp = incTimestamp; - this.forceReload = forceReload; + this.reload = reload; } public boolean isDispatch() { @@ -1341,7 +1347,11 @@ class DispatchResult { } public boolean isForceReload() { - return forceReload; + return reload != null && reload.isWishReload(); + } + + public String getReloadBusinessPath() { + return reload == null ? null : reload.getBusinessPath(); } public boolean isIncTimestamp() { diff --git a/src/main/java/org/olat/core/gui/control/ChiefController.java b/src/main/java/org/olat/core/gui/control/ChiefController.java index 782cb8177b61c478f8e8374c66c9acbdd5bf154a..a6c19ebb74f7adbe609ea9498f84f9467a76271d 100644 --- a/src/main/java/org/olat/core/gui/control/ChiefController.java +++ b/src/main/java/org/olat/core/gui/control/ChiefController.java @@ -66,7 +66,12 @@ public interface ChiefController extends Controller { * @param erase * @return */ - public boolean wishReload(UserRequest ureq, boolean erase); + public Reload wishReload(UserRequest ureq, boolean erase); + + /** + * Make sure a reload will not be triggered. + */ + public void resetReload(); /** * diff --git a/src/main/java/org/olat/core/gui/control/DefaultChiefController.java b/src/main/java/org/olat/core/gui/control/DefaultChiefController.java index f85e4d3d0885df98c1749b56b121ccaa4c93cd89..939a3e2bfcf2cd8bbd79c1ed8ca72bbacfddd0c1 100644 --- a/src/main/java/org/olat/core/gui/control/DefaultChiefController.java +++ b/src/main/java/org/olat/core/gui/control/DefaultChiefController.java @@ -70,8 +70,13 @@ public abstract class DefaultChiefController extends DefaultController implement } @Override - public boolean wishReload(UserRequest ureq, boolean erase) { - return false; + public Reload wishReload(UserRequest ureq, boolean erase) { + return Reload.NO_RELOAD; + } + + @Override + public void resetReload() { + // } @Override diff --git a/src/main/java/org/olat/core/gui/control/Reload.java b/src/main/java/org/olat/core/gui/control/Reload.java new file mode 100644 index 0000000000000000000000000000000000000000..a2a9a1f11c26d8aa6b29c791ab2123d122ada43d --- /dev/null +++ b/src/main/java/org/olat/core/gui/control/Reload.java @@ -0,0 +1,48 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.core.gui.control; + +/** + * + * Initial date: 12 Nov 2018<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class Reload { + + public static final Reload NO_RELOAD = new Reload(false, null); + + private final boolean wishReload; + private final String businessPath; + + public Reload(boolean wishReload, String businessPath) { + this.wishReload = wishReload; + this.businessPath = businessPath; + } + + public boolean isWishReload() { + return wishReload; + } + + public String getBusinessPath() { + return businessPath; + } + +} diff --git a/src/main/java/org/olat/core/gui/control/ScreenMode.java b/src/main/java/org/olat/core/gui/control/ScreenMode.java index c2c63160715125a426e7bac9201c7a0521a0acf8..cba621243e87b2dc3477748a8a341bfcf0054b02 100644 --- a/src/main/java/org/olat/core/gui/control/ScreenMode.java +++ b/src/main/java/org/olat/core/gui/control/ScreenMode.java @@ -28,6 +28,7 @@ package org.olat.core.gui.control; public class ScreenMode { private Mode wish; private boolean fullScreen; + private String businessPath; public boolean isFullScreen() { return fullScreen; @@ -37,9 +38,15 @@ public class ScreenMode { return !fullScreen; } - public void setMode(Mode mode) { + /** + * + * @param mode The mode, full or standard screen + * @param businessPath The business path to beautify the reload (in the form [Repository:3781][CourseNode:23468732]) (optional) + */ + public void setMode(Mode mode, String businessPath) { fullScreen = Mode.full.equals(mode); this.wish = mode; + this.businessPath = businessPath; } public boolean isWishFullScreen() { @@ -63,6 +70,10 @@ public class ScreenMode { return w != null; } + public String getBusinessPath() { + return businessPath; + } + public boolean wishFullScreen(boolean erase) { Mode w = wish; if(erase) { @@ -79,6 +90,11 @@ public class ScreenMode { return w != null && w.equals(Mode.standard); } + public void reset() { + wish = null; + businessPath = null; + } + public enum Mode { standard, full diff --git a/src/main/java/org/olat/core/id/context/BusinessControl.java b/src/main/java/org/olat/core/id/context/BusinessControl.java index 4362a584752e21681aa1be141216d31cb6208dc5..88d0c4297b600fe4d37cf2d51ffd0285754bee94 100644 --- a/src/main/java/org/olat/core/id/context/BusinessControl.java +++ b/src/main/java/org/olat/core/id/context/BusinessControl.java @@ -54,9 +54,9 @@ import java.util.List; */ public interface BusinessControl { - public final static String START_TAG = "["; - public final static String END_TAG = "]"; - public final static String DELIMITER_TAG = ":"; + public static final String START_TAG = "["; + public static final String END_TAG = "]"; + public static final String DELIMITER_TAG = ":"; /** * Get String represation of BusinessControl. Used to save it as string (serializing) diff --git a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeGuardController.java b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeGuardController.java index 4f4fe0a96a8f7c6adbed1eb76d369e9f15bf00fa..9224556e95ac24de6a267cfe7f662013f5351d42 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeGuardController.java +++ b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeGuardController.java @@ -370,7 +370,7 @@ public class AssessmentModeGuardController extends BasicController implements Ge //make sure to see the navigation bar ChiefController cc = Windows.getWindows(ureq).getChiefController(); - cc.getScreenMode().setMode(Mode.standard); + cc.getScreenMode().setMode(Mode.standard, null); fireEvent(ureq, new Event("continue")); String businessPath = "[MyCoursesSite:0]"; diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java index b7ce93d27d6af8f792ae809b0e0ee2d0346aca35..e8cdff90da9cac5dff09c592ea9961b7281fb8cf 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java +++ b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java @@ -380,7 +380,8 @@ public class LTIRunController extends BasicController { ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); if (cc != null) { thebaseChief = cc; - thebaseChief.getScreenMode().setMode(Mode.full); + String businessPath = getWindowControl().getBusinessControl().getAsString(); + thebaseChief.getScreenMode().setMode(Mode.full, businessPath); } fullScreen = true; getWindowControl().pushToMainArea(run); @@ -392,7 +393,8 @@ public class LTIRunController extends BasicController { private void closeBasicLTI() { if (fullScreen && thebaseChief != null) { getWindowControl().pop(); - thebaseChief.getScreenMode().setMode(Mode.standard); + String businessPath = getWindowControl().getBusinessControl().getAsString(); + thebaseChief.getScreenMode().setMode(Mode.standard, businessPath); } mainPanel.setContent(startPage); } diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentMainLayoutController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentMainLayoutController.java index afce4e13ab786c1738ffd227ba662ba15a1a7f16..e440cc621fb0a6e5d71cdc813c5f65674447d96a 100644 --- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentMainLayoutController.java +++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentMainLayoutController.java @@ -80,7 +80,8 @@ public class QTI21AssessmentMainLayoutController extends MainLayoutBasicControll ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); if (cc != null) { thebaseChief = cc; - thebaseChief.getScreenMode().setMode(Mode.full); + String businessPath = getWindowControl().getBusinessControl().getAsString(); + thebaseChief.getScreenMode().setMode(Mode.full, businessPath); } else { Windows.getWindows(ureq).setFullScreen(Boolean.TRUE); } @@ -95,13 +96,14 @@ public class QTI21AssessmentMainLayoutController extends MainLayoutBasicControll public void deactivate(UserRequest ureq) { getWindowControl().pop(); if (fullScreen) { + String businessPath = getWindowControl().getBusinessControl().getAsString(); if(thebaseChief != null) { - thebaseChief.getScreenMode().setMode(Mode.standard); + thebaseChief.getScreenMode().setMode(Mode.standard, businessPath); } else if (ureq != null){ ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); if (cc != null) { thebaseChief = cc; - thebaseChief.getScreenMode().setMode(Mode.standard); + thebaseChief.getScreenMode().setMode(Mode.standard, businessPath); } } } diff --git a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java index 25cea0126da348d7cf4d81d141770901cf4827d4..0d79eb230cf3e69d2af9d65118590e0c6c74d4c2 100644 --- a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java +++ b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java @@ -327,6 +327,7 @@ public class AuthenticatedDispatcher implements Dispatcher { // render the window Window w = windowBackOffice.getWindow(); w.dispatchRequest(ureq, true); // renderOnly + chiefController.resetReload(); } catch (Exception e) { // try to render something try { diff --git a/src/main/java/org/olat/modules/lecture/ui/AbstractTeacherOverviewController.java b/src/main/java/org/olat/modules/lecture/ui/AbstractTeacherOverviewController.java index 5fc7cef01d7cd94dd2fc3f728ac1ab2376e903b4..66b551fefa003f8a89686cce92f0e0e0b36f6d9d 100644 --- a/src/main/java/org/olat/modules/lecture/ui/AbstractTeacherOverviewController.java +++ b/src/main/java/org/olat/modules/lecture/ui/AbstractTeacherOverviewController.java @@ -279,8 +279,9 @@ public abstract class AbstractTeacherOverviewController extends BasicController loadModel(currentSearchParams); } getWindowControl().pop(); + String businessPath = getWindowControl().getBusinessControl().getAsString(); getWindowControl().getWindowBackOffice() - .getChiefController().getScreenMode().setMode(Mode.standard); + .getChiefController().getScreenMode().setMode(Mode.standard, businessPath); cleanUp(); } else if(currentLecturesBlockCtrl == source || pendingLecturesBlockCtrl == source || nextLecturesBlockCtrl == source || closedLecturesBlockCtrl == source) { @@ -368,7 +369,7 @@ public abstract class AbstractTeacherOverviewController extends BasicController listenTo(rollCallWizardCtrl); ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); - cc.getScreenMode().setMode(Mode.full); + cc.getScreenMode().setMode(Mode.full, null); getWindowControl().pushToMainArea(rollCallWizardCtrl.getInitialComponent()); ThreadLocalUserActivityLogger.log(LearningResourceLoggingAction.LECTURE_BLOCK_ROLL_CALL_STARTED, getClass(), diff --git a/src/main/java/org/olat/modules/quality/ui/ExecutorParticipationsListController.java b/src/main/java/org/olat/modules/quality/ui/ExecutorParticipationsListController.java index 1aae51bad80127c983defc774526ebfdf3e0ce39..1d0ebbb255d382cced4fcb472a9d16a28498aa34 100644 --- a/src/main/java/org/olat/modules/quality/ui/ExecutorParticipationsListController.java +++ b/src/main/java/org/olat/modules/quality/ui/ExecutorParticipationsListController.java @@ -170,9 +170,11 @@ public class ExecutorParticipationsListController extends FormBasicController im } private void doDeactivateExecution(UserRequest ureq) { - addToHistory(ureq, this); + WindowControl wControl = addToHistory(ureq, this); getWindowControl().pop(); - getWindowControl().getWindowBackOffice().getChiefController().getScreenMode().setMode(Mode.standard); + String businessPath = wControl.getBusinessControl().getAsString(); + getWindowControl().getWindowBackOffice().getChiefController() + .getScreenMode().setMode(Mode.standard, businessPath); cleanUp(); tableEl.reloadData(); } @@ -205,7 +207,8 @@ public class ExecutorParticipationsListController extends FormBasicController im listenTo(executionCtrl); ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); - cc.getScreenMode().setMode(Mode.full); + String businessPath = getWindowControl().getBusinessControl().getAsString(); + cc.getScreenMode().setMode(Mode.full, businessPath); getWindowControl().pushToMainArea(executionCtrl.getInitialComponent()); }