Introduction
This multipart series of articles is intended to help you
getting ramped up with SharePoint Customization. It's about modifying the
default SharePoint user experience, list forms customization, branding,
skinning SharePoint portals, etc. When I looked around the "SharePoint
Landscape", I noticed the lack of documented experiences in the SharePoint
customization area and thus this multipart series of articles was born.
Prerequisites
First you need to have prerequisite skills in .NET
Development and in particular ASP.NET Development, you should also have basic
understanding of JavaScript, SharePoint and how to use it from the User
Interface and of course you should have some experience in using the SharePoint
customization tool (SharePoint Designer).
Trick 1: Hiding List View Toolbar Menu Items
I've gone through SharePoint projects on different scales; a
common requirement among most of these projects is hiding some menu items that
are implemented by default within the framework of SharePoint. The obvious
choice from the Software Development Kit (SDK) is HideCustomAction !
After digging through the web, I found out the following:
·
The "HideCustomAction" feature can merely hide the
items which have been rendered through the "CustomAction" feature
framework such as Site Actions and Site setting.... etc.
·
ECB (Context Menu) items are rendered by JavaScript from Core.js
file so we can't hide them via "HideCustomAction" feature. However,
you can add a new menu item in the ECB menu through "CustomAction"
feature and hide it again through The "HideCustomAction" feature. In
other words," HideCustomAction" feature can be used to hide the ECB
menu items that you created via CustomAction but can't be used to hide the out of
the box menu items.
·
The ListViewWebPart menu items ( New menu, Upload menu, Actions
menu,… etc ) are rendered through a class library as a web control from the
Microsoft.SharePoint.dll so they can't be hidden through The
"HideCustomAction" feature
Hmm, I thought of delving back into the world of JavaScript
and I came up with some generic functions that can be used to hide any menu
item in SharePoint and I decided to share them with the community.
Listing 1
hideListViewToolbarItems("Edit in Datasheet","export to Spreadsheet",
"view rss feed","settings:create view");
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;jif(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]);
}
}
}
}
You can use this function to hide any menu item rendered in
the ListViewWebPart toolbar which is used in the list view pages. Just call the
function and pass the menu item names as they appear in the toolbar, ignoring
the case. Only one exception to that: when you need to hide "Create
View" which appears twice, once in "List Settings", and then in
the view selector. In order to resolve this conflict, just call the function as
follows:
Listing 2
hideListViewToolbarItems("settings:create view") or
hideListViewToolbarItems("view:create view")
Conclusion
In this article, you have learned a trick to hide SharePoint
toolbar menu items with the help of relevant source code. You will learn more
tricks in the upcoming article of the series.