diff --git a/ccm-cms/pom.xml b/ccm-cms/pom.xml
index d0223b31b..9ecd74fe4 100644
--- a/ccm-cms/pom.xml
+++ b/ccm-cms/pom.xml
@@ -293,7 +293,7 @@
org.jacoco
jacoco-maven-plugin
- 0.7.5.201505241946
+ 0.7.8
org.codehaus.mojo
@@ -374,7 +374,7 @@
org.jboss.arquillian.extension
arquillian-jacoco
- 1.0.0.Alpha8
+ 1.0.0.Alpha9
net.sf.saxon
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsGrant.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsGrant.java
index 476d43d55..bd7c042df 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsGrant.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsGrant.java
@@ -158,7 +158,7 @@ class CMSPermissionsGrant {
}
}
}
- parent.showAdmin(state);
+// parent.showAdmin(state);
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsPane.java
index eb01eca0d..496c95bcc 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsPane.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsPane.java
@@ -19,7 +19,10 @@
package com.arsdigita.cms.ui.permissions;
import com.arsdigita.bebop.BoxPanel;
+import com.arsdigita.bebop.Component;
+import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Form;
+import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState;
@@ -28,23 +31,32 @@ import com.arsdigita.bebop.Resettable;
import com.arsdigita.bebop.SegmentedPanel;
import com.arsdigita.bebop.SimpleComponent;
import com.arsdigita.bebop.SimpleContainer;
+import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.Text;
import com.arsdigita.bebop.event.ActionEvent;
import com.arsdigita.bebop.event.ActionListener;
import com.arsdigita.bebop.event.RequestEvent;
import com.arsdigita.bebop.event.RequestListener;
+import com.arsdigita.bebop.event.TableActionEvent;
+import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.parameters.ArrayParameter;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
+import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.dispatcher.DispatcherHelper;
+import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.ui.CcmObjectSelectionModel;
import com.arsdigita.util.UncheckedWrapperException;
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.core.CcmObject;
+import org.libreccm.core.UnexpectedErrorException;
import org.libreccm.security.PermissionChecker;
+import org.libreccm.security.PermissionManager;
import org.libreccm.security.Role;
+import org.libreccm.security.RoleRepository;
+import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentItem;
import org.librecms.contentsection.Folder;
import org.librecms.contentsection.privileges.ItemPrivileges;
@@ -52,7 +64,10 @@ import org.librecms.contentsection.privileges.ItemPrivileges;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
/**
* A pane used to administer the permissions of one {@link
@@ -75,6 +90,7 @@ public class CMSPermissionsPane extends SimpleContainer implements Resettable,
private String[] privileges;
private Map privilegeNameMap;
+ private SimpleContainer permissionsTable;
private CMSPermissionsTables allPermissions;
private CMSPermissionsHeader PermissionsHeader;
private SimpleContainer directPermissions;
@@ -147,23 +163,25 @@ public class CMSPermissionsPane extends SimpleContainer implements Resettable,
// add permissions components to this specific implementation
// add(getPermissionsHeader());
- add(getContextPanel());
- add(getDirectPermissionsPanel());
- add(getUserSearchForm());
- add(getInheritedPermissionsPanel());
- add(getPermissionGrantPanel());
- add(getNoSearchResultPanel());
- add(getAdminListingPanel());
+// add(getContextPanel());
+ add(getPermissionsTable());
+// add(getDirectPermissionsPanel());
+// add(getUserSearchForm())
+// add(getInheritedPermissionsPanel());
+// add(getPermissionGrantPanel());
+// add(getNoSearchResultPanel());
+// add(getAdminListingPanel());
// set initial visibility of components
// p.setVisibleDefault(getPermissionsHeader(), true);
- page.setVisibleDefault(getDirectPermissionsPanel(), true);
- page.setVisibleDefault(getUserSearchForm(), true);
- page.setVisibleDefault(getInheritedPermissionsPanel(), true);
- page.setVisibleDefault(getContextPanel(), true);
- page.setVisibleDefault(getPermissionGrantPanel(), false);
- page.setVisibleDefault(getNoSearchResultPanel(), false);
- page.setVisibleDefault(getAdminListingPanel(), false);
+ page.setVisibleDefault(getPermissionsTable(), true);
+// page.setVisibleDefault(getDirectPermissionsPanel(), true);
+// page.setVisibleDefault(getUserSearchForm(), true);
+// page.setVisibleDefault(getInheritedPermissionsPanel(), true);
+// page.setVisibleDefault(getContextPanel(), true);
+// page.setVisibleDefault(getPermissionGrantPanel(), false);
+// page.setVisibleDefault(getNoSearchResultPanel(), false);
+// page.setVisibleDefault(getAdminListingPanel(), false);
// p.addActionListener(this);
// p.addRequestListener(this);
@@ -180,7 +198,7 @@ public class CMSPermissionsPane extends SimpleContainer implements Resettable,
*/
@Override
public void reset(final PageState state) {
- showAdmin(state);
+// showAdmin(state);
}
/**
@@ -223,46 +241,189 @@ public class CMSPermissionsPane extends SimpleContainer implements Resettable,
return Arrays.copyOf(privileges, privileges.length);
}
- /**
- * Produces the direct and inherited permission tables to the privileges
- * defined in the constructor.
- *
- * @see #getDirectPermissionsPanel(), getInheritedPermissionsPanel()
- */
- private CMSPermissionsTables getPermissionsTables() {
- if (allPermissions == null) {
- allPermissions = new CMSPermissionsTables(privileges, this);
+ private SimpleContainer getPermissionsTable() {
+ if (permissionsTable != null) {
+ return permissionsTable;
}
- return allPermissions;
+
+ final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
+ final Label header = new Label(new GlobalizedMessage(
+ "cms.ui.permissions.table.header",
+ CmsConstants.CMS_BUNDLE));
+ panel.add(header);
+
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final PermissionManager permissionManager = cdiUtil.findBean(
+ PermissionManager.class);
+ final List privileges = permissionManager
+ .listDefiniedPrivileges(ItemPrivileges.class);
+ final List