From ddad4a6327e92d0546bd712b39da8aad13f317ac Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 30 Jan 2015 11:24:45 +0100
Subject: [PATCH] OO-1413: remove the course node, add code for backwards
 compatibility

---
 .../CourseLinkProviderController.java         | 30 +++++++++++--------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java b/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java
index 6394a202d18..c3f7181b289 100644
--- a/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java
+++ b/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java
@@ -87,7 +87,7 @@ public class CourseLinkProviderController extends FormBasicController implements
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		multiSelectTree = uifactory.addTreeMultiselect("seltree", null, formLayout, courseNodeTreeModel, this);
-		multiSelectTree.setRootVisible(false);
+		multiSelectTree.setRootVisible(availableCourses.size() == 1);
 		multiSelectTree.setMultiSelect(true);
 
 		saveButton = uifactory.addFormSubmitButton("ok", "cal.links.submit", formLayout);
@@ -164,8 +164,17 @@ public class CourseLinkProviderController extends FormBasicController implements
 				String nodeId = link.getId();
 				TreeNode node = courseNodeTreeModel.getNodeById(nodeId);
 				if(node == null) {
-					nodeId = availableCourses.get(0).getResourceableId() + "_" + nodeId;
-					node = courseNodeTreeModel.getNodeById(nodeId);
+					String fallBackNodeId = availableCourses.get(0).getResourceableId() + "_" + nodeId;
+					node = courseNodeTreeModel.getNodeById(fallBackNodeId);
+				}
+				if(node == null && nodeId.indexOf("_") < 0) {
+					//course selected -> map to root node
+					for(ICourse course: availableCourses) {
+						if(nodeId.equals(course.getResourceableId().toString())) {
+							String fallBackNodeId = course.getResourceableId() + "_" + course.getRunStructure().getRootNode().getIdent();
+							node = courseNodeTreeModel.getNodeById(fallBackNodeId);
+						}
+					}
 				}
 				if (node != null) {
 					node.setSelected(true);
@@ -209,21 +218,18 @@ public class CourseLinkProviderController extends FormBasicController implements
 		}
 		
 		private LinkTreeNode buildCourseTree(ICourse course) {
-			LinkTreeNode node = new LinkTreeNode(course.getCourseTitle(), course, null);
-			node.setAltText(course.getCourseTitle());
-			node.setIdent(course.getResourceableId().toString());
-			node.setIconCssClass("o_CourseModule_icon");
-
-			LinkTreeNode childNode = buildTree(course, course.getRunStructure().getRootNode());
-			node.addChild(childNode);
-			return node;
+			return buildTree(course, course.getRunStructure().getRootNode());
 		}
 
 		private LinkTreeNode buildTree(ICourse course, CourseNode courseNode) {
 			LinkTreeNode node = new LinkTreeNode(courseNode.getShortTitle(), course, courseNode);
 			node.setAltText(courseNode.getLongTitle());
 			node.setIdent(course.getResourceableId() + "_" + courseNode.getIdent());
-			node.setIconCssClass(("o_icon o_" + courseNode.getType() + "_icon").intern());
+			if(courseNode == course.getRunStructure().getRootNode()) {
+				node.setIconCssClass("o_CourseModule_icon");
+			} else {
+				node.setIconCssClass(("o_icon o_" + courseNode.getType() + "_icon").intern());
+			}
 			node.setUserObject(course);
 			for (int i = 0; i < courseNode.getChildCount(); i++) {
 				CourseNode childNode = (CourseNode)courseNode.getChildAt(i);
-- 
GitLab