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-94f89814c4dfmaster
parent
b9c516cdc0
commit
a5700935e1
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue