【问题标题】:Why doesn't my Share header customization work on the search page为什么我的共享标题自定义在搜索页面上不起作用
【发布时间】:2016-05-04 09:08:54
【问题描述】:

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

我已经为 Alfresco Share 标头创建了一个自定义项,如下所示 blog post 中描述的步骤来删除菜单项。

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

【问题讨论】:

    标签: alfresco alfresco-share aikau


    【解决方案1】:

    Alfresco Share 中的搜索页面是应用程序中为数不多的完整 Aikau 页面之一。 Share 中的大部分页面都是在创建 Aikau 之前编写的,并且由多个 Surf 组件组成——其中的 header 从 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>
    

    这将针对 org.alfresco 包中的所有 WebScript,并在 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 包中的所有 WebScripts(这是定义所有完整 Aikau 页面的位置)。您应该始终应用名为“share-header”的扩展文件(因此 .get.js、.get.html.ftl 和 .get.properties 文件也会匹配)。

    请注意,sourcePackageRoot 定义了扩展文件的确切位置。

    【讨论】:

    • share-header alwaysApply 示例对我来说有一个讨厌的问题。虽然我很天真,但我预计 HEADER_APP_MENU_BAR 会在那里。他大部分时间可能都是真的。不适用于我搞砸的管理控制台中的自定义模型管理器、管理站点成员、管理站点。在各处调整菜单栏似乎很棘手。
    • 我不太明白为什么会出现问题,因为 HEADER_APP_MENU_BAR 始终位于标头模型中,该模型要么呈现为旧样式共享页面中的许多 Surf 组件之一,要么位于Aikau 页面上的单个 Surf 组件。用于站点管理和 CMM 的管理控制台页面不会导入标头库,因此不会包含具有该 ID 的小部件,但它仍会在标准标头组件的页面上。您应该始终进行防御性编码以检查 widgetUtils 函数是否实际返回一个值 - 我扩展 Share 的所有示例都是这样做的。
    • 问题是当使用这个 sn-p 时,HEADER_APP_MENU_BAR 并不总是存在(例如 CMM 和 SM 页面),因此,您需要相当多的复杂代码来获得基本要求“更改菜单”无处不在(!)”对。想知道普通开发人员需要多长时间才能到达那里。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2014-07-31
    • 1970-01-01
    相关资源
    最近更新 更多