From 16aeb496ec1dea66050821fcc4f8de241e9481cb Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Tue, 31 Jul 2012 08:43:48 +0200
Subject: [PATCH] OO-291: show/hide resources menu item

---
 src/main/java/org/olat/ControllerFactory.java |   2 +-
 ...essGroupContextEntryControllerCreator.java |   2 +-
 .../olat/group/ui/BGControllerFactory.java    |   6 +-
 .../ui/edit/BusinessGroupEditController.java  |   4 +-
 .../run/BusinessGroupMainRunController.java   | 155 ++----------------
 5 files changed, 23 insertions(+), 146 deletions(-)

diff --git a/src/main/java/org/olat/ControllerFactory.java b/src/main/java/org/olat/ControllerFactory.java
index 19442ce8a60..63d45ab8a2c 100644
--- a/src/main/java/org/olat/ControllerFactory.java
+++ b/src/main/java/org/olat/ControllerFactory.java
@@ -96,7 +96,7 @@ public class ControllerFactory {
 			if (ureq.getUserSession().getRoles().isOLATAdmin() || ureq.getUserSession().getRoles().isGroupManager()
 					|| bgs.isIdentityInBusinessGroup(ureq.getIdentity(), bg)) {	
 				// only olatadmins or admins of this group can administer this group
-				return BGControllerFactory.getInstance().createRunControllerFor(ureq, wControl, bg, initialViewIdentifier);
+				return BGControllerFactory.getInstance().createRunControllerFor(ureq, wControl, bg);
 			}
 			// else skip
 
diff --git a/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java b/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
index 9dd854165f6..27da4258000 100644
--- a/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
@@ -62,7 +62,7 @@ public class BusinessGroupContextEntryControllerCreator extends DefaultContextEn
 			if (ureq.getUserSession().getRoles().isOLATAdmin() || ureq.getUserSession().getRoles().isGroupManager()
 					|| bgs.isIdentityInBusinessGroup(ureq.getIdentity(), bgroup) || isAccessControlled(bgroup)) {
 				// only olatadmins or admins of this group can administer this group
-				ctrl = BGControllerFactory.getInstance().createRunControllerFor(ureq, wControl, bgroup, null);
+				ctrl = BGControllerFactory.getInstance().createRunControllerFor(ureq, wControl, bgroup);
 			}
 		}
 		return ctrl;
diff --git a/src/main/java/org/olat/group/ui/BGControllerFactory.java b/src/main/java/org/olat/group/ui/BGControllerFactory.java
index 0815a9e3378..82b175b30ea 100644
--- a/src/main/java/org/olat/group/ui/BGControllerFactory.java
+++ b/src/main/java/org/olat/group/ui/BGControllerFactory.java
@@ -84,9 +84,7 @@ public class BGControllerFactory {
 	 * @param initialViewIdentifier
 	 * @return a run controller for this business group
 	 */
-	public BusinessGroupMainRunController createRunControllerFor(UserRequest ureq, WindowControl wControl, BusinessGroup businessGroup,
-			 String initialViewIdentifier) {
-
+	public BusinessGroupMainRunController createRunControllerFor(UserRequest ureq, WindowControl wControl, BusinessGroup businessGroup) {
 		// build up the context path
 		WindowControl bwControl;
 		OLATResourceable businessOres = businessGroup;
@@ -97,7 +95,7 @@ public class BGControllerFactory {
 		} else {
 			bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ce, wControl);
 		}
-		return new BusinessGroupMainRunController(ureq, bwControl, businessGroup, initialViewIdentifier);
+		return new BusinessGroupMainRunController(ureq, bwControl, businessGroup);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/group/ui/edit/BusinessGroupEditController.java b/src/main/java/org/olat/group/ui/edit/BusinessGroupEditController.java
index 2b9da4e526e..dbaf8572dbc 100644
--- a/src/main/java/org/olat/group/ui/edit/BusinessGroupEditController.java
+++ b/src/main/java/org/olat/group/ui/edit/BusinessGroupEditController.java
@@ -369,7 +369,7 @@ public class BusinessGroupEditController extends BasicController implements Cont
 				fireEvent(ureq, Event.CHANGED_EVENT );		
 			} 
 		//fxdiff VCRP-1,2: access control of resources
-		} else if (source == this.modifyBusinessGroupController || source == tabAccessCtrl) {
+		} else if (source == modifyBusinessGroupController || source == tabAccessCtrl) {
 			if (event == Event.DONE_EVENT) {
 				// update business group with the specified values
 				// values are taken from the modifyBusinessGroupForm
@@ -405,6 +405,8 @@ public class BusinessGroupEditController extends BasicController implements Cont
 				vc_tab_bgDetails.put("businessGroupForm", this.modifyBusinessGroupController.getInitialComponent());
 
 			}
+		} else if (source == resourceController) {
+			fireEvent(ureq, event);
 		}
 	}
 
