Skip to content
Snippets Groups Projects
Commit 88bb7e5a authored by uhensler's avatar uhensler
Browse files

OO-4481: Open configuration of a single course element

parent a4b232e2
No related branches found
No related tags found
No related merge requests found
......@@ -199,13 +199,6 @@ public class EditorMainController extends MainLayoutBasicController implements G
@Autowired
private AssessmentModeManager assessmentModeMgr;
/**
* Constructor for the course editor controller
*
* @param ureq The user request
* @param wControl The window controller
* @param course The course
*/
public EditorMainController(UserRequest ureq, WindowControl wControl, TooledStackedPanel toolbar, ICourse course, CourseNode selectedNode) {
super(ureq,wControl);
this.ores = OresHelper.clone(course);
......@@ -364,10 +357,6 @@ public class EditorMainController extends MainLayoutBasicController implements G
return immediateClose;
}
/**
* @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
* org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
*/
@Override
public void event(UserRequest ureq, Component source, Event event) {
try {
......@@ -684,8 +673,6 @@ public class EditorMainController extends MainLayoutBasicController implements G
} else if (event == Event.CANCELLED_EVENT) {
// user canceled
}
//aggressive clean-up
cleanUp();
} else if (source == deleteDialogController){
removeAsListenerAndDispose(deleteDialogController);
......@@ -721,6 +708,12 @@ public class EditorMainController extends MainLayoutBasicController implements G
removeAsListenerAndDispose(alternateCtr);
cmc = null;
alternateCtr = null;
} else if (source == overviewCtrl) {
if (event instanceof SelectEvent) {
SelectEvent se = (SelectEvent)event;
doOpenNode(ureq, se.getCourseNode());
cleanUp();
}
}
} catch (RuntimeException e) {
log.warn(RELEASE_LOCK_AT_CATCH_EXCEPTION+" [in event(UserRequest,Controller,Event)]", e);
......@@ -728,14 +721,12 @@ public class EditorMainController extends MainLayoutBasicController implements G
throw e;
}
}
/**
* Aggressive clean-up of popup controllers
*/
private void cleanUp() {
removeAsListenerAndDispose(moveCopyController);
removeAsListenerAndDispose(multiSPChooserCtr);
removeAsListenerAndDispose(chooseNodeTypeCtr);
removeAsListenerAndDispose(overviewCtrl);
removeAsListenerAndDispose(alternateCtr);
removeAsListenerAndDispose(calloutCtrl);
removeAsListenerAndDispose(statusCtr);
......@@ -743,6 +734,7 @@ public class EditorMainController extends MainLayoutBasicController implements G
moveCopyController = null;
chooseNodeTypeCtr = null;
multiSPChooserCtr = null;
overviewCtrl = null;
alternateCtr = null;
calloutCtrl = null;
statusCtr = null;
......@@ -768,6 +760,16 @@ public class EditorMainController extends MainLayoutBasicController implements G
}
}
private void doOpenNode(UserRequest ureq, CourseNode courseNode) {
TreeNode selectedNode = menuTree.getTreeModel().getNodeById(courseNode.getIdent());
if (selectedNode != null) {
stackPanel.popUpToController(this);
menuTree.setSelectedNodeId(selectedNode.getIdent());
updateViewForSelectedNodeId(ureq, selectedNode.getIdent());
}
}
private void doMove(UserRequest ureq, ICourse course, boolean copy) {
if(guardModalController(moveCopyController)) return;
......@@ -1234,9 +1236,6 @@ public class EditorMainController extends MainLayoutBasicController implements G
}
}
/**
* @see org.olat.core.util.event.GenericEventListener#event(org.olat.core.gui.control.Event)
*/
@Override
public void event(Event event) {
try {
......
/**
* <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.course.editor;
import org.olat.core.gui.control.Event;
import org.olat.course.nodes.CourseNode;
/**
*
* Initial date: 22 Jan 2020<br>
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class SelectEvent extends Event {
private static final long serialVersionUID = 5560638620656756047L;
private final CourseNode courseNode;
public SelectEvent(CourseNode courseNode) {
super("select-edit-node");
this.courseNode = courseNode;
}
public CourseNode getCourseNode() {
return courseNode;
}
}
......@@ -23,6 +23,7 @@ import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.panel.SimpleStackedPanel;
import org.olat.core.gui.components.panel.StackedPanel;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
......@@ -47,6 +48,14 @@ public class OverviewController extends BasicController {
initialPanel.setContent(overviewListCtrl.getInitialComponent());
}
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if (source == overviewListCtrl) {
fireEvent(ureq, event);
}
super.event(ureq, source, event);
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
//
......
......@@ -37,6 +37,7 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFle
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory;
import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent;
import org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer;
import org.olat.core.gui.components.form.flexible.impl.elements.table.TreeNodeFlexiCellRenderer;
import org.olat.core.gui.components.link.Link;
......@@ -51,6 +52,7 @@ import org.olat.course.ICourse;
import org.olat.course.assessment.IndentedNodeRenderer;
import org.olat.course.editor.EditorMainController;
import org.olat.course.editor.NodeEditController;
import org.olat.course.editor.SelectEvent;
import org.olat.course.editor.overview.OverviewDataModel.OverviewCols;
import org.olat.course.learningpath.FullyAssessedTrigger;
import org.olat.course.learningpath.LearningPathConfigs;
......@@ -72,6 +74,8 @@ import org.springframework.beans.factory.annotation.Autowired;
*/
public class OverviewListController extends FormBasicController {
private static final String CMD_OPEN = "open";
private FlexiTableElement tableEl;
private OverviewDataModel dataModel;
private FormLink bulkLink;
......@@ -107,7 +111,9 @@ public class OverviewListController extends FormBasicController {
IndentedNodeRenderer intendedNodeRenderer = new IndentedNodeRenderer();
intendedNodeRenderer.setIndentationEnabled(false);
FlexiCellRenderer nodeRenderer = new TreeNodeFlexiCellRenderer(intendedNodeRenderer);
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(OverviewCols.node, nodeRenderer));
DefaultFlexiColumnModel nodeModel = new DefaultFlexiColumnModel(OverviewCols.node, CMD_OPEN, nodeRenderer);
nodeModel.setAlwaysVisible(true);
columnsModel.addFlexiColumnModel(nodeModel);
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(OverviewCols.shortTitle));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(OverviewCols.longTitle));
DefaultFlexiColumnModel learningObjectivesModel = new DefaultFlexiColumnModel(OverviewCols.learningObjectives);
......@@ -264,7 +270,16 @@ public class OverviewListController extends FormBasicController {
@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
if (source == bulkLink) {
if (tableEl == source) {
if (event instanceof SelectionEvent) {
SelectionEvent se = (SelectionEvent)event;
String cmd = se.getCommand();
OverviewRow row = dataModel.getObject(se.getIndex());
if (CMD_OPEN.equals(cmd)) {
fireEvent(ureq, new SelectEvent(row.getCourseNode()));
}
}
} else if (source == bulkLink) {
doBulk(ureq);
}
super.formInnerEvent(ureq, source, event);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment