Alfresco 试图获取 siteService 对象
Alfresco trying to get the siteService object
我没有使用过 Alfresco,但是我知道如何编程,所以没问题。
我正在尝试对 /share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/imports/share-header.lib.js 文件进行少量编辑,以将一些菜单元素添加到共享菜单。
我想将用户所属的所有站点列为单独的菜单项以加快导航速度,并删除 "my files" 和 "shared files" 元素,因为它们未被使用(原为简单的部分)。
经过一些搜索后,我发现了 siteService 对象,它可以实现我想要实现的目标,因此我将以下内容添加到 generateAppItems 函数中。
function generateAppItems() {
.....
var sites = siteService.listUserSites(user.name);
for (var i=0; i<sites.length; i++)
{
var targetUrl = "site/" + sites[i].shortName + "/" + dashboard;
appItems.push({
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
label: (sites[i].title) ? sites[i].title : sites[i].shortName,
targetUrl: targetUrl
}
});
}
.....
}
但现在我得到以下错误
ReferenceError: "siteService" is not defined.
我用 Google 搜索了一下,但找不到任何地方应该如何声明这个难以捉摸的 siteService 对象。
正如@Gagravarr 指出的那样,您无法通过共享层访问站点服务。
相反,您必须使用 Alfresco 的 REST API。
感谢您为我指明正确的方向。
我最终添加了以下函数
function getUserSites()
{
// Call the repository for the site profile
var json = remote.call("/api/people/" + encodeURIComponent(user.name) + "/sites");
var userSites = null;
if (json.status == 200)
{
// Create javascript objects from the repo response
var obj = eval('(' + json + ')');
if (obj)
{
userSites = obj;
}
}
return userSites;
}
并将 generateAppItems 更改为
function generateAppItems() {
var appItems = [
{
id: "HEADER_HOME",
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_HOME",
label: "header.menu.home.label",
targetUrl: "user/" + encodeURIComponent(user.name) + "/dashboard"
}
}
];
var sites = getUserSites();
if(sites != null) {
for (var i=0; i<sites.length; i++)
{
var targetUrl = "site/" + sites[i].shortName + "/dashboard";
appItems.push({
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
label: (sites[i].title) ? sites[i].title : sites[i].shortName,
targetUrl: targetUrl
}
});
}
}
appItems.push({
id: "HEADER_SITES_MENU",
name: "alfresco/header/AlfSitesMenu",
config: {
id: "HEADER_SITES_MENU",
label: "header.menu.sites.label",
currentSite: page.url.templateArgs.site,
currentUser: user.name
}
},
{
id: "HEADER_TASKS",
name: "alfresco/header/AlfMenuBarPopup",
config: {
id: "HEADER_TASKS",
label: "header.menu.tasks.label",
widgets: [
{
name: "alfresco/menus/AlfMenuGroup",
config: {
widgets: [
{
id: "HEADER_MY_TASKS",
name: "alfresco/header/AlfMenuItem",
config:
{
id: "HEADER_MY_TASKS",
label: "header.menu.mytasks.label",
iconClass: "alf-mytasks-icon",
targetUrl: "my-tasks#filter=workflows|active"
}
},
{
id: "HEADER_MY_WORKFLOWS",
name: "alfresco/header/AlfMenuItem",
config:
{
id: "HEADER_MY_WORKFLOWS",
label: "header.menu.myworkflows.label",
iconClass: "alf-myworkflows-icon",
targetUrl: "my-workflows#filter=workflows|active"
}
}
]
}
}
]
}
});
if (user.isAdmin || showRepositoryLink == "true")
{
appItems.push({
id: "HEADER_REPOSITORY",
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_REPOSITORY",
label: "header.menu.repository.label",
targetUrl: "repository"
}
});
}
if (user.isAdmin)
{
appItems.push({
id: "HEADER_ADMIN_CONSOLE",
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_ADMIN_CONSOLE",
label: "header.menu.admin.label",
targetUrl: "console/admin-console/application"
}
});
}
return appItems;
}
这会导致从共享 header 菜单中删除我的文件和共享文件,并将用户所属的所有站点添加为菜单项以加快导航速度。
我没有使用过 Alfresco,但是我知道如何编程,所以没问题。
我正在尝试对 /share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/imports/share-header.lib.js 文件进行少量编辑,以将一些菜单元素添加到共享菜单。
我想将用户所属的所有站点列为单独的菜单项以加快导航速度,并删除 "my files" 和 "shared files" 元素,因为它们未被使用(原为简单的部分)。
经过一些搜索后,我发现了 siteService 对象,它可以实现我想要实现的目标,因此我将以下内容添加到 generateAppItems 函数中。
function generateAppItems() {
.....
var sites = siteService.listUserSites(user.name);
for (var i=0; i<sites.length; i++)
{
var targetUrl = "site/" + sites[i].shortName + "/" + dashboard;
appItems.push({
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
label: (sites[i].title) ? sites[i].title : sites[i].shortName,
targetUrl: targetUrl
}
});
}
.....
}
但现在我得到以下错误
ReferenceError: "siteService" is not defined.
我用 Google 搜索了一下,但找不到任何地方应该如何声明这个难以捉摸的 siteService 对象。
正如@Gagravarr 指出的那样,您无法通过共享层访问站点服务。
相反,您必须使用 Alfresco 的 REST API。
感谢您为我指明正确的方向。
我最终添加了以下函数
function getUserSites()
{
// Call the repository for the site profile
var json = remote.call("/api/people/" + encodeURIComponent(user.name) + "/sites");
var userSites = null;
if (json.status == 200)
{
// Create javascript objects from the repo response
var obj = eval('(' + json + ')');
if (obj)
{
userSites = obj;
}
}
return userSites;
}
并将 generateAppItems 更改为
function generateAppItems() {
var appItems = [
{
id: "HEADER_HOME",
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_HOME",
label: "header.menu.home.label",
targetUrl: "user/" + encodeURIComponent(user.name) + "/dashboard"
}
}
];
var sites = getUserSites();
if(sites != null) {
for (var i=0; i<sites.length; i++)
{
var targetUrl = "site/" + sites[i].shortName + "/dashboard";
appItems.push({
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_SITE_" + sites[i].shortName.toUpperCase(),
label: (sites[i].title) ? sites[i].title : sites[i].shortName,
targetUrl: targetUrl
}
});
}
}
appItems.push({
id: "HEADER_SITES_MENU",
name: "alfresco/header/AlfSitesMenu",
config: {
id: "HEADER_SITES_MENU",
label: "header.menu.sites.label",
currentSite: page.url.templateArgs.site,
currentUser: user.name
}
},
{
id: "HEADER_TASKS",
name: "alfresco/header/AlfMenuBarPopup",
config: {
id: "HEADER_TASKS",
label: "header.menu.tasks.label",
widgets: [
{
name: "alfresco/menus/AlfMenuGroup",
config: {
widgets: [
{
id: "HEADER_MY_TASKS",
name: "alfresco/header/AlfMenuItem",
config:
{
id: "HEADER_MY_TASKS",
label: "header.menu.mytasks.label",
iconClass: "alf-mytasks-icon",
targetUrl: "my-tasks#filter=workflows|active"
}
},
{
id: "HEADER_MY_WORKFLOWS",
name: "alfresco/header/AlfMenuItem",
config:
{
id: "HEADER_MY_WORKFLOWS",
label: "header.menu.myworkflows.label",
iconClass: "alf-myworkflows-icon",
targetUrl: "my-workflows#filter=workflows|active"
}
}
]
}
}
]
}
});
if (user.isAdmin || showRepositoryLink == "true")
{
appItems.push({
id: "HEADER_REPOSITORY",
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_REPOSITORY",
label: "header.menu.repository.label",
targetUrl: "repository"
}
});
}
if (user.isAdmin)
{
appItems.push({
id: "HEADER_ADMIN_CONSOLE",
name: "alfresco/menus/AlfMenuBarItem",
config: {
id: "HEADER_ADMIN_CONSOLE",
label: "header.menu.admin.label",
targetUrl: "console/admin-console/application"
}
});
}
return appItems;
}
这会导致从共享 header 菜单中删除我的文件和共享文件,并将用户所属的所有站点添加为菜单项以加快导航速度。