Tabelle zum Bearbeiten der Berechtigungen für Content-Typen
fertiggestellt. git-svn-id: https://svn.libreccm.org/ccm/trunk@1030 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
a5700935e1
commit
9c75cc56f4
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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=
|
||||
|
|
|
|||
|
|
@ -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=
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue