Kleiner Fortschritt bei der Tabelle zum Vergeben von Rechten für Content-Typen

git-svn-id: https://svn.libreccm.org/ccm/trunk@1029 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-07-22 18:24:22 +00:00
parent b9c516cdc0
commit a5700935e1
3 changed files with 107 additions and 31 deletions

View File

@ -92,14 +92,14 @@ final class ContentTypeItemPane extends BaseItemPane {
templateForm.add(templateFormSection);
add(templateForm);
final ActionLink permissionAddLink = new ActionLink(new Label(gz(
/*final ActionLink permissionAddLink = new ActionLink(new Label(gz(
"cms.ui.type.permission.add")));
final TypePermissions permissionsSection = new TypePermissions(m_model);
final Form permissionsForm = new CancellableForm("AddPermission",
permissionsSection.
getSaveCancelSection().getCancelButton());
permissionsForm.add(permissionsSection);
add(permissionsForm);
add(permissionsForm);*/
final AddTextElement textForm = new AddTextElement(m_model);
add(textForm);
@ -129,10 +129,11 @@ final class ContentTypeItemPane extends BaseItemPane {
m_detailPane.add(new TypeSecurityContainer(new ElementSection()));
m_detailPane.add(new TemplateSection(templateAddLink));
m_detailPane.add(new PermissionsSection(permissionAddLink));
//m_detailPane.add(new PermissionsSection(permissionAddLink));
m_detailPane.add(new PermissionsSection());
connect(templateAddLink, templateForm);
connect(permissionAddLink, permissionsForm);
// connect(permissionAddLink, permissionsForm);
final SingleSelect elementSelect =
m_elementAddForm.getElementTypeSelect();
@ -237,14 +238,14 @@ final class ContentTypeItemPane extends BaseItemPane {
private class PermissionsSection extends Section {
public PermissionsSection(final ActionLink permissionsAddLink) {
public PermissionsSection() {
setHeading(new Label(gz("cms.ui.type.permissions")));
final ActionGroup group = new ActionGroup();
setBody(group);
group.setSubject(m_permissions);
group.addAction(new TypeSecurityContainer(permissionsAddLink));
//group.addAction(new TypeSecurityContainer(permissionsAddLink));
}
@Override

View File

@ -36,8 +36,7 @@ public class TypePermissions extends BasicItemForm {
@Override
public void addWidgets() {
//super.addWidgets();
add(new Label(GlobalizationUtil.globalize(
"cms.ui.type.permissions.select_role")));
ParameterModel roleModel = new StringParameter(ROLE);

View File

@ -9,11 +9,17 @@ 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.ui.ContentSectionRequestLocal;
import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.Party;
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;
/**
@ -23,8 +29,9 @@ import com.arsdigita.util.LockableImpl;
*/
public class TypePermissionsTable extends Table {
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
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,
@ -37,19 +44,30 @@ public class TypePermissionsTable extends Table {
"cms.ui.type.permissions.none")));
TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(0, GlobalizationUtil.globalize(
"cms.ui.type.permission"), TABLE_COL_EDIT));
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.remove").localize(),
TABLE_COL_DEL));
"cms.ui.type.permission.action").localize(),
TABLE_COL_ACTION));
setModelBuilder(new TypePermissionsTableModelBuilder());
columnModel.get(0).setCellRenderer(new EditCellRenderer());
columnModel.get(1).setCellRenderer(new DeleteCellRenderer());
columnModel.get(0).setCellRenderer(new RoleCellRenderer());
columnModel.get(1).setCellRenderer(new CanUseCellRenderer());
columnModel.get(2).setCellRenderer(new ActionCellRenderer());
}
private class TypePermissionsTableModelBuilder
@ -68,40 +86,83 @@ public class TypePermissionsTable extends Table {
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 type =
((TypePermissionsTable) table).getType().getContentType(
contentType =
((TypePermissionsTable) table).getType().getContentType(
state);
permissions = PermissionService.getDirectGrantedPermissions(type.
getOID());
roles = CMS.getContext().getContentSection().getStaffGroup().
getRoles();
permissions =
PermissionService.getDirectGrantedPermissions(contentType.getOID());
}
public int getColumnCount() {
if (permissions == null) {
if (roles == null) {
return 0;
} else {
return (int) permissions.size();
return (int) roles.size();
}
}
public boolean nextRow() {
if (permissions == null) {
if (roles == null) {
return false;
} else {
return permissions.next();
return roles.next();
}
}
public Object getElementAt(int columnIndex) {
switch(columnIndex) {
switch (columnIndex) {
case 0:
return permissions.toString();
return roles.getRole().getName();
case 1:
return GlobalizationUtil.globalize("cms.ui.type.permission.remove");
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.
get(
com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM),
contentType,
party);
if (PermissionService.checkPermission(create)) {
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 {
Party party = Kernel.getContext().getParty();
if (party == null) {
party = Kernel.getPublicUser();
}
PermissionDescriptor create =
new PermissionDescriptor(PrivilegeDescriptor.
get(
com.arsdigita.cms.SecurityManager.CMS_NEW_ITEM),
contentType,
party);
if (PermissionService.checkPermission(create)) {
return "cms.ui.type.permissions.actions.revoke";
} else {
return "cms.ui.type.permissions.can_use.grant";
}
}
default:
return null;
}
@ -112,7 +173,7 @@ public class TypePermissionsTable extends Table {
}
}
private class EditCellRenderer
private class RoleCellRenderer
extends LockableImpl
implements TableCellRenderer {
@ -123,11 +184,11 @@ public class TypePermissionsTable extends Table {
Object key,
int row,
int column) {
return new Label("");
return new Label(value.toString());
}
}
private class DeleteCellRenderer
private class CanUseCellRenderer
extends LockableImpl
implements TableCellRenderer {
@ -138,7 +199,22 @@ public class TypePermissionsTable extends Table {
Object key,
int row,
int column) {
return new Label("");
return new Label(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) {
return new Label(value.toString());
}
}