-// Button dashboardB = createButton(parent, SuiteMsg.dashboard.name(), SuiteMsg.dashboard, SuiteIcon.dashboard);
- if (!cmsView.isAnonymous()) {
-// createButton(parent, SuiteMsg.documents.name(), SuiteMsg.documents, SuiteIcon.documents);
-// createButton(parent, SuiteMsg.people.name(), SuiteMsg.people, SuiteIcon.people);
-// createButton(parent, SuiteMsg.locations.name(), SuiteMsg.locations, SuiteIcon.location);
+// boolean isAdmin = cmsView.doAs(() -> CurrentUser.isInRole(NodeConstants.ROLE_USER_ADMIN));
+ Set<String> userRoles = cmsView.doAs(() -> CurrentUser.roles());
+ Button first = null;
+ layers: for (String layerDef : defaultLayers) {
+ layerDef = layerDef.trim();
+ if ("".equals(layerDef))
+ continue layers;// skip empty lines
+ String[] semiColArr = layerDef.split(";");
+ String layerId = semiColArr[0];
+ Set<String> layerRoles = SuiteUtils.extractRoles(semiColArr);
+ if (layers.containsKey(layerId)) {
+ if (!layerRoles.isEmpty()) {
+ Set<String> intersection = new HashSet<String>(layerRoles);
+ intersection.retainAll(userRoles);
+ if (intersection.isEmpty())
+ continue layers;// skip unauthorized layer
+ }
+ RankedObject<SuiteLayer> layerObj = layers.get(layerId);
+
+ Localized title = null;
+ if (!adminLayers.contains(layerId)) {
+ String titleStr = (String) layerObj.getProperties().get(SuiteLayer.Property.title.name());
+ if (titleStr != null) {
+ if (titleStr.startsWith("%")) {
+ // LocaleUtils.local(titleStr, getClass().getClassLoader());
+ title = () -> titleStr;
+ } else {
+ 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);
+
+ Composite buttonParent;
+ if (adminLayers.contains(layerId))
+ buttonParent = adminLayersC;
+ else
+ buttonParent = appLayersC;
+ Button b = SuiteUiUtils.createLayerButton(buttonParent, layerId, title, icon, l10nClassLoader);
+ if (first == null)
+ first = b;
+ }