diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java index 590ec6925..435a2e517 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/BaseRoleItemPane.java @@ -18,19 +18,14 @@ */ package com.arsdigita.cms.ui.role; -import com.arsdigita.bebop.ActionLink; -import com.arsdigita.bebop.Component; -import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SimpleContainer; -import com.arsdigita.bebop.SingleSelectionModel; -import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.*; import com.arsdigita.bebop.event.TableActionAdapter; import com.arsdigita.bebop.event.TableActionEvent; import com.arsdigita.bebop.table.DefaultTableCellRenderer; import com.arsdigita.cms.ui.BaseItemPane; import com.arsdigita.cms.ui.PartySearchForm; import com.arsdigita.cms.ui.VisibilityComponent; +import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.kernel.KernelConfig; import com.arsdigita.toolbox.ui.ActionGroup; import com.arsdigita.toolbox.ui.PropertyList; @@ -180,12 +175,17 @@ class BaseRoleItemPane extends BaseItemPane { private class Listener extends TableActionAdapter { @Override - public final void cellSelected(final TableActionEvent e) { + public final void cellSelected(final TableActionEvent e) throws FormProcessException { final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final PageState state = e.getPageState(); final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class); - if (e.getColumn() == 2 && permissionChecker.isPermitted(CmsConstants.PRIVILEGE_ADMINISTER_ROLES)) { + if (!permissionChecker.isPermitted(CmsConstants.PRIVILEGE_ADMINISTER_ROLES)) { + throw new FormProcessException( + new GlobalizedMessage("cms.ui.role.insufficient_privileges", CmsConstants.CMS_BUNDLE)); + } + + if (e.getColumn() == 2) { final Role role = m_role.getRole(state); long itemId = Long.parseLong(e.getRowKey().toString()); diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java index efd25f693..5a0a31641 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/role/MemberTableModelBuilder.java @@ -25,7 +25,6 @@ import com.arsdigita.bebop.table.TableModel; import com.arsdigita.ui.admin.GlobalizationUtil; import org.apache.log4j.Logger; import org.libreccm.cdi.utils.CdiUtil; -import org.libreccm.core.EmailAddress; import org.libreccm.security.Party; import org.libreccm.security.PartyRepository; import org.libreccm.security.Role; diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index eb7b0211d..30f792792 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -1,3 +1,4 @@ contentsection.ui.admin.app_note=The properties for a Content Section are managed a special application: contentsection.ui.admin.link_app=Go to Content Section application +cms.ui.role.insufficient_privileges=The user is not permitted to administrate roles. \ No newline at end of file diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties index 134c86c15..a39f49e80 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -1,3 +1,4 @@ contentsection.ui.admin.app_note=Die Verwaltung von Content Sections erfolgt \u00fcber eine eigene Application: contentsection.ui.admin.link_app=Zur Content Section Applikation +cms.ui.role.insufficient_privileges=Der Benutzer ist nicht privilegiert Rollen zu administrieren. \ No newline at end of file diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/Table.java b/ccm-core/src/main/java/com/arsdigita/bebop/Table.java index 8e863c3b3..d2fde80bf 100644 --- a/ccm-core/src/main/java/com/arsdigita/bebop/Table.java +++ b/ccm-core/src/main/java/com/arsdigita/bebop/Table.java @@ -225,7 +225,7 @@ public class Table extends SimpleComponent { * @param column the integer index of the selected column */ protected void fireCellSelected(PageState state, - Object rowKey, Integer column) { + Object rowKey, Integer column) throws FormProcessException { Iterator i = m_listeners.getListenerIterator(TableActionListener.class); TableActionEvent e = null; diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionAdapter.java b/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionAdapter.java index d9225ffef..4f0a708de 100755 --- a/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionAdapter.java +++ b/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionAdapter.java @@ -18,6 +18,8 @@ */ package com.arsdigita.bebop.event; +import com.arsdigita.bebop.FormProcessException; + /** * An implentation of the TableActionListener interface meant to save the * developer from having to override both the {@link @@ -36,9 +38,7 @@ public class TableActionAdapter implements TableActionListener { * * @param e the event fired for the table. */ - public void cellSelected(TableActionEvent e) { - return; - } + public void cellSelected(TableActionEvent e) throws FormProcessException {} /** * A no-op implementation of {@link diff --git a/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionListener.java b/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionListener.java index 2e6cbd4a4..36ca19ebc 100755 --- a/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionListener.java +++ b/ccm-core/src/main/java/com/arsdigita/bebop/event/TableActionListener.java @@ -18,6 +18,8 @@ */ package com.arsdigita.bebop.event; +import com.arsdigita.bebop.FormProcessException; + import java.util.EventListener; /** @@ -39,7 +41,7 @@ public interface TableActionListener extends EventListener { * * @param e the event fired for the table. */ - void cellSelected(TableActionEvent e); + void cellSelected(TableActionEvent e) throws FormProcessException; /** * An event handler for actions on a particular column heading or