Alfresco 分享 UI 标头自定义

Posted

技术标签:

【中文标题】Alfresco 分享 UI 标头自定义【英文标题】:Alfresco share UI header customization 【发布时间】:2014-10-27 16:32:27 【问题描述】:

我想自定义共享 UI 标题,例如删除一些按钮,例如人员和共享文件。我发现这可以通过修改位于 tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/imports 文件夹中的 share-header.lib.js 文件来完成。 在修改此文件时,我可以看到更改。但正如这些链接中所建议的那样: https://forums.alfresco.com/forum/developer-discussions/alfresco-share-development/correctbest-way-customize-shares-ui-07182011 http://ecmarchitect.com/archives/2010/09/07/1212

正确的方法是在 tomcat/webapps/share/WEB-INF/classes/alfresco/web-extension 目录下创建相同的文件夹结构,并将修改后的文件放在那里。我创建了文件夹层次结构并在此文件夹中复制了 share-header.lib.js 文件并进行了更改,但现在在网站上看不到更改。我错过了什么吗?任何人都可以建议正确的方法吗?

谢谢!

【问题讨论】:

localhost:8081/share/page/modules/deploy 。它的模块部署 url。创建模块,然后使用上面的 url 更新它。如果您遇到任何问题,请告诉我。 嗨@KrutikJayswal,感谢您的回复。我不需要添加新模块,只想禁用标题中的两个项目。有没有容易做到的? 我们在谈论什么版本?我将把这个问题与我已经回答过 4.2 版的其他问题一起标记。 How do I disable Alfresco main menu items?的可能重复 【参考方案1】:

tomcat/webapps/share/WEB-INF/classes/alfresco/web-extension 覆盖 tomcat/webapps/share/WEB-INF/classes/alfresco 的一般准则是正确的,但有一个重要警告:它仅适用于 webscript。

在您的情况下,生成标头涉及两个文件:

WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/header/share-header.get.js WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/imports/share-header.lib.js

前者确实属于 webscript(您会在同一目录中找到 share-header.get.desc.xml)。可以通过将文件放在WEB-INF/classes/alfresco/web-extension 下的类似目录结构中覆盖此文件,正如您在研究中正确找到的那样。

然而,后者不是网页脚本的一部分。相反,它是通过导入指令导入的。导入是一种完全不同的机制,WEB-INF/classes/alfresco/web-extension 技巧在这里不起作用。

share-header.get.js 的第一行阐明了这一点:

<import resource="classpath:/alfresco/site-webscripts/org/alfresco/share/imports/share-header.lib.js">

model.jsonModel = 
   rootNodeId: "share-header",
   ...

导入的资源是从类路径加载的,没有任何web-extension 覆盖。要导入自定义版本的 share-header.lib.js,第一行应该是:

<import resource="classpath:/alfresco/web-extension/site-webscripts/org/alfresco/share/imports/share-header.lib.js">

总之,我的建议是自定义header/share-header.get.js(只是第一行)和imports/share-header.lib.js(就像你已经完成的那样)。

请记住,当您创建新的自定义文件时,重新启动 Alfresco 会更安全。另一方面,当您编辑现有的自定义文件时,只需访问本地安装的 /share/service/index 并单击 Refresh Web ScriptsClean Dependency Caches

【讨论】:

【参考方案2】:

实际上,您的方法并不是最好的。 正如在 Alfresco 文档中一样,您应该在 tomcat/shared/classes/web-extension 文件夹中配置您的 share-config-custom.xml。您应该在那里找到一个示例文件。 在 share webapp 文件夹中查找原始的 share-config.xml:并搜索 &lt;header&gt; 标签。它看起来类似于:

<app-items>

        <!-- defaults: icon="id.png" label="header.id.label" description="header.id.description" -->

        <item type="link" id="my-dashboard">userdashboardpage</item>

        <item type="js" id="sites">Alfresco.module.Sites</item>

        <item type="link" id="people">/people-finder</item>

        <item type="link" id="repository" condition="conditionRepositoryRootNode">/repository</item>

        <item type="container" id="more">

           <container-group id="my">

              <item type="link" id="my-tasks">/my-tasks</item>

              <item type="link" id="my-workflows">/my-workflows</item>

              <item type="link" id="my-content">/user/user-content</item>

              <item type="link" id="my-sites">/user/user-sites</item>

              <item type="link" id="my-profile">userprofilepage</item>

           </container-group>

           <container-group id="tools" permission="admin">

              <item type="link" id="application">/console/admin-console/application</item>

              <item type="link" id="groups">/console/admin-console/groups</item>

              <item type="link" id="replication-jobs" condition="!conditionEditionTeam">/console/admin-console/replication-jobs</item>

              <item type="link" id="repository">/console/admin-console/repository</item>

              <item type="link" id="trashcan">/console/admin-console/trashcan</item>

              <item type="link" id="users">/console/admin-console/users</item>

              <item type="link" id="more">/console/admin-console/</item>

           </container-group>

        </item>

     </app-items>

复制share-config-custom.xml 文件中的整个部分。进行更改并重新启动 Alfresco。你应该很高兴。

【讨论】:

在 4.2.d 版本之前,“app-items”方法曾经是正确的方法,但现在已弃用。最新版本(4.2.e、4.2.f、5.0.x)使用​​ Aikau,Share 的新 UI 框架。最初的问题是指使用这种新方法的share-header.lib.js。

以上是关于Alfresco 分享 UI 标头自定义的主要内容,如果未能解决你的问题,请参考以下文章

Alfresco 中的自定义表单新用户错误

创建仅显示 Alfresco Share 文件夹结构的自定义页面

用于高级搜索的 Alfresco 共享自定义

如何在 Swagger UI 中发送带有请求的自定义标头?

如何使用shoutem / ui和指数在本机反应中设置自定义导航标头

自定义设置jqGrid的标头居中加粗等