Posts mit dem Label WCM werden angezeigt. Alle Posts anzeigen
Posts mit dem Label WCM werden angezeigt. Alle Posts anzeigen

23 April 2010

Neues Page Layout mit SharePoint 2010

Bereits seit SharePoint 2007 kann für strukturierten Content, welcher auf öffentlich zugänglichen Internet Sites angezeigt werden soll, eine Vorlage erstellt werden. Das Konstrukt nennt sich Page Layout und definiert das Mapping zwischen SharePoint Columns sowie der Anzeige- bzw. Edit-Ansicht. Der Vorteil daran ist, dass die strukturierten Daten dabei nicht in einem grossen Rich Text Block abgelegt sondern in einzelne Columns in SharePoint Listen geschrieben werden. Damit können z.B. Produkte, Personen, Projekte, Publikationen oder News abgebildet werden.

Heute möchte ich euch zeigen, wie mit Visual Studio 2010 ein Page Layout für SharePoint 2010 erstellt werden kann. Beide Produkte setze ich in der RTM Version ein.

Ich starte mit einem “Empty SharePoint Project”.

image

Page Layouts können wahlweise als Sandboxed Solution oder Farm Solution deployt werden.

image

Als erstes fügen wir ein SPI für die Columns hinzu. Da uns Visual Studio 2010 kein Template zur Verfügung stellt, wählen wir “Empty Element”.

image

In die Datei Elements.xml fügen wir nun unsere SharePoint Spalte (Column oder Field) ein. Wichtig ist, dass sowohl ID also auch Name eindeutig sind. Für die ID kann der GUID Generator verwendet werden. Er ist zwar in den Standardeinstellungen nicht mehr über das Visual Studio Menu erreichbar, ist aber unter C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\guidgen.exe zu finden.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field ID="{7F9CF172-B2FA-42C0-81D4-EA3CD2C6CF94}"
Name="WCMLocation"
DisplayName="Location"
Type="Text" />
</Elements>

Nun erstellen wir einen Content Type, in welchen wir unsere beiden Columns aufnehmen werden.

image

Wir vererben dabei von “Article Page”.

image

In der Datei Elements.xml müssen wir für jedes Spalte einen FieldRef Eintrag machen. Zwingend sind die Attribute ID und Name.


<FieldRefs>
<FieldRef ID="{7F9CF172-B2FA-42C0-81D4-EA3CD2C6CF94}" Name="WCMLocation" />
<FieldRef ID="{D720A9AC-D633-4FAB-BC03-309458A2D6C3}" Name="WCMNoEmployee"/>
</FieldRefs>

Nun können wir die Solution deployen (Ctrl+F5, Debug ist nicht notwendig) und erstellen so Site Columns und Content Type.


Über den Server Explorer können wir die SharePoint Site registrieren und die Content Types anzeigen.


image

In der Visual Studio Gallery gibt es eine Erweiterung (Imtech Create Page Layout Content Type Extension, thanks to Mastykarz Waldek), welche uns beim Erstellen des Page Layouts hilft. Nach der Installation haben wir im Server Explorer auf den Content Types ein Contentmenu Eintrag “Create Page Layout”. Um später die Master Page Gallery im Server Explorer durchsuchen zu können, benötigen wir noch die Imtech Master Pages and Page Layouts Extension.

image

Dies generiert uns ein “nacktes” Page Layout mit allen Feldern des Page Layouts. So finden wir unsere zwei Felder wieder.

image

Um das Page Layout abzuspeichern, müssen wir ein weiteres SPI erstellen. Diesmal vom Typ “Module”. Damit lassen sich beliebige Dateien in unterschiedliche Libraries wie Master Page Gallery, Web Part Gallery oder Style Library deployen.
image
Wir speichern das Page Layout im Ordner des Modules und nehmen es in das Visual Studio Projekt auf. (Um es anzuzeigen, im Solution Explorer auf “Show all Files” klicken.)
image
Nun gilt es den Inhalt des Modules anzupassen. Hierzu öffnen wir das Elements.xml im SPI WCMPageLayout. Folgende Anpassungen sind notwendig.
  • Das Url Attribut von Module muss auf “_catalogs/masterpage” zeigen.
  • Das Url Attribut von File muss direkt auf die Datei zeigen.
  • In einem neuen Property Element geben wir den Content Type des Files an. Wir sagen da, dass es sich bei dieser Datei um ein “Page Layout” handelt.
  • In einem weiteren Property Element definieren wir das Preview Image (mehr dazu weiter unten, dieses Property kann auch wegelassen werden).
  • In einem weiteren Property Element sagen wir, zu welchem Content Type dieses Page Layout gehört. Den Content Type geben wir mit folgender Syntax an:
    ”;#[Name des Content Types];#[Content Type ID];#”

