2015-11-03 18 views
0

我没有Alfresco的经验,但我知道如何编程,所以没有问题。Alfresco试图获得siteService对象

我想对/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/imports/share-header.lib.js文件做一个小修改,以添加一些菜单元素到共享菜单。

我想列出用户所属的所有网站作为单独菜单项的成员,以便更快地导航,并删除“我的文件”和“共享文件”元素,因为它们没有被使用)。

在做了一些搜索之后,我发现了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对象。

+1

根据[Alfresco JavaScript API文档](http://docs.alfresco.com/4.0/references/API-JS-rootscoped.html),'siteService' JS对象仅适用于Repository(Alfresco webapp )脚本。它在共享层上不可用。为什么不简单地调用其中一个Alfresco webscript(REST API)来获取用户的站点列表? – Gagravarr

回答

1

正如@Gagravarr指出的那样,您无法通过共享层访问siteService。

相反,您必须使用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; 
} 

这将导致从共享标题菜单去掉了文件和共享文件,并添加所有该用户所属的网站是用于更快导航的菜单项。

相关问题