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