Sandra Erb

 

Die wohl auffälligste Änderung in SharePoint 2010 zu den vorherigen Versionen, ist die Integration der bereits aus den Office Produkten bekannten Ribbon Leiste. Wie so vieles im SharePoint kann auch diese von Entwicklern erweitert und angepasst werden.

Im Folgenden wird ein Beispiel gezeigt, um eine eigene Schaltfläche in die Ribbon Leiste zu integrieren.

Zur Anpassung der Ribbon Leiste wird ein neues Feature mit Visual Studio 2010 erstellt. Dies vereinfacht das spätere Deployment durch die Erstellung einer wsp Datei.

Es empfiehlt sich immer mit einem Projekt vom Typ “Empty SharePoint Project” zu beginnen. Dieses ist flexibel und ermöglicht es, mehrere Features, Webparts etc. zu bündeln.

Neues Empty SharePoint Project

Bei der Erstellung fragt Visual Studio ab, ob eine Sandboxed Solution oder eine Farm Solution erstellt werden soll. Für dieses Beispiel ist eine Sandboxed Solution vollkommen ausreichend. Eine Farm Solution sollte nur dann erstellt werden, wenn die Möglichkeiten der Sandboxed Solution nicht mehr ausreichen.

Sandboxed Solution

Mit dem Visual Studio 2010 wurde das Entwickeln von SharePoint Solutions um ein Vielfaches vereinfacht. Es gibt mehr Templates und eine sehr gute Integration von Standard-Aufgaben in die Oberfläche. So wird beim Erstellen des neuen Projektes z.B. direkt ein “Feature” Verzeichnis angelegt. Mit einem Rechtsklick auf dieses Verzeichnis kann ein neues Feature erstellt werden.

Feature hinzufuegen

Die nun erstellte “Feature1.feature” Datei ist eine Art grafische Oberfläche für die Feature.xml Datei. Diese muss also nicht noch zusätzlich erstellt werden, im Gegensatz zur Elements.xml Datei, welche noch immer selbst geschrieben werden muss. Ein Template für die Elements.xml bekommt man z.B. durch das Hinzufügen eines “Empty Elements”. Ich empfehle an dieser Stelle die Elements.xml Datei immer über diesen Weg einzubinden, das macht die Solution übersichtlich.

New Item

Empty Element

Ein Blick auf das Feature zeigt, dass die Elements.xml Datei automatisch referenziert wurde.

Feature

Nachdem nun alle für das Feature erforderlichen Dateien vorhanden sind, muss die Elements.xml Datei noch mit Leben gefüllt werden.

In der MSDN findet man viele Beispiele zum Anpassen der Ribbon Bar. Darunter auch diese einfache Elements.xml Datei:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
  Id="DemoHelloWorldButton"
  RegistrationType="List"
  RegistrationId="101"
  Location="CommandUI.Ribbon">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
         Location="Ribbon.Documents.New.Controls._children">
          <Button
           Id="Ribbon.Documents.New.Controls.DemoHelloWorldButton"
           Alt="Hello World Ribbon Button"
           Sequence="10"
           Image32by32="/_layouts/images/PPEOPLE.GIF"
           Command="Demo_HelloWorld"
           LabelText="Hello World Demo"
           TemplateAlias="o2"/>
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
         Command="Demo_HelloWorld"
         CommandAction="javascript:alert('Hello World!');" />
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction> 
</Elements>

 

Das CustomAction Element zeigt an, dass eine neue CustomAction hinzugefügt werden soll. Als CustomAction werden z.B. die Erweiterung der SharePoint Oberfläche mit Schaltflächen oder neuen Links in den Settings Seiten bezeichnet.

Über die Attribute RegistrationType und RegistrationId wird bestimmt, für welche Elemente die Custom Action (in diesem Fall die Schaltfläche) sichtbar sein soll. Das Attribut RegistrationType kann die folgenden Werte enthalten:

  • None
  • List
  • ContentType
  • ProgId
  • FileType


