我想为添加到户外附件包项目中的每个文件添加一个文本字段,以编写有关每个文件的注释,这可能吗?
我已经实现了一些可以在您的用例中重用的东西。
您可以使用多个值定义一个属性,该值将包含与每个附件关联的注释列表。
有一个简单的技巧可以发布具有多个值的属性:在属性名称上添加“ []”。例如:
<input id="template_x002e_edit-metadata_x002e_edit-metadata_x0023_default_prop_someco_notes_0"
name="prop_someco_notes[]"
tabindex="0"
type="text"
value="Meeting minutes"
title="Notes"
noderef="workflow://...."
>
<input id="template_x002e_edit-metadata_x002e_edit-metadata_x0023_default_prop_someco_notes_1"
name="prop_someco_notes[]"
tabindex="1"
type="text"
value="Meeting minutes"
title="Notes"
noderef="workflow://...."
>
如您所见,输入名称以[]结尾。两个输入文本字段具有相同的名称。
Alfresco表单引擎会将这两个输入视为具有多个值的属性的值:“ someco:notes”。
更大的问题是,您需要使用一些智能javascript和免费标记模板来生成此html。
您可以编写一个自定义的免费标记模板来呈现初始html:如果用户打开一个已经附加了文档的任务,则需要使用自定义控件生成输入列表(当然,您可以从文本字段开始。 ftl)。
生成初始列表并不容易,因为不幸的是Alfresco将值列表作为单个逗号分隔的值返回。
您可以自定义将模型插入免费标记模板“ org.alfresco.web.scripts.forms.FormUIGet”中的网络脚本,以传递数组而不是csv。
一种更快,更脏的解决方案是拆分csv值。在share-config-custom.xml中,您可以指定显示的textfield.ftl用作分隔符而不是逗号。
当用户从包中添加/删除元素时,您可以拦截更新并添加/删除对应的注释。请注意,我已将字段“ noderef”添加到每个输入中,因此可以知道注释与包中节点之间的关系。
更新:对于关联(例如,用于在工作流任务中定义程序包),Share使用一个名为“对象查找器”(或“对象选择器”)的JavaScript库。该库会触发一个名为“ formValueChanged”的事件,您可以拦截该事件:
YAHOO.Bubbling.fire("formValueChanged",
{
eventGroup: this,
addedItems: addedItems,
removedItems: removedItems,
selectedItems: selectedItems,
selectedItemsMetaData: Alfresco.util.deepCopy(this.selectedItems)
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句