diff --git a/src/main/java/org/olat/ControllerFactory.java b/src/main/java/org/olat/ControllerFactory.java index 19442ce8a608044d3f58e88d60d2508f3edd0302..63d45ab8a2c38f3d7e5566cc44381ed6849e1c7c 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 9dd854165f61a2c85e5d88a2ec1edf7b8e53c2a1..27da42580002cda248ab88e429efa2887eee65ab 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 0815a9e337867fef985d7e44c6702d87a2f84135..82b175b30ea54011ecae3eacb4117570393c966b 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 2b9da4e526e580f3deb6b00b8b4acc9e72a59869..dbaf8572dbcf0852c0edda2d11c6f84961baa1ee 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 3539cf0c4f06ca65328b9cac8d8d7ee3d7e786f5..bffe6156a939e9750341a8eee8a85c2d9d8703c6 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()) {