2015-03-13 80 views
1

我发现一个bug在pickerresults.lib.ftl我已经reported覆盖露天pickerresults.lib.ftl

简单地说:如果用户没有在文件上父母的同意,行

<#if row.item.parent??>"parentName": "${row.item.parent.name!""}",

会失败,失败的整个脚本(并且用户无法看到任何文件)

所以,等待错误被解决,我需要补丁。我想重写文件中定义的宏“pickerResultsJSON”,删除该行或将字符串值替换为导致异常的“$ {row.item.parent.name!”“}”“

I不知道如何重新定义宏以及将文件放置在放大器的哪里。有人能帮我吗?

UPDATE

我使用的是Alfresck SDK 2.0和我的项目结构是:

Project Structure

我tryed把一个文件 “定制pickerresults.lib.ftl” 与以下内容(如sev所示),但似乎并不正确。或者我应该以某种方式“注册”它?

<#macro pickerResultsJSON results> 
    <#-- new code here --> 
</#macro> 
<#global pickerResultsJSON = pickerResultsJSON /> 

回答

1

非常感谢sev,他指出了我的正确方法。

我意识到pickerresults.lib.ftl所使用的web服务pickerchildren.get.desc.xmlpickerchildren.post.desc.xml因此,该解决方案是将Web服务定义和文件库一起复制

/alfresco-myamp-repo/src/main/amp/config/alfresco/extension/templates/webscripts/com/my/repository/forms/ 

repository/forms/只是becouse原始文件都在里面config/alfresco/templates/webscripts/org/alfresco/repository/forms//alfresco-myamp-repo/src/main/amp/config/alfresco/extension下的任何其他文件夹shuld做)

,改变这样的库:

   ... 
       "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> 
       ... 

这种方式即使用户没有权限读取父母的名字模板可以完成没有错误(我不知道如果值“未知”代替父母名称可以导致任何麻烦,但我现在没有注意到任何东西)

2

由于宏只有变量,你也许能够做这样的事情:

<#macro pickerResultsJSON> 
    <#-- new code here --> 
</#macro> 
<#global pickerResultsJSON = pickerResultsJSON /> 

至于,你会把那个...你可以把它放在包含的任何文件在您的项目全球。由于我不确定你的项目结构是什么,它可能需要一些试验和错误。

+1

谢谢你,请看我在第一篇文章中的更新 – lelmarir 2015-03-16 10:06:10

+1

你需要导入或包含文件。你的项目中是否有像'<#import“x.ftl”那样的文件,如y>'或'<#include“x.ftl”>'? – ratherblue 2015-03-18 17:44:48