Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
I needed to hide context menu item “Edit Document”, for files of a particular type (which SharePoint determines from the file extension). Here's is how I achieved it :
The menu Item “Edit Document” is rendered via AddDocLibMenuItems function in CORE.JS. Possible approaches to achieve this override in a supported way :
Option1 :
a)Create a customCORE.JS
b)Add extra code, explained in next few lines below in AddDocLibMenuItems function
c)Create a custom masterpage and add a scriptlink for customCORE.js
Option2:
Similar to above option, but instead of creating customCORE.js, we can override either the AddDocLibMenuItems or add an implementation of Custom_AddDocLibMenuItems on the masterpage itself in a script tag, after the scriptlink for CORE.js <SharePoint:ScriptLink language="javascript" name="core.js" Defer="true" runat="server" />)
Option3:
If the change is needed only on one page(View Page of one Library), add a CEWP with an implementation of Custom_AddDocLibMenuItems, which is identical to AddDocLibMenuItems from CORE.js + additional check for the file extension talked about below.
We can override the AddDocLibMenuItems function to not to render the “Edit Document” menu, when the file is of a particular file extension.(In below example, I am checking if it’s a .txt file, then skip the part that renders the “Edit Document” menu.)Below highlighted, is the code that I put in the AddDocLibMenuItems in CORE.js
function AddDocLibMenuItems(m, ctx)
{
...
else
{
var strExt = GetAttributeFromItemTable(itemTable, "Ext", "FileType");
if(strExt != "txt")
{
var objEditor=StsOpenEnsureEx(currentItemOpenControl+".3");
if (objEditor !=null )
strDisplayText=L_EditInApplication_Text;
}
}
if (strDisplayText !="")
{
strAction="editDocumentWithProgID2('"+currentItemFileUrl+"', '"+currentItemProgId+"', '"
+currentItemOpenControl+"', '"+bIsCheckout+"', '"+ctx.HttpRoot+"', '"+currentItemCheckedoutToLocal+"')";
strImagePath=ctx.imagesPath+currentItemIcon;
menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 240);
menuOption.id="ID_EditIn_"+currentItemAppName;
}
}
}
}
}
...
}
HTH & Happy Customizing SharePoint !!
Comments
Anonymous
October 26, 2010
Hello, does this work with new 2010 interface? I tried to implement this, but I got no changes there :/Anonymous
December 20, 2010
I want to hide context menu items only for a particular document library. can you please suggest the steps to be followed.Anonymous
January 15, 2015
THX you so MUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCH dude !