CodeFest.at Feed – Andreas Aschauer

In dieser Kategorie befinden sich alle Beiträge, welche von Andreas Aschauer im Auftrag der Microsoft Developer and Platform Group (DPE) Österreich erstellt wurden. Die Beiträge sind im Original auf www.codefest.at auffindbar.

Für alle “echten” SharePoint Entwickler und all jene die es noch werden wollen gibt es mit SharePoint Stack Exchange ein neues Forum mit Diskussionen und Antworten rund um die täglichen Schwierigkeiten, im Leben eines SharePoint Developers.

Das Forum ist noch recht neu, aber es tummeln sich schon viele Fragen und besonders Antworten und nach erster Durchsicht, finde ich viele Dinge welche interessant sind.

Auch vom offiziellen Microsoft SharePoint Team Blog empfohlen.

Happy Easter & SharePoint’ing

Im ersten Teil der SharePoint Development Basics haben wir eine einfache Site Definition erstellt und auch schon globale Konfigurationen wie die Navigationsleisten und aktivierten Features inklusive Feature-Properties vorgenommen.

Nun gehts weiter, die Site mit Inhalten zu befüllen – im Konkreten sind das WebPartPages und die dazugehörigen WebParts sowie beliebige weitere Dateien, welche die Site ausmachen (Bilder, Skripts, Infopath Formulare,..).

Um Dateien in SharePoint zur Verfügung zu stellen, werden Modules verwendet. Ein Module ist ein Element eines Features (oder einer SiteDefinition) und gibt eine oder mehrere Dateien an welche in eine gewisse Liste oder Bibliothek und somit in die SharePoint Content Datenbank wandern.

Ein einfaches Modul sieht in XML folgendermassen aus.

   1: <Module Name="DefaultBlank" Url="" Path="">

   2:     <File Url="default.aspx"/>

   3: </Module>

Abbildung 1 zeigt die physische Struktur der dazugehörigen Dateien im Visual Studio Solution Explorer. Die Datei default.aspx liegt im selben Verzeichnis wie onet.xml in der das Module definiert ist. Mittels des Path Attributs kann ein abweichender Pfad (relativ von onet.xml / feature.xml) angegeben werden. Das URL Attribute definiert den Pfad und Namen, so wie die Datei in SharePoint landet. Gibt man hier einen Pfad an werden entsprechende Unterordner erstellt.

image

Das Modul lädt die Datei default.aspx in die SharePoint Farm, und zwar in den Root Folder der SiteCollection, sodass dies die neue Startseite wird – Standardmässig ist immer die ASPX Datei unter ~sitecollectiondefault.aspx die Startseite in SharePoint. Solange das “Publishing Feature” nicht aktiviert ist. Dann werden nämlich alle Seiten aus der “Pages” Bibliothek geladen, da sie dort versioniert sind.

Das folgende Snippet zeigt wie man Dateien in Bibliothken lädt und auch eventuelle Properties mitgiebt – hier am Beispiel einer Masterpage, welche in die spezielle “Masterpages” Catalog Bibliothek geladen wird.

   1: <!-- Masterpage -->

   2: <Module Name="MasterPages" Url="_catalogs/masterpage" Path="" RootWebOnly="TRUE">

   3:     <File Url="MaPortal_Master.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE">

   4:        <Property Name="ContentType" Value="$Resources:cmscore,contenttype_masterpage_name;" />

   5:        <Property Name="Title" Value="$Title$" />

   6:        <Property Name="PublishingPreviewImage" Value="$PublishingPreviewImage$" />

   7:        <Property Name="MasterPageDescription" Value="$MasterPageDescription$" />

   8:      </File>

   9: </Module>

Wichtig, wenn man Dateien in Bibliotheken lädt ist, darauf zu achten, dass man Sprach-Unabhängig ist. Die URLs vieler Bibliotheken sind lokalisiert, die Pages Bibiliothek heisst auf Deutsch Seiten und hat eine entsprechende unterschiedliche URL. Diese Werte lassen sich aus den Resourcendateien laden. Möchte man die URL von Listen lokalisieren sieht das so aus:

   1: $Resources:core,lists_Folder;

Dies führt auf Englischen Systemen zur Zeichenkette “/Lists” auf Deutschen zu “/Listen”.

Zu beachten hierbei ist auch das Type Attribut. ALLE Inhalte von Bibliotheken MÜSSEN “GhostableInLibrary” sein, das bedeutet sie können in die Content DB wandern. Vergisst man das Attribut, erscheint die Datei einfach nicht.

Ein Modul fasst also eine oder mehrere Dateien zusammen, welche zur Verfügung stehen sollen.

Noch interessanter ist die Möglichkeit, gleich WebParts auf diesen Seiten zu platzieren.  Die Seite default.aspx soll ein Custom WebPart in der Webpartzone “Top” anzeigen. Dazu reicht folgendes XML Snippet

   1: <!-- Announcement WebPart-->

   2:         <AllUsersWebPart ID="AnnouncementOverview" WebPartZoneID="Top" WebPartOrder="1">

   3:           <![CDATA[ 

   4:             <webParts>

   5:               <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">

   6:               <metaData>

   7:                 <type name="MaPortal.Features.Common.WebParts.Announcements.Announcements, MaPortal.Features, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7e79f463b7614c02" />

   8:                 <importErrorMessage>Cannot import this Web Part.</importErrorMessage>

   9:               </metaData>

  10:               <data>

  11:                 <properties>

  12:                   <property name="Title" type="string">Ankündigungen</property>

  13:                   <property name="Description" type="string">Zeigt Globale, Bereichs- und Abteilungsweite Ankündigen an</property>

  14:                 </properties>

  15:               </data>

  16:             </webPart>

  17:             </webParts>

  18:           ]]>

  19:         </AllUsersWebPart>

Woher kommt das Markup?? Ganz einfach – im WebPart Katalog in der SharePoint WebUI das entsprechende WebPart wählen > View XML – fertig. Das Markup kann direkt in eine CDATA Sektion kopiert werden, wie oben ersichtlich.

Genug zu den SiteDefinitions – sie sind einfach cool und praktisch und man sollte spätestens jetzt am Ende dieses Artikels erkannt haben, wie sehr sie ein Deployment vereinfachen. Sehr viel Code aus “Feature Event Handlers” wird damit verschwinden und auch das eine oder andere selbst gebastelte Skript.

Weiter gehts im nächsten Teil mit InfoPath Forms!

Happy SharePoint’ing!

„Build Know-how & Create Connections“ — unter diesem Motto steht Österreichs größter SharePoint Community-Treffpunkt, die Microsoft SharePoint Konferenz vom 8.-9. Juni 2011 in Wien. Profitieren Sie von umfangreichem Know-how auf 3 parallelen Tracks und nutzen Sie die Gelegenheit, um Erfahrungen auszutauschen und jede Menge neue Kontakte zu knüpfen.

Infos und Anmeldung unter http://www.microsoft.com/austria/sharepointkonferenz/2011/

Ich werde mit 2 Sessions dabei sein

SharePoint Developer Roadmap – A Birds eye view

Testing & Debugging with SharePoint – Effizienter entwickeln

Wenn alles klappt, gibt eine “Überraschung” für die österreichische SharePoint Community, die die Community rund um SharePoint in AT etwas belegt hoffentlich. *nixverrat*

Sprache

SharePointTrench Latest