没有这样的开箱即用功能。您将需要挂钩或分机插件来更改字段的生成。
这些字段在JournalConverter
中读取,您可以使用自己的实现覆盖该字段,并检查getDDMFields()
中的权限。但那意味着,当文章被保存时,那些不可见的字段将被丢弃 - 我想这不是你想要的。
所以,你将不得不覆盖html/portlet/journal/article/content.jsp
在文章内容转换为字段:
Fields ddmFields = null;
if ((article != null) && Validator.isNotNull(article.getStructureId())
&& Validator.isNotNull(content)) {
ddmFields = JournalConverterUtil.getDDMFields(ddmStructure, content);
}
现在,您可以添加权限检查直接算账:
Fields ddmFields = null;
if ((article != null) && Validator.isNotNull(article.getStructureId())
&& Validator.isNotNull(content)) {
ddmFields = JournalConverterUtil.getDDMFields(ddmStructure, content);
for (Field field : ddmFields) {
if (field.getName().startsWith("restrict-")) {
String role = field.getName().replaceAll("restrict-(.+)(-.*)?", "$1");
if (!request.isUserInRole(role)) {
ddmFields.remove(field.getName());
}
}
}
}
我使用领域名称,便于配置字段限制。如果某个字段的名称为restrict-
+角色名称+ -
+某些可选后缀,则会检查当前用户是否具有给定角色。您可以使用其他来源进行此配置,但我想你明白了。
感谢您分享您的想法!我尝试了相同的功能,并且能够从ddmFields列表中删除该字段,但仍然获取了Web内容用户界面中的所有字段(即使是已删除的字段)。它的奇怪,但我仍然试图了解这一点。你能想到这种行为的原因吗? – anjhawar