diff --git a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java
index 3539cf0c4f0..bffe6156a93 100644
--- a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java
+++ b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java
@@ -60,7 +60,6 @@ import org.olat.core.gui.control.generic.messages.MessageUIFactory;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
-import org.olat.core.id.context.BusinessControl;
 import org.olat.core.id.context.BusinessControlFactory;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.StateEntry;
@@ -196,17 +195,9 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im
 	private String adminNodeId; // reference to admin menu item
 
 	// not null indicates tool is enabled
-	private GenericTreeNode nodeFolder;
-	private GenericTreeNode nodeForum;
-	private GenericTreeNode nodeWiki;
-	private GenericTreeNode nodeCal;
-	private GenericTreeNode nodePortfolio;
+	private GenericTreeNode nodeFolder, nodeForum, nodeWiki, nodeCal, nodePortfolio;
 	//fxdiff BAKS-7 Resume function
-	private GenericTreeNode nodeContact;
-	private GenericTreeNode nodeGroupOwners;
-	private GenericTreeNode nodeResources;
-	private GenericTreeNode nodeInformation;
-	private GenericTreeNode nodeAdmin;
+	private GenericTreeNode nodeContact, nodeGroupOwners, nodeResources, nodeInformation, nodeAdmin;
 	private boolean groupRunDisabled;
 	private OLATResourceable assessmentEventOres;
 	//fxdiff VCRP-1,2: access control of resources
@@ -223,8 +214,7 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im
 	 * @param flags
 	 * @param initialViewIdentifier supported are null, "toolforum", "toolfolder"
 	 */
