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 菜单中删除我的文件和共享文件,并将用户所属的所有站点添加为菜单项以加快导航速度。