我的问题或多或少在标题中,我在我的数据模型中添加了一种新的数据类型。
<type name="moi:montype">
<title>titre type</title>
<parent>cm:content</parent>
<mandatory-aspects>
<aspect>moi:monaspect</aspect>
</mandatory-aspects>
</type>
这个使用了一个新方面,我在其中添加了一个新字段
<aspect name="moi:monaspect">
<title>titre aspect</title>
<properties>
<property name="moi:monchamp">
<type>d:text</type>
<mandatory>false</mandatory>
</property>
...
</properties>
</aspect>
然后我通过编辑文件share-config-custom.xml在分享表单中显示这个新字段。
<config evaluator="node-type" condition="moi:montype">
<forms>
<form>
<field-visibility>
<show id="moi:monchamp"/>
...
</field-visibility>
<appearance>
<field id="moi:monchamp" label="Champ texte" />
...
</appearance>
</form>
</forms>
</config>
直到那时,我可以测试我的更改并且新字段显示良好。 但我想更进一步,例如根据登录用户的组显示字段。 如果登录用户是“特权组”的一部分,则显示该字段,否则不显示该字段,或仅显示该模式。
你认为我们能做到吗?如何 ? 我查看了文档,但找不到我的快乐。 我不是要求完整的解决方案,而是要求提示。
感谢您的帮助。
答案 0 :(得分:1)
每个字段都有一个组件渲染器。这些是使用FreeMarker实现的。大多数情况下,就像你的情况一样,你依赖于默认的组件渲染器。除了Matjaz提到的选项之外,另一个选项是将字段指向自定义渲染器。渲染器可以检查用户的组成员身份以及该字段所需的组(例如,可以作为参数传递),然后决定是否显示自己。
答案 1 :(得分:0)
有几种方法可以做到这一点。
最简单的方法是制作一个webscript,根据当前登录用户是否在目标组中,为表单字段返回html。然后添加一个表单控件,它只是javascript对webscript进行ajax调用,并将结果附加到你的表单控件(ftl)中指定的容器div。
您可以使用的第二种方法是扩展“org.alfresco.repo.forms.processor.AbstractFilter”并在Java中实现该功能。如果当前登录用户不在目标组中,则可以在生成并删除表单字段后实现。
希望这有点帮助......:)
答案 2 :(得分:0)
没有简单的方法可以做到这一点,因为alfresco不允许您设置节点属性的权限。
每个字段都有控件模板,您可以定义自己的模板。在模板中,您将根据用户类型定义如何呈现此属性。
<config evaluator="node-type" condition="cm:content">
<forms>
<form>
<appearance>
<field id="cm:title">
<control template="/org/alfresco/components/form/controls/yourOwnFtl.ftl" />
</field>
</appearance>
</form>
</forms>
</config>
答案 3 :(得分:0)
另一种方法是编写自己的共享配置表单评估程序(如node-type ...)
这可以检查节点类型和用户权限角色/组
让您为每个设置(每个用户组/角色)编写一个配置
...
NB!这将是一个适用于表单,因此纯粹是一个cosmetical设置,露天界面和CIFS等将不支持此设置。