2009-07-22 52 views
1

如何隱藏SharePoint中的列表或文檔庫中的新增/動作/上傳/設置菜單?請注意,我需要能夠隱藏特定列表定義(模板)的這些菜單,而不僅僅是所有列表或文檔庫。隱藏SharePoint列表/文檔庫中的新增/動作/上傳/設置菜單

我知道的一種可能的方式是註冊一個,並將ControlClass元素設置爲從WebControl繼承的控件。在WebControl的,我可以重寫的OnPreRender,然後做到這一點:

foreach (Control control in this.Parent.Controls) 
{ 
    if (control.ToString() == "Microsoft.SharePoint.WebControls.NewMenu") 
    { 
     control.Visible = false; 
    } 

    // etc 
} 

這是相當哈克,我只是想知道是否有這樣做的更好的辦法?

+0

我正在考慮JavaScript ......還是很黑,但它也可以從客戶端那裏做到。 – 2009-07-22 15:43:09

回答

0

JavaScript可能是您最好的選擇。只需修改並請參見該代碼在你的母版頁:

hideListViewToolbarItems("list settings","document library settings","create column","open with windows explorer"); 

function hideListViewToolbarItems() 
{  
    var menuItem;   
    var menuItemName; 
    var menuItemIndex=-1; 
    var menuItemNames=new Array("edit in datasheet","open with windows explorer", 
    "connect to outlook",'export to spreadsheet','view rss feed','alert me' 
    ,"create column","settings:create view","list settings", 
    "document library settings","explorer view","all documents", 
    "all items","modify this view","view:create view","new document", 
    "new item","new folder","upload document","upload multiple documents"); 
    var menuItems = new Array("EditInGridButton","OpenInExplorer","OfflineButton", 
    "ExportToSpreadsheet","ViewRSS","SubscribeButton","AddColumn", 
    "AddView","ListSettings","ListSettings","View1","DefaultView", 
    "DefaultView","ModifyView","CreateView","New0","New0", 
    "NewFolder","Upload","MultipleUpload");    
    var allMenuItems = document.getElementsByTagName('ie:menuitem'); 
    for(var i = 0; i < hideListViewToolbarItems.arguments.length; i++) 
    {                   
      menuItemName= hideListViewToolbarItems.arguments[i].toLowerCase(); 
      for (j=0; j < menuItemNames.length; j++) 
      { 
       if(menuItemNames[j]==menuItemName) 
       {          
        menuItemIndex = j; 
        break; 
       } 
      }   
      menuItem=menuItems[menuItemIndex]; 
      for (var l = 0; l < allMenuItems.length; l++) 
      {     
       if(menuItemName.indexOf(":")!=-1) 
       { 
         menuItemName = menuItemName.split(":")[1]; 
       } 
       if (allMenuItems[l].id.indexOf(menuItem)!=-1 
       && allMenuItems[l].text.toLowerCase() == menuItemName) 
       {     
        // For FireFox Compatibility 
        var parentNodeOfMenuItem = allMenuItems[l].parentNode; 
        parentNodeOfMenuItem.removeChild(allMenuItems[l]); 
       } 
      }     
    } 
} 
+0

我們已經使用了一段時間,但剛剛注意到它不再適用於IE9。儘管它在兼容模式下可以與IE9一起使用 – Dave 2013-09-10 10:52:23

0

我只是寫了這個博客條目here其中隱藏的按鈕你。希望能幫助到你。

0

如果您的列表中沒有任何非隱藏的內容類型,「新建」按鈕將自動消失。

1

您可以使用作爲SharePoint 2007功能Codeplex項目一部分的工具欄管理器Web部件來實現此功能。 http://features.codeplex.com/

您需要將Web部件添加到每個視圖網頁,但它允許您隱藏菜單項而無需編碼。

如果某些用戶需要該菜單項,請授予他們添加個人視圖的權限。當他們創建個人視圖時,默認情況下不會安裝Web部件。此外,您還需要禁止不應訪問菜單項的用戶使用個人視圖。