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 Scripts
和 Clean Dependency Caches
。
【讨论】:
【参考方案2】:实际上,您的方法并不是最好的。
正如在 Alfresco 文档中一样,您应该在 tomcat/shared/classes/web-extension
文件夹中配置您的 share-config-custom.xml
。您应该在那里找到一个示例文件。
在 share webapp 文件夹中查找原始的 share-config.xml
:并搜索 <header>
标签。它看起来类似于:
<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 Share 文件夹结构的自定义页面