这是在 Alfresco JIRA、论坛和 Alfresco IRC 上反复询问的问题,所以我想我会在这里提问和回答,因为这是人们最有可能找到解决方案的地方,问题是......
我按照此博客文章中描述的步骤为 Alfresco Share 标头创建了自定义项,以删除菜单项。
但是,当我登录到 Alfresco 时,自定义功能适用于除搜索页面之外的所有内容 - 我做错了什么?
这是在 Alfresco JIRA、论坛和 Alfresco IRC 上反复询问的问题,所以我想我会在这里提问和回答,因为这是人们最有可能找到解决方案的地方,问题是......
我按照此博客文章中描述的步骤为 Alfresco Share 标头创建了自定义项,以删除菜单项。
但是,当我登录到 Alfresco 时,自定义功能适用于除搜索页面之外的所有内容 - 我做错了什么?
Alfresco Share 中的搜索页面是应用程序中为数不多的完整 Aikau 页面之一。Share 中的大部分页面是在创建 Aikau 之前编写的,并且由多个 Surf 组件组成——其中的标题已由 Aikau 自 4.2 版以来呈现。
搜索页面在 5.0 中更新为完整的 Aikau 页面,并且不使用相同的 Surf 组件来呈现标题。
这意味着标准标题自定义将仅针对 Surf 组件 WebScript 而不是整页 WebScript。
要使其工作,您需要利用alwaysApply
模块配置中的元素。
因此,例如,针对标头的典型扩展模块可能如下所示:
<extension>
<modules>
<module>
<id>Extension Module</id>
<auto-deploy>true</auto-deploy>
<evaluator type="default.extensibility.evaluator"/>
<customizations>
<customization>
<targetPackageRoot>org.alfresco</targetPackageRoot>
<sourcePackageRoot>org.alfresco.share.pages.customizations</sourcePackageRoot>
</customization>
</customizations>
</evaluator>
</module>
</modules>
</extension>
这将针对包中的所有 WebScript,并在org.alfresco
包中查找匹配的文件org.alfresco.share.pages.customizations
。
所以 Share 标头由 share-header.get.js WebScript 定义,如果您的扩展文件应该在org.alfresco.share.pages.customizations.share-header.get.js
.
但是,org.alfresco.share-header.get.js
在搜索页面上没有使用 WebScript,这就是自定义不会生效的原因。
相反,您应该包含一个额外的customization
块以确保应用您的扩展,它应该类似于以下内容:
<customization>
<targetPackageRoot>org.alfresco.share.pages</targetPackageRoot>
<sourcePackageRoot>org.alfresco.share.pages.customizations.share.header</sourcePackageRoot>
<alwaysApply>
<webscript>share-header</webscript>
</alwaysApply>
</customization>
这表示对于org.alfresco.share.pages
包中的所有 WebScript(这是定义所有完整 Aikau 页面的位置)。您应该始终应用名为“share-header”的扩展文件(因此 .get.js、.get.html.ftl 和 .get.properties 文件也会匹配)。
请注意,它sourcePackageRoot
准确定义了应该在哪里找到扩展文件。