如何禁用Alfresco主菜单项?

时间:2014-06-20 14:39:21

标签: alfresco alfresco-share

Alfresco Share应用程序的主菜单包含我们部署的项目团队希望禁用的几个项目。特别是"我的文件"和#34;共享文件"。隐藏会很好,但如果我们可以完全禁用它们,那将是最好的。这些是用户无权访问的功能。他们所有的互动都应该通过网站进行。

是否支持Alfresco(因为在#34;我们升级版本&#34时不会中断;)这样做的方式?

1 个答案:

答案 0 :(得分:4)

您的博客文章描述了如何在this链接隐藏主菜单项。后来证明这种方法不适用于4.2.2以下的版本。您的社区版本(4.2e)也是如此。

您可以使用this链接中描述的解决方法。 以下是您需要的确切代码。 在 share-header.get.js 的底部添加以下内容

var widget, widgetsToRemove = [ "HEADER_SHARED_FILES", "HEADER_MY_FILES" ], idx, max;

for (idx = 0, max = widgetsToRemove.length; idx < max; idx++)
{  
    findAndRemoveIn(model.jsonModel.widgets, null, null, widgetsToRemove[idx]);
}


function findAndRemoveIn(obj, arrContext, arrIdx, id) {
var idx, max, key;
if (obj !== undefined && obj !== null) {
    if (Object.prototype.toString.apply(obj) === "[object Object]") {
        if (obj.hasOwnProperty("id") && obj.id === id) {
            if (arrContext !== null && arrIdx !== null)
            { arrContext.splice(arrIdx, 1); }

            else
            { logger .debug("Unexpected match outside of array structure: " + jsonUtils.toJSONString(obj)); }

        } else {
            for (key in obj) {
                if (obj.hasOwnProperty(key))
                { findAndRemoveIn(obj[key], null, null, id); }

            }
        }
    } else if (Object.prototype.toString.apply(obj) === "[object Array]") {
        for (idx = 0, max = obj.length; idx < max; idx++)
        { findAndRemoveIn(obj[idx], obj, idx, id); }

    }
  }
}   

稍后您可以在开始工作时编写扩展模块。 可以使用 widgetUtils.deleteObjectFromArray 辅助函数从菜单中删除其他元素,如HEADER_NAVIGATION_MENU_BAR,HEADER_TITLE_MENU,HEADER_TITLE。 最后一个选项是使用CSS。