2009-07-22 4 views
1

Wie kann ich die Menüs Neu/Aktionen/Upload/Einstellungen in einer Liste oder Dokumentbibliothek in SharePoint ausblenden? Beachten Sie, dass ich diese Menüs für eine bestimmte Listendefinition (Vorlage) und nicht nur für alle Listen oder Dokumentbibliotheken ausblenden muss.Neue/Aktionen/Upload-/Einstellungsmenüs in SharePoint-Listen/Dokumentbibliotheken ausblenden

Eine Möglichkeit, die ich kenne, besteht darin, a zu registrieren und das ControlClass-Element auf ein Steuerelement zu setzen, das von WebControl erbt. Im WebControl kann ich OnPreRender, außer Kraft setzen, die dann dies tut:

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

    // etc 
} 

Das ist ziemlich hacky, und ich habe mich nur gefragt, ob es einen besseren Weg, es zu tun?

+0

Ich denke JavaScript ... noch hacky, aber es kann es auch von der Client-Seite tun. –

Antwort

0

JavaScript ist wahrscheinlich die beste Option. Nur ändern und auf diesen Code in Ihrer Master-Seite verweisen:

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

Wir verwenden das schon seit einiger Zeit, haben aber gerade festgestellt, dass es nicht mehr mit IE9 funktioniert. Es funktioniert jedoch mit IE9 im Kompatibilitätsmodus – Dave

0

Ich schrieb einen Blog-Eintrag here auf diese, die den Knopf für Sie versteckt. Ich hoffe es hilft.

0

Wenn Sie in Ihrer Liste keine nicht verborgenen Inhaltstypen haben, wird die Schaltfläche "Neu" automatisch ausgeblendet.

1

Sie können dies mithilfe des Toolbar-Manager-Webparts erreichen, der Teil des SharePoint 2007-Features Codeplex-Projekts ist.

Sie müssen das Webpart zu jeder Ansichtswebseite hinzufügen, aber Sie können Menüelemente ohne Codierung ausblenden.

Wenn einige Benutzer den Menüpunkt benötigen, geben Sie ihnen die Erlaubnis, persönliche Ansichten hinzuzufügen. Wenn sie eine persönliche Ansicht erstellen, wird der Webpart standardmäßig nicht installiert. Außerdem müssen Sie für Benutzer, die nicht auf die Menüelemente zugreifen sollen, persönliche Ansichten verbieten.