X-Git-Url: http://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=core%2Forg.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteApp.java;fp=core%2Forg.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteApp.java;h=63a09f1b7290671d4664471d0b57b46699a1a295;hp=fcf7e1f7c150de332cf59747cb8c1788bfcddb2b;hb=91a19e7f23eac8f073b833e2886bcb7771ff7469;hpb=eefe3f8e11391aa2a39b1abf20caa92db64ffdf9 diff --git a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java b/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java index fcf7e1f..63a09f1 100644 --- a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java +++ b/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java @@ -60,6 +60,7 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { private String pidPrefix; private String headerPid; + private String footerPid; private String leadPanePid; private String loginScreenPid; @@ -99,6 +100,7 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { throw new IllegalArgumentException("PID prefix must be set."); headerPid = pidPrefix + "header"; + footerPid = pidPrefix + "footer"; leadPanePid = pidPrefix + "leadPane"; loginScreenPid = pidPrefix + "loginScreen"; } @@ -151,6 +153,7 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { SuiteUi ui = (SuiteUi) parent; CmsView cmsView = CmsView.getCmsView(parent); CmsUiProvider headerUiProvider = findUiProvider(headerPid); + CmsUiProvider footerUiProvider = findUiProvider(footerPid); Localized appTitle = null; if (headerUiProvider instanceof DefaultHeader) { appTitle = ((DefaultHeader) headerUiProvider).getTitle(); @@ -159,9 +162,12 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { if (cmsView.isAnonymous() && publicBasePath == null) {// internal app, must login ui.logout(); - refreshPart(headerUiProvider, ui.getHeader(), context); + if (headerUiProvider != null) + refreshPart(headerUiProvider, ui.getHeader(), context); ui.refreshBelowHeader(false); refreshPart(findUiProvider(loginScreenPid), ui.getBelowHeader(), context); + if (footerUiProvider != null) + refreshPart(footerUiProvider, ui.getFooter(), context); ui.layout(true, true); setState(ui, LOGIN); } else { @@ -169,7 +175,8 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { state = null; CmsSession cmsSession = cmsView.getCmsSession(); if (ui.getUserDir() == null) { - if (cmsView.isAnonymous()) { + // FIXME NPE on CMSSession when logging in from anonymous + if (cmsSession==null || cmsView.isAnonymous()) { assert publicBasePath != null; ui.initSessions(getRepository(), publicBasePath); } else { @@ -188,13 +195,16 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { if (context == null) context = ui.getUserDir(); - refreshPart(headerUiProvider, ui.getHeader(), context); + if (headerUiProvider != null) + refreshPart(headerUiProvider, ui.getHeader(), context); ui.refreshBelowHeader(true); for (String key : layersByPid.keySet()) { SuiteLayer layer = layersByPid.get(key).get(); ui.addLayer(key, layer); } refreshPart(findUiProvider(leadPanePid), ui.getLeadPane(), context); + if (footerUiProvider != null) + refreshPart(footerUiProvider, ui.getFooter(), context); ui.layout(true, true); setState(parent, state != null ? state : defaultLayerPid); } @@ -219,13 +229,13 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { private CmsUiProvider findUiProvider(String pid) { if (!uiProvidersByPid.containsKey(pid)) - throw new IllegalArgumentException("No UI provider registered as " + pid); + return null; return uiProvidersByPid.get(pid).get(); } private SuiteLayer findLayer(String pid) { if (!layersByPid.containsKey(pid)) - throw new IllegalArgumentException("No UI provider registered as " + pid); + return null; return layersByPid.get(pid).get(); }