From 3cf88d11e5e08b56fd30f02c7d57dda12ff34cfc Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 16 Jan 2013 11:37:28 +0100 Subject: [PATCH] OO-502: prevent the resume to reload 2x the same site --- .../fullWebApp/BaseFullWebappController.java | 16 ++++++++++------ .../generic/layout/GenericMainController.java | 9 +++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java index 3441d3049f2..db0cc8d9187 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -422,7 +422,7 @@ public class BaseFullWebappController extends BasicController implements Generic SiteInstance s = sites.get(0); if (contentCtrl == null) { //activate site only if no content was set -> allow content before activation of default site. - activateSite(s, ureq, null, null); + activateSite(s, ureq, null, null, false); updateBusinessPath(ureq, s); } } @@ -468,7 +468,7 @@ public class BaseFullWebappController extends BasicController implements Generic if(siteToBusinessPath.containsKey(s)) { point = siteToBusinessPath.get(s); } - activateSite(s, ureq, null, null); + activateSite(s, ureq, null, null, true); if(point != null) { BusinessControlFactory.getInstance().addToHistory(ureq, point); } @@ -547,7 +547,7 @@ public class BaseFullWebappController extends BasicController implements Generic SiteInstance site = ((StateSite)s).getSite(); for(SiteInstance savedSite:sites) { if(site.getClass().equals(savedSite.getClass())) { - activateSite(savedSite, ureq, null, entries); + activateSite(savedSite, ureq, null, entries, false); //updateBusinessPath(ureq, savedSite); } } @@ -611,7 +611,8 @@ public class BaseFullWebappController extends BasicController implements Generic // FROM FULLCHIEFCONTROLLER //fxdiff BAKS-7 Resume function - private void activateSite(SiteInstance s, UserRequest ureq, String viewIdentifier, List<ContextEntry> entries) { + private void activateSite(SiteInstance s, UserRequest ureq, String viewIdentifier, + List<ContextEntry> entries, boolean forceReload) { BornSiteInstance bs = siteToBornSite.get(s); GuiStack gs; Controller resC; @@ -620,7 +621,10 @@ public class BaseFullWebappController extends BasicController implements Generic // single - click -> fetch guistack from cache gs = bs.getGuiStackHandle(); resC = bs.getController(); - //PB//site_wControl = bs.getWindowControl(); + } else if (bs != null && s == curSite && !forceReload) { + //via activate, don't force the reload + gs = bs.getGuiStackHandle(); + resC = bs.getController(); } else { // bs == null (not yet in cache) || s == curSite // double click or not yet in cache. @@ -967,7 +971,7 @@ public class BaseFullWebappController extends BasicController implements Generic SiteInstance site = it_sites.next(); String cName = site.getClass().getName(); if (cName.equals(className)) { - activateSite(site, ureq, viewIdentifier, entries); + activateSite(site, ureq, viewIdentifier, entries, false); return; } } diff --git a/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java b/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java index d49300255ea..e990bea9bd7 100644 --- a/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java +++ b/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java @@ -528,6 +528,7 @@ public abstract class GenericMainController extends MainLayoutBasicController im if (entries == null || entries.isEmpty()) return; ContextEntry entry = entries.get(0); + TreeNode selectedNode = getMenuTree().getSelectedNode(); String node = entry.getOLATResourceable().getResourceableTypeName(); if (node != null && node.startsWith(GMCMT)) { activate(ureq, node + ":" + entries.get(0).getOLATResourceable().getResourceableId()); @@ -535,13 +536,17 @@ public abstract class GenericMainController extends MainLayoutBasicController im entries = entries.subList(1, entries.size()); } if (contentCtr instanceof Activateable2) { - ((Activateable2) contentCtr).activate(ureq, entries, entry.getTransientState()); + ((Activateable2)contentCtr).activate(ureq, entries, entry.getTransientState()); } } else { // maybe the node is a GAE-NavigationKey ? GenericActionExtension gAE = ExtManager.getInstance().getActionExtensioByNavigationKey(className, node); if (gAE != null) { - activateTreeNodeByActionExtension(ureq, gAE); + //if the controller is already selected, only activate it, don't reinstanciate it + if(selectedNode != null && selectedNode.getUserObject() != gAE) { + activateTreeNodeByActionExtension(ureq, gAE); + } + if (entries.size() >= 1) { entries = entries.subList(1, entries.size()); } -- GitLab