Das Branding oder Theming in SharePoint 2010 kann nun durch Office Design-Themes realisiert werden. Hierbei werden neben den in Office einstellbaren Farben (Abbildung 1) von SharePoint noch 10 weitere Farben hinzugefügt. Dabei handelt es sich lediglich um hellere bzw. dunklere Abstufungen der gewählten Aspekt-Farben.
Zugegeben es ist schon etwas fummelig das richtige Design im Office zu erstellen, so dass es im SharePoint nach etwas aussieht :) aber es geht.
Ein eigens erstelltes Theme kann einfach in die Themes Gallery hochgeladen und aktiviert werden. Allerdings ist der Weg über ein eigenes SharePoint Feature bequemer für den Kunden und wirkt direkt professioneller. Nur wenige Schritte sind notwendig um ein eigenes Theme zu erstellen und als Feature im SharePoint zu deployen.
Ein Theme erstellen
Themes können in Office Anwendungen wie Excel, Word oder PowerPoint erstellt werden. Nachdem das Theme ausgewählt, angepasst oder von Begin an neu erstellt wurde, speichert man das Theme am einfachsten an einem leicht findbarem Ort – der Standardordner liegt irgendwo tief im Userprofile.
Das SharePoint Projekt erstellen
Visual Studio 2010 verfügt glücklicherweise über die SharePoint Developer Tools, mit deren Hilfe die gewünschte SharePoint Solution im Handumdrehen geschrieben ist. Als erstes benötigen wir ein SharePoint Projekt.
Nach dem Erstellen des neuen Projektes muss ein Modul hinzugefügt werden, welches dafür verantwortlich ist, das Theme in die Themes-Gallery einzuspielen. Auch hierfür bietet VS2010 entsprechende Unterstützung an.
Automatisch legt Visual Studio 2010 nun auch ein Feature an. Dieses Feature ist allerdings auf Web eingestellt. Mit dieser Einstellung lassen sich keine Files in die Theme Gallery hochladen, daher muss im Feature der Scope auf Site umgestellt werden!
Das zuvor gespeicherte Theme (hier DotNetRocksSharePointTheme.thmx) muss nun in das Modul hinzugefügt werden. Dies kann erreicht werden indem man einfach einen Rechtsklick auf das Modul macht und “Add existing item” auswählt. Hier einfach die Themes Datei auswählen die ihr zuvor gespeichert habt.
Zum Abschluss muss im Elements File des Modules noch definiert werden wohin das Theme eigentlich soll.
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="DotNetRocksSharePointTheme" Url="_catalogs/theme" RootWebOnly="TRUE">
<File Type="GhostableInLibrary" Path="DotNetRocksSharePointTheme\DotNetRocksSharePointTheme.thmx"
Url="DotNetRocksSharePointTheme.thmx"
IgnoreIfAlreadyExists="TRUE">
<Property Name="Title" Value="DotNet Rocks SharePoint Theme"></Property>
</File>
</Module>
</Elements>
Somit ist die SharePoint Solution fertig und das neue Theme kann ganz einfach via SharePoint Feature auf unterschiedliche SharePoint 2010 Installationen verteilt werden.
Das neue Theme automatisch aktivieren
Nachdem das Theme automatisch auf den SharePoint Server transferiert wurde, möchte man dieses natürlich nun auch automatisch aktivieren. Durch den Einsatz eines einfachen SharePoint EventReceivers kann man das Theme einfach aktiviert werden. Im Solution-Explorer von Visual Studio 2010 kann ein EventReceiver für ein vorhandenes Feature mittels Rechtsklick auf das Feature einfach hinzugefügt werden.
Das Feature soll während des Aktivierungsvorgangs des SharePoint Features aktiviert werden, daher muss die Methode FeatureActivated implementiert werden.
Im Namespace Microsoft.SharePoint.Utilities steht die Klasse ThmxTheme zur Verfügung welche alle nötigen Funktionalitäten bietet um THMX Themes im SharePoint zu verarbeiten.
Da das Feature auf Site gescoped ist, muss der cast zu SPSite im folgenden Code-Snippet beachtet werden. Wenn Ihr das Feature gar für eine ganze WebApplication oder eine ganze Farm scoped, dann sollte der cast logischerweise angepasst werden.
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
var site = properties.Feature.Parent as SPSite;
ThmxTheme theme = ThmxTheme.Open(site,
"/_catalogs/theme/DotNetRocksSharePointTheme.thmx");
theme.ApplyTo(site.RootWeb, true);
}
Wenn ihr das Theme für mehr als nur das RootWeb aktivieren möchtet, müsst ihr über alle SPWeb’s der site laufen und die Methode theme.ApplyTo() entsprechend oft ausführen.
Wenn es mal mehr sein soll
Zwar kann man mit den Office Themes schon einiges im SharePoint 2010 stylen, allerdings sind so einfache Dinge wie alternierende Zeilenfarben leider nicht über Office Themes möglich. Doch auch hierfür gibt es eine Lösung. Im nächsten Post werdet ihr erfahren wie ihr weitere Elemente im SharePoint stylen und an das zu erstellende Branding anpassen könnt.
Technorati-Tags:
SharePoint,
Themes