仅将Custom Dashlet显示给站点仪表板上的特定用户

时间:2016-06-08 10:31:40

标签: alfresco alfresco-share

我创建了一个自定义Dashlet,并将其添加到站点仪表板。

但现在我的要求是,我想仅为网站管理员显示该自定义,我想为所有其他用户隐藏它。

任何人都可以帮我吗?如何为所有消费者和协作者隐藏自定义Dashlet。

提前致谢。

1 个答案:

答案 0 :(得分:1)

在你的控制器javascript(又名.get.js文件)中添加一个额外的remote.call来获取当前用户的组,如:

var groupResult = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "?groups=true");

使用结果并评估它,然后将其发送到您的freemarker小面板。

---更新--- 您还可以查看默认的share-header webscript。 看一下文件 org \ alfresco \ share \ imports \ share-header.lib.js

摘录:

// Call the repository to see if the user is site manager or not
         var userIsSiteManager = false,
             userIsMember = false;
         json = remote.call("/api/sites/" + page.url.templateArgs.site + "/memberships/" + encodeURIComponent(user.name));
         if (json.status == 200)
         {
            var obj = eval('(' + json + ')');
            if (obj)
            {
               userIsMember = true;
               userIsSiteManager = obj.role == "SiteManager";
            }
         }

         siteData = {};
         siteData.profile = profile;
         siteData.userIsSiteManager = userIsSiteManager;
         siteData.userIsMember = userIsMember;

         // Store this in the model to allow for repeat calls to the function (and therefore
         // prevent multiple REST calls to the Repository)...
         // It also needs to be set in the model as the "userIsSiteManager" is required by the template...
         model.siteData = siteData;

所以在freemarker的if语句中使用它