"Custom Actions" können verwendet werden um das Benutzerinterface in SharePoint zu erweitern und anzupassen. Meistens geht es darum, einen Link an geeigneter Stelle zu hinterlegen um darüber zusätzliche Funktionalität mittels einer Application Page aufzurufen.
Es gibt drei Arten von Custom Actions:
- CustomAction
- Damit wird ein neues Element dem Benutzerinterface hinzugefügt. Dabei kann es sich um einen Eintrag im Menü (Site Actions oder Usermenü) handeln, aber auch im Ribbon, oder auf den Settings-Seiten inkl. Central Admin.
- CustomActionGroup
- Wenn man mehrere CustomActions zu einer Gruppe zusammenfassen kann oder möchte, dann bündelt man diese über eine CustomActionGroup.
- HideCustomAction
- Diese verwendet man, um existierende Elemente zu verstecken.
Und wie erstellt man eine Custom Action?
Eine CustomAction legt man am besten in Visual Studio als "Empty Element" an. Die Elements.xml für das Feature kann folgende Attribut beinhalten:
<CustomAction RequiredAdmin = "Delegated | Farm | Machine" ControlAssembly = "Text" ControlClass = "Text" ControlSrc = "Text" Description = "Text" FeatureId = "Text" GroupId = "Text" Id = "Text" ImageUrl = "Text" Location = "Text" RegistrationId = "Text" RegistrationType = "Text" RequireSiteAdministrator = "TRUE" | "FALSE" Rights = "Text" RootWebOnly = "TRUE" | "FALSE" ScriptSrc = "Text" ScriptBlock = "Text" Sequence = "Integer" ShowInLists = "TRUE" | "FALSE" ShowInReadOnlyContentTypes = "TRUE" | "FALSE" ShowInSealedContentTypes = "TRUE" | "FALSE" Title = "Text" UIVersion = "Integer"> </CustomAction>
Die Beschreibung zu jedem einzelnen Attribut kann man direkt bei Microsoft nachlesen.
Ein Beispiel für eine funktionierende Elements.xml kann so aussehen:
So sieht das dann in SharePoint aus:
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Id="A6B6CAF0-0BAE-42BA-A018-CBA014868CE8" Description="Display Table of contents for this site and it's webs." Title="Show TOC" Location="Microsoft.SharePoint.StandardMenu" ImageUrl="/_layouts/images/siteToc/denzman_icon.png" GroupId="SiteActions" Sequence="1000"> <UrlAction Url="~site/_layouts/siteTOC/showTOC.aspx"/> </CustomAction> </Elements>
So sieht das dann in SharePoint aus:
Sehr wichtig ist das Attribut Location und GroupId. Hierüber wird definiert an welcher Stelle im SharePoint Benutzerinterface die jeweilige CustomAction angezeigt wird. Eine Liste der standard Location's und GroupId's findet man bei Microsoft.
Ein weiteres wichtiges Attribut ist die Sequence. Darüber wird festgelegt in welcher Reihenfolge CustomActions in der entsprechenden GroupId erscheinen.
Wie funktioniert das mit der CustomActionGroup?
Im Prinzip wird die CustomActionGroup einfach dafür verwendet die CustomActions zu einer Gruppe zu verpacken. D.h. eine CustomActionGroup kann mehrere CustomAction Definitionen enthalten. Das Gerüst für eine Custom Action Group sieht wie folgt aus:
<CustomActionGroup Description = "Text" Id = "Text" Location = "Text" Sequence = "Integer" Title = "Text"> </CustomActionGroup>
Custom Action Group's verwendet man überwiegen wenn es darum geht einen Link auf einer Settings Page zu verwenden. Der nachfolgende Screenshot verdeutlicht das:
Die Elements.xml dafür sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomActionGroup Description = "Denzman custom action group" Id = "A6B6CAF0-0BAE-42BA-A018-CBA014868CE7" Location = "Microsoft.SharePoint.SiteSettings" ImageUrl="/_layouts/images/siteToc/denzman_icon.png" Sequence = "1000" Title = "Denzman features"> </CustomActionGroup> <CustomAction Id="A6B6CAF0-0BAE-42BA-A018-CBA014868CE9" Description="Display Table of contents for this site and it's webs." Title="Show TOC" Location="Microsoft.SharePoint.SiteSettings" GroupId="A6B6CAF0-0BAE-42BA-A018-CBA014868CE7" Sequence="1000"> <UrlAction Url="~site/_layouts/siteTOC/showTOC.aspx"/> </CustomAction> </Elements>
Mit HideCustomAction lassen sich existierende Elemente der Benutzeroberfläche entfernen/verstecken. Meistens wird das verwendet um die Benutzeroberfläche klarer zu gestalten, so dass man entweder nicht so viele Elemente sieht, oder als weiteren Grund, dass man diese gar nicht erst über die entsprechende CustomAction nutzen kann. Natürlich bleibt die Funktion hinter der CustomAction erhalten, so dass eine mögliche Application Page weiterhin verfügbar bleibt. Jedoch in dem Fall dann zumindest nicht mehr über die CustomAction die man versteckt hat. Es handelt sich also nicht um eine Art Schutz vor unbefugtem Zugriff!
Eine HideCustomAction wird wie folgt beschrieben:
<HideCustomAction GroupId = "Text" HideActionId = "Text" Id = "Text" Location = "Text"> </HideCustomAction>
Mehr zur Beschreibung und Definition von HideCustomAction liest man am besten auf der Microsoft Seite nach.
Fazit
Mit Custom Action's lässt sich eine Menge anstellen. Egal, ob man einen Link platzieren, oder verstecken möchte, beides ist möglich. Gezielt eingesetzt kann damit die Benutzerfreundlichkeit in SharePoint verbessert werden, wenn man es jedoch übertreibt, bewirkt es das Gegenteil!


Keine Kommentare:
Kommentar veröffentlichen