code it

Martins Tech Blog

Erstellung eines eigenen Listen-Templates auf Basis eines bestehenden Listen-Templates

In meinem letzten Post hab ich darüber geschrieben, wie man einen EventReceiver im SharePoint erstellt und an eine Dokumentenbibliothek bindet. Der Nachteil dieses Vorgehens ist, dass der Receiver dann bei allen Dokumentenbibliotheken in der Site in der das Feature aktiviert wurde anschlägt. Manchmal möchte man aber nur, dass bestimmte Dokumentenbibliotheken betroffen sind.

In der Featuredefinition wird der EventReceiver immer an eine bestimmte ListTemplateId gebunden. Um das Ziel zu erreichen, muss man ein eigenes ListTemplate erstellen. Die bestehenden ListTemplates sind als Features vorhanden. Ein eigenes Template kann man erstellen, indem man sich Feature-Dateien selbst erzeugt oder indem man einfach eine bestehende Definition kopiert und anpasst. Als Beispiel soll die Standard-Dokumentenbibliothek dienen. Das dazugehörige Feature findet sich unter 12/Template/Features/DocumentLibrary. Zur Erstellung einer angepassten Kopie des Features kopiert man den kompletten Ordner und passt sich diesen nach seinen Wünschen an.

Zunächst wird der Hauptordner so umbenannt, wie das Feature künftig im stsadm angesprochen werden soll. Im Beispiel soll das "MyOwnDocumentLibrary" sein.
Im Anschluss daran öffnet man die feature.xml und vergibt hier einen sprechenden Titel, eine passende Beschreibung und eine neue Guid.

Die feature.xml verweist auf die Datei DocumentLibrary.xml. Auch in dieser sind Anpassungen vorzunehmen. Unter DisplayName vergibt man eine sprechende Bezeichnung, bei Description einen passenden Beschreibungstext. Und nun wird es interessant: Type ist die neue ListTemplateId. Hier verwendet man am besten eine Id größer als 10000, um nicht mit den eigenen Ids des SharePoint in Konflikt zu geraten. Auch bei Name sollte man einen neuen Namen vergeben.

Wichtig ist, dass der hier vergebene Name dem Namen des Ordners im Dateisystem entspricht, in dem die schema.xml liegt. Deshalb ist im Beispiel auch dieser Ordner in mydoclib umbenannt worden. Da die Spalten und Eigenschaften der Standard-Dokumentenbibliothek übernommen werden sollen, werden die Dateien innerhalb dieses Ordners nicht angepasst. Die finale Struktur sollte ähnlich der folgenden aussehen.

Das war auch schon die Feature-Definition. Nun muss das Feature noch installiert und aktiviert werden. Dazu kopiert man den Ordner unter dem neuen Namen wieder nach 12/Template/Features. und aktiviert und installiert das neue Feature mit den passenden stsadm-Befehlen.

stsadm -o installfeature -name MyOwnDocumentLibrary -force
stsadm -o activatefeature -name MyOwnDocumentLibrary -url http://localhost

Nun steht unter Create der neue Bibliothekstyp zu Verfügung.

Alle Listen dieses Typs haben jetzt die neue TemplateId an die man spezielle Features (z.B. EventReceiver) binden kann.

Kommentar schreiben

Loading