-	public BusinessGroupMainRunController(UserRequest ureq, WindowControl control, BusinessGroup bGroup,
-			String initialViewIdentifier) {
+	public BusinessGroupMainRunController(UserRequest ureq, WindowControl control, BusinessGroup bGroup) {
 		super(ureq, control);
 
 		/*
@@ -316,118 +306,6 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im
 			needActivation = true;
 			return;
 		}
-
-		//REVIEW:PB:2009-05-31: consolidate ContextEntry <-> initialViewIdentifier Concept -> go for ContextEntry at the end.
-		// first step -> if initialViewIdentifier != null -> map initialViewIdentifier to ore with OresHelper
-		// how to remove initialViewIdentifier and replace by ContextEntry Path?
-		
-		
-		// jump to either the forum or the folder if the business-launch-path says so.
-		BusinessControl bc = getWindowControl().getBusinessControl();
-		ContextEntry ce = bc.popLauncherContextEntry();
-		if (ce != null) { // a context path is left for me
-			OLATResourceable ores = ce.getOLATResourceable();
-			if (OresHelper.equals(ores, ORES_TOOLFORUM)) {
-				// start the forum
-				if (nodeForum != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_FORUM);
-					bgTree.setSelectedNode(nodeForum);
-				} else { // not enabled
-					String text = translate("warn.forumnotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			} else if (OresHelper.equals(ores, ORES_TOOLFOLDER)) {
-				if (nodeFolder != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_FOLDER);
-					bgTree.setSelectedNode(nodeFolder);
-				} else { // not enabled
-					String text = translate("warn.foldernotavailable");				
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			} else if (OresHelper.equals(ores, ORES_TOOLWIKI)) {
-				if (nodeWiki != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_WIKI);
-					bgTree.setSelectedNode(nodeWiki);
-				} else { // not enabled
-					String text = translate("warn.wikinotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			} else if (OresHelper.equals(ores, ORES_TOOLCAL)) {
-				if (nodeCal != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_CALENDAR);
-					bgTree.setSelectedNode(nodeCal);
-				} else { // not enabled
-					String text = translate("warn.calnotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			} else if (OresHelper.equals(ores, ORES_TOOLPORTFOLIO)) {
-				if (nodePortfolio != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_PORTFOLIO);
-					bgTree.setSelectedNode(nodePortfolio);
-				} else { // not enabled
-					String text = translate("warn.portfolionotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			}
-		}
-		
-		// jump to node if initialViewIdent says so.
-		if (initialViewIdentifier != null) {
-			if (initialViewIdentifier.equals(INITVIEW_TOOLFORUM)) {
-				if (nodeForum != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_FORUM);
-					bgTree.setSelectedNode(nodeForum);
-				} else { // not enabled
-					String text = translate("warn.forumnotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			} else if (initialViewIdentifier.equals(INITVIEW_TOOLFOLDER)) {
-				if (nodeFolder != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_FOLDER);
-					bgTree.setSelectedNode(nodeFolder);
-				} else { // not enabled
-					String text = translate("warn.foldernotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			} 
-			else if (initialViewIdentifier.equals(INITVIEW_TOOLWIKI)) {
-				if (nodeWiki != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_WIKI);
-					bgTree.setSelectedNode(nodeWiki);
-				} else { // not enabled
-					String text = translate("warn.wikinotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			}
-			else if (initialViewIdentifier.equals(INITVIEW_TOOLCAL)) {
-				if (nodeCal != null) {
-					handleTreeActions(ureq, ACTIVITY_MENUSELECT_CALENDAR);
-					bgTree.setSelectedNode(nodeCal);
-				} else { // not enabled
-					String text = translate("warn.calnotavailable");
-					Controller mc = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text);
-					listenTo(mc); // cleanup on dispose
-					mainPanel.setContent(mc.getInitialComponent());
-				}
-			}
-			else throw new AssertException("unknown initialViewIdentifier:'" + initialViewIdentifier + "'");
-		}
 	}
 
 	private void exposeGroupDetailsToVC(BusinessGroup currBusinessGroup) {
@@ -844,22 +722,18 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im
 	 * @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
 	 */
 	protected void doDispose() {
-		
 		ThreadLocalUserActivityLogger.log(GroupLoggingAction.GROUP_CLOSED, getClass());
 		
 		if (chatCtr != null) {
-			
 			InstantMessagingGroupChatController chat = (InstantMessagingGroupChatController) chatCtr;
-		
 			if (chat.isChatWindowOpen()) {
 				chat.close();
 				getWindowControl().getWindowBackOffice().sendCommandTo(chat.getCloseCommand());
 			}
-		
 			removeAsListenerAndDispose(chatCtr);
 		}
 		
-		CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, this.businessGroup);
+		CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, businessGroup);
 		
 		userSession.getSingleUserEventCenter().deregisterFor(this, assessmentEventOres);
 	}
@@ -1074,15 +948,18 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im
 			root.addChild(gtnChild);
 			nodeCal = gtnChild;
 		}
-
-		gtnChild = new GenericTreeNode();
-		gtnChild.setTitle(translate("menutree.resources"));
-		gtnChild.setUserObject(ACTIVITY_MENUSELECT_SHOW_RESOURCES);
-		gtnChild.setAltText(translate("menutree.resources.alt"));
-		gtnChild.setIconCssClass("o_course_icon");
-		root.addChild(gtnChild);
-		//fxdiff BAKS-7 Resume function
-		nodeResources = gtnChild;
+		
+		boolean hasResources = businessGroupService.hasResources(businessGroup);
+		if(hasResources) {
+			gtnChild = new GenericTreeNode();
+			gtnChild.setTitle(translate("menutree.resources"));
+			gtnChild.setUserObject(ACTIVITY_MENUSELECT_SHOW_RESOURCES);
+			gtnChild.setAltText(translate("menutree.resources.alt"));
+			gtnChild.setIconCssClass("o_course_icon");
+			root.addChild(gtnChild);
+			//fxdiff BAKS-7 Resume function
+			nodeResources = gtnChild;
+		}
 
 		DisplayMembers displayMembers = businessGroupService.getDisplayMembers(businessGroup);
 		if (displayMembers.isShowOwners() || displayMembers.isShowParticipants()) {
-- 
GitLab