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