我想在alfresco共享中的工作流表单上添加文档名称重命名操作。有没有办法做到这一点。
如果可能,请提供所需的步骤和示例代码段。
请回复是somebady之前做过的。
提前致谢。
您需要做的第一件事是为您截取屏幕截图的工作流任务表单定义表单配置。您可以在share-config-custom.xml中定义它。表单配置应如下所示。
<config evaluator="task-type" condition="**NAME OF YOUR TASK**">
<forms>
<form>
<field-visibility>
<!-- **FIELDS WHICH YOU WANT TO MAKE VISIBLE** -->
<show id="wf:requiredApprovePercent" />
<show id="bpm:workflowDueDate" />
<show id="bpm:workflowPriority" />
<show id="packageItems" />
<show id="bpm:sendEMailNotifications" />
<show id="bpm:comment" />
</field-visibility>
<appearance>
<!-- **FIELDS WHICH FOR WHICH YOU WANT TO CUSTOMIZE TEMPLATE** -->
<field id="bpm:workflowPriority" label-id="workflow.field.priority">
<control template="/org/alfresco/components/form/controls/workflow/priority.ftl" />
</field>
<field id="bpm:sendEMailNotifications">
<control template="/org/alfresco/components/form/controls/workflow/email-notification.ftl" />
</field>
<field id="bpm:comment" label-id="workflow.field.comment">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
</appearance>
</form>
</forms>
</config>
定义之后,您需要自定义packageItems字段的模板并为其创建新的字段模板。您可以从现有模板“org \ alfresco \ components \ form \ controls \ workflow \ packageitems.ftl”中获取引用。
ftl模板上方还包含一个ftl库,名为association.ftl。您需要创建一个新的association.ftl并将其包含在此文件中。
您还需要在该文件中进行更改。稍后我们会对此进行更改。
现在你需要创建一个javascript文件,它应该扩展object-finder.js.How扩展该文件在下面的链接中有很好的解释。
http://alfrescoblog.com/2014/05/28/alfresco-share-custom-object-finder-js/
创建扩展文件后,它应该具有类似于下面的内容。您仍然需要根据您的要求自定义以下功能。您需要添加用于添加铅笔图标和处理onclick事件的编码。
(function() {
var Dom = YAHOO.util.Dom, Event = YAHOO.util.Event;
var $html = Alfresco.util.encodeHTML,
$hasEventInterest = Alfresco.util.hasEventInterest,
$combine = Alfresco.util.combinePaths;
Alfresco.PackageItemsObjectFinder = function Alfresco_PackageItemsObjectFinder(
htmlId, currentValueHtmlId) {
Alfresco.PackageItemsObjectFinder.superclass.constructor.call(this,
htmlId, currentValueHtmlId);
// Re-register with our own name
this.name = "Alfresco.PackageItemsObjectFinder";
Alfresco.util.ComponentManager.reregister(this);
return this;
};
YAHOO.extend(Alfresco.PackageItemsObjectFinder, Alfresco.ObjectFinder, {
fnRenderCellListItemName: function ObjectFinder_fnRenderCellListItemName()
{
var scope = this;
return function ObjectFinder_fnRenderCellListItemName(elCell, oRecord, oColumn, oData)
{
var item = oRecord.getData(),
titles = item.title ? $html(item.title) : scope.msg("label.none"),
modifiedOn = item.modified ? Alfresco.util.formatDate(Alfresco.util.fromISO8601(item.modified)) : null,
title = $html(item.name);
if (scope.options.showLinkToTarget && scope.options.targetLinkTemplate !== null)
{
var link;
if (YAHOO.lang.isFunction(scope.options.targetLinkTemplate))
{
link = scope.options.targetLinkTemplate.call(scope, oRecord.getData());
}
else
{
//Discard template, build link from scratch
var linkTemplate = (item.site) ? Alfresco.constants.URL_PAGECONTEXT + "site/{site}/document-details?nodeRef={nodeRef}" : Alfresco.constants.URL_PAGECONTEXT + "document-details?nodeRef={nodeRef}";
link = YAHOO.lang.substitute(linkTemplate,
{
nodeRef : item.nodeRef,
site : item.site
});
}
title = '<a href="' + link + '">' + $html(item.displayName?item.displayName:item.name) + '</a>';
}
var template = '<h3 class="name">' + title + '</h3>';
template += '<div class="description">' + "Title" + ': ' + titles + '</div>';
template += '<div class="viewmode-label">' + scope.msg("form.control.object-picker.modified-on") + ': ' + (modifiedOn ? modifiedOn : scope.msg("label.none")) + '</div>';
elCell.innerHTML = template;
};
}
});
})();
一旦扩展了这个,就需要在关联ftl文件中给出这个扩展类的引用。
关联文件的更改将如下所示。
var ${picker} = new Alfresco.PackageItemsObjectFinder("${controlId}", "${fieldHtmlId}")
代替
var ${picker} = new Alfresco.ObjectFinder("${controlId}", "${fieldHtmlId}")