Damit wird der Typ angegeben, an den die CustomAction gebunden wird. Die RegistrationId bestimmt dann das konkrete Element. In obigem Beispiel wird die Schaltfläche nur in Dokumentenbibliotheken angezeigt (Typ List und RegistrationId 101).

Eine sehr gute Übersicht über die verschiedenen Registration IDs findet sich z.B. in Mike Smith Blog unter http://techtrainingnotes.blogspot.com/2008/01/sharepoint-registrationid-list-template.html.

Im CommandUIExtension Element wird die eigentliche Schaltfläche definiert. Das CommandUIDefinition Element beinhaltet hierbei die Definition der Darstellung und das CommandUIHandler Element beinhaltet die eigentliche Funktionalität hinter der Schaltfläche.

Das Location Attribut im CommandUIDefinition Element gibt an, an welcher Stelle die Anpassung in der Oberfläche dargestellt werden soll. Im obigen Beispiel wird die Schaltfläche in der Ribbon Leiste auf dem “Document” Tab in der Gruppe “New” angezeigt. Der folgenden MSDN Seite können einige Standardpfade für die Ribbon Elemente entnommen werden: http://msdn.microsoft.com/en-us/library/ee537543.aspx

Das Id Attribut im Button Element muss immer einen eindeutigen Wert haben. Hier empfiehlt sich eine GUID oder eine Mischung aus der Location der Schaltfläche und dem Namen des Features.

Das Sequence Attribut gibt an, in welcher Reihenfolge die Schaltflächen innerhalb einer Gruppe auf der Ribbon Leiste dargestellt werden sollen.

Über die beiden Attribute Image32by32 und Image16by16 werden die Grafiken definiert, welche für die Schaltfläche angezeigt werden sollen. Diese Bilder müssen im Verzeichnis /_layouts/images auf dem Server vorhanden sein (z.B. C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1033\IMAGES bei einer englischen Standardinstallation).

Das Command Attribut im CommandUIDefinition Element identifiziert später die im CommandUIExtension/CommandUIHandler Element definierte Funktion, welche von der Schaltfläche aufgerufen wird. Es ist wichtig, an beiden Stellen den selben Wert für das Command Attribut einzutragen.

Der LabelText ist der Text, der unterhalb der Schaltfläche auf der Ribbon Leiste angezeigt wird. Es empfiehlt sich diese Texte von vornherein zu lokalisieren.

Das TemplateAlias Attribut definiert die Größe und Darstellung der Schaltfläche.

Die Definition des CommanUIHandler Elements ist sehr einfach. Über das Command Attribut wird die Verbindung zur Schaltfläche hergestellt. Daher muss dieses den selben Wert enthalten wie das Command Attribut des Button Elements. Im CommandAction Attribut wird z.B. eine Javascript Funktion angegeben, welche beim Anklicken der Schaltfläche ausgeführt werden soll.

Mehr braucht es nicht. Das Feature kann nun deployed werden. Dies kann auf einer Entwicklungsumgebung direkt aus dem Visual Studio heraus, oder mit Hilfe der Power Shell erfolgen.

VS Deployment

Soll das Feature über die Power Shell deployed werden, so muss zunächst eine wsp Datei erstellt werden. Auch dies kann nun über das Visual Studio 2010 selbst geschehen, es sind keine zusätzlichen Tools mehr nötig. Dazu aus dem Kontextmenü des Projektes den Punkt “Package” auswählen.

20111020_10_package

Ist die wsp Datei erstellt, erfolgt das Deployment über die folgenden PowerShell Befehle:

  1. Add-SPSolution “<Pfad>\CustomRibbonButton.wsp”
  2. Install-SPSolution –Identity CustomRibbonButton.wsp –GACDeployment


Das Feature kann dann wie gewohnt über die Site Features (Site Settings –> Site Features) oder über den PowerShell Befehl “Enable-SPFeature” aktiviert werden.

Die neue Schaltfläche ist jetzt in der Gruppe “New” auf dem “Documents” Tab aller Dokumentenbibliotheken vorhanden und führt wie gewünscht ein einfaches Java Script aus.

20111020_11_works

  • Share/Bookmark