2009-07-22 5 views
1

Как скрыть меню «Новые/Действия/Загрузить/Настройки» в списке или библиотеке документов в SharePoint? Обратите внимание, что мне нужно скрыть эти меню для определенного определения (шаблона) списка, а не только для всех списков или библиотек документов.Скрыть новые меню/Действия/Загрузить/Настройки в списках SharePoint/библиотеках документов

Один из возможных способов, которым я знаю, это зарегистрировать a и установить элемент ControlClass в элемент управления, который наследуется от WebControl. В WebControl, я могу переопределить OnPreRender, который затем делает это:

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

    // etc 
} 

Это довольно Hacky, и мне было просто интересно, если есть лучший способ сделать это?

+0

Я думаю, что JavaScript ... все еще взломан, но он может делать это и с клиентской стороны. –

ответ

0

JavaScript, вероятно, ваш лучший вариант. Просто измените и обратитесь к этому коду в вашем Master Page:

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

0

Я просто написал в блоге запись here на этом, скрывающую кнопку для вас. Надеюсь, поможет.

0

Если у вас нет каких-либо не скрытых типов контента в вашем списке, кнопка «новый» автоматически исчезнет.

1

Вы можете получить это, используя веб-часть Диспетчера панели инструментов, которая является частью проекта Codeplex SharePoint 2007. http://features.codeplex.com/

Вам необходимо добавить веб-часть на каждую веб-страницу просмотра, но она позволяет скрыть элементы меню без кодирования.

Если некоторым пользователям нужен элемент меню, дайте им разрешение на добавление личных просмотров. Когда они создают личный вид, веб-часть не будет установлена ​​по умолчанию. Кроме того, вам нужно будет отключить личные представления для пользователей, которым не следует обращаться к элементам меню.