SharePoint - EventReceiver - vytvoření kontextového menu
Zadání
potřebuji vytvořit Feature pro aktivaci kontextového menu v aktuálním webu pro knihovnu typu "Kontakt".
Řešení
Vytvořím EventReceiver, který aktivuji pomoci Feature ve Scope = Web. Tzn. akce se založí pouze pro knihovny v aktuálním webu.
Kód EvenReceiveru
FeatureActivated
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb web = (SPWeb)properties.Feature.Parent;
SPContentType contentType = web.Site.RootWeb.ContentTypes["Kontakt"];
SPUserCustomAction action = web.UserCustomActions.Add();
action.RegistrationType = SPUserCustomActionRegistrationType.ContentType;
action.RegistrationId = contentType.Id.ToString();
action.Location = "EditControlBlock";
action.Sequence = 450;
action.Title = "Moje menu";
action.Rights = SPBasePermissions.EditListItems;
action.Url = "/_Layouts/MojeUrl..aspx";
action.Update();
}
FeatureDeactivating
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWeb web = (SPWeb)properties.Feature.Parent;
SPContentType contentType = web.Site.RootWeb.ContentTypes["Kontakt"];
foreach (SPUserCustomAction action in web.UserCustomActions)
{
if (action.Name != null && action.Title.Equals("Moje menu"))
{
action.Delete();
web.Update();
break;
}
}
}
Odkazy
SPUserCustomAction members
https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spusercustomaction_members.aspx