【发布时间】:2016-01-18 14:00:13
【问题描述】:
在我的工作流模型中,我与 cm:person 类型有关联,在共享配置中,我使用 authority.ftl 模板来显示它,我如何限制可用用户从一个组的成员中选择?
【问题讨论】:
在我的工作流模型中,我与 cm:person 类型有关联,在共享配置中,我使用 authority.ftl 模板来显示它,我如何限制可用用户从一个组的成员中选择?
【问题讨论】:
为了实现这一点,我需要做一些更改:
您应该使用新的控制参数将参数传递给您的共享模块配置文件中的 authority.ftl:
<config evaluator="node-type" condition="my:customtype">
<forms>
<form>
<appearance>
<field id="my:personproperty">
<control template="/org/alfresco/components/form/controls/authority.ftl">
<control-param name="filterString">mygroupname</control-param>
</control>
在 alfresco\web-extension\site-webscripts\org\alfresco\components\form\controls\authority.ftl 中,将此参数传递给 js 选择器:
picker.setOptions( { itemType: "${field.endpointType}", <#if field.control.params.filterString??> filterString: "${field.control.params.filterString}", </#if> multipleSelectMode: ${field.endpointMany?string}, itemFamily: "authority" });
argsFilterString = args['filterString'] ... if (argsSelectableType == "cm:person") { findUsers(argsSearchTerm, argsFilterString, maxResults, results); } ... function findUsers(searchTerm, filterString, maxResults, results){ var paging = utils.createPaging(maxResults, -1); var searchResults = groups.searchUsers(searchTerm, paging, "lastName"); var groupmembers = null; if (filterString != null){ var group = groups.getGroup(filterString); var groupmembers = group.getAllUsers(); } // create person object for each result for each(var user in searchResults) { if (logger.isLoggingEnabled()) logger.log("found user = " + user.userName); var add=true; if (groupmembers != null ){ var ismember = false; for each (var p in groupmembers){ if (""+p.userName == ""+user.userName){//need to add +"" cause they are java strings! ismember = true; } } if (!ismember){ logger.log(user.userName+" is no member of group "+filterString); add=false; } } if(add){ // add to results results.push( { item: createPersonResult(user.person), selectable: true }); } } }
【讨论】:
您可以基于该 authority.ftl 和 authority-finder.js 创建一个新控件,您可以在其中修改 webscript 调用以返回有限数量的用户!
注意: 如果 webscript 不支持 maxItems 参数(或任何其他限制返回结果数量的参数),您始终可以创建支持该功能的全新 webscript,然后将新控件指向它。
【讨论】: