2015-11-03 32 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; 
} 

這將導致從共享標題菜單去掉了文件和共享文件,並添加所有該用戶所屬的網站是用於更快導航的菜單項。

相關問題