diff --git a/src/main/java/org/olat/core/gui/control/DefaultController.java b/src/main/java/org/olat/core/gui/control/DefaultController.java index 18e86b10211863e4461ec2e635c3770d29809504..240182ba331a7a01291403bbc7d34e535e6a95e6 100644 --- a/src/main/java/org/olat/core/gui/control/DefaultController.java +++ b/src/main/java/org/olat/core/gui/control/DefaultController.java @@ -470,10 +470,10 @@ public abstract class DefaultController implements Controller, ControllerEventLi } protected WindowControl addToHistory(UserRequest ureq, Controller controller) { - WindowControl wControl; + WindowControl wControl = null; if(controller instanceof DefaultController) { wControl = ((DefaultController)controller).getWindowControl(); - } else { + } else if(controller != null) { wControl = controller.getWindowControlForDebug(); } BusinessControlFactory.getInstance().addToHistory(ureq, wControl); diff --git a/src/main/java/org/olat/course/nodes/STCourseNode.java b/src/main/java/org/olat/course/nodes/STCourseNode.java index e05d9be1a5ce0ebaa890c36645ce43910b801372..b3d011f2256cc09939812e8ad3f9bd9a9a9260bf 100644 --- a/src/main/java/org/olat/course/nodes/STCourseNode.java +++ b/src/main/java/org/olat/course/nodes/STCourseNode.java @@ -138,6 +138,7 @@ public class STCourseNode extends AbstractAccessableCourseNode implements Assess * org.olat.course.run.userview.UserCourseEnvironment, * org.olat.course.run.userview.NodeEvaluation) */ + @Override public NodeRunConstructionResult createNodeRunConstructionResult(UserRequest ureq, WindowControl wControl, final UserCourseEnvironment userCourseEnv, NodeEvaluation ne, String nodecmd) { updateModuleConfigDefaults(false); @@ -174,11 +175,12 @@ public class STCourseNode extends AbstractAccessableCourseNode implements Assess spCtr.addLoggingResourceable(LoggingResourceable.wrap(this)); // create clone wrapper layout, allow popping into second window CloneLayoutControllerCreatorCallback clccc = new CloneLayoutControllerCreatorCallback() { - public ControllerCreator createLayoutControllerCreator(final UserRequest ureq, final ControllerCreator contentControllerCreator) { - return BaseFullWebappPopupLayoutFactory.createAuthMinimalPopupLayout(ureq, new ControllerCreator() { - @SuppressWarnings("synthetic-access") + @Override + public ControllerCreator createLayoutControllerCreator(final UserRequest uureq, final ControllerCreator contentControllerCreator) { + return BaseFullWebappPopupLayoutFactory.createAuthMinimalPopupLayout(uureq, new ControllerCreator() { + @Override public Controller createController(UserRequest lureq, WindowControl lwControl) { - // wrapp in column layout, popup window needs a layout controller + // wrap in column layout, popup window needs a layout controller Controller ctr = contentControllerCreator.createController(lureq, lwControl); LayoutMain3ColsController layoutCtr = new LayoutMain3ColsController(lureq, lwControl, ctr); layoutCtr.setCustomCSS(CourseFactory.getCustomCourseCss(lureq.getUserSession(), userCourseEnv.getCourseEnvironment())); @@ -192,7 +194,7 @@ public class STCourseNode extends AbstractAccessableCourseNode implements Assess }; Controller wrappedCtrl = TitledWrapperHelper.getWrapper(ureq, wControl, spCtr, this, ICON_CSS_CLASS); if(wrappedCtrl instanceof CloneableController) { - cont = new CloneController(ureq, wControl, (CloneableController)wrappedCtrl, clccc); + cont = new CloneController(ureq, wControl, (CloneableController)wrappedCtrl, clccc); } else { throw new AssertException("Need to be a cloneable"); } diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java index 004a968fa005e53a9209f1d92cac2585ee4fd8a4..d5c0c26f003335ab5746a27bc406cce0fd70d7f2 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -431,8 +431,14 @@ public class RunMainController extends MainLayoutBasicController implements Gene } } else if(currentNodeController instanceof Activateable2) { ((Activateable2)currentNodeController).activate(ureq, entries, state); + } else if(currentNodeController != null) { + contentP.setContent(currentNodeController.getInitialComponent()); + } else { + MessageController msgCtrl = MessageUIFactory + .createWarnMessage(ureq, getWindowControl(), null, translate("msg.nodenotavailableanymore")); + listenTo(msgCtrl); + contentP.setContent(msgCtrl.getInitialComponent()); } - contentP.setContent(currentNodeController.getInitialComponent()); updateNextPrevious(); updateLastUsage(nclr.getCalledCourseNode());