Click here to Skip to main content
15,880,956 members
Articles / Programming Languages / Javascript

SharePoint Customization Tricks - Part 1

Rate me:
Please Sign up or sign in to vote.
4.00/5 (5 votes)
18 Jan 2009CPOL2 min read 99.6K   197   26   29
Trick #1: Hiding the list view toolbar menu items!

Introduction

This multipart series of articles is intended to help you get ramped up with SharePoint customizations. 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 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 the List View Toolbar Menu Items!

hideListViewToolbarItems

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 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" framework features such as Site Actions and Site Setting etc.
  • ECB (Context Menu) items are rendered by JavaScript from the Core.js file so we can't hide them via the "HideCustomAction" feature. However, you can add a new menu item in the ECB menu through the "CustomAction" feature and hide it again through the "HideCustomAction" feature. In other words, the "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.

JavaScript
hideListViewToolbarItems("Edit in Datasheet", "export to Spreadsheet",
    "view rss feed","settings:create view");

function hideListViewToolbarItems()
{
	/// <summary>
	/// By : Ayman M. El-Hattab ( ayman.elhattab@gmail.com )
	/// http://ayman-elhattab.blogspot.com
	/// </summary>
	
	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]);
				break;
			}
		}
	}
}

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 (comma separated) 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: hideListViewToolbarItems("settings:create view") or hideListViewToolbarItems("view:create view").

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect
Egypt Egypt
Ayman El-Hattab is a Regional Technology Solution Professional focusing on helping software professionals and organizations build better SharePoint Solutions using Microsoft Application Lifecycle Management (ALM) technologies and tools. Ayman has been in this role since 2010 and has presented at many conferences all over the Middle East & Africa about ALM, SharePoint, C#, asp.net and Business Intelligence technologies. Ayman is also a Microsoft Most Valuable Professional [SharePoint MVP] , ALM Ranger, published author and an enthusiastic speaker who enjoys working with the online and offline developer communities all over the world. Ayman is the founder of MEA ALM Community & SharePoint4Arabs, community lead at Egypt SharePoint User Group and an organizer of several SharePoint Saturday events. Outside of work, Ayman can be found watching soccer games, playing xbox or watching documentary movies.

Comments and Discussions

 
Questionyour email Pin
qudsia_alvi17-Sep-12 7:08
qudsia_alvi17-Sep-12 7:08 
QuestionSharePoint Customization Pin
Elviraosta16-Aug-11 19:05
Elviraosta16-Aug-11 19:05 
QuestionCan this be applied on List View Web Part Pin
colecg9-Sep-10 23:54
colecg9-Sep-10 23:54 
AnswerRe: Can this be applied on List View Web Part Pin
colecg10-Sep-10 1:32
colecg10-Sep-10 1:32 
GeneralNot able to get it to work. Pin
TomBrophy28-Jan-10 6:14
TomBrophy28-Jan-10 6:14 
GeneralCannot remove "New" options in document library Pin
NancyCentury25-Sep-09 3:15
NancyCentury25-Sep-09 3:15 
GeneralRe: Cannot remove "New" options in document library Pin
NancyCentury29-Oct-09 4:07
NancyCentury29-Oct-09 4:07 
QuestionThis script doesn't work. Pin
Nitin J. Jain22-Aug-09 0:00
professionalNitin J. Jain22-Aug-09 0:00 
AnswerRe: This script doesn't work. Pin
Ayman M. El-Hattab22-Aug-09 5:09
Ayman M. El-Hattab22-Aug-09 5:09 
GeneralRe: This script doesn't work. Pin
Nitin J. Jain25-Aug-09 1:06
professionalNitin J. Jain25-Aug-09 1:06 
GeneralRe: This script doesn't work. Pin
Ayman M. El-Hattab29-Aug-09 4:37
Ayman M. El-Hattab29-Aug-09 4:37 
GeneralThe script don't work in my Custom List View Web Part Pin
Member 418415015-May-09 3:40
Member 418415015-May-09 3:40 
GeneralRe: The script don't work in my Custom List View Web Part Pin
Ayman M. El-Hattab15-May-09 4:47
Ayman M. El-Hattab15-May-09 4:47 
GeneralSharePoint Customization Tricks - Part 1 Pin
ella0216-Apr-09 4:27
ella0216-Apr-09 4:27 
GeneralRe: SharePoint Customization Tricks - Part 1 Pin
Ayman M. El-Hattab16-Apr-09 11:31
Ayman M. El-Hattab16-Apr-09 11:31 
GeneralPartially working... Pin
Damian Thomas10-Apr-09 5:28
Damian Thomas10-Apr-09 5:28 
GeneralRe: Partially working... Pin
Ayman M. El-Hattab10-Apr-09 13:03
Ayman M. El-Hattab10-Apr-09 13:03 
QuestionWhat about the top level buttons or menu header Pin
bvander3-Apr-09 10:43
bvander3-Apr-09 10:43 
AnswerRe: What about the top level buttons or menu header Pin
bvander3-Apr-09 10:50
bvander3-Apr-09 10:50 
GeneralRe: What about the top level buttons or menu header Pin
cbennett51998-Mar-10 9:16
cbennett51998-Mar-10 9:16 
Generalconnect to outlook does not hide Pin
b4ck.tr4ck12-Mar-09 6:16
b4ck.tr4ck12-Mar-09 6:16 
GeneralRe: connect to outlook does not hide Pin
Deependra Tandukar25-Mar-09 23:12
Deependra Tandukar25-Mar-09 23:12 
GeneralRe: connect to outlook does not hide Pin
Ayman M. El-Hattab30-Aug-09 1:36
Ayman M. El-Hattab30-Aug-09 1:36 
QuestionRe: connect to outlook does not hide Pin
colecg12-Sep-10 22:41
colecg12-Sep-10 22:41 
GeneralRe: connect to outlook does not hide Pin
Ray Escamilla24-Feb-10 8:10
Ray Escamilla24-Feb-10 8:10 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.