仅向站点仪表板上的特定用户显示自定义 Dashlet
Display Custom Dashlet to only specific user on site dashboard
我创建了一个自定义 Dashlet,并将其添加到站点仪表板。
但现在我的要求是,我只想为站点管理员显示该自定义,而我想为所有其他用户隐藏它。
谁能帮我解决这个问题?如何为所有消费者和协作者隐藏自定义 Dashlet。
提前致谢。
在您的控制器 javascript(又名 .get.js 文件)中添加一个额外的 remote.call 以获取当前用户的组,例如:
var groupResult = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "?groups=true");
使用结果并对其进行评估,然后将其发送到您的 freemarker dashlet。
---更新---
您还可以查看默认的 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 语句中使用它
我创建了一个自定义 Dashlet,并将其添加到站点仪表板。
但现在我的要求是,我只想为站点管理员显示该自定义,而我想为所有其他用户隐藏它。
谁能帮我解决这个问题?如何为所有消费者和协作者隐藏自定义 Dashlet。
提前致谢。
在您的控制器 javascript(又名 .get.js 文件)中添加一个额外的 remote.call 以获取当前用户的组,例如:
var groupResult = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "?groups=true");
使用结果并对其进行评估,然后将其发送到您的 freemarker dashlet。
---更新--- 您还可以查看默认的 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 语句中使用它