From 1a16dc327815bf9e2e92f6eb0ac50377f5afac15 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Wed, 22 Jan 2020 11:15:11 +0100 Subject: [PATCH] OO-4315: Hide learning path progress in conventional course --- .../condition/ConditionNodeAccessProvider.java | 6 ++++++ .../manager/LearningPathNodeAccessProvider.java | 6 ++++++ .../olat/course/nodeaccess/NodeAccessProvider.java | 3 +++ .../olat/course/nodeaccess/NodeAccessService.java | 11 +++++++++++ .../nodeaccess/manager/NodeAccessServiceImpl.java | 6 ++++++ .../olat/course/run/CourseContentController.java | 8 ++++++-- .../org/olat/course/run/RunMainController.java | 14 ++++++++------ 7 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java b/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java index b41f7de4a82..1e8d0360baf 100644 --- a/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java +++ b/src/main/java/org/olat/course/condition/ConditionNodeAccessProvider.java @@ -31,6 +31,7 @@ import org.olat.course.editor.ConditionAccessEditConfig; import org.olat.course.nodeaccess.NodeAccessProvider; import org.olat.course.nodes.AbstractAccessableCourseNode; import org.olat.course.nodes.CourseNode; +import org.olat.course.run.CoursePaginationController; import org.olat.course.run.userview.CourseTreeModelBuilder; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.course.tree.CourseEditorTreeModel; @@ -89,6 +90,11 @@ public class ConditionNodeAccessProvider implements NodeAccessProvider { return ""; } + @Override + public CoursePaginationController getCoursePaginationController(UserRequest ureq, WindowControl wControl) { + return null; + } + @Override public CourseTreeModelBuilder getCourseTreeModelBuilder(UserCourseEnvironment userCourseEnv) { return new ConditionCourseTreeModelBuilder(userCourseEnv); diff --git a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java index 97f7acc03e4..5e35fcac389 100644 --- a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java +++ b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java @@ -35,6 +35,7 @@ import org.olat.course.learningpath.ui.LearningPathNodeConfigController; import org.olat.course.learningpath.ui.TabbableLeaningPathNodeConfigController; import org.olat.course.nodeaccess.NodeAccessProvider; import org.olat.course.nodes.CourseNode; +import org.olat.course.run.CoursePaginationController; import org.olat.course.run.userview.CourseTreeModelBuilder; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.course.tree.CourseEditorTreeModel; @@ -98,6 +99,11 @@ public class LearningPathNodeAccessProvider implements NodeAccessProvider { return "o_lp_tree"; } + @Override + public CoursePaginationController getCoursePaginationController(UserRequest ureq, WindowControl wControl) { + return new CoursePaginationController(ureq, wControl); + } + @Override public CourseTreeModelBuilder getCourseTreeModelBuilder(UserCourseEnvironment userCourseEnv) { return new LearningPathCourseTreeModelBuilder(userCourseEnv); diff --git a/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java b/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java index c77ae2f313d..dd38ea9bf57 100644 --- a/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java +++ b/src/main/java/org/olat/course/nodeaccess/NodeAccessProvider.java @@ -24,6 +24,7 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.tabbable.TabbableController; import org.olat.course.ICourse; import org.olat.course.nodes.CourseNode; +import org.olat.course.run.CoursePaginationController; import org.olat.course.run.userview.CourseTreeModelBuilder; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.course.tree.CourseEditorTreeModel; @@ -47,6 +48,8 @@ public interface NodeAccessProvider extends NodeAccessProviderIdentifier { public String getCourseTreeCssClass(); + public CoursePaginationController getCoursePaginationController(UserRequest ureq, WindowControl wControl); + public CourseTreeModelBuilder getCourseTreeModelBuilder(UserCourseEnvironment userCourseEnv); public boolean onNodeVisited(CourseNode courseNode, UserCourseEnvironment userCourseEnvironment); diff --git a/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java b/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java index e8a4dd950d2..058be43fc51 100644 --- a/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java +++ b/src/main/java/org/olat/course/nodeaccess/NodeAccessService.java @@ -27,6 +27,7 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.tabbable.TabbableController; import org.olat.course.ICourse; import org.olat.course.nodes.CourseNode; +import org.olat.course.run.CoursePaginationController; import org.olat.course.run.userview.CourseTreeModelBuilder; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.course.tree.CourseEditorTreeModel; @@ -76,6 +77,16 @@ public interface NodeAccessService { * @return */ public String getCourseTreeCssClass(NodeAccessType type); + + /** + * Controller to navigate to the next and the previous course node. + * + * @param ureq + * @param wControl + * @param type + * @return + */ + public CoursePaginationController getCoursePaginationController(UserRequest ureq, WindowControl wControl, NodeAccessType type); /** * Builder to build the TreeModel of the complete course run structure. diff --git a/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java b/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java index 4a0f4f273a8..bf45a3b3358 100644 --- a/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java +++ b/src/main/java/org/olat/course/nodeaccess/manager/NodeAccessServiceImpl.java @@ -33,6 +33,7 @@ import org.olat.course.nodeaccess.NodeAccessProviderIdentifier; import org.olat.course.nodeaccess.NodeAccessService; import org.olat.course.nodeaccess.NodeAccessType; import org.olat.course.nodes.CourseNode; +import org.olat.course.run.CoursePaginationController; import org.olat.course.run.navigation.NodeVisitedListener; import org.olat.course.run.userview.CourseTreeModelBuilder; import org.olat.course.run.userview.UserCourseEnvironment; @@ -101,6 +102,11 @@ public class NodeAccessServiceImpl implements NodeAccessService, NodeVisitedList public String getCourseTreeCssClass(NodeAccessType type) { return getNodeAccessProvider(type).getCourseTreeCssClass(); } + + @Override + public CoursePaginationController getCoursePaginationController(UserRequest ureq, WindowControl wControl, NodeAccessType type) { + return getNodeAccessProvider(type).getCoursePaginationController(ureq, wControl); + } @Override public CourseTreeModelBuilder getCourseTreeModelBuilder(UserCourseEnvironment userCourseEnv) { diff --git a/src/main/java/org/olat/course/run/CourseContentController.java b/src/main/java/org/olat/course/run/CourseContentController.java index 78fe22c6593..0520b55eb54 100644 --- a/src/main/java/org/olat/course/run/CourseContentController.java +++ b/src/main/java/org/olat/course/run/CourseContentController.java @@ -40,8 +40,12 @@ public class CourseContentController extends BasicController { Component row2) { super(ureq, wControl); mainVC = createVelocityContainer("content"); - mainVC.put("row1", row1); - mainVC.put("row2", row2); + if (row1 != null) { + mainVC.put("row1", row1); + } + if (row2 != null) { + mainVC.put("row2", row2); + } putInitialPanel(mainVC); } diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java index 98105fc4698..3722bc8b312 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -186,12 +186,14 @@ public class RunMainController extends MainLayoutBasicController implements Gene luTree = new MenuTree(null, "luTreeRun", this); luTree.setScrollTopOnClick(true); luTree.setExpandSelectedNode(false); - String treeCssClass =nodeAccessService.getCourseTreeCssClass(NodeAccessType.of(course)); + String treeCssClass = nodeAccessService.getCourseTreeCssClass(NodeAccessType.of(course)); luTree.setElementCssClass("o_course_menu " + treeCssClass); contentP = new Panel("building_block_content"); - paginationCtrl = new CoursePaginationController(ureq, getWindowControl()); - listenTo(paginationCtrl); + paginationCtrl = nodeAccessService.getCoursePaginationController(ureq, getWindowControl(), NodeAccessType.of(course)); + if (paginationCtrl != null) { + listenTo(paginationCtrl); + } // build up the running structure for this user // get all group memberships for this course @@ -226,6 +228,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene layoutTree = null; } + Component paginationCmp = paginationCtrl != null? paginationCtrl.getInitialComponent(): null; if (glossaryMarkerCtr != null) { listenTo(glossaryMarkerCtr); // enable / disable glossary highlighting according to user prefs @@ -242,11 +245,10 @@ public class RunMainController extends MainLayoutBasicController implements Gene } else { glossaryMarkerCtr.setTextMarkingEnabled(state.booleanValue()); } - contentCtrl = new CourseContentController(ureq, getWindowControl(), paginationCtrl.getInitialComponent(), + contentCtrl = new CourseContentController(ureq, getWindowControl(), paginationCmp, glossaryMarkerCtr.getInitialComponent()); } else { - contentCtrl = new CourseContentController(ureq, getWindowControl(), paginationCtrl.getInitialComponent(), - contentP); + contentCtrl = new CourseContentController(ureq, getWindowControl(), paginationCmp, contentP); } columnLayoutCtr = new LayoutMain3ColsController(ureq, getWindowControl(), layoutTree, contentCtrl.getInitialComponent(), "courseRun" + course.getResourceableId()); -- GitLab