diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java index 5688a416524d02f52d7b257206ae413c817d8cf1..1a6ba698d1e81f0ae0aa04b73580e2cb2bcd544b 100644 --- a/src/main/java/org/olat/course/CourseFactory.java +++ b/src/main/java/org/olat/course/CourseFactory.java @@ -207,9 +207,10 @@ public class CourseFactory extends BasicManager { * @return editor controller for the given course resourceable; if the editor * is already locked, it returns a controller with a lock message */ - public static Controller createEditorController(UserRequest ureq, WindowControl wControl, StackedController stack, OLATResourceable olatResource) { + public static Controller createEditorController(UserRequest ureq, WindowControl wControl, StackedController stack, + OLATResourceable olatResource, CourseNode selectedNode) { ICourse course = loadCourse(olatResource); - EditorMainController emc = new EditorMainController(ureq, wControl, course, stack); + EditorMainController emc = new EditorMainController(ureq, wControl, course, stack, selectedNode); if (!emc.getLockEntry().isSuccess()) { // get i18n from the course runmaincontroller to say that this editor is // already locked by another person diff --git a/src/main/java/org/olat/course/editor/EditorMainController.java b/src/main/java/org/olat/course/editor/EditorMainController.java index c1c5c6af08bc225de33794f6782d8f373229163e..1ada8d7ce99975f0ed4b615d96963b714ad892f5 100644 --- a/src/main/java/org/olat/course/editor/EditorMainController.java +++ b/src/main/java/org/olat/course/editor/EditorMainController.java @@ -218,7 +218,8 @@ public class EditorMainController extends MainLayoutBasicController implements G * @param wControl The window controller * @param course The course */ - public EditorMainController(UserRequest ureq, WindowControl wControl, OLATResourceable ores, StackedController externStack) { + public EditorMainController(UserRequest ureq, WindowControl wControl, OLATResourceable ores, + StackedController externStack, CourseNode selectedNode) { super(ureq,wControl); this.ores = ores; stackPanel = externStack == null @@ -350,9 +351,15 @@ public class EditorMainController extends MainLayoutBasicController implements G // - deleted events CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, ureq.getIdentity(), course); // activate course root node - String rootNodeIdent = cetm.getRootNode().getIdent(); - menuTree.setSelectedNodeId(rootNodeIdent); - updateViewForSelectedNodeId(ureq, rootNodeIdent); + String nodeIdent = cetm.getRootNode().getIdent(); + if(selectedNode != null) { + CourseEditorTreeNode editorNode = cetm.getCourseEditorNodeContaining(selectedNode); + if(editorNode != null) { + nodeIdent = editorNode.getIdent(); + } + } + menuTree.setSelectedNodeId(nodeIdent); + updateViewForSelectedNodeId(ureq, nodeIdent); } } catch (RuntimeException e) { log.warn(RELEASE_LOCK_AT_CATCH_EXCEPTION+" [in <init>]", e); diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java index 076f0b2bc61d6206d26a8d43b8ebf75e4f6f9241..cce4fe0a0a025505ff18c3afa258499ba3ada62e 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -818,7 +818,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene private void doEdit(UserRequest ureq) { if (hasCourseRight(CourseRights.RIGHT_COURSEEDITOR) || isCourseAdmin) { - Controller ec = CourseFactory.createEditorController(ureq, getWindowControl(), all, course); + Controller ec = CourseFactory.createEditorController(ureq, getWindowControl(), all, course, currentCourseNode); //user activity logger which was initialized with course run if(ec != null){ //we are in editing mode