<Module Name="PageLayouts" Url="_catalogs/masterpage">
<File Path="WCMPageLayout\IsolutionsWCMWcmbranchoffice.aspx" Url="IsolutionsWCMWcmbranchoffice.aspx" Type="GhostableInLibrary" >
<Property Name="Title" Value="Branch Office" />
<Property Name="ContentType" Value="$Resources:cmscore,contenttype_pagelayout_name;" />
<Property Name="PublishingPreviewImage" Value="~SiteCollection/_catalogs/masterpage/Preview Images/PreviewBranchOffice.png, ~SiteCollection/_catalogs/masterpage/Preview Images/PreviewBranchOffice.png" />
<Property Name="PublishingAssociatedContentType" Value=";#ISolutions.WCM - WCMBranchOffice;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D00257e2b4db7dd4475939d98af964111c3;#"/>
<Property Name="MasterPageDescription" Value="Page Layout for Branch Offices" />
</File>
</Module>

Das Preview Image können wir auch gleich in dieses Module aufnehmen.


<Module Name="PreviewImages" Url="_catalogs/masterpage" Path="" RootWebOnly="TRUE">
<File Path="WCMPageLayout\PreviewBranchOffice.png" Url="Preview Images/PreviewBranchOffice.png" Type="GhostableInLibrary" />
</Module>


Um das Page Layout einzusetzen, müssen wir einer Page Library unseren Content Type zuweisen.
image
Bearbeiten wir eine Page können wir nun über den Ribbon Button “Page Layout” ganz einfach das Page Layout anpassen.
image
Unser Page Layout sieht natürlich noch ziemlich öde aus. Wir können aber bereits unsere Daten strukturiert erfassen.
image
Jetzt kann der Graphiker an die Arbeit und das Page Layout gemäss den Vorstellungen des Kunden gestalten.
Wenn gewünscht können die verfügbaren Page Layouts auch in den Site Settings unter “Look and Feel” \ “Page Layout und Site Template Settings” angepasst werden.
Sind alle notwendigen Page Layouts erstellt, kann eine Site entsprechend den Vorgaben konfiguriert werden (d.h. Content Types auf Pages Libs, Page Layouts einschränken, Approval Workflow konfigurieren) und als Site Template abgespeichert werden. Dieses Template (neu als WSP, kann auch in Visual Studio bearbeitet werden) kann dann in der Folge für das Erstellen der neuen Sites verwendet werden.
Fazit: Den Vorteil von Page Layouts hatten wir bereits mit SharePoint 2007. Auch das Deployment als WSP war unter SharePoint 2007 via WSP möglich. Mit dem 2010er Wave haben wir aber bei der Paketierung und beim Deployment einen grossen Schritt in die richtige Richtung gemacht. Bleibt zu hoffen, dass uns in Zukunft ein paar Visual Studio Extensions das Leben noch weiter erleichtern. Ein dem CKS: Development Tools Edition haben sich die Entwickler solcher Erweiterungen jedenfalls bereits gefunden.

22 Oktober 2009

WCM mit SharePoint 2010

Die Neuerungen im Bereich WCM bleiben bescheiden – das Konzept wurde nicht grundlegend überarbeitet. In meinen Augen war dies auch nicht notwendig. SharePoint 2010 wird zur echten WCM Plattform.

Standards

SharePoint 2010 setzt auf Standards. Dank XHTML sowie WCAG 2.0 AA kann eine behindertengerechte Website viel einfacher realisiert werden. Natürlich lassen sich somit die graphischen Anpassungen auch viel einfacher umsetzen. Ein weiterer Vorteil ist der Crossbrowser Support – auch für die Author- und Adminseiten.

Master Page / Page Layout

Master Pages und Page Layouts stehen uns auch weiterhin zur Verfügung. Out-of-the-Box werden heute Master Pages mitgeliefert, auf welche man auch für WCM Projekte aufbauen kann.

Content Authoring

Das Erfassen des Contents wurde massiv verbessert. Alle Funktionen werden über Ribbon angeboten. Ein Live Preview zeigt die Änderungen der Formatierungen sofort an. Auch Copy & Paste aus Office Applikationen funktioniert (besser).

Auch der Einfügen von Bildern ab der lokalen Festplatte geht einfacher von der Hand. Auch Silverlight Movies lassen sich einfach einbinden. Übrigens lassen sich Streaming Medien nun auch auf dem Frontendserver zwischenspeichern, was den Datenbankserver entlasten.

Das Approval erfolgt weiterhin via Workflow. Dieser kann nun aber viel einfach erweitern und customized werden – ob mit Visio, SharePoint Designer oder Visual Studio.

Variations

Das Konzept der Variations wurde nicht verändert. Dafür wurde hinter den Kulissen einiges an der Stabilität und den Tools gearbeitet. Bereits mit SP2 wurde eine STSADM Erweiterung lanciert, um die Variations zu fixen. In SharePoint 2010 wird die Releationships Liste überarbeitet und es gibt noch ein neues Tool für Fixes.

Content Query Web Part

