CCM NG: UI for managing permissions for assets
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5325 8810af33-2d31-482b-a856-94f89814c4df
Former-commit-id: 53316b0bab
pull/2/head
parent
5e283ffe5b
commit
7f8521f84e
|
|
@ -318,11 +318,16 @@ public abstract class AbstractAssetForm<T extends Asset>
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Locale getSelectedLocale(final PageState state) {
|
protected Locale getSelectedLocale(final PageState state) {
|
||||||
final String selected = (String) showLocaleSelect.getValue(state);
|
|
||||||
|
final Object selected = showLocaleSelect.getValue(state);
|
||||||
if (selected == null) {
|
if (selected == null) {
|
||||||
return KernelConfig.getConfig().getDefaultLocale();
|
return KernelConfig.getConfig().getDefaultLocale();
|
||||||
|
} else if(selected instanceof Locale) {
|
||||||
|
return (Locale) selected;
|
||||||
|
} else if(selected instanceof String) {
|
||||||
|
return new Locale((String) selected);
|
||||||
} else {
|
} else {
|
||||||
return new Locale(selected);
|
return new Locale(selected.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,8 +92,6 @@ public class AssetFolderBrowser extends Table {
|
||||||
|
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
|
||||||
setModelBuilder(new AssetFolderBrowserTableModelBuilder());
|
|
||||||
|
|
||||||
final GlobalizedMessage[] headers = {
|
final GlobalizedMessage[] headers = {
|
||||||
new GlobalizedMessage("cms.ui.folder.name",
|
new GlobalizedMessage("cms.ui.folder.name",
|
||||||
CMS_FOLDER_BUNDLE),
|
CMS_FOLDER_BUNDLE),
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,11 @@ import com.arsdigita.cms.ui.folder.FolderRequestLocal;
|
||||||
import com.arsdigita.cms.ui.folder.FolderSelectionModel;
|
import com.arsdigita.cms.ui.folder.FolderSelectionModel;
|
||||||
import com.arsdigita.cms.ui.folder.FolderTreeModelBuilder;
|
import com.arsdigita.cms.ui.folder.FolderTreeModelBuilder;
|
||||||
import com.arsdigita.cms.ui.folder.FolderTreeModelController;
|
import com.arsdigita.cms.ui.folder.FolderTreeModelController;
|
||||||
|
import com.arsdigita.cms.ui.permissions.CMSPermissionsPane;
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
import com.arsdigita.toolbox.ui.ActionGroup;
|
import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
import com.arsdigita.toolbox.ui.LayoutPanel;
|
import com.arsdigita.toolbox.ui.LayoutPanel;
|
||||||
|
import com.arsdigita.ui.CcmObjectSelectionModel;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
|
||||||
|
|
@ -88,6 +90,7 @@ import org.libreccm.categorization.CategoryManager;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
import org.libreccm.core.UnexpectedErrorException;
|
import org.libreccm.core.UnexpectedErrorException;
|
||||||
import org.libreccm.security.PermissionChecker;
|
import org.libreccm.security.PermissionChecker;
|
||||||
|
import org.libreccm.security.PermissionManager;
|
||||||
import org.librecms.assets.AssetTypeInfo;
|
import org.librecms.assets.AssetTypeInfo;
|
||||||
import org.librecms.assets.AssetTypesManager;
|
import org.librecms.assets.AssetTypesManager;
|
||||||
import org.librecms.contentsection.Asset;
|
import org.librecms.contentsection.Asset;
|
||||||
|
|
@ -95,9 +98,12 @@ import org.librecms.contentsection.AssetManager;
|
||||||
import org.librecms.contentsection.AssetRepository;
|
import org.librecms.contentsection.AssetRepository;
|
||||||
import org.librecms.contentsection.FolderManager;
|
import org.librecms.contentsection.FolderManager;
|
||||||
import org.librecms.contentsection.FolderRepository;
|
import org.librecms.contentsection.FolderRepository;
|
||||||
|
import org.librecms.contentsection.privileges.AssetPrivileges;
|
||||||
import org.librecms.contentsection.privileges.ItemPrivileges;
|
import org.librecms.contentsection.privileges.ItemPrivileges;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.util.TooManyListenersException;
|
import java.util.TooManyListenersException;
|
||||||
|
|
@ -142,6 +148,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
private SegmentedPanel.Segment newFolderSegment;
|
private SegmentedPanel.Segment newFolderSegment;
|
||||||
private SegmentedPanel.Segment editFolderSegment;
|
private SegmentedPanel.Segment editFolderSegment;
|
||||||
private SegmentedPanel.Segment editAssetSegment;
|
private SegmentedPanel.Segment editAssetSegment;
|
||||||
|
private SegmentedPanel.Segment folderPermissionsSegment;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public AssetPane() {
|
public AssetPane() {
|
||||||
|
|
@ -337,7 +344,6 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
//
|
//
|
||||||
// });
|
// });
|
||||||
// currentFolderSegment.add(currentFolderLabel);
|
// currentFolderSegment.add(currentFolderLabel);
|
||||||
|
|
||||||
actionsSegment = panel.addSegment();
|
actionsSegment = panel.addSegment();
|
||||||
actionsSegment.setIdAttr("folder-browse");
|
actionsSegment.setIdAttr("folder-browse");
|
||||||
|
|
||||||
|
|
@ -570,7 +576,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final AssetTypesManager typesManager = cdiUtil
|
final AssetTypesManager typesManager = cdiUtil
|
||||||
.findBean(AssetTypesManager.class);
|
.findBean(AssetTypesManager.class);
|
||||||
|
|
||||||
if (selectedAssetModel.isSelected(state)) {
|
if (selectedAssetModel.isSelected(state)) {
|
||||||
target.setLabel(
|
target.setLabel(
|
||||||
new GlobalizedMessage(
|
new GlobalizedMessage(
|
||||||
|
|
@ -585,7 +591,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
typeInfo.getLabelBundle());
|
typeInfo.getLabelBundle());
|
||||||
final String typeLabel = bundle
|
final String typeLabel = bundle
|
||||||
.getString(typeInfo.getLabelKey());
|
.getString(typeInfo.getLabelKey());
|
||||||
|
|
||||||
target.setLabel(new GlobalizedMessage(
|
target.setLabel(new GlobalizedMessage(
|
||||||
"cms.ui.admin.assets.create",
|
"cms.ui.admin.assets.create",
|
||||||
CmsConstants.CMS_BUNDLE,
|
CmsConstants.CMS_BUNDLE,
|
||||||
|
|
@ -595,6 +601,25 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
|
|
||||||
}));
|
}));
|
||||||
editAssetSegment.add(editAssetForm);
|
editAssetSegment.add(editAssetForm);
|
||||||
|
|
||||||
|
folderPermissionsSegment = panel.addSegment();
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final PermissionManager permissionManager = cdiUtil
|
||||||
|
.findBean(PermissionManager.class);
|
||||||
|
final String[] privileges = permissionManager
|
||||||
|
.listDefiniedPrivileges(AssetPrivileges.class)
|
||||||
|
.toArray(new String[]{});
|
||||||
|
final Map<String, String> privilegeNameMap = new HashMap<>();
|
||||||
|
Arrays
|
||||||
|
.stream(privileges)
|
||||||
|
.forEach(privilege -> privilegeNameMap.put(privilege, privilege));
|
||||||
|
final CcmObjectSelectionModel<CcmObject> objSelectionModel
|
||||||
|
= new CcmObjectSelectionModel<>(
|
||||||
|
CcmObject.class, folderSelectionModel);
|
||||||
|
final CMSPermissionsPane folderPermissionsPane = new CMSPermissionsPane(
|
||||||
|
privileges, privilegeNameMap, objSelectionModel);
|
||||||
|
folderPermissionsSegment.add(folderPermissionsPane);
|
||||||
|
|
||||||
|
|
||||||
return panel;
|
return panel;
|
||||||
|
|
||||||
|
|
@ -610,7 +635,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
newFolderSegment.setVisible(state, false);
|
newFolderSegment.setVisible(state, false);
|
||||||
editFolderSegment.setVisible(state, false);
|
editFolderSegment.setVisible(state, false);
|
||||||
editAssetSegment.setVisible(state, false);
|
editAssetSegment.setVisible(state, false);
|
||||||
|
folderPermissionsSegment.setVisible(state, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void moveCopyMode(final PageState state) {
|
protected void moveCopyMode(final PageState state) {
|
||||||
|
|
@ -624,6 +649,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
editFolderSegment.setVisible(state, false);
|
editFolderSegment.setVisible(state, false);
|
||||||
targetSelector.expose(state);
|
targetSelector.expose(state);
|
||||||
editAssetSegment.setVisible(state, false);
|
editAssetSegment.setVisible(state, false);
|
||||||
|
folderPermissionsSegment.setVisible(state, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void newFolderMode(final PageState state) {
|
protected void newFolderMode(final PageState state) {
|
||||||
|
|
@ -636,6 +662,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
newFolderSegment.setVisible(state, true);
|
newFolderSegment.setVisible(state, true);
|
||||||
editFolderSegment.setVisible(state, false);
|
editFolderSegment.setVisible(state, false);
|
||||||
editAssetSegment.setVisible(state, false);
|
editAssetSegment.setVisible(state, false);
|
||||||
|
folderPermissionsSegment.setVisible(state, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void editFolderMode(final PageState state) {
|
protected void editFolderMode(final PageState state) {
|
||||||
|
|
@ -646,6 +673,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
newFolderSegment.setVisible(state, false);
|
newFolderSegment.setVisible(state, false);
|
||||||
editFolderSegment.setVisible(state, true);
|
editFolderSegment.setVisible(state, true);
|
||||||
editAssetSegment.setVisible(state, false);
|
editAssetSegment.setVisible(state, false);
|
||||||
|
folderPermissionsSegment.setVisible(state, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void editAssetMode(final PageState state) {
|
protected void editAssetMode(final PageState state) {
|
||||||
|
|
@ -656,6 +684,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
newFolderSegment.setVisible(state, false);
|
newFolderSegment.setVisible(state, false);
|
||||||
editFolderSegment.setVisible(state, false);
|
editFolderSegment.setVisible(state, false);
|
||||||
editAssetSegment.setVisible(state, true);
|
editAssetSegment.setVisible(state, true);
|
||||||
|
folderPermissionsSegment.setVisible(state, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -675,6 +704,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
page.setVisibleDefault(newFolderSegment, false);
|
page.setVisibleDefault(newFolderSegment, false);
|
||||||
page.setVisibleDefault(editFolderSegment, false);
|
page.setVisibleDefault(editFolderSegment, false);
|
||||||
page.setVisibleDefault(editAssetSegment, false);
|
page.setVisibleDefault(editAssetSegment, false);
|
||||||
|
page.setVisibleDefault(folderPermissionsSegment, true);
|
||||||
|
|
||||||
page.addComponentStateParam(this, actionParameter);
|
page.addComponentStateParam(this, actionParameter);
|
||||||
page.addComponentStateParam(this, sourcesParameter);
|
page.addComponentStateParam(this, sourcesParameter);
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,10 @@ package com.arsdigita.cms.ui.folder;
|
||||||
|
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.SingleSelectionModel;
|
import com.arsdigita.bebop.SingleSelectionModel;
|
||||||
import com.arsdigita.cms.CMS;
|
|
||||||
|
|
||||||
import com.arsdigita.ui.CcmObjectSelectionModel;
|
import com.arsdigita.ui.CcmObjectSelectionModel;
|
||||||
|
|
||||||
import org.libreccm.categorization.Category;
|
import org.libreccm.categorization.Category;
|
||||||
import org.librecms.contentsection.ContentSection;
|
|
||||||
import org.librecms.contentsection.Folder;
|
import org.librecms.contentsection.Folder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ import org.libreccm.security.PermissionManager;
|
||||||
import org.libreccm.security.Role;
|
import org.libreccm.security.Role;
|
||||||
import org.librecms.contentsection.ContentSection;
|
import org.librecms.contentsection.ContentSection;
|
||||||
import org.librecms.contentsection.ContentSectionRepository;
|
import org.librecms.contentsection.ContentSectionRepository;
|
||||||
import org.librecms.contentsection.privileges.ItemPrivileges;
|
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
@ -56,7 +56,7 @@ class CMSPermissionsTableController {
|
||||||
|
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
public List<CMSPermissionsTableRow> buildDirectPermissionsRows(
|
public List<CMSPermissionsTableRow> buildDirectPermissionsRows(
|
||||||
final CcmObject object) {
|
final CcmObject object, final String[] privileges) {
|
||||||
|
|
||||||
final Optional<ContentSection> section = sectionRepo.findById(CMS
|
final Optional<ContentSection> section = sectionRepo.findById(CMS
|
||||||
.getContext().getContentSection().getObjectId());
|
.getContext().getContentSection().getObjectId());
|
||||||
|
|
@ -68,7 +68,7 @@ class CMSPermissionsTableController {
|
||||||
.getRoles();
|
.getRoles();
|
||||||
|
|
||||||
return roles.stream()
|
return roles.stream()
|
||||||
.map(role -> buildRow(role, object))
|
.map(role -> buildRow(role, object, privileges))
|
||||||
.sorted((row1, row2) -> {
|
.sorted((row1, row2) -> {
|
||||||
return row1.getRoleName().compareTo(row2.getRoleName());
|
return row1.getRoleName().compareTo(row2.getRoleName());
|
||||||
})
|
})
|
||||||
|
|
@ -76,11 +76,11 @@ class CMSPermissionsTableController {
|
||||||
}
|
}
|
||||||
|
|
||||||
private CMSPermissionsTableRow buildRow(final Role role,
|
private CMSPermissionsTableRow buildRow(final Role role,
|
||||||
final CcmObject object) {
|
final CcmObject object,
|
||||||
final List<String> privileges = permissionManager
|
final String[] privileges) {
|
||||||
.listDefiniedPrivileges(ItemPrivileges.class);
|
|
||||||
|
|
||||||
final List<CMSPermissionsTableColumn> columns = privileges.stream()
|
final List<CMSPermissionsTableColumn> columns = Arrays
|
||||||
|
.stream(privileges)
|
||||||
.map(privilege -> buildColumn(role, object, privilege))
|
.map(privilege -> buildColumn(role, object, privilege))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,6 @@ import com.arsdigita.bebop.table.TableModel;
|
||||||
|
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
import org.libreccm.security.PermissionManager;
|
|
||||||
import org.librecms.contentsection.privileges.ItemPrivileges;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
|
@ -33,26 +31,28 @@ import java.util.Iterator;
|
||||||
*/
|
*/
|
||||||
class CMSPermissionsTableModel implements TableModel {
|
class CMSPermissionsTableModel implements TableModel {
|
||||||
|
|
||||||
|
private final String[] privileges;
|
||||||
private final Iterator<CMSPermissionsTableRow> iterator;
|
private final Iterator<CMSPermissionsTableRow> iterator;
|
||||||
private CMSPermissionsTableRow currentRow;
|
private CMSPermissionsTableRow currentRow;
|
||||||
|
|
||||||
public CMSPermissionsTableModel(final CcmObject object) {
|
public CMSPermissionsTableModel(final CcmObject object,
|
||||||
|
final String[] privileges) {
|
||||||
|
|
||||||
|
this.privileges = privileges;
|
||||||
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final CMSPermissionsTableController controller = cdiUtil.findBean(
|
final CMSPermissionsTableController controller = cdiUtil.findBean(
|
||||||
CMSPermissionsTableController.class);
|
CMSPermissionsTableController.class);
|
||||||
|
|
||||||
iterator = controller.buildDirectPermissionsRows(object).iterator();
|
iterator = controller
|
||||||
|
.buildDirectPermissionsRows(object,privileges)
|
||||||
|
.iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getColumnCount() {
|
public int getColumnCount() {
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
|
||||||
final PermissionManager permissionManager = cdiUtil.findBean(
|
return privileges.length + 2;
|
||||||
PermissionManager.class);
|
|
||||||
|
|
||||||
return permissionManager.listDefiniedPrivileges(ItemPrivileges.class)
|
|
||||||
.size() + 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ class CMSPermissionsTableModelBuilder extends LockableImpl
|
||||||
@Override
|
@Override
|
||||||
public TableModel makeModel(final Table table, final PageState state) {
|
public TableModel makeModel(final Table table, final PageState state) {
|
||||||
final CcmObject object = parent.getObject(state);
|
final CcmObject object = parent.getObject(state);
|
||||||
return new CMSPermissionsTableModel(object);
|
return new CMSPermissionsTableModel(object, parent.getPrivileges());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,19 +19,12 @@
|
||||||
package com.arsdigita.cms.ui.permissions;
|
package com.arsdigita.cms.ui.permissions;
|
||||||
|
|
||||||
import com.arsdigita.bebop.BoxPanel;
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
import com.arsdigita.bebop.Label;
|
|
||||||
import com.arsdigita.bebop.PageState;
|
|
||||||
import com.arsdigita.bebop.Table;
|
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.bebop.table.TableModel;
|
|
||||||
import com.arsdigita.bebop.table.TableModelBuilder;
|
|
||||||
import com.arsdigita.cms.CMS;
|
import com.arsdigita.cms.CMS;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||||
import com.arsdigita.cms.ui.authoring.ResettableContainer;
|
import com.arsdigita.cms.ui.authoring.ResettableContainer;
|
||||||
import com.arsdigita.globalization.GlobalizedMessage;
|
|
||||||
import com.arsdigita.ui.CcmObjectSelectionModel;
|
import com.arsdigita.ui.CcmObjectSelectionModel;
|
||||||
import com.arsdigita.util.LockableImpl;
|
|
||||||
|
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
|
|
@ -56,15 +49,11 @@ import java.util.Map;
|
||||||
)
|
)
|
||||||
public class ItemPermissionsStep extends ResettableContainer {
|
public class ItemPermissionsStep extends ResettableContainer {
|
||||||
|
|
||||||
private final ItemSelectionModel itemSelectionModel;
|
|
||||||
|
|
||||||
public ItemPermissionsStep(final ItemSelectionModel itemSelectionModel,
|
public ItemPermissionsStep(final ItemSelectionModel itemSelectionModel,
|
||||||
final AuthoringKitWizard authoringKitWizard,
|
final AuthoringKitWizard authoringKitWizard,
|
||||||
final StringParameter selectedLanguage) {
|
final StringParameter selectedLanguage) {
|
||||||
|
|
||||||
super("cms:permissionsStep", CMS.CMS_XML_NS);
|
super("cms:permissionsStep", CMS.CMS_XML_NS);
|
||||||
|
|
||||||
this.itemSelectionModel = itemSelectionModel;
|
|
||||||
|
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
super.add(panel);
|
super.add(panel);
|
||||||
|
|
@ -88,178 +77,4 @@ public class ItemPermissionsStep extends ResettableContainer {
|
||||||
panel.add(permissionsPane);
|
panel.add(permissionsPane);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public ItemPermissionsStep(final ItemSelectionModel itemSelectionModel,
|
|
||||||
// final AuthoringKitWizard authoringKitWizard,
|
|
||||||
// final StringParameter selectedLanguage) {
|
|
||||||
// super("cms:permissionsStep", CMS.CMS_XML_NS);
|
|
||||||
//
|
|
||||||
// this.itemSelectionModel = itemSelectionModel;
|
|
||||||
//
|
|
||||||
// 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);
|
|
||||||
// super.add(panel);
|
|
||||||
//
|
|
||||||
// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
|
||||||
// final PermissionManager permissionManager = cdiUtil.findBean(
|
|
||||||
// PermissionManager.class);
|
|
||||||
// final List<String> privileges = permissionManager
|
|
||||||
// .listDefiniedPrivileges(ItemPrivileges.class);
|
|
||||||
// final List<Label> headerLabels = privileges.stream()
|
|
||||||
// .map(privilege -> generatePrivilegeColumnHeader(privilege))
|
|
||||||
// .collect(Collectors.toList());
|
|
||||||
// headerLabels.add(0,
|
|
||||||
// new Label(new GlobalizedMessage(
|
|
||||||
// "cms.ui.permissions.table.role_header",
|
|
||||||
// CmsConstants.CMS_BUNDLE)));
|
|
||||||
// headerLabels.add(new Label(new GlobalizedMessage(
|
|
||||||
// "cms.ui.permissions.table.remove_all.header",
|
|
||||||
// CmsConstants.CMS_BUNDLE)));
|
|
||||||
// final Table table = new Table(
|
|
||||||
// new PermissionsTableModelBuilder(),
|
|
||||||
// headerLabels.toArray());
|
|
||||||
// table.setClassAttr("dataTable");
|
|
||||||
// for (int j = 1; j < table.getColumnModel().size() - 1; j++) {
|
|
||||||
// table.getColumn(j).setKey(privileges.get(j - 1));
|
|
||||||
// table.getColumn(j).setCellRenderer(new TableCellRenderer() {
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Component getComponent(final Table table,
|
|
||||||
// final PageState state,
|
|
||||||
// final Object value,
|
|
||||||
// final boolean isSelected,
|
|
||||||
// final Object key,
|
|
||||||
// final int row,
|
|
||||||
// final int column) {
|
|
||||||
//
|
|
||||||
// final ControlLink link = new ControlLink("");
|
|
||||||
//
|
|
||||||
// final CMSPermissionsTableColumn col
|
|
||||||
// = (CMSPermissionsTableColumn) value;
|
|
||||||
// if (col.isPermitted()) {
|
|
||||||
// link.setClassAttr("checkBoxChecked");
|
|
||||||
// } else {
|
|
||||||
// link.setClassAttr("checkBoxUnchecked");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return link;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// table.getColumn(table.getColumnModel().size() - 1).setCellRenderer(
|
|
||||||
// new TableCellRenderer() {
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Component getComponent(final Table table,
|
|
||||||
// final PageState state,
|
|
||||||
// final Object value,
|
|
||||||
// final boolean isSelected,
|
|
||||||
// final Object key,
|
|
||||||
// final int row,
|
|
||||||
// final int column) {
|
|
||||||
// final ControlLink link = new ControlLink(new Label(
|
|
||||||
// new GlobalizedMessage(
|
|
||||||
// "cms.ui.permissions.table.actions.remove_all",
|
|
||||||
// CmsConstants.CMS_BUNDLE)));
|
|
||||||
// link.setConfirmation(new GlobalizedMessage(
|
|
||||||
// "cms.ui.permissions.table.actions.remove_all.confirm",
|
|
||||||
// CmsConstants.CMS_BUNDLE));
|
|
||||||
//
|
|
||||||
// return link;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// });
|
|
||||||
// table.addTableActionListener(new TableActionListener() {
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void cellSelected(final TableActionEvent event)
|
|
||||||
// throws FormProcessException {
|
|
||||||
//
|
|
||||||
// final PageState state = event.getPageState();
|
|
||||||
// final int columnIndex = event.getColumn();
|
|
||||||
// if (event.getRowKey() == null) {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// final String roleName = (String) event.getRowKey();
|
|
||||||
//
|
|
||||||
// final Table table = (Table) event.getSource();
|
|
||||||
// final int columnCount = table.getColumnModel().size();
|
|
||||||
// final int lastColumnIndex = columnCount - 1;
|
|
||||||
//
|
|
||||||
// final CcmObject object = itemSelectionModel
|
|
||||||
// .getSelectedItem(state);
|
|
||||||
// final RoleRepository roleRepo = cdiUtil.findBean(
|
|
||||||
// RoleRepository.class);
|
|
||||||
// final Optional<Role> role = roleRepo.findByName(roleName);
|
|
||||||
// if (!role.isPresent()) {
|
|
||||||
// throw new UnexpectedErrorException(String.format(
|
|
||||||
// "Role \"%s\" was not found inthe database, but was in "
|
|
||||||
// + "the permissions table.",
|
|
||||||
// roleName));
|
|
||||||
// }
|
|
||||||
// final PermissionChecker permissionChecker = cdiUtil.findBean(
|
|
||||||
// PermissionChecker.class);
|
|
||||||
// if (columnIndex > 0 && columnIndex < lastColumnIndex) {
|
|
||||||
// final String privilege = table.getColumn(columnIndex)
|
|
||||||
// .getKey();
|
|
||||||
//
|
|
||||||
// if (permissionChecker.isPermitted(privilege,
|
|
||||||
// object,
|
|
||||||
// role.get())) {
|
|
||||||
// permissionManager.revokePrivilege(privilege,
|
|
||||||
// role.get(),
|
|
||||||
// object);
|
|
||||||
// } else {
|
|
||||||
// permissionManager.grantPrivilege(privilege,
|
|
||||||
// role.get(),
|
|
||||||
// object);
|
|
||||||
// }
|
|
||||||
// } else if (columnIndex == lastColumnIndex) {
|
|
||||||
// final List<String> privileges = permissionManager
|
|
||||||
// .listDefiniedPrivileges(ItemPrivileges.class);
|
|
||||||
// privileges.forEach(privilege -> permissionManager
|
|
||||||
// .revokePrivilege(privilege, role.get(), object));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void headSelected(final TableActionEvent event) {
|
|
||||||
// //Nothing
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// panel.add(table);
|
|
||||||
// }
|
|
||||||
private Label generatePrivilegeColumnHeader(final String privilege) {
|
|
||||||
return new Label(new GlobalizedMessage(
|
|
||||||
String.format("cms.ui.permissions.table.privilege.headers.%s",
|
|
||||||
privilege),
|
|
||||||
CmsConstants.CMS_BUNDLE));
|
|
||||||
}
|
|
||||||
|
|
||||||
private class PermissionsTableModelBuilder extends LockableImpl
|
|
||||||
implements TableModelBuilder {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TableModel makeModel(final Table table, final PageState state) {
|
|
||||||
final CcmObject object = itemSelectionModel.getSelectedItem(state);
|
|
||||||
return new CMSPermissionsTableModel(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// private class PermissionsTableModel implements TableModel {
|
|
||||||
//
|
|
||||||
// private final Iterator<PermissionsTableRow> iterator;
|
|
||||||
// private PermissionsTableRow currentRow;
|
|
||||||
//
|
|
||||||
// public PermissionsTableModel(final CcmObject object) {
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -522,3 +522,8 @@ cms.ui.item.lifecycle.republish_and_reset=Republish and reset lifecycle
|
||||||
cms.ui.search.help=Enter some search terms
|
cms.ui.search.help=Enter some search terms
|
||||||
item_permissions_step.label=Permissions
|
item_permissions_step.label=Permissions
|
||||||
item_permissions_step.description=Edit permissions for this content item
|
item_permissions_step.description=Edit permissions for this content item
|
||||||
|
cms.ui.permissions.table.privilege.headers.create_new_assets=Create new assets
|
||||||
|
cms.ui.permissions.table.privilege.headers.delete_assets=Delete assets
|
||||||
|
cms.ui.permissions.table.privilege.headers.edit_asset=
|
||||||
|
cms.ui.permissions.table.privilege.headers.use_asset=Use assets
|
||||||
|
cms.ui.permissions.table.privilege.headers.view_asset=View assets
|
||||||
|
|
|
||||||
|
|
@ -519,3 +519,8 @@ cms.ui.item.lifecycle.republish_and_reset=Erneut publizieren und Lebenszyklus zu
|
||||||
cms.ui.search.help=Enter some search terms
|
cms.ui.search.help=Enter some search terms
|
||||||
item_permissions_step.label=Berechtigungen
|
item_permissions_step.label=Berechtigungen
|
||||||
item_permissions_step.description=Berechtigungen f\u00fcr dieses Dokument bearbeiten
|
item_permissions_step.description=Berechtigungen f\u00fcr dieses Dokument bearbeiten
|
||||||
|
cms.ui.permissions.table.privilege.headers.create_new_assets=Neue Assets anlegen
|
||||||
|
cms.ui.permissions.table.privilege.headers.delete_assets=Assets l\u00f6schen
|
||||||
|
cms.ui.permissions.table.privilege.headers.edit_asset=Assets bearbeiten
|
||||||
|
cms.ui.permissions.table.privilege.headers.use_asset=Assets verwenden
|
||||||
|
cms.ui.permissions.table.privilege.headers.view_asset=Assets ansehen
|
||||||
|
|
|
||||||
|
|
@ -481,3 +481,8 @@ cms.ui.item.lifecycle.republish_and_reset=Republish and reset lifecycle
|
||||||
cms.ui.search.help=Enter some search terms
|
cms.ui.search.help=Enter some search terms
|
||||||
item_permissions_step.label=Permissions
|
item_permissions_step.label=Permissions
|
||||||
item_permissions_step.description=Edit permissions for this content item
|
item_permissions_step.description=Edit permissions for this content item
|
||||||
|
cms.ui.permissions.table.privilege.headers.create_new_assets=Create new assets
|
||||||
|
cms.ui.permissions.table.privilege.headers.delete_assets=Delete assets
|
||||||
|
cms.ui.permissions.table.privilege.headers.edit_asset=Edit assets
|
||||||
|
cms.ui.permissions.table.privilege.headers.use_asset=Use assets
|
||||||
|
cms.ui.permissions.table.privilege.headers.view_asset=View assets
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue