From 9d16918052b0c382143414f07a3133043ce1bf7e Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Thu, 17 Mar 2022 19:10:56 +0100 Subject: [PATCH] Removed depcrecated package com/arsdigita/cms/ui/permissions from ccm-cms --- .../com/arsdigita/cms/ui/FlatItemList.java | 46 +- .../CMSDirectPermissionsTableRow.java | 69 -- .../permissions/CMSPermissionsConstants.java | 167 ----- .../ui/permissions/CMSPermissionsGrant.java | 212 ------ .../ui/permissions/CMSPermissionsHeader.java | 99 --- .../ui/permissions/CMSPermissionsPane.java | 686 ------------------ .../CMSPermissionsTableColumn.java | 99 --- .../CMSPermissionsTableController.java | 120 --- .../permissions/CMSPermissionsTableModel.java | 101 --- .../CMSPermissionsTableModelBuilder.java | 48 -- .../permissions/CMSPermissionsTableRow.java | 116 --- .../ui/permissions/CMSPermissionsTables.java | 545 -------------- .../ui/permissions/CMSUserObjectStruct.java | 114 --- .../cms/ui/permissions/CMSUserSearchForm.java | 136 ---- .../ui/permissions/ItemPermissionsStep.java | 80 -- .../cms/ui/permissions/ObjectAddAdmin.java | 287 -------- .../ui/permissions/ObjectAddSearchAdmin.java | 118 --- .../ui/permissions/ObjectAdminListing.java | 256 ------- .../cms/ui/permissions/PermissionStatus.java | 67 -- .../cms/ui/permissions/UserPrivilegeKey.java | 84 --- 20 files changed, 22 insertions(+), 3428 deletions(-) delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSDirectPermissionsTableRow.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsConstants.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsGrant.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsHeader.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsPane.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsTableColumn.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsTableController.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsTableModel.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsTableModelBuilder.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsTableRow.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsTables.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSUserObjectStruct.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSUserSearchForm.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/ItemPermissionsStep.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/ObjectAddAdmin.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/ObjectAddSearchAdmin.java delete mode 100755 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/ObjectAdminListing.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/PermissionStatus.java delete mode 100644 ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/UserPrivilegeKey.java diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/FlatItemList.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/FlatItemList.java index e20ccb72b..522b564b9 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/FlatItemList.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/FlatItemList.java @@ -19,7 +19,6 @@ package com.arsdigita.cms.ui; import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.Form; import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Page; @@ -35,8 +34,6 @@ import com.arsdigita.bebop.event.ChangeListener; import com.arsdigita.bebop.event.FormProcessListener; import com.arsdigita.bebop.event.FormSectionEvent; import com.arsdigita.bebop.event.FormSubmissionListener; -import com.arsdigita.bebop.event.PrintEvent; -import com.arsdigita.bebop.event.PrintListener; import com.arsdigita.bebop.parameters.LongParameter; import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.cms.CMS; @@ -51,7 +48,6 @@ import com.arsdigita.cms.ui.folder.FolderManipulator; import com.arsdigita.cms.ui.folder.FolderPath; import com.arsdigita.cms.ui.folder.FolderRequestLocal; import com.arsdigita.cms.ui.folder.FolderSelectionModel; -import com.arsdigita.cms.ui.permissions.CMSPermissionsPane; import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.toolbox.ui.ActionGroup; @@ -82,31 +78,45 @@ public class FlatItemList extends SegmentedPanel implements FormProcessListener, ActionListener { private static final String CONTENT_TYPE_ID = "ct"; + // The folder selectors private final FolderSelectionModel folderSelectionModel; + private final FolderRequestLocal folderRequestLocal; + private final NewItemForm newItemForm; + private final SingleSelectionModel typeSelectionModel; + private final CreationSelector creationSelector; + private final FolderManipulator folderManipulator; + private final FolderCreateForm folderCreator; -// private final ActionLink m_setHomeFolderAction; -// private final ActionLink m_removeHomeFolderAction; + private final ActionLink createFolderAction; -// private final ActionLink togglePrivateAction; -// private final Label m_homeFolderLabel; + private final Segment browseSegment; + private final Segment newItemSegment; + private final Segment newFolderSegment; + private final Segment editFolderSegment; + private final Segment permissionsSegment; - private final CMSPermissionsPane permissionsPane; + // Folder edit/rename functionality. private final ActionLink editFolderAction; + private final FolderEditorForm folderEditor; + private final Label contentLabel; + private final FolderPath folderPath; + private final Label chooseLabel; + private final StringParameter selectedLanguageParam; /** @@ -180,8 +190,9 @@ public class FlatItemList extends SegmentedPanel implements FormProcessListener, permissionsSegment.addHeader(new Label(new GlobalizedMessage( "cms.ui.permissions", CmsConstants.CMS_BUNDLE))); - selectedLanguageParam = new StringParameter(ContentItemPage.SELECTED_LANGUAGE); - + selectedLanguageParam = new StringParameter( + ContentItemPage.SELECTED_LANGUAGE); + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final PermissionManager permissionManager = cdiUtil.findBean( PermissionManager.class); @@ -190,12 +201,6 @@ public class FlatItemList extends SegmentedPanel implements FormProcessListener, final Map privNameMap = new HashMap<>(); privileges.forEach(privilege -> privNameMap.put(privilege, privilege)); - permissionsPane = new CMSPermissionsPane( - privileges.toArray(new String[]{}), - privNameMap, - (CcmObjectSelectionModel) folderSelectionModel); - permissionActions.setSubject(permissionsPane); - newItemSegment.addHeader(new Label(globalize("cms.ui.new_item"))); typeSelectionModel = new ParameterSingleSelectionModel<>( new LongParameter(CONTENT_TYPE_ID)); @@ -408,8 +413,6 @@ public class FlatItemList extends SegmentedPanel implements FormProcessListener, PermissionChecker.class); permissionChecker.checkPermission(ItemPrivileges.ADMINISTER, currentFolder); - - permissionsPane.reset(state); } @Override @@ -419,17 +422,12 @@ public class FlatItemList extends SegmentedPanel implements FormProcessListener, // switching between folders used to keep showing the permission pane // in the same perm mode (direct or inherited) regardless // of the folder status - permissionsPane.reset(state); } public final FolderManipulator getManipulator() { return folderManipulator; } - public final CMSPermissionsPane getPermissionsPane() { - return permissionsPane; - } - public void setPermissionLinkVis(final PageState state) { // final Folder currentFolder = folderRequestLocal.getFolder(state); // final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSDirectPermissionsTableRow.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSDirectPermissionsTableRow.java deleted file mode 100644 index 7eb91b9dd..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSDirectPermissionsTableRow.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2017 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package com.arsdigita.cms.ui.permissions; - -/** - * - * @author Jens Pelzetter - */ -class CMSDirectPermissionsTableRow { - - private long granteeKey; - - private String granteeName; - - private boolean permitted; - - private UserPrivilegeKey userPrivilegeKey; - - public long getGranteeKey() { - return granteeKey; - } - - protected void setGranteeKey(final long granteeKey) { - this.granteeKey = granteeKey; - } - - public String getGranteeName() { - return granteeName; - } - - protected void setGranteeName(final String granteeName) { - this.granteeName = granteeName; - } - - public boolean isPermitted() { - return permitted; - } - - protected void setPermitted(final boolean permitted) { - this.permitted = permitted; - } - - public UserPrivilegeKey getUserPrivilegeKey() { - return userPrivilegeKey; - } - - protected void setUserPrivilegeKey(final UserPrivilegeKey userPrivilegeKey) { - this.userPrivilegeKey = userPrivilegeKey; - } - - - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsConstants.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsConstants.java deleted file mode 100755 index f8f0c07a6..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsConstants.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.permissions; - -import com.arsdigita.globalization.GlobalizedMessage; - -import org.librecms.contentsection.privileges.ItemPrivileges; - -/** - * This interface is used to centralise constants and labels used in the - * Permissions UI package. - * - * @author Stefan Deusch (stefan@arsdigita.com) - * @author Jens Pelzetter - */ -class CMSPermissionsConstants { - - private CMSPermissionsConstants() { - //Nothing - } - - /** - * These are our five default privileges. - */ - public static final String[] DEFAULT_PRIVILEGES = new String[]{ - ItemPrivileges.VIEW_PUBLISHED, - ItemPrivileges.EDIT, - ItemPrivileges.CREATE_NEW, - ItemPrivileges.DELETE,}; - - public static final String BUNDLE_NAME - = "com.arsdigita.ui.permissions.PermissionsResources"; - - public static final GlobalizedMessage SEARCH_LABEL = new GlobalizedMessage( - "permissions.userSearchForm.label", BUNDLE_NAME); - - public static final GlobalizedMessage SEARCH_BUTTON = new GlobalizedMessage( - "permissions.button.search", BUNDLE_NAME); - - public static final GlobalizedMessage SAVE_BUTTON = new GlobalizedMessage( - "permissions.button.save", BUNDLE_NAME); - - public static final GlobalizedMessage NO_RESULTS = new GlobalizedMessage( - "permissions.userSearchForm.noResults", BUNDLE_NAME); - - // Direct / Indirect permissions - public static final GlobalizedMessage PERM_TABLE_DIRECT_HEADING - = new GlobalizedMessage( - "permissions.directPermissions.heading", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_DIRECT_EXPLANATION - = new GlobalizedMessage( - "permissions.directPermissions.explanation", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_INDIRECT_HEADING - = new GlobalizedMessage( - "permissions.indirectPermissions.heading", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_INDIRECT_EXPLANATION - = new GlobalizedMessage( - "permissions.indirectPermissions.explanation", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_INDIRECT_CONTEXT - = new GlobalizedMessage( - "permissions.indirectPermissions.context", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_GRANTEE - = new GlobalizedMessage( - "permissions.table.grantee", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_ACTIONS - = new GlobalizedMessage( - "permissions.table.actions", BUNDLE_NAME); - - public static final GlobalizedMessage REMOVE_ALL_CONFIRM - = new GlobalizedMessage( - "permissions.table.actions.removeAll", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_INHERITED - = new GlobalizedMessage( - "permissions.table.inherited", BUNDLE_NAME); - - public static final GlobalizedMessage PERM_TABLE_NO_PARENT_CONTEXT - = new GlobalizedMessage( - "permissions.table.parent.context.null", BUNDLE_NAME); - - // Permissions header - public static final GlobalizedMessage PAGE_TITLE = new GlobalizedMessage( - "permissions.one.title", BUNDLE_NAME); - - public static final GlobalizedMessage MAIN_SITE = new GlobalizedMessage( - "permissions.main.site", BUNDLE_NAME); - - public static final GlobalizedMessage PERSONAL_SITE = new GlobalizedMessage( - "permissions.personal.site", BUNDLE_NAME); - - public static final GlobalizedMessage PERMISSIONS_INDEX - = new GlobalizedMessage( - "permissions.index.title", BUNDLE_NAME); - - public static final GlobalizedMessage PERMISSIONS_INDEX_NAVBAR - = new GlobalizedMessage( - "permissions.index.navbarItem", BUNDLE_NAME); - - // Permissions grant form - public static final GlobalizedMessage PAGE_GRANT_TITLE - = new GlobalizedMessage( - "permissions.one.grant.title", BUNDLE_NAME); - - public static final GlobalizedMessage PAGE_GRANT_LEFT - = new GlobalizedMessage( - "permissions.one.grant.explanation.left", BUNDLE_NAME); - - public static final GlobalizedMessage PAGE_GRANT_RIGHT - = new GlobalizedMessage( - "permissions.one.grant.explanation.right", BUNDLE_NAME); - - // Access denied page - public static final GlobalizedMessage PAGE_DENIED_TITLE - = new GlobalizedMessage( - "permissions.denied.title", BUNDLE_NAME); - - // Index page - public static final GlobalizedMessage PAGE_OBJECT_INDEX - = new GlobalizedMessage( - "permissions.index.adminObjects", BUNDLE_NAME); - - public static final GlobalizedMessage PAGE_OBJECT_PANEL_TITLE - = new GlobalizedMessage( - "permissions.index.panelTitle", BUNDLE_NAME); - - public static final GlobalizedMessage PAGE_OBJECT_NONE - = new GlobalizedMessage( - "permissions.index.noAdminObjects", BUNDLE_NAME); - - // Flats for permission types - public static final int DIRECT = 0; - public static final int INHERITED = 1; - - // Form constants - public static final String OBJECT_ID = "po_id"; - public static final String DIRECT_PERMISSIONS = "direct"; - public static final String INDIRECT_PERMISSIONS = "indirect"; - public static final String SEARCH_QUERY = "query"; - public static final String PRIV_SET = "privs_set"; - - // shared query - public static final String RETRIEVE_USERS - = "com.arsdigita.kernel.RetrieveUsers"; - -} 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 deleted file mode 100755 index bd7c042df..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsGrant.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.permissions; - -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.FormData; -import com.arsdigita.bebop.FormProcessException; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.bebop.Text; -import com.arsdigita.bebop.event.FormSectionEvent; -import com.arsdigita.bebop.event.FormSubmissionListener; -import com.arsdigita.bebop.event.PrintEvent; -import com.arsdigita.bebop.event.PrintListener; -import com.arsdigita.bebop.form.CheckboxGroup; -import com.arsdigita.bebop.form.Option; -import com.arsdigita.bebop.form.OptionGroup; -import com.arsdigita.bebop.form.Submit; -import com.arsdigita.bebop.parameters.ArrayParameter; -import com.arsdigita.bebop.parameters.StringParameter; - -import com.arsdigita.util.StringUtils; -import com.arsdigita.util.UncheckedWrapperException; - -import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.security.PermissionManager; -import org.libreccm.security.Role; -import org.libreccm.security.RoleRepository; - -import java.util.List; -import java.util.TooManyListenersException; - -import static com.arsdigita.cms.ui.permissions.CMSPermissionsConstants.*; - -/** - * Permissions Grant container for permissions assignment. Widgets are currently - * organised on a bebop SegmentedPanel. - * - * @author Stefan Deusch (sdeusch@arsdigita.com) - * @author Jens Pelzetter - */ -class CMSPermissionsGrant { - - private final static String PARTIES_CBG = "parties_cbg"; - private final static String PRIVILEGES_CBG = "privs_cbg"; - - // data keys - private static final String USER_ID = "userID"; - private static final String SCREEN_NAME = "screenName"; - private static final String FIRST_NAME = "firstName"; - private static final String LAST_NAME = "lastName"; - - private final CMSPermissionsPane parent; - private final SegmentedPanel grantPanel; - private CheckboxGroup partiesCheckboxGroup; - private CheckboxGroup privilegesCheckboxGroup; - private Form form; - private Submit saveSubmit; - - /** - * Creates a PermissionsGrant object that will be contained with another - * component. This is currently used inside the permissions pane. - * - * @param parent the enclosing container - */ - public CMSPermissionsGrant(final CMSPermissionsPane parent) { - this.parent = parent; - makeForm(); - grantPanel = new SegmentedPanel(); - grantPanel.addSegment(new Label(PAGE_GRANT_TITLE), form); - } - - /** - * Builds the form used to grant pivileges to users and groups. - */ - private void makeForm() { - form = new Form("GrantPrivileges", new BoxPanel()); - form.setMethod(Form.POST); - form.addSubmissionListener(new GrantFormSubmissionListener()); - form.add(new Label(PAGE_GRANT_LEFT)); - partiesCheckboxGroup = new CheckboxGroup(PARTIES_CBG); - try { - partiesCheckboxGroup.addPrintListener(new UserSearchPrintListener()); - } catch (TooManyListenersException e) { - throw new UncheckedWrapperException("TooManyListeners: " + e - .getMessage(), e); - } - form.add(partiesCheckboxGroup); - - form.add(new Label(PAGE_GRANT_RIGHT)); - privilegesCheckboxGroup = new CheckboxGroup(PRIVILEGES_CBG); - try { - privilegesCheckboxGroup.addPrintListener( - new PrivilegePrintListener()); - } catch (TooManyListenersException e) { - throw new UncheckedWrapperException("TooManyListeners: " + e - .getMessage(), e); - } - form.add(privilegesCheckboxGroup); - - saveSubmit = new Submit("save", SAVE_BUTTON); - form.add(saveSubmit); - } - - /** - * Returns the SegmentedPanel with the permissions grant Form - * - * @return the SegmentedPanel with the permissions grant form - */ - public SegmentedPanel getPanel() { - return grantPanel; - } - - private class GrantFormSubmissionListener - implements FormSubmissionListener { - - @Override - public void submitted(FormSectionEvent event) throws - FormProcessException { - final PageState state = event.getPageState(); - final FormData data = event.getFormData(); - final String[] gids = (String[]) data.get(PARTIES_CBG); - final String[] privs = (String[]) data.get(PRIVILEGES_CBG); - if (privs != null && gids != null) { - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final PermissionManager permissionManager = cdiUtil.findBean( - PermissionManager.class); - - final Long oID = parent.getObject(state).getObjectId(); - for (String gid : gids) { - final Long gID = Long.parseLong(gid); - final CMSUserObjectStruct userObjectStruct - = new CMSUserObjectStruct(gID, - oID); - for (String priv : privs) { - permissionManager.grantPrivilege( - priv, - userObjectStruct.getRole(), - userObjectStruct.getObject()); - } - } - } -// parent.showAdmin(state); - } - - } - - private class UserSearchPrintListener implements PrintListener { - - @Override - public void prepare(final PrintEvent event) { - final PageState state = event.getPageState(); - final OptionGroup target = (OptionGroup) event.getTarget(); - - // get query string - final String search = StringUtils.stripWhiteSpace((String) state. - getValue(new StringParameter(SEARCH_QUERY))); - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final RoleRepository roleRepo = cdiUtil.findBean( - RoleRepository.class); - - final List roles = roleRepo.searchByName(search); - - roles.forEach(role -> target.addOption(new Option( - Long.toString(role.getRoleId()), - new Text(role.getName())))); - } - - } - - private class PrivilegePrintListener implements PrintListener { - - @Override - public void prepare(final PrintEvent event) { - final PageState state = event.getPageState(); - final OptionGroup target = (OptionGroup) event.getTarget(); - - // get privileges from page state - final Object[] privileges = (Object[]) state.getValue( - new ArrayParameter( - PRIV_SET)); - - // print ceckbox group with privileges - for (Object privilege : privileges) { - target.addOption(new Option((String) privilege, - new Text(parent.getPrivilegeName( - (String) privilege)))); - } - } - - } - -} diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsHeader.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsHeader.java deleted file mode 100755 index d481f4e67..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsHeader.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -package com.arsdigita.cms.ui.permissions; - -import com.arsdigita.bebop.BoxPanel; -import com.arsdigita.bebop.DimensionalNavbar; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.Link; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.event.PrintEvent; -import com.arsdigita.bebop.event.PrintListener; - -import org.libreccm.core.CcmObject; - -import static com.arsdigita.cms.ui.permissions.CMSPermissionsConstants.*; - -/** - * - * Component that Renders the Header of the Permissions Admin pages - * - * @author sdeusch@arsdigita.com - * @author Jens Pelzetter - */ -class CMSPermissionsHeader extends BoxPanel { - - private final CMSPermissionsPane parent; - private final Label title; - - /** - * Constructor - */ - CMSPermissionsHeader(final CMSPermissionsPane parent) { - this.parent = parent; - title = new Label(); - title.addPrintListener(new PrintListener() { - - @Override - public void prepare(final PrintEvent event) { - final Label target = (Label) event.getTarget(); - target.setLabel(PAGE_TITLE); - } - - }); - title.setClassAttr("heading"); - add(title); - - // Used to render the object name in the navbar - final Label objectName = new Label(); - objectName.addPrintListener(new PrintListener() { - - public void prepare(final PrintEvent event) { - final Label target = (Label) event.getTarget(); - target.setLabel(getObjectName(event)); - } - - }); - - final DimensionalNavbar navbar = new DimensionalNavbar(); - navbar.add(new Link(new Label(PERSONAL_SITE), "/pvt/home")); - navbar.add(new Link(new Label(MAIN_SITE), "/")); - navbar.add(new Link(new Label(PERMISSIONS_INDEX), "/permissions/")); - navbar.add(objectName); - navbar.setClassAttr("permNavBar"); - add(navbar); - } - - private String getObjectName(final PrintEvent event) { - final PageState state = event.getPageState(); - final CcmObject object = parent.getObject(state); - final String objectName = String.format("%s (ID %d)", - object.getDisplayName(), - object.getObjectId()); - return objectName; - } - - /** - * Returns the object used to render the title of the panel. - */ - Label getTitle() { - return title; - } - -} 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 deleted file mode 100755 index b140a2a6d..000000000 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/permissions/CMSPermissionsPane.java +++ /dev/null @@ -1,686 +0,0 @@ -/* - * Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ -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; -import com.arsdigita.bebop.RequestLocal; -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.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 - * ACSObject}. This is a reusable component that can be embedded into a page to - * provide a generic UI. The page must have the "?po_id=" parameter to supply to - * ACSObject id of the item one is managing permissions for. - * - * @author sdeusch@arsdigita.com - * @authro Jens Pelzetter - */ -public class CMSPermissionsPane extends SimpleContainer implements Resettable, - ActionListener, - RequestListener { - - // non-shared parameter models; leave package scope for access from its members. - private ParameterModel searchString = new StringParameter( - CMSPermissionsConstants.SEARCH_QUERY); - private ParameterModel privilegeArray = new ArrayParameter( - CMSPermissionsConstants.PRIV_SET); - - private String[] privileges; - private Map privilegeNameMap; - private SimpleContainer permissionsTable; - private CMSPermissionsTables allPermissions; - private CMSPermissionsHeader PermissionsHeader; - private SimpleContainer directPermissions; - private Form roleSearchForm; - private SimpleContainer inheritedPermissions; - private SimpleComponent contextPanel; - private SimpleContainer permissionsGrantPanel; - private SimpleContainer noResultsPanel; - private ObjectAdminListing adminListing; - private CcmObjectSelectionModel selectionModel; - - private RequestLocal userObjectInfo; - - /** - * Default constructor creates components that show the default privileges - * as defined in PermissionsConstants interface - * - * @param model - */ - public CMSPermissionsPane(final CcmObjectSelectionModel model) { - this(CMSPermissionsConstants.DEFAULT_PRIVILEGES, new HashMap<>(), model); - privilegeNameMap.put("read", "Read"); - privilegeNameMap.put("write", "Write"); - privilegeNameMap.put("create", "Create"); - privilegeNameMap.put("delete", "Delete"); - privilegeNameMap.put("admin", "Admin"); - } - - /** - * Creates a PermissionsPane with components showing the privileges that are - * passed in as argument. - * - * @param privileges - * @param privilegeNameMap - * @param selectionModel - */ - public CMSPermissionsPane( - final String[] privileges, - final Map privilegeNameMap, - final CcmObjectSelectionModel selectionModel) { - - userObjectInfo = new RequestLocal() { - - @Override - protected Object initialValue(final PageState state) { - return new CMSUserObjectStruct(state, selectionModel); - } - - }; - - this.privileges = privileges; - this.selectionModel = selectionModel; - this.privilegeNameMap = privilegeNameMap; - } - - public CMSPermissionsPane( - final Class privilegesClass, - final CcmObjectSelectionModel selectionModel) { - - final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); - final PermissionManager permissionManager = cdiUtil.findBean( - PermissionManager.class); - final List privilegesFromClass = permissionManager - .listDefiniedPrivileges(privilegesClass); - - final Map nameMap = new HashMap<>(); - for(final String privilege: privilegesFromClass) { - nameMap.put(privilege, privilege); - } - - this.privileges = privilegesFromClass.toArray(new String[]{}); - this.selectionModel = selectionModel; - this.privilegeNameMap = nameMap; - } - - /** - * Overwrite this method to construct your default Permissions Pane with the - * components you need. You can subclass anonymously overwriting just the - * register method. Note: the getXXX methods are lazy instantiators, i.e. - * they produce the components only if not already there. (You can even - * overwrite the getXXX components with your own implementation, e.g., if - * you want to show a List instead of a Table for the direct permissions, - * but still use a Table for the inherited permissions. - * - * @param page - */ - @Override - public void register(final Page page) { - super.register(page); - - // add permissions components to this specific implementation - // add(getPermissionsHeader()); -// 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(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); - // add state parameters - page.addGlobalStateParam(searchString); - page.addGlobalStateParam(privilegeArray); - - } - - /** - * Implementation of interface bebop.Resettable. Use {@code reset} to reset - * permissions component to initial state, e.g. if you embed it into another - * container. - */ - @Override - public void reset(final PageState state) { -// showAdmin(state); - } - - /** - * Utility method to get the authenticated user or group - * - * @param state - * - * @return - */ - public Role getRequestingRole(final PageState state) { - return ((CMSUserObjectStruct) userObjectInfo.get(state)).getRole(); - } - - /** - * Utility method to get the ACSObject from the page state - * - * @param state - * - * @return - */ - public CcmObject getObject(final PageState state) { - return ((CMSUserObjectStruct) userObjectInfo.get(state)).getObject(); - } - - /** - * Returns the title "Permissions on object articles", e.g. - * - * @return - */ - public Label getTitle() { - return ((CMSPermissionsHeader) getPermissionsHeader()).getTitle(); - } - - /** - * Returns a string array of privilege names as defined in the constructor - * - * @return - */ - public String[] getPrivileges() { - return Arrays.copyOf(privileges, privileges.length); - } - - private SimpleContainer getPermissionsTable() { - if (permissionsTable != null) { - return permissionsTable; - } - - 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