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);
|
templateForm.add(templateFormSection);
|
||||||
add(templateForm);
|
add(templateForm);
|
||||||
|
|
||||||
final ActionLink permissionAddLink = new ActionLink(new Label(gz(
|
/*final ActionLink permissionAddLink = new ActionLink(new Label(gz(
|
||||||
"cms.ui.type.permission.add")));
|
"cms.ui.type.permission.add")));
|
||||||
final TypePermissions permissionsSection = new TypePermissions(m_model);
|
final TypePermissions permissionsSection = new TypePermissions(m_model);
|
||||||
final Form permissionsForm = new CancellableForm("AddPermission",
|
final Form permissionsForm = new CancellableForm("AddPermission",
|
||||||
permissionsSection.
|
permissionsSection.
|
||||||
getSaveCancelSection().getCancelButton());
|
getSaveCancelSection().getCancelButton());
|
||||||
permissionsForm.add(permissionsSection);
|
permissionsForm.add(permissionsSection);
|
||||||
add(permissionsForm);
|
add(permissionsForm);*/
|
||||||
|
|
||||||
final AddTextElement textForm = new AddTextElement(m_model);
|
final AddTextElement textForm = new AddTextElement(m_model);
|
||||||
add(textForm);
|
add(textForm);
|
||||||
|
|
@ -129,10 +129,11 @@ final class ContentTypeItemPane extends BaseItemPane {
|
||||||
m_detailPane.add(new TypeSecurityContainer(new ElementSection()));
|
m_detailPane.add(new TypeSecurityContainer(new ElementSection()));
|
||||||
m_detailPane.add(new TemplateSection(templateAddLink));
|
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(templateAddLink, templateForm);
|
||||||
connect(permissionAddLink, permissionsForm);
|
// connect(permissionAddLink, permissionsForm);
|
||||||
|
|
||||||
final SingleSelect elementSelect =
|
final SingleSelect elementSelect =
|
||||||
m_elementAddForm.getElementTypeSelect();
|
m_elementAddForm.getElementTypeSelect();
|
||||||
|
|
@ -237,14 +238,14 @@ final class ContentTypeItemPane extends BaseItemPane {
|
||||||
|
|
||||||
private class PermissionsSection extends Section {
|
private class PermissionsSection extends Section {
|
||||||
|
|
||||||
public PermissionsSection(final ActionLink permissionsAddLink) {
|
public PermissionsSection() {
|
||||||
setHeading(new Label(gz("cms.ui.type.permissions")));
|
setHeading(new Label(gz("cms.ui.type.permissions")));
|
||||||
|
|
||||||
final ActionGroup group = new ActionGroup();
|
final ActionGroup group = new ActionGroup();
|
||||||
setBody(group);
|
setBody(group);
|
||||||
|
|
||||||
group.setSubject(m_permissions);
|
group.setSubject(m_permissions);
|
||||||
group.addAction(new TypeSecurityContainer(permissionsAddLink));
|
//group.addAction(new TypeSecurityContainer(permissionsAddLink));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@ public class TypePermissions extends BasicItemForm {
|
||||||
public void addWidgets() {
|
public void addWidgets() {
|
||||||
//super.addWidgets();
|
//super.addWidgets();
|
||||||
|
|
||||||
|
|
||||||
add(new Label(GlobalizationUtil.globalize(
|
add(new Label(GlobalizationUtil.globalize(
|
||||||
"cms.ui.type.permissions.select_role")));
|
"cms.ui.type.permissions.select_role")));
|
||||||
ParameterModel roleModel = new StringParameter(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.TableColumnModel;
|
||||||
import com.arsdigita.bebop.table.TableModel;
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
import com.arsdigita.bebop.table.TableModelBuilder;
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
import com.arsdigita.cms.ContentType;
|
import com.arsdigita.cms.ContentType;
|
||||||
import com.arsdigita.cms.ui.ContentSectionRequestLocal;
|
import com.arsdigita.cms.ui.ContentSectionRequestLocal;
|
||||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
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.ObjectPermissionCollection;
|
||||||
|
import com.arsdigita.kernel.permissions.PermissionDescriptor;
|
||||||
import com.arsdigita.kernel.permissions.PermissionService;
|
import com.arsdigita.kernel.permissions.PermissionService;
|
||||||
|
import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
|
||||||
import com.arsdigita.util.LockableImpl;
|
import com.arsdigita.util.LockableImpl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -23,8 +29,9 @@ import com.arsdigita.util.LockableImpl;
|
||||||
*/
|
*/
|
||||||
public class TypePermissionsTable extends Table {
|
public class TypePermissionsTable extends Table {
|
||||||
|
|
||||||
private final String TABLE_COL_EDIT = "table_col_edit";
|
private final String TABLE_COL_ROLE = "table_col_role";
|
||||||
private final String TABLE_COL_DEL = "table_col_del";
|
private final String TABLE_COL_CAN_USE = "table_col_can_use";
|
||||||
|
private final String TABLE_COL_ACTION = "table_col_action";
|
||||||
private final ContentTypeRequestLocal type;
|
private final ContentTypeRequestLocal type;
|
||||||
|
|
||||||
public TypePermissionsTable(final ContentSectionRequestLocal section,
|
public TypePermissionsTable(final ContentSectionRequestLocal section,
|
||||||
|
|
@ -37,19 +44,30 @@ public class TypePermissionsTable extends Table {
|
||||||
"cms.ui.type.permissions.none")));
|
"cms.ui.type.permissions.none")));
|
||||||
|
|
||||||
TableColumnModel columnModel = getColumnModel();
|
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(
|
columnModel.add(new TableColumn(
|
||||||
1,
|
1,
|
||||||
|
GlobalizationUtil.globalize("cms.ui.type.permissions_can_use").
|
||||||
|
localize(),
|
||||||
|
TABLE_COL_CAN_USE));
|
||||||
|
|
||||||
|
columnModel.add(new TableColumn(
|
||||||
|
2,
|
||||||
GlobalizationUtil.globalize(
|
GlobalizationUtil.globalize(
|
||||||
"cms.ui.type.remove").localize(),
|
"cms.ui.type.permission.action").localize(),
|
||||||
TABLE_COL_DEL));
|
TABLE_COL_ACTION));
|
||||||
|
|
||||||
setModelBuilder(new TypePermissionsTableModelBuilder());
|
setModelBuilder(new TypePermissionsTableModelBuilder());
|
||||||
|
|
||||||
columnModel.get(0).setCellRenderer(new EditCellRenderer());
|
columnModel.get(0).setCellRenderer(new RoleCellRenderer());
|
||||||
columnModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
columnModel.get(1).setCellRenderer(new CanUseCellRenderer());
|
||||||
|
columnModel.get(2).setCellRenderer(new ActionCellRenderer());
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TypePermissionsTableModelBuilder
|
private class TypePermissionsTableModelBuilder
|
||||||
|
|
@ -68,40 +86,83 @@ public class TypePermissionsTable extends Table {
|
||||||
private class TypePermissionsTableModel implements TableModel {
|
private class TypePermissionsTableModel implements TableModel {
|
||||||
|
|
||||||
private Table table;
|
private Table table;
|
||||||
|
private RoleCollection roles;
|
||||||
|
private ContentType contentType;
|
||||||
private ObjectPermissionCollection permissions;
|
private ObjectPermissionCollection permissions;
|
||||||
|
|
||||||
public TypePermissionsTableModel(Table table, PageState state) {
|
public TypePermissionsTableModel(Table table, PageState state) {
|
||||||
this.table = table;
|
this.table = table;
|
||||||
ContentType type =
|
contentType =
|
||||||
((TypePermissionsTable) table).getType().getContentType(
|
((TypePermissionsTable) table).getType().getContentType(
|
||||||
state);
|
state);
|
||||||
|
|
||||||
permissions = PermissionService.getDirectGrantedPermissions(type.
|
roles = CMS.getContext().getContentSection().getStaffGroup().
|
||||||
getOID());
|
getRoles();
|
||||||
|
|
||||||
|
permissions =
|
||||||
|
PermissionService.getDirectGrantedPermissions(contentType.getOID());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getColumnCount() {
|
public int getColumnCount() {
|
||||||
if (permissions == null) {
|
if (roles == null) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return (int) permissions.size();
|
return (int) roles.size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean nextRow() {
|
public boolean nextRow() {
|
||||||
if (permissions == null) {
|
if (roles == null) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return permissions.next();
|
return roles.next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getElementAt(int columnIndex) {
|
public Object getElementAt(int columnIndex) {
|
||||||
switch(columnIndex) {
|
switch (columnIndex) {
|
||||||
case 0:
|
case 0:
|
||||||
return permissions.toString();
|
return roles.getRole().getName();
|
||||||
case 1:
|
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:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
@ -112,7 +173,7 @@ public class TypePermissionsTable extends Table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class EditCellRenderer
|
private class RoleCellRenderer
|
||||||
extends LockableImpl
|
extends LockableImpl
|
||||||
implements TableCellRenderer {
|
implements TableCellRenderer {
|
||||||
|
|
||||||
|
|
@ -123,11 +184,11 @@ public class TypePermissionsTable extends Table {
|
||||||
Object key,
|
Object key,
|
||||||
int row,
|
int row,
|
||||||
int column) {
|
int column) {
|
||||||
return new Label("");
|
return new Label(value.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class DeleteCellRenderer
|
private class CanUseCellRenderer
|
||||||
extends LockableImpl
|
extends LockableImpl
|
||||||
implements TableCellRenderer {
|
implements TableCellRenderer {
|
||||||
|
|
||||||
|
|
@ -138,7 +199,22 @@ public class TypePermissionsTable extends Table {
|
||||||
Object key,
|
Object key,
|
||||||
int row,
|
int row,
|
||||||
int column) {
|
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