SharePoint 2007 (MOSS/WSS) - how to remove "Download a Copy" context menu from a Document Library
One of my friend and colleague asked me this question. I found it tricky and a good post for my blog. Here is what you have to do:
Go to your 12 hive\TEMPLATE\LAYOUTS\1033 folder. Open up the Core.js file. Find the function AddSendSubMenu. Go to the last 3 lines:
strAction = "STSNavigate('" + ctx.HttpRoot + "/_layouts/download.aspx?" + "SourceUrl=" + currentItemEscapedFileUrl + "&Source=" + GetSource() + "&FldUrl=" + escapeProperly(ctx.SendToLocationUrl) + "')"; ;
menuOption = CAMOpt(sm, L_DownloadACopy_Text, strAction, "");
menuOption.id = "ID_DownloadACopy";
Now if you want to remove "Download a Copy" option from all the document libraries then comment all three lines.
If you want to remove it for some custom List Definition that you have created you may do like:
if(ctx.listTemplate !=10001)
{
strAction = "STSNavigate('" + ctx.HttpRoot + "/_layouts/download.aspx?" + "SourceUrl=" + currentItemEscapedFileUrl + "&Source=" + GetSource() + "&FldUrl=" + escapeProperly(ctx.SendToLocationUrl) + "')"; ;
menuOption = CAMOpt(sm, L_DownloadACopy_Text, strAction, "");
menuOption.id = "ID_DownloadACopy";
}
Where 10001 was your custom list template id.
If you want to do it for a specific Document Library then you would do like this:
if(ctx.listName !="{28958B49-8C76-4987-815C-CF5A107FF522}")
{
strAction = "STSNavigate('" + ctx.HttpRoot + "/_layouts/download.aspx?" + "SourceUrl=" + currentItemEscapedFileUrl + "&Source=" + GetSource() + "&FldUrl=" + escapeProperly(ctx.SendToLocationUrl) + "')"; ;
menuOption = CAMOpt(sm, L_DownloadACopy_Text, strAction, "");
menuOption.id = "ID_DownloadACopy";
}
As you can see you have to pass the list GUID as listName.
Comments
Anonymous
December 07, 2008
The comment has been removedAnonymous
December 07, 2008
Hey pranab.. Nice article...but i need smthing more. i need to implement audience targeting in context menus... I need different users to view different items in the context menu depending on the permissions they have. Can u please tell me if it is possible...Anonymous
December 08, 2008
Esta es una nueva serie de recopilacion de articulos interesantes sobre la plataforma, donde tratareAnonymous
January 19, 2009
Remove send TO from the item menuAnonymous
January 19, 2009
Thanks for the info, it helped me very much. I changed the core.js and added an IF to check for the list name. Linked to this article in my blog post: http://www.dailycode.net/blog/post/Remove-send-TO-from-the-item-menu.aspxAnonymous
January 30, 2009
What happens if the core.js is erase due to a Sharepoint pack !!??Anonymous
March 24, 2009
The comment has been removedAnonymous
April 22, 2009
You should carefully control all the unsupported changes made to your SharePoint installation. When installing a pack, you should check these changes always. It is not always possible to change SharePoint the way you like in a supported way, yet is is the best way to make changes obviously.Anonymous
March 14, 2010
Thank you. I have an issue with escapeProperly function. When I pass a string containing %2F (character for '?') to this function, it does not escape it. It returns a string with %2F instead of replacing with ?. Can you think of a solution? Thanks RaviAnonymous
October 18, 2010
Actually I would like to know whether any event handlers are there related to 'Download a Copy' option