diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPane.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPane.java.off
index 57c4d3a67..80862a576 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPane.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPane.java.off
@@ -112,46 +112,47 @@ public final class ContentTypeAdminPane extends BaseAdminPane {
*/
@Override
public void actionPerformed(final ActionEvent event) {
- final PageState state = event.getPageState();
- ContentType contentType = (ContentType) m_model.getSelectedObject(state);
- ContentSection section = CMS.getContext().getContentSection();
- if (contentType == null) {
- final String template = state.getRequest()
- .getParameter(ContentSectionPage
- .SET_TEMPLATE);
- if (template != null) {
- DataCollection da = SessionManager.getSession().retrieve(SectionTemplateMapping.BASE_DATA_OBJECT_TYPE);
- DomainCollection c = new DomainCollection(da);
- c.addEqualsFilter(SectionTemplateMapping.SECTION + "." + ACSObject.ID,
- section.getID());
- c.addEqualsFilter(SectionTemplateMapping.TEMPLATE + "." + ACSObject.ID,
- new BigDecimal(template));
- c.addOrder(SectionTemplateMapping.CONTENT_TYPE + "." + ContentType.LABEL);
- if (c.next()) {
- SectionTemplateMapping mapping =
- (SectionTemplateMapping) c.getDomainObject();
- contentType = mapping.getContentType();
- }
- c.close();
- }
- if (contentType == null) {
- ContentTypeCollection contentTypes = section.getContentTypes();
- contentTypes.addOrder("label asc");
- try {
- if (contentTypes.next()) {
- contentType = contentTypes.getContentType();
- }
- } finally {
- contentTypes.close();
- }
- }
- if (contentType != null) {
- m_model.setSelectedObject(state, contentType);
- getBody().push(state, getItemPane());
- }
-
-
- }
+// ToDo
+// final PageState state = event.getPageState();
+// ContentType contentType = (ContentType) m_model.getSelectedObject(state);
+// ContentSection section = CMS.getContext().getContentSection();
+// if (contentType == null) {
+// final String template = state.getRequest()
+// .getParameter(ContentSectionPage
+// .SET_TEMPLATE);
+// if (template != null) {
+// DataCollection da = SessionManager.getSession().retrieve(SectionTemplateMapping.BASE_DATA_OBJECT_TYPE);
+// DomainCollection c = new DomainCollection(da);
+// c.addEqualsFilter(SectionTemplateMapping.SECTION + "." + ACSObject.ID,
+// section.getID());
+// c.addEqualsFilter(SectionTemplateMapping.TEMPLATE + "." + ACSObject.ID,
+// new BigDecimal(template));
+// c.addOrder(SectionTemplateMapping.CONTENT_TYPE + "." + ContentType.LABEL);
+// if (c.next()) {
+// SectionTemplateMapping mapping =
+// (SectionTemplateMapping) c.getDomainObject();
+// contentType = mapping.getContentType();
+// }
+// c.close();
+// }
+// if (contentType == null) {
+// ContentTypeCollection contentTypes = section.getContentTypes();
+// contentTypes.addOrder("label asc");
+// try {
+// if (contentTypes.next()) {
+// contentType = contentTypes.getContentType();
+// }
+// } finally {
+// contentTypes.close();
+// }
+// }
+// if (contentType != null) {
+// m_model.setSelectedObject(state, contentType);
+// getBody().push(state, getItemPane());
+// }
+//
+//
+// }
}
});
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java
similarity index 54%
rename from ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java.off
rename to ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java
index 42394c327..890b0f996 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java.off
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java
@@ -41,10 +41,17 @@ import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
import com.arsdigita.toolbox.ui.ActionGroup;
import com.arsdigita.toolbox.ui.Cancellable;
import com.arsdigita.toolbox.ui.Section;
+import com.arsdigita.util.UncheckedWrapperException;
+import java.util.logging.Level;
import org.apache.log4j.Logger;
+import org.libreccm.cdi.utils.CdiUtil;
+import org.libreccm.security.PermissionChecker;
+import org.librecms.contentsection.ContentSectionManager;
+import org.librecms.contentsection.ContentTypeManager;
+import org.librecms.contentsection.privileges.AdminPrivileges;
/**
- *
+ *
* @authro Jens Pelzetter
* @author Justin Ross <jross@redhat.com>
*/
@@ -54,11 +61,10 @@ final class ContentTypeItemPane extends BaseItemPane {
private final ACSObjectSelectionModel m_model;
private final ContentTypeRequestLocal m_type;
private final SimpleContainer m_detailPane;
- private final TypeElements m_elements;
- private final AddElement m_elementAddForm;
- //ToDo private final SectionTemplatesListing m_templates;
+// Only useful for user definied content types private final TypeElements m_elements;
+// Only useful for user definied content types private final AddElement m_elementAddForm;
+// ToDo private final SectionTemplatesListing m_templates;
private final TypePermissionsTable m_permissions;
-// private final RelationAttributeSection m_relationAttributes;
ContentTypeItemPane(final ACSObjectSelectionModel model,
final ContentTypeRequestLocal type,
@@ -71,13 +77,11 @@ final class ContentTypeItemPane extends BaseItemPane {
add(m_detailPane);
setDefault(m_detailPane);
- m_elements = new TypeElements(m_model);
- m_elementAddForm = new AddElement();
-
+// m_elements = new TypeElements(m_model);
+// m_elementAddForm = new AddElement();
// ToDo
// m_templates = new SectionTemplatesListing(
// new ContentSectionRequestLocal(), m_type);
-
m_permissions = new TypePermissionsTable(
new ContentSectionRequestLocal(), m_type);
@@ -91,31 +95,29 @@ final class ContentTypeItemPane extends BaseItemPane {
// templateForm.add(templateFormSection);
// add(templateForm);
-
- final AddTextElement textForm = new AddTextElement(m_model);
- add(textForm);
-
- final AddNumberElement numberForm = new AddNumberElement(m_model);
- add(numberForm);
-
- final AddDateElement dateForm = new AddDateElement(m_model);
- add(dateForm);
-
- final AddTextAssetElement assetForm = new AddTextAssetElement(m_model);
- add(assetForm);
-
- final AddImageElement imageForm = new AddImageElement(m_model);
- add(imageForm);
-
- final AddFileElement fileForm = new AddFileElement(m_model);
- add(fileForm);
-
- final AddContentItemElement itemForm =
- new AddContentItemElement(m_model);
- add(itemForm);
-
+// final AddTextElement textForm = new AddTextElement(m_model);
+// add(textForm);
+//
+// final AddNumberElement numberForm = new AddNumberElement(m_model);
+// add(numberForm);
+//
+// final AddDateElement dateForm = new AddDateElement(m_model);
+// add(dateForm);
+//
+// final AddTextAssetElement assetForm = new AddTextAssetElement(m_model);
+// add(assetForm);
+//
+// final AddImageElement imageForm = new AddImageElement(m_model);
+// add(imageForm);
+//
+// final AddFileElement fileForm = new AddFileElement(m_model);
+// add(fileForm);
+//
+// final AddContentItemElement itemForm
+// = new AddContentItemElement(m_model);
+// add(itemForm);
m_detailPane.add(new SummarySection(editLink, deleteLink));
- m_detailPane.add(new RelationAttributeSection());
+// m_detailPane.add(new RelationAttributeSection());
m_detailPane.add(new TypeSecurityContainer(new ElementSection()));
m_detailPane.add(new TemplateSection(templateAddLink));
@@ -123,39 +125,38 @@ final class ContentTypeItemPane extends BaseItemPane {
//m_detailPane.add(new PermissionsSection(permissionAddLink));
m_detailPane.add(new PermissionsSection());
- connect(templateAddLink, templateForm);
- // connect(permissionAddLink, permissionsForm);
-
- final SingleSelect elementSelect =
- m_elementAddForm.getElementTypeSelect();
-
- connect(m_elementAddForm, elementSelect,
- AddElement.TEXT_ELEMENT, textForm);
- connect(textForm);
-
- connect(m_elementAddForm, elementSelect,
- AddElement.NUMBER_ELEMENT, numberForm);
- connect(numberForm);
-
- connect(m_elementAddForm, elementSelect,
- AddElement.DATE_ELEMENT, dateForm);
- connect(dateForm);
-
- connect(m_elementAddForm, elementSelect,
- AddElement.TEXT_ASSET_ELEMENT, assetForm);
- connect(assetForm);
-
- connect(m_elementAddForm, elementSelect,
- AddElement.IMAGE_ELEMENT, imageForm);
- connect(imageForm);
-
- connect(m_elementAddForm, elementSelect,
- AddElement.FILE_ELEMENT, fileForm);
- connect(fileForm);
-
- connect(m_elementAddForm, elementSelect,
- AddElement.CONTENT_ITEM_ELEMENT, itemForm);
- connect(itemForm);
+// connect(templateAddLink, templateForm);
+ // connect(permissionAddLink, permissionsForm);
+// final SingleSelect elementSelect
+// = m_elementAddForm.getElementTypeSelect();
+//
+// connect(m_elementAddForm, elementSelect,
+// AddElement.TEXT_ELEMENT, textForm);
+// connect(textForm);
+//
+// connect(m_elementAddForm, elementSelect,
+// AddElement.NUMBER_ELEMENT, numberForm);
+// connect(numberForm);
+//
+// connect(m_elementAddForm, elementSelect,
+// AddElement.DATE_ELEMENT, dateForm);
+// connect(dateForm);
+//
+// connect(m_elementAddForm, elementSelect,
+// AddElement.TEXT_ASSET_ELEMENT, assetForm);
+// connect(assetForm);
+//
+// connect(m_elementAddForm, elementSelect,
+// AddElement.IMAGE_ELEMENT, imageForm);
+// connect(imageForm);
+//
+// connect(m_elementAddForm, elementSelect,
+// AddElement.FILE_ELEMENT, fileForm);
+// connect(fileForm);
+//
+// connect(m_elementAddForm, elementSelect,
+// AddElement.CONTENT_ITEM_ELEMENT, itemForm);
+// connect(itemForm);
}
// XXX A temporary, low-impact fix.
@@ -198,14 +199,15 @@ final class ContentTypeItemPane extends BaseItemPane {
final ActionGroup group = new ActionGroup();
setBody(group);
- group.setSubject(m_elements);
- group.addAction(m_elementAddForm);
+// group.setSubject(m_elements);
+// group.addAction(m_elementAddForm);
}
@Override
public final boolean isVisible(final PageState state) {
- return m_model.isSelected(state) && isDynamicType(state)
- && !ContentSection.getConfig().getHideUDCTUI();
+// return m_model.isSelected(state) && isDynamicType(state)
+// && !ContentSection.getConfig().getHideUDCTUI();
+ return false;
}
}
@@ -217,7 +219,7 @@ final class ContentTypeItemPane extends BaseItemPane {
final ActionGroup group = new ActionGroup();
setBody(group);
- group.setSubject(m_templates);
+// ToDo group.setSubject(m_templates);
group.addAction(new TypeSecurityContainer(templateAddLink));
}
@@ -245,55 +247,55 @@ final class ContentTypeItemPane extends BaseItemPane {
}
}
- private class RelationAttributeSection extends Section {
-
- RelationAttributeSection() {
- setHeading(new Label(gz("cms.ui.type.attributes")));
-
- setBody(new RelationAttributeList(m_type));
- }
-
- @Override
- public final boolean isVisible(final PageState state) {
-// ISt es möglich, den folgenden Code nur einmal zu haben?? Kann man auf die isVisible von RelationAttributeList
- // zurückgreifen??
- boolean retVal = false;
- ContentType ct = (ContentType) m_type.getContentType(state);
- ContentItem ci = null;
-
- try {
- Class extends ContentItem> clazz = Class.forName(ct.
- getClassName()).asSubclass(ContentItem.class);
- ci = clazz.newInstance();
- if (ci instanceof RelationAttributeInterface) {
- RelationAttributeInterface rai =
- (RelationAttributeInterface) ci;
- retVal = rai.hasRelationAttributes();
- }
- ci.delete();
- } catch (Exception ex) {
- //retVal = false;
- }
-
- return retVal;
- }
- }
-
+// private class RelationAttributeSection extends Section {
+//
+// RelationAttributeSection() {
+// setHeading(new Label(gz("cms.ui.type.attributes")));
+//
+// setBody(new RelationAttributeList(m_type));
+// }
+//
+// @Override
+// public final boolean isVisible(final PageState state) {
+//// ISt es möglich, den folgenden Code nur einmal zu haben?? Kann man auf die isVisible von RelationAttributeList
+// // zurückgreifen??
+// boolean retVal = false;
+// ContentType ct = (ContentType) m_type.getContentType(state);
+// ContentItem ci = null;
+//
+// try {
+// Class extends ContentItem> clazz = Class.forName(ct.
+// getClassName()).asSubclass(ContentItem.class);
+// ci = clazz.newInstance();
+// if (ci instanceof RelationAttributeInterface) {
+// RelationAttributeInterface rai
+// = (RelationAttributeInterface) ci;
+// retVal = rai.hasRelationAttributes();
+// }
+// ci.delete();
+// } catch (Exception ex) {
+// //retVal = false;
+// }
+//
+// return retVal;
+// }
+// }
@Override
public final void register(final Page page) {
super.register(page);
page.addActionListener(new ActionListener() {
- public final void actionPerformed(final ActionEvent e) {
- final PageState state = e.getPageState();
+ @Override
+ public final void actionPerformed(final ActionEvent event) {
+ final PageState state = event.getPageState();
if (state.isVisibleOnPage(ContentTypeItemPane.this)
- && m_model.isSelected(state)
- && !userCanEdit(state)) {
- m_templates.getRemoveColumn().setVisible(state, false);
- m_templates.getDefaultColumn().setVisible(state, false);
- m_elements.getTable().getColumn(3).setVisible(state, false);
+ && m_model.isSelected(state)
+ && !userCanEdit(state)) {
+// m_templates.getRemoveColumn().setVisible(state, false);
+// m_templates.getDefaultColumn().setVisible(state, false);
+// m_elements.getTable().getColumn(3).setVisible(state, false);
}
}
});
@@ -301,46 +303,47 @@ final class ContentTypeItemPane extends BaseItemPane {
/**
* Unregister a content type from a content section.
- * XXX domlay
*/
private void removeType(final PageState state) {
final ContentSection section = CMS.getContext().getContentSection();
- section.removeContentType(m_type.getContentType(state));
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final ContentTypeManager typeManager = cdiUtil.findBean(
+ ContentTypeManager.class);
+ final ContentSectionManager sectionManager = cdiUtil.findBean(
+ ContentSectionManager.class);
- section.save();
+ final ContentType type = m_type.getContentType(state);
+ final Class extends ContentItem> typeClass;
+ try {
+ typeClass = (Class extends ContentItem>) Class.forName(
+ type.getContentItemClass());
+ } catch (ClassNotFoundException ex) {
+ throw new UncheckedWrapperException(ex);
+ }
+
+ sectionManager.removeContentTypeFromSection(typeClass, section);
}
/**
* Determine if the current user has access to edit the content type
- * XXX domlay
*/
protected static boolean userCanEdit(final PageState state) {
- SecurityManager sm = Utilities.getSecurityManager(state);
- return sm.canAccess(state.getRequest(),
- SecurityManager.CONTENT_TYPE_ADMIN);
+ final PermissionChecker permissionChecker = CdiUtil.createCdiUtil().findBean(PermissionChecker.class);
+ final ContentSection section = CMS.getContext().getContentSection();
+
+ return permissionChecker.isPermitted(
+ AdminPrivileges.ADMINISTER_CONTENT_TYPES, section);
}
/**
- * utility method
- * get the DataObject from the DataBase, returns true if it
+ * utility method get the DataObject from the DataBase, returns true if it
* is a modifiable type, false otherwise.
*
- * XXX domlay
+ * Because we don't have modifiable types aka User Definied Content Types in
+ * CCM NG yet, this method returns always false for now.
*/
protected final boolean isDynamicType(final PageState state) {
- final ContentType type = m_type.getContentType(state);
-
- final String objectTypeString =
- "com.arsdigita.persistence.DynamicObjectType";
- final DataCollection collection = SessionManager.getSession().retrieve(
- objectTypeString);
- collection.addEqualsFilter("dynamicType", type.getAssociatedObjectType());
-
- final boolean b = collection.next();
-
- collection.close();
-
- return b;
+ return false;
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypePropertyList.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypePropertyList.java
new file mode 100755
index 000000000..fa02a1b54
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypePropertyList.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2003-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.type;
+
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.cms.CMS;
+import org.librecms.contentsection.ContentSection;
+import org.librecms.contentsection.ContentType;
+import org.librecms.lifecycle.LifecycleDefinition;
+import com.arsdigita.globalization.GlobalizedMessage;
+import com.arsdigita.kernel.KernelConfig;
+import com.arsdigita.toolbox.ui.PropertyList;
+import java.util.Locale;
+import org.libreccm.workflow.WorkflowTemplate;
+import org.librecms.CmsConstants;
+
+/**
+ * This component displays basic attributes of a content type
+ * including:
+ *
+ * label, description, default lifecycle definition, default workflow
+ * template
+ *
+ * @author Jens Pelzetter
+ * @author Michael Pih
+ * @author Justin Ross
+ */
+class ContentTypePropertyList extends PropertyList {
+
+ private final ContentTypeRequestLocal m_type;
+
+ public ContentTypePropertyList(final ContentTypeRequestLocal type) {
+ m_type = type;
+ }
+
+ @Override
+ protected final java.util.List properties(final PageState state) {
+ final java.util.List props = super.properties(state);
+ final ContentType type = m_type.getContentType(state);
+ final ContentSection section =
+ CMS.getContext().getContentSection();
+
+ final KernelConfig kernelConfig = KernelConfig.getConfig();
+ final Locale defaultLocale = kernelConfig.getDefaultLocale();
+
+ props.add(new Property(gz("cms.ui.name"),
+ type.getLabel().getValue(defaultLocale)));
+ props.add(new Property(gz("cms.ui.description"),
+ type.getDescription().getValue(defaultLocale)));
+// props.add(new Property(gz("cms.ui.type.parent"),
+// type.getParent().orElse(null)));
+ props.add(new Property(gz("cms.ui.type.lifecycle"),
+ getLifecycle(section, type)));
+ props.add(new Property(gz("cms.ui.type.workflow"),
+ getWorkflow(section, type)));
+
+ return props;
+ }
+
+ private String getLifecycle(final ContentSection section,
+ final ContentType type) {
+ final KernelConfig kernelConfig = KernelConfig.getConfig();
+ final Locale defaultLocale = kernelConfig.getDefaultLocale();
+
+ final LifecycleDefinition cycle = type.getDefaultLifecycle();
+
+ if (cycle == null) {
+ return lz("cms.ui.type.lifecycle.none");
+ } else {
+ return cycle.getLabel().getValue(defaultLocale);
+ }
+ }
+
+ private String getWorkflow(final ContentSection section,
+ final ContentType type) {
+ final KernelConfig kernelConfig = KernelConfig.getConfig();
+ final Locale defaultLocale = kernelConfig.getDefaultLocale();
+
+ final WorkflowTemplate template = type.getDefaultWorkflow();
+
+ if (template == null) {
+ return lz("cms.ui.type.workflow.none");
+ } else {
+ return template.getName().getValue(defaultLocale);
+ }
+ }
+
+ private static GlobalizedMessage gz(final String key) {
+ return new GlobalizedMessage(key, CmsConstants.CMS_BUNDLE);
+ }
+
+ private static String lz(final String key) {
+ return (String) gz(key).localize();
+ }
+}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java
new file mode 100644
index 000000000..24d726a2f
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java
@@ -0,0 +1,288 @@
+package com.arsdigita.cms.ui.type;
+
+import com.arsdigita.bebop.Component;
+import com.arsdigita.bebop.ControlLink;
+import com.arsdigita.bebop.Label;
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.bebop.Table;
+import com.arsdigita.bebop.event.TableActionEvent;
+import com.arsdigita.bebop.event.TableActionListener;
+import com.arsdigita.bebop.table.TableCellRenderer;
+import com.arsdigita.bebop.table.TableColumn;
+import com.arsdigita.bebop.table.TableColumnModel;
+import com.arsdigita.bebop.table.TableModel;
+import com.arsdigita.bebop.table.TableModelBuilder;
+import com.arsdigita.cms.CMS;
+import org.librecms.contentsection.ContentType;
+import com.arsdigita.cms.dispatcher.Utilities;
+import com.arsdigita.cms.ui.ContentSectionRequestLocal;
+import com.arsdigita.globalization.GlobalizedMessage;
+import com.arsdigita.ui.admin.GlobalizationUtil;
+import org.libreccm.security.Party;
+import org.libreccm.security.Role;
+import com.arsdigita.util.LockableImpl;
+import java.awt.image.Kernel;
+import java.util.List;
+import org.libreccm.cdi.utils.CdiUtil;
+import org.libreccm.security.Permission;
+import org.libreccm.security.RoleRepository;
+import org.librecms.CmsConstants;
+import sun.security.util.SecurityConstants;
+
+/**
+ *
+ * ToDo, maybe not needed anymore...
+ *
+ * @author Jens Pelzetter
+ */
+public class TypePermissionsTable extends Table implements TableActionListener {
+
+ private final String TABLE_COL_ROLE = "table_col_role";
+ private final String TABLE_COL_CAN_USE = "table_col_can_use";
+ private final String TABLE_COL_ACTION = "table_col_action";
+ private final ContentTypeRequestLocal type;
+
+ public TypePermissionsTable(final ContentSectionRequestLocal section,
+ final ContentTypeRequestLocal type) {
+ super();
+
+ this.type = type;
+
+ setEmptyView(new Label(new GlobalizedMessage(
+ "cms.ui.type.permissions.none",
+ CmsConstants.CMS_BUNDLE)));
+
+ TableColumnModel columnModel = getColumnModel();
+
+ columnModel.add(new TableColumn(
+ 0,
+ new GlobalizedMessage("cms.ui.type.permissions.role",
+ CmsConstants.CMS_BUNDLE).localize(),
+ TABLE_COL_ROLE));
+
+ columnModel.add(new TableColumn(
+ 1,
+ new GlobalizedMessage("cms.ui.type.permissions_can_use",
+ CmsConstants.CMS_BUNDLE).localize(),
+ TABLE_COL_CAN_USE));
+
+ columnModel.add(new TableColumn(
+ 2,
+ new GlobalizedMessage("cms.ui.type.permission.action",
+ CmsConstants.CMS_BUNDLE).localize(),
+ TABLE_COL_ACTION));
+
+ setModelBuilder(new TypePermissionsTableModelBuilder());
+
+ columnModel.get(0).setCellRenderer(new RoleCellRenderer());
+ columnModel.get(1).setCellRenderer(new CanUseCellRenderer());
+ columnModel.get(2).setCellRenderer(new ActionCellRenderer());
+
+ addTableActionListener(this);
+ }
+
+ @Override
+ public void cellSelected(final TableActionEvent event) {
+ PageState state = event.getPageState();
+
+ final TableColumn column = getColumnModel().get(event.getColumn());
+
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final RoleRepository roleRepo = cdiUtil.findBean(RoleRepository.class);
+
+ if (TABLE_COL_ACTION.equals(column.getHeaderKey().toString())) {
+ final Role role = roleRepo.findById(Long.parseLong(
+ event.getRowKey().toString()));
+ ContentType contentType = getType().getContentType(state);
+// ToDo
+// ObjectPermissionCollection permissions
+// = PermissionService.
+// getDirectGrantedPermissions(contentType.getOID());
+//
+// if ((permissions.size() == 0)) {
+// role.grantPermission(contentType,
+// PrivilegeDescriptor.get(
+// com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM));
+// } else if (!role.checkPermission(contentType, PrivilegeDescriptor.
+// get(com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM))) {
+// role.grantPermission(contentType,
+// PrivilegeDescriptor.get(
+// com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM));
+// } else {
+// role.revokePermission(contentType,
+// PrivilegeDescriptor.get(
+// com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM));
+// }
+ }
+ }
+
+ @Override
+ public void headSelected(final TableActionEvent event) {
+ //Nothing to do
+ }
+
+ private class TypePermissionsTableModelBuilder
+ extends LockableImpl
+ implements TableModelBuilder {
+
+ public TypePermissionsTableModelBuilder() {
+ }
+
+ @Override
+ public TableModel makeModel(final Table table, final PageState state) {
+ table.getRowSelectionModel().clearSelection(state);
+ return new TypePermissionsTableModel(table, state);
+ }
+ }
+
+ private class TypePermissionsTableModel implements TableModel {
+
+ private Table table;
+ private List roles;
+ private ContentType contentType;
+ private List permissions;
+
+ public TypePermissionsTableModel(final Table table,
+ final PageState state) {
+ this.table = table;
+ contentType
+ = ((TypePermissionsTable) table).getType().getContentType(
+ state);
+
+ roles = CMS.getContext().getContentSection().getRoles();
+
+// permissions
+// = PermissionService.
+// getDirectGrantedPermissions(contentType.getOID());
+ }
+
+ @Override
+ public int getColumnCount() {
+ if (roles == null) {
+ return 0;
+ } else {
+ return (int) roles.size();
+ }
+ }
+
+ @Override
+ public boolean nextRow() {
+ return false;
+// if (roles == null) {
+// return false;
+// } else {
+// return roles.next();
+// }
+ }
+
+ @Override
+ public Object getElementAt(int columnIndex) {
+// switch (columnIndex) {
+// case 0:
+// return roles.getRole().getName();
+// case 1:
+// if (permissions.isEmpty()) {
+// return "cms.ui.type.permissions.can_use.yes";
+// } else {
+// if (roles.getRole().checkPermission(contentType,
+// PrivilegeDescriptor.
+// get(
+// com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM))) {
+// return "cms.ui.type.permissions.can_use.yes";
+// } else {
+// return "cms.ui.type.permissions.can_use.no";
+// }
+// }
+// case 2:
+// if (permissions.size() == 0) {
+// return "cms.ui.type.permissions.actions.restrict_to_this_role";
+// } else {
+// if (roles.getRole().checkPermission(contentType,
+// PrivilegeDescriptor.
+// get(
+// com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM))) {
+// return "cms.ui.type.permissions.actions.revoke";
+// } else {
+// return "cms.ui.type.permissions.can_use.grant";
+// }
+// }
+// default:
+// return null;
+// }
+ return null;
+ }
+
+ @Override
+ public Object getKeyAt(int columnIndex) {
+// return roles.getRole().getID();
+ return null;
+ }
+ }
+
+ private class RoleCellRenderer
+ extends LockableImpl
+ implements TableCellRenderer {
+
+ @Override
+ public Component getComponent(Table table,
+ PageState state,
+ Object value,
+ boolean isSelected,
+ Object key,
+ int row,
+ int column) {
+ return new Label(value.toString());
+ }
+ }
+
+ private class CanUseCellRenderer
+ extends LockableImpl
+ implements TableCellRenderer {
+
+ @Override
+ public Component getComponent(Table table,
+ PageState state,
+ Object value,
+ boolean isSelected,
+ Object key,
+ int row,
+ int column) {
+ return new Label(GlobalizationUtil.globalize(value.toString()));
+ }
+ }
+
+ private class ActionCellRenderer
+ extends LockableImpl
+ implements TableCellRenderer {
+
+ public Component getComponent(Table table,
+ PageState state,
+ Object value,
+ boolean isSelected,
+ Object key,
+ int row,
+ int column) {
+// com.arsdigita.cms.SecurityManager securityManager = Utilities.
+// getSecurityManager(state);
+// Party party = Kernel.getContext().getParty();
+// if (party == null) {
+// party = Kernel.getPublicUser();
+// }
+// if (securityManager.canAccess(party,
+// SecurityConstants.CONTENT_TYPE_ADMIN)) {
+// ControlLink link = new ControlLink((String) GlobalizationUtil.
+// globalize(
+// value.toString()).localize());
+//
+// return link;
+// } else {
+ return new Label(value.toString());
+// }
+
+ }
+ }
+
+ private ContentTypeRequestLocal getType() {
+ return type;
+ }
+}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java.off b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java.off
deleted file mode 100644
index 49c607734..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java.off
+++ /dev/null
@@ -1,270 +0,0 @@
-package com.arsdigita.cms.ui.type;
-
-import com.arsdigita.bebop.Column;
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.cms.CMS;
-import com.arsdigita.cms.ContentType;
-import com.arsdigita.cms.dispatcher.Utilities;
-import com.arsdigita.cms.ui.ContentSectionRequestLocal;
-import com.arsdigita.cms.util.GlobalizationUtil;
-import com.arsdigita.cms.util.SecurityConstants;
-import com.arsdigita.kernel.Kernel;
-import com.arsdigita.kernel.Party;
-import com.arsdigita.kernel.Role;
-import com.arsdigita.kernel.RoleCollection;
-import com.arsdigita.kernel.permissions.ObjectPermissionCollection;
-import com.arsdigita.kernel.permissions.PermissionDescriptor;
-import com.arsdigita.kernel.permissions.PermissionService;
-import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
-import com.arsdigita.util.LockableImpl;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-/**
- *
- * @author Jens Pelzetter
- * @version $Id$
- */
-public class TypePermissionsTable extends Table implements TableActionListener {
-
- private final String TABLE_COL_ROLE = "table_col_role";
- private final String TABLE_COL_CAN_USE = "table_col_can_use";
- private final String TABLE_COL_ACTION = "table_col_action";
- private final ContentTypeRequestLocal type;
-
- public TypePermissionsTable(final ContentSectionRequestLocal section,
- final ContentTypeRequestLocal type) {
- super();
-
- this.type = type;
-
- setEmptyView(new Label(GlobalizationUtil.globalize(
- "cms.ui.type.permissions.none")));
-
- TableColumnModel columnModel = getColumnModel();
-
- columnModel.add(new TableColumn(
- 0,
- GlobalizationUtil.globalize("cms.ui.type.permissions.role").
- localize(),
- TABLE_COL_ROLE));
-
- columnModel.add(new TableColumn(
- 1,
- GlobalizationUtil.globalize("cms.ui.type.permissions_can_use").
- localize(),
- TABLE_COL_CAN_USE));
-
- columnModel.add(new TableColumn(
- 2,
- GlobalizationUtil.globalize(
- "cms.ui.type.permission.action").localize(),
- TABLE_COL_ACTION));
-
- setModelBuilder(new TypePermissionsTableModelBuilder());
-
- columnModel.get(0).setCellRenderer(new RoleCellRenderer());
- columnModel.get(1).setCellRenderer(new CanUseCellRenderer());
- columnModel.get(2).setCellRenderer(new ActionCellRenderer());
-
- addTableActionListener(this);
- }
-
- public void cellSelected(final TableActionEvent event) {
- PageState state = event.getPageState();
-
- TableColumn column = getColumnModel().get(event.getColumn().intValue());
-
- if (TABLE_COL_ACTION.equals(column.getHeaderKey().toString())) {
- Role role = new Role(new BigDecimal(event.getRowKey().toString()));
- ContentType contentType = getType().getContentType(state);
- ObjectPermissionCollection permissions =
- PermissionService.
- getDirectGrantedPermissions(contentType.getOID());
-
- if ((permissions.size() == 0)) {
- role.grantPermission(contentType,
- PrivilegeDescriptor.get(
- com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM));
- } else if (!role.checkPermission(contentType, PrivilegeDescriptor.
- get(com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM))) {
- role.grantPermission(contentType,
- PrivilegeDescriptor.get(
- com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM));
- } else {
- role.revokePermission(contentType,
- PrivilegeDescriptor.get(
- com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM));
- }
- }
- }
-
- public void headSelected(final TableActionEvent event) {
- //Nothing to do
- }
-
- private class TypePermissionsTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- public TypePermissionsTableModelBuilder() {
- }
-
- public TableModel makeModel(Table table, PageState state) {
- table.getRowSelectionModel().clearSelection(state);
- return new TypePermissionsTableModel(table, state);
- }
- }
-
- private class TypePermissionsTableModel implements TableModel {
-
- private Table table;
- private RoleCollection roles;
- private ContentType contentType;
- private ObjectPermissionCollection permissions;
-
- public TypePermissionsTableModel(Table table, PageState state) {
- this.table = table;
- contentType =
- ((TypePermissionsTable) table).getType().getContentType(
- state);
-
- roles = CMS.getContext().getContentSection().getStaffGroup().
- getRoles();
-
- permissions =
- PermissionService.getDirectGrantedPermissions(contentType.getOID());
- }
-
- public int getColumnCount() {
- if (roles == null) {
- return 0;
- } else {
- return (int) roles.size();
- }
- }
-
- public boolean nextRow() {
- if (roles == null) {
- return false;
- } else {
- return roles.next();
- }
- }
-
- public Object getElementAt(int columnIndex) {
- switch (columnIndex) {
- case 0:
- return roles.getRole().getName();
- case 1:
- if (permissions.size() == 0) {
- return "cms.ui.type.permissions.can_use.yes";
- } else {
- if (roles.getRole().checkPermission(contentType,
- PrivilegeDescriptor.
- get(
- com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM))) {
- return "cms.ui.type.permissions.can_use.yes";
- } else {
- return "cms.ui.type.permissions.can_use.no";
- }
- }
- case 2:
- if (permissions.size() == 0) {
- return "cms.ui.type.permissions.actions.restrict_to_this_role";
- } else {
- if (roles.getRole().checkPermission(contentType,
- PrivilegeDescriptor.
- get(
- com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM))) {
- return "cms.ui.type.permissions.actions.revoke";
- } else {
- return "cms.ui.type.permissions.can_use.grant";
- }
- }
- default:
- return null;
- }
- }
-
- public Object getKeyAt(int columnIndex) {
- return roles.getRole().getID();
- }
- }
-
- private class RoleCellRenderer
- extends LockableImpl
- implements TableCellRenderer {
-
- public Component getComponent(Table table,
- PageState state,
- Object value,
- boolean isSelected,
- Object key,
- int row,
- int column) {
- return new Label(value.toString());
- }
- }
-
- private class CanUseCellRenderer
- extends LockableImpl
- implements TableCellRenderer {
-
- public Component getComponent(Table table,
- PageState state,
- Object value,
- boolean isSelected,
- Object key,
- int row,
- int column) {
- return new Label(GlobalizationUtil.globalize(value.toString()));
- }
- }
-
- private class ActionCellRenderer
- extends LockableImpl
- implements TableCellRenderer {
-
- public Component getComponent(Table table,
- PageState state,
- Object value,
- boolean isSelected,
- Object key,
- int row,
- int column) {
- com.arsdigita.cms.SecurityManager securityManager = Utilities.
- getSecurityManager(state);
- Party party = Kernel.getContext().getParty();
- if (party == null) {
- party = Kernel.getPublicUser();
- }
- if (securityManager.canAccess(party,
- SecurityConstants.CONTENT_TYPE_ADMIN)) {
- ControlLink link = new ControlLink((String)GlobalizationUtil.globalize(
- value.toString()).localize());
-
- return link;
- } else {
- return new Label(value.toString());
- }
-
-
- }
- }
-
- private ContentTypeRequestLocal getType() {
- return type;
- }
-}
diff --git a/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java b/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java
index 27655083c..aadb13862 100644
--- a/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java
+++ b/ccm-core/src/main/java/org/libreccm/security/PermissionManager.java
@@ -31,8 +31,6 @@ import org.libreccm.core.CoreConstants;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Arrays;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;