Das CQWP (isolutions´ favorite) lebt weiter und wurde ausgebaut. Out-of-the-Box kann es bedeutend bequemer eingesetzt werden. Dank den Verbesserungen beim Zugriff auf Listen (inkl. der Möglichkeit, sehr grosse Listen anzulegen), erwarten uns da auch keine Performanceprobleme.

Content Deployment

Auch das Sorgenkind von MOSS 2007 RTM – das Content Deployment – hat sich in der Zwischenzeit gemausert. Viele Fixes wurden mit Service Packs und Cumulative Updates bereits ausgeliefert. In SharePoint 2010 kommt zusätzlich noch die Möglichkeit eines echten Datenbank Snapshots hinzu.

02 Oktober 2009

Fix Variations Editor

Variations sind ein tolles Konzept um mehrsprachige SharePoint Websites (WCM Sites) zu realisieren. Variations vereinfachen den Publikationsprozess und stellen die Relation zwischen den einzelnen Seiten in den verschiedenen Sprachen (Variation Labels) sicher. Die Relation zwischen den einzelnen Seiten wir in einer hidden List im Site Collection Root abgelegt.

Teilweise werden diese Einträge bei Änderungen an den Seiten z.B. umbenennen einer Seite nicht korrekt aktualisiert und es entstehen Inkonsistenzen zwischen den einzelnen Sprachvariationen der Seiten.

Auf dem Markt gibt es verschiedene Tools um solche Probleme zu lösen, doch heute habe ich meinen Favoriten entdeckt. Das Tool nennt sich Variations Editor und kann bei der SharePoint User Group gratis heruntergeladen werden. Das Tool zeigt nach einem Scan alle Fehler innerhalb einer Site Collection an und ermöglicht auf eine einfache Art die Korrektur der Fehler.

Download Variations Editor

28 März 2008

WCM Approval Configrator

Today I wrote a small application which will allow you to set some of the approval workflow settings on a per-site base. This apps will modifiy the workflow association for you on every "Pages" library in the selected sites.

You have the possibility to enable or disable the approval workflow, choose the participants of the workflow and allow or disallow to change the participants lists on workflow start.

I created this application to configure the approval workflow on a customer site. If you want you can download and extend the source code. You will see, that the association data is stored in a XML and with a little debugging you will be able to also modify the other parameters.

Here you can download the application including source code and Visual Studio 2008 project.

Update 10/17/2008: I moved the code to an ASPX, packed as WSP and uploaded to CodePlex. You can find the download on the MOSSApprovalConfig project site.

24 März 2008

how to: avoid loading “name.dll” active X component in anonymous WCM scenarios

just imagine.. after hard weeks of SharePoint development you configure your anonymous authentication provider to publish your web app anonymously to the internet. After you first browse your site, it wants to install an active x component named "name.dll". this component is loaded by core.js. The component then tries to fetch the availability information of Microsoft Office Communicator. I don't think your anonymous users will use this functionality. ;-)

Let's have a look at the problem:

In case of performance optimization you should never load core.js in anonymous WCM scenarios. SharePoint also tries to load other unnecessary stuff.

A nice way to avoid this is the MossCleanup HTTP Filter. Information on how to implement this: http://www.ie-soft.de/blog/PermaLink,guid,968b0588-f306-467b-be51-54f7a8f2079d.aspx

Fallback: If you need the core.js for any reason, just add this piece of javascript to your masterpage and "name.dll" wont be loaded anymore.

<!-- Avoid calling name.dll ActiveX -->

<script language="javascript" type="text/javascript">

function ProcessImn(){}

</script>


28 Dezember 2007

WebPartZone Adapter

Some weeks ago, the Accessibility Kit for SharePoint (AKS) was released. Unfortunately the AKS didn't solve all our problems. If you try to build a public website with Micorsoft Office SharePoint Server 2007 (MOSS) and pay attention to a clean structure of your HTML code (say: no table), perhaps this piece of code you help you!

When you place WebParts on your public website, then these WebParts are rendered in a HTML TABLE. This is because WebParts are placed in a WebPartZone and these are rendered with tables.

This behavior can be fixed with a ControlAdapter. Our ControlAdapter render the WebPartZone in a HTML DIV, if the user (logged-in or anonymous) is viewing the page. If the author edits the page, then the WebPartZone is rendered the "traditional" way. With this trick, we have a clean and modern HTML structure and the author have still all the (drag&drop-) functionality while editing the page.

Copy the following C# code in a file called AKS_WebPartZone_Adapter.cs and place it in the AppCode directory under your server root directory (like C:\Inetpub\wwwroot or C:\Inetpub\wwwroot\wss\VirtualDirectories\80).


Now you have to edit the compat.browser file which in the AppBrowser directory located in your server directory and add the following piece of code after the opening tag:
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.WebParts.WebPartZone"
adapterType="AKSAdapters.AKS_WebPartZone_Adapter" />
</controlAdapters>
</browser>