Tabelle zum Bearbeiten der Berechtigungen für Content-Typen

fertiggestellt.


git-svn-id: https://svn.libreccm.org/ccm/trunk@1030 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-07-23 13:02:25 +00:00
parent a5700935e1
commit 9c75cc56f4
6 changed files with 110 additions and 84 deletions

View File

@ -1067,3 +1067,12 @@ cms.ui.unknownRole=Unknown role
cms.ui.unknownStatus=Unknown status
cms.contenttypes.ui.genericorgaunit.persons.status=Status
cms.ui.edit_assoc=Edit association
cms.ui.type.permissions=Permissions (Create new items of this type)
cms.ui.type.permissions.role=Role
cms.ui.type.permissions_can_use=Use this type
cms.ui.type.permission.action=Action
cms.ui.type.permissions.can_use.yes=Yes
cms.ui.type.permissions.actions.restrict_to_this_role=Restrict to this role
cms.ui.type.permissions.can_use.grant=Grant permissions to this role
cms.ui.type.permissions.actions.revoke=Revoke permission
cms.ui.type.permissions.can_use.no=No

View File

@ -1058,3 +1058,12 @@ cms.ui.unknownRole=Unbekannte Rolle
cms.ui.unknownStatus=Unbekannter status
cms.contenttypes.ui.genericorgaunit.persons.status=Status
cms.ui.edit_assoc=Verkn\u00fcpfung bearbeiten
cms.ui.type.permissions=Berechtigungen (Anlegen eines neues Items dieses Typs)
cms.ui.type.permissions.role=Rolle
cms.ui.type.permissions_can_use=Darf diesen Typ nutzen
cms.ui.type.permission.action=Aktion
cms.ui.type.permissions.can_use.yes=Ja
cms.ui.type.permissions.actions.restrict_to_this_role=Auf diese Rolle beschr\u00e4nken
cms.ui.type.permissions.can_use.grant=Rolle berechtigen
cms.ui.type.permissions.actions.revoke=Berechtigung widerrufen
cms.ui.type.permissions.can_use.no=Nein

View File

@ -6,3 +6,12 @@ cms.ui.unknownStatus=Unknown status
cms.contenttypes.ui.genericorgaunit.persons.status=Status
cms.contenttypes.shared.basic_properties.title=
cms.ui.edit_assoc=
cms.ui.type.permissions=
cms.ui.type.permissions.role=
cms.ui.type.permissions_can_use=
cms.ui.type.permission.action=
cms.ui.type.permissions.can_use.yes=
cms.ui.type.permissions.actions.restrict_to_this_role=
cms.ui.type.permissions.can_use.grant=
cms.ui.type.permissions.actions.revoke=
cms.ui.type.permissions.can_use.no=

View File

@ -537,3 +537,12 @@ cms.contenttypes.ui.address.email.desc=Means of contacting someone at this addre
cms.contenttypes.ui.address.uri.desc=A URL to find more information about this Address (TRANSLATE THIS cms.contenttypes.ui.address.uri.desc)
cms.contenttypes.shared.basic_properties.title=
cms.ui.edit_assoc=
cms.ui.type.permissions=
cms.ui.type.permissions.role=
cms.ui.type.permissions_can_use=
cms.ui.type.permission.action=
cms.ui.type.permissions.can_use.yes=
cms.ui.type.permissions.actions.restrict_to_this_role=
cms.ui.type.permissions.can_use.grant=
cms.ui.type.permissions.actions.revoke=
cms.ui.type.permissions.can_use.no=

View File

@ -1,56 +0,0 @@
package com.arsdigita.cms.ui.type;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.kernel.Group;
import com.arsdigita.kernel.RoleCollection;
import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class TypePermissions extends BasicItemForm {
private static final String ROLE = "role";
private final ACSObjectSelectionModel typeModel;
private SingleSelect roleSelect;
public TypePermissions(final ACSObjectSelectionModel typeModel) {
super("typePermissions", null);
this.typeModel = typeModel;
}
@Override
public void addWidgets() {
//super.addWidgets();
add(new Label(GlobalizationUtil.globalize(
"cms.ui.type.permissions.select_role")));
ParameterModel roleModel = new StringParameter(ROLE);
roleSelect = new SingleSelect(roleModel);
roleSelect.addValidationListener(new NotNullValidationListener());
add(roleSelect);
}
@Override
public void init(FormSectionEvent e) throws FormProcessException {
}
@Override
public void process(FormSectionEvent e) throws FormProcessException {
}
}

View File

@ -1,9 +1,13 @@
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;
@ -11,23 +15,28 @@ 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 {
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";
@ -68,6 +77,41 @@ public class TypePermissionsTable extends Table {
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
@ -126,50 +170,36 @@ public class TypePermissionsTable extends Table {
case 1:
if (permissions.size() == 0) {
return "cms.ui.type.permissions.can_use.yes";
} else {
Party party = Kernel.getContext().getParty();
if (party == null) {
party = Kernel.getPublicUser();
}
PermissionDescriptor create =
new PermissionDescriptor(PrivilegeDescriptor.
} else {
if (roles.getRole().checkPermission(contentType,
PrivilegeDescriptor.
get(
com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM),
contentType,
party);
if (PermissionService.checkPermission(create)) {
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) {
if (permissions.size() == 0) {
return "cms.ui.type.permissions.actions.restrict_to_this_role";
} else {
Party party = Kernel.getContext().getParty();
if (party == null) {
party = Kernel.getPublicUser();
}
PermissionDescriptor create =
new PermissionDescriptor(PrivilegeDescriptor.
if (roles.getRole().checkPermission(contentType,
PrivilegeDescriptor.
get(
com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM),
contentType,
party);
if (PermissionService.checkPermission(create)) {
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 columnIndex;
return roles.getRole().getID();
}
}
@ -199,7 +229,7 @@ public class TypePermissionsTable extends Table {
Object key,
int row,
int column) {
return new Label(value.toString());
return new Label(GlobalizationUtil.globalize(value.toString()));
}
}
@ -214,7 +244,23 @@ public class TypePermissionsTable extends Table {
Object key,
int row,
int column) {
return new Label(value.toString());
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());
}
}
}