我在pickerresults.lib.ftl发现了一个我已经reported
的错误简要说明:如果用户没有文件父级的权限,则行
<#if row.item.parent??>"parentName": "${row.item.parent.name!""}",
将失败,整个脚本失败(用户无法看到任何文件)
所以,等待错误解决我需要修补此问题。我想覆盖宏&#34; pickerResultsJSON&#34;在文件中定义的删除行或用字符串值代替&#34; $ {row.item.parent.name!&#34;&#34;}&#34;导致异常
我不知道如何重新定义宏以及将文件放在放大器的位置。有人能帮助我吗?
更新
我使用Alfresck SDK 2.0,我的项目结构是:
我试图将文件&#34; custom-pickerresults.lib.ftl&#34;具有以下内容(如sev所示)但它似乎不是正确的位置。或者我应该注册&#34;它在某种程度上?
<#macro pickerResultsJSON results>
<#-- new code here -->
</#macro>
<#global pickerResultsJSON = pickerResultsJSON />
答案 0 :(得分:2)
由于宏只是变量,你可能会做这样的事情:
<#macro pickerResultsJSON>
<#-- new code here -->
</#macro>
<#global pickerResultsJSON = pickerResultsJSON />
至于你要把它放在哪里......你可以将它放在项目全局包含的任何文件中。它可能需要一些试验和错误,因为我不确定你的项目结构是什么。
答案 1 :(得分:1)
非常感谢sev,他指出了正确的方法。
我意识到网络服务pickerresults.lib.ftl
和pickerchildren.get.desc.xml
使用pickerchildren.post.desc.xml
,因此,解决方案是将网络服务定义和文件与库中的文件一起复制
/alfresco-myamp-repo/src/main/amp/config/alfresco/extension/templates/webscripts/com/my/repository/forms/
(repository/forms/
只是因为原始文件位于config/alfresco/templates/webscripts/org/alfresco/repository/forms/
内,但/alfresco-myamp-repo/src/main/amp/config/alfresco/extension
下的任何其他文件夹都是这样做的
并像这样更改库:
...
"type": "${row.item.typeShort}",
"parentType": "${row.item.parentTypeShort!""}",
<#-- from here -->
<#attempt>
<#if row.item.parent??>"parentName": "${row.item.parent.name!""}",</#if>
<#recover>
"parentName": "<unknown>",
</#attempt>
<#-- to here -->
"isContainer": ${row.item.isContainer?string},
<#if row.container??>"container": "${row.container!""}",</#if>
...
这种方式即使用户没有读取父名称的权限,模板也可以完成而没有错误(我不知道代替父名称的值“unknown”是否会导致任何麻烦,但我做了现在没有注意到任何事情)