4

这是在 Alfresco JIRA、论坛和 Alfresco IRC 上反复询问的问题,所以我想我会在这里提问和回答,因为这是人们最有可能找到解决方案的地方,问题是......

我按照此博客文章中描述的步骤为 Alfresco Share 标头创建了自定义项,以删除菜单项。

但是,当我登录到 Alfresco 时,自定义功能适用于除搜索页面之外的所有内容 - 我做错了什么?

4

1 回答 1

6

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准确定义了应该在哪里找到扩展文件。

于 2016-05-04T09:08:54.053 回答