X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FDefaultLeadPane.java;h=60accfe2042e2481a2f7e6075785b7aee891205e;hp=4a641dcb807338cefb24cbe1e06d6bfded880966;hb=25acaf721ed29e8cbe1701578a5b225d77c928de;hpb=58cf7a0df60e5f17d34dd26b9d08b00939d29d41 diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java index 4a641dc..60accfe 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java @@ -10,7 +10,9 @@ import javax.jcr.RepositoryException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.api.NodeConstants; import org.argeo.cms.Localized; +import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ui.CmsView; @@ -31,11 +33,12 @@ public class DefaultLeadPane implements CmsUiProvider { private final static Log log = LogFactory.getLog(DefaultLeadPane.class); public static enum Property { - defaultLayers; + defaultLayers, adminLayers; } private Map> layers = Collections.synchronizedSortedMap(new TreeMap<>()); private String[] defaultLayers; + private String[] adminLayers; @Override public Control createUi(Composite parent, Node node) throws RepositoryException { @@ -69,6 +72,30 @@ public class DefaultLeadPane implements CmsUiProvider { } } + // TODO factorise + boolean isAdmin = cmsView.doAs(() -> CurrentUser.isInRole(NodeConstants.ROLE_USER_ADMIN)); + if (isAdmin) + for (String layerId : adminLayers) { + if (layers.containsKey(layerId)) { + RankedObject layerObj = layers.get(layerId); + + // TODO deal with i10n + String titleStr = (String) layerObj.getProperties().get(SuiteLayer.Property.title.name()); + Localized title = null; + if (titleStr != null) + title = new Localized.Untranslated(titleStr); + + String iconName = (String) layerObj.getProperties().get(SuiteLayer.Property.icon.name()); + SuiteIcon icon = null; + if (iconName != null) + icon = SuiteIcon.valueOf(iconName); + + Button b = createButton(parent, layerId, title, icon); + if (first == null) + first = b; + } + } + // Button dashboardB = createButton(parent, SuiteMsg.dashboard.name(), SuiteMsg.dashboard, SuiteIcon.dashboard); if (!cmsView.isAnonymous()) { // createButton(parent, SuiteMsg.documents.name(), SuiteMsg.documents, SuiteIcon.documents); @@ -102,6 +129,9 @@ public class DefaultLeadPane implements CmsUiProvider { throw new IllegalArgumentException("Default layers must be set."); if (log.isDebugEnabled()) log.debug("Default layers: " + Arrays.asList(defaultLayers)); + adminLayers = (String[]) properties.get(Property.adminLayers.toString()); + if (log.isDebugEnabled() && adminLayers != null) + log.debug("Admin layers: " + Arrays.asList(adminLayers)); } public void addLayer(SuiteLayer layer, Map properties) {