From 2e04451f1c7af8279cafabd7d559a107c8c3b45c Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 20 Dec 2013 09:10:40 +0100 Subject: [PATCH] OO-907: fixed the disposed additional controller in edit mode for the notes portlet --- .../control/generic/portal/PortalImpl.java | 35 +++++++++---------- .../generic/portal/PortletContainer.java | 32 +++++++++-------- .../HomePortalControllerCreator.java | 4 +-- .../olat/note/NotesPortletRunController.java | 1 + 4 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java b/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java index 5574f8ad01a..2b4afb89487 100644 --- a/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java +++ b/src/main/java/org/olat/core/gui/control/generic/portal/PortalImpl.java @@ -74,6 +74,7 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE private Map<String, PortletContainer> portletContainers; // map of all portlet containers (defined in portal columns + inactive portlets) private List<String> inactivePortlets; // list containing the names of inactive portlets private String name; + private boolean editModeEnabled = false; /** * Do use PortalFactory for create new Portals @@ -251,15 +252,11 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE } if (isActive) { // initialize portlet container for active portlets only - pc.initializeRunComponent(ureq); - log.debug("initPortlets: add to inacitve portlets portletName=" + portlet.getName()); + pc.initializeRunComponent(ureq, editModeEnabled); } else { // add it to inacitve portlets list if not active inactivePortlets.add(portlet.getName()); - log.debug("initPortlets: add to inacitve portlets portletName=" + portlet.getName()); } - } else { - log.debug("Portlet disabled portletName=" + portlet.getName()); } } // update links on visible portlets @@ -273,15 +270,15 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE if (source instanceof Link && portalVC.contains(source)) { Link tmp = (Link)source; String portletName = (String)tmp.getUserObject(); - List<String> firstColumn = this.portalColumns.get(0); - PortletContainer pc = this.portletContainers.get(portletName); + List<String> firstColumn = portalColumns.get(0); + PortletContainer pc = portletContainers.get(portletName); if (pc == null) throw new AssertException("trying to add portlet with name::" + portletName + " to portal, but portlet container did not exist. Could be a user modifying the URL..."); // add to users portlet list firstColumn.add(portletName); // remove from inactive portlets list - this.inactivePortlets.remove(portletName); + inactivePortlets.remove(portletName); // initialize portlet run component - pc.initializeRunComponent(ureq); + pc.initializeRunComponent(ureq, editModeEnabled); // save user config in db saveUserPortalColumnsConfiguration(ureq, portalColumns); // update possible links in gui @@ -295,21 +292,22 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE * Enable/disable the edit mode of the portal * @param editModeEnabled true: enabled, false: disabled */ - public void setIsEditMode(UserRequest ureq, Boolean editModeEnabled) { + public void setIsEditMode(UserRequest ureq, boolean editModeEnabled) { + this.editModeEnabled = editModeEnabled; updatePorletContainerEditMode(ureq, editModeEnabled); - this.portalVC.contextPut(MODE_EDIT, editModeEnabled); + portalVC.contextPut(MODE_EDIT, editModeEnabled); } /** * Updates all portles using the given mode * @param editMode true: edit mode activated, false: deactivated */ - private void updatePorletContainerEditMode(UserRequest ureq, Boolean editMode) { - Iterator<String> portletsIter = PortletFactory.getPortlets().keySet().iterator(); - while (portletsIter.hasNext()) { - String portletName = (String) portletsIter.next(); - PortletContainer pc = this.portletContainers.get(portletName); - if (pc != null ) pc.setIsEditMode(ureq, editMode); + private void updatePorletContainerEditMode(UserRequest ureq, boolean editMode) { + for (String portletName : PortletFactory.getPortlets().keySet()) { + PortletContainer pc = portletContainers.get(portletName); + if (pc != null ) { + pc.setIsEditMode(ureq, editMode); + } } } @@ -318,7 +316,6 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE */ @Override public void event(UserRequest ureq, Controller source, Event event) { - log.debug("PortalImpl event=" + event); if (source instanceof PortletContainer) { PortletContainer pc = (PortletContainer) source; String cmd = event.getCommand(); @@ -432,7 +429,7 @@ public class PortalImpl extends DefaultController implements Portal, ControllerE * @return Name of portal */ public String getName(){ - return this.name; + return name; } } diff --git a/src/main/java/org/olat/core/gui/control/generic/portal/PortletContainer.java b/src/main/java/org/olat/core/gui/control/generic/portal/PortletContainer.java index 875fb4dfa5d..92617c670af 100644 --- a/src/main/java/org/olat/core/gui/control/generic/portal/PortletContainer.java +++ b/src/main/java/org/olat/core/gui/control/generic/portal/PortletContainer.java @@ -106,16 +106,16 @@ public class PortletContainer extends BasicController implements PortletContaine close.setCustomEnabledLinkCSS("b_portlet_edit_delete"); portletContainerVC.put("toolbox", toolboxContainer); - } /** * Initializes the portlet runtime view * @param ureq */ - protected void initializeRunComponent(UserRequest ureq) { - this.runComponent = this.portlet.getInitialRunComponent(getWindowControl(), ureq); - this.portletContainerVC.put("portlet", runComponent); + protected void initializeRunComponent(UserRequest ureq, boolean editModeEnabled) { + runComponent = portlet.getInitialRunComponent(getWindowControl(), ureq); + portletContainerVC.put("portlet", runComponent); + addAdditonalTools(ureq, editModeEnabled); } /** @@ -135,7 +135,7 @@ public class PortletContainer extends BasicController implements PortletContaine * @param value Boolean value */ protected void contextPut(String name, Boolean value) { - this.portletContainerVC.contextPut(name, value); + portletContainerVC.contextPut(name, value); } /** @@ -166,18 +166,20 @@ public class PortletContainer extends BasicController implements PortletContaine /** * @param editModeEnabled true: portal is in edit mode, false in run mode */ - protected void setIsEditMode(UserRequest ureq, Boolean editModeEnabled) { - this.portletContainerVC.contextPut(MODE_EDIT, editModeEnabled); - + protected void setIsEditMode(UserRequest ureq, boolean editModeEnabled) { + portletContainerVC.contextPut(MODE_EDIT, editModeEnabled); //only create sorting and moving stuff if switching to edit mode otherwise lots or memory is wasted! - if (editModeEnabled) { - Controller additionalPortletTools = portlet.getTools(ureq, getWindowControl()); - if(additionalPortletTools!=null) { - toolboxContainer.contextPut("hasAdditional", Boolean.TRUE); - toolboxContainer.put("additionalTools", additionalPortletTools.getInitialComponent()); - } - } + addAdditonalTools(ureq, editModeEnabled); + } + + private void addAdditonalTools(UserRequest ureq, boolean editModeEnabled) { + if(!editModeEnabled) return; + Controller additionalPortletTools = portlet.getTools(ureq, getWindowControl()); + if(additionalPortletTools!=null) { + toolboxContainer.contextPut("hasAdditional", Boolean.TRUE); + toolboxContainer.put("additionalTools", additionalPortletTools.getInitialComponent()); + } } public void setCanMoveDown(boolean canMoveDown) { diff --git a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java index be3077a6e3b..b6dd307f90f 100644 --- a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java +++ b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java @@ -135,10 +135,10 @@ public class HomePortalControllerCreator extends AutoCreator { @Override public void event(UserRequest ureq, Component source, Event event) { if (source == portalBackButton){ - this.myPortal.setIsEditMode(ureq, Boolean.FALSE); + myPortal.setIsEditMode(ureq, false); welcome.contextPut("portalEditMode", Boolean.FALSE); } else if (source == portalEditButton){ - this.myPortal.setIsEditMode(ureq, Boolean.TRUE); + myPortal.setIsEditMode(ureq, true); welcome.contextPut("portalEditMode", Boolean.TRUE); } } diff --git a/src/main/java/org/olat/note/NotesPortletRunController.java b/src/main/java/org/olat/note/NotesPortletRunController.java index f02fd60f73f..aed0e44dc61 100644 --- a/src/main/java/org/olat/note/NotesPortletRunController.java +++ b/src/main/java/org/olat/note/NotesPortletRunController.java @@ -248,6 +248,7 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note protected void doDispose() { CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, eventBusThisIdentityOres); super.doDispose(); + portletToolsController = null; } /** -- GitLab