【问题标题】:Override Alfresco pickerresults.lib.ftl覆盖 Alfresco pickerresults.lib.ftl
【发布时间】:2015-05-16 06:04:55
【问题描述】:

我在pickerresults.lib.ftl 中发现了一个我已经在reported 中的错误

简而言之:如果用户没有文件父级的权限,则行

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

将失败,整个脚本都失败(并且用户看不到任何文件)

所以,等待错误得到解决,我需要修补它。我想覆盖文件中定义的宏“pickerResultsJSON”删除行或放置一个字符串值代替导致异常的“${row.item.parent.name!”“}”

我不知道如何重新定义宏以及在我的放大器中放置文件的位置。有人可以帮我吗?

更新

我正在使用Alfresck SDK 2.0,我的项目结构是:

我尝试放置一个包含以下内容的文件“custom-pickerresults.lib.ftl”(如 sev 建议的那样),但它似乎不是正确的位置。还是我应该以某种方式“注册”它?

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

【问题讨论】:

    标签: alfresco freemarker


    【解决方案1】:

    由于宏只是变量,您也许可以这样做:

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

    至于你将把它放在哪里......你可以把它放在你项目中全局包含的任何文件中。由于我不确定您的项目结构是什么,因此可能需要一些试验和错误。

    【讨论】:

    • 谢谢,请看我在第一篇的更新
    • 您需要导入或包含该文件。您的项目中是否有类似&lt;#import "x.ftl" as y&gt;&lt;#include "x.ftl"&gt; 的文件?
    【解决方案2】:

    非常感谢 sev,他为我指明了正确的方向。

    我意识到pickerresults.lib.ftl被webservicepickerchildren.get.desc.xmlpickerchildren.post.desc.xml使用所以,解决方案是将web service定义和文件连同库一起复制到

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

    这样,即使用户没有读取父名称的权限,模板也可以完成而不会出错(我不知道值“未知”代替父名称是否会引起任何麻烦,但我做到了现在什么都没有注意到)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2012-01-28
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多