private String pidPrefix;
private String headerPid;
+ private String footerPid;
private String leadPanePid;
private String loginScreenPid;
throw new IllegalArgumentException("PID prefix must be set.");
headerPid = pidPrefix + "header";
+ footerPid = pidPrefix + "footer";
leadPanePid = pidPrefix + "leadPane";
loginScreenPid = pidPrefix + "loginScreen";
}
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();
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 {
+ if (LOGIN.equals(state))
+ 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 {
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);
}
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();
}