2008-08-27 57 views
5

我正嘗試在SharePoint 2007中設置動態的每項菜單(編輯控制塊)。我的目標是根據當前用戶的組成員身份具有某些可用功能。動態顯示SharePoint中的編輯控制塊菜單項

我知道控制此菜單項的創建的CustomAction標記具有權限屬性。我遇到的問題是我使用的組在網站中具有相同的權限(ViewListItems,ManageAlerts等)。我們設置的小組處理的功能更多,例如經理,員工等。我們希望能夠爲一個小組分配一個自定義功能,並且只有該小組的成員才能看到與該功能相關的菜單項。每個人都具有相同的基本網站權限,但基於其登錄憑據將有額外的選項可用。

我已經看到了修改Core.js文件以隱藏上下文菜單中的項目的幾篇文章,但它們是一個全有或全無的方法。在http://blog.thekid.me.uk/archive/2008/04/29/sharepoint-custom-actions-in-a-list-view-webpart.aspx有一篇有趣的帖子,展示瞭如何動態修改Actions菜單。修改此示例以檢查用戶組並顯示或隱藏基於成員資格的菜單是微不足道的。不幸的是,這個例子似乎不適用於上下文菜單項,如http://forums.msdn.microsoft.com/en-US/sharepointdevelopment/thread/c2259839-24c4-4a7e-83e5-3925cdd17c44/所示。

有沒有人知道的方式來做到這一點,而不使用JavaScript?如果不是,從javascript檢查用戶組的最佳方法是什麼?

+0

他的標題會比較合適.. 。版主能否更新? – 2008-09-24 16:37:18

回答

2

有兩種不同的Javascript函數可以實現動態添加菜單項到列表項下拉菜單。 Core.js(C:\ Program Files \ Common Files \ Microsoft Shared \ web server extensions \ 12 \ TEMPLATE \ LAYOUTS \ 1033 \ CORE.JS)在爲選定列表項目生成菜單項時檢查是否存在這些方法。 「Custom_AddDocLibMenuItems」和「Custom_AddListMenuItems」是Javascript方法的名稱。

一篇文章,我想你可以用它來解決特定的問題,根據用戶的角色成員動態菜單項的定製,可以在這裏找到:

MSDN: Customizing the Context Menu of Document Library Items(注意這個過程是完全相同的任何列表類型相同)

本文概述了服務器端代碼如何被執行的定義將被顯示的菜單項:

[...]在更復雜的情況下,你必須檢索從可用命令列表服務器,因爲只有您可以運行您的業務邏輯,也可以從自定義數據庫獲取命令。通常,如果要實現工作流程解決方案,那麼每個文檔都有自己的流程狀態,並且命令與其關聯。

這種情況的解決方案是讓Custom_AddDocLibMenuItems動態調用一個自定義ASP.NET頁面。此頁面將採用文檔庫的ID和查詢字符串上的特定項目,並返回一個XML字符串,其中包含可用於該特定文檔的所有命令的信息。這些命令根據文檔的進程狀態(或其他一些自定義業務邏輯)可用。 [...]