Mein Blog ist umgezogen

Nachdem mein Blog seit mittlerweile einigen Jahren auf einem eigenen SharePoint 2010 mit CKS:EBE lief, mußte ich mir doch langsam Gedanken um eine Migration machen. Mit einigem Gewürge bekommt man dieses Konstrukt auch auf SharePoint 2013 zum Laufen, aber ich wollte das dann doch nicht ewig so weiter treiben. Praktischerweise hatte René Hézser vor einiger Zeit genau dasselbe Problem und auch gleich die Lösung: er entwickelte ein Tool, das SharePoint-Blogs mit allem drum und dran nach WordPress migriert. Die Beschreibung und den Download findet man hier in Renés Blog. Ich habe es getestet und es hat auf Anhieb funktioniert – ich hätte aber auch nichts anderes erwartet 🙂

Und damit werden meine Beiträge zukünftig hier erscheinen. An der alten Stelle ist eine Weiterleitung eingerichtet. Leider ist es mir dabei nicht gelungen, die einzelnen Beiträge auf sich selbst weiterzuleiten. D.h. alle alten Links werden jetzt auf die neue Startseite geleitet. Ich kann das leider nicht ändern. Ich werde versuchen im Laufe der Zeit alle mir bekannten Links anzupassen.

Und noch die Bitte: wenn jemand falsche Links innerhalb der Seiten oder auch sonstwo findet, sendet mir bitte eine kurze Nachricht oder hinterlaßt einen Kommentar.

Sollte ich mal etwas Zeit übrig haben (also wahrscheinlich nie 🙂 ), kümmere ich noch etwas um das Design.

SharePoint Multiclient Anwenderstudie 2016

Die Hochschule der Medien Stuttgart führt wieder eine Online-Befragung durch und auch dieses Mal auch von mir der Aufruf mitzumachen. Es gibt wieder etwas zu gewinnen!

Auf der Seite heißt es dazu:

die Verbreitung der Portalsoftware Microsoft SharePoint ist in den letzten Jahren enorm gestiegen.

Die Frage ist: Wie zufrieden sind die Kunden? Dieser Thematik geht die Hochschule der Medien unter der Leitung von Prof. Dr. Thorsten Riemke-Gurzki und Prof. Dr. Arno Hitzges in der vorliegenden Befragung nach.

Ziel ist es, die Meinung der tatsächlichen Anwender zu erfragen, um auf Grundlage der Aussagen Rückschlüsse auf den Prozess der Nutzung von Intranet und Unternehmensportalen und der Integration von Microsoft SharePoint vornehmen zu können.

Anwenderstudie SharePoint 2014/2015

Die Hochschule der Medien in Stuttgart führt eine Online-Befragung zur Kundenzufriedenheit durch und hat mich gebeten, mit zur Verbreitung beizutragen. Deshalb hier der Aufruf: bitte nehmt an der Befragung teil! Es gibt auch etwas zu gewinnen!

Auf der Seite heißt es dazu:

die Verbreitung der Portalsoftware Microsoft SharePoint ist in den letzten Jahren enorm gestiegen.

Die Frage ist – wie zufrieden sind die Kunden? Dieser Frage geht die Hochschule der Medien unter der Leitung von Prof. Dr. Thorsten Riemke-Gurzki und Prof. Dr. Arno Hitzges in der vorliegenden Befragung nach.

Ziel ist es, die Meinung der tatsächlichen Anwender zu erfragen, um auf Grundlage der Aussagen Rückschlüsse auf den Prozess der Nutzung von Intranet und Unternehmensportalen und der Integration von Microsoft SharePoint vornehmen zu können.

Und hier nochmal der Link zur Befragung.

Meta-Elemente in Veröffentlichungsseiten

In diesem Beitrag soll gezeigt werden, wie man in SharePoint 2010 Veröffentlichungsseiten Meta-Elemente pflegen und ausgeben kann. Der Beitrag soll als Dokumentation zu einem Vortrag bei der SharePoint Usergroup Stuttgart dienen. Dieser wiederum geht auf eine Anfrage von Dennis Scherrer zurück. Dennis hat im Vorfeld auch Recherchearbeit dazu geleistet, deshalb auch hier nochmal ein herzliches Danke dafür.

Was sind Meta-Elemente?

Hier der Link zur englischen Wikipedia-Seite. Eine kurze und prägnante Beschreibung gibt es hier bei Microsoft:

"Metatags sind für den Benutzer nicht sichtbare Codeabschnitte, die von Suchmaschinen häufig zum Indizieren von Websites verwendet werden. Anhand der Metatags können Suchmaschinen die relevantesten Ergebnisse für eine bestimmte Suchanfrage zurückgeben. Zwei wichtige Metatags sind das Tag keyword und das Tag description."

Microsoft spricht hier zwar von Tags, korrekter ist aber die Bezeichnung Elemente, da es sich um eigene Elemente innerhalb des HTML-Quelltextes handelt.

Meta-Elemente werden immer als leere Elemente mit name– und content-Attribut notiert. In der fertigen Seite erscheinen sie so:

<meta name="description" content="Das ist die Beschreibung der Seite" />

SharePoint Veröffentlichungsseiten

Meta-Elemente werden von der On-Premise-Version von SharePoint 2010 nicht direkt unterstützt. In SharePoint Online ist die Unterstützung allerdings eingebaut. Wie man sie benutzt, steht ebenfalls auf der oben verlinkten Seite.

Im Folgenden wird anhand eines Enterprise-Wiki gezeigt, wie man die Unterstützung für Meta-Elemente hinzufügt. Das Enterprise-Wiki wurde gewählt, weil es einfacher strukturiert und damit das Beispiel leichter nachzuvollziehen ist. Die Vorgehensweise läßt sich aber 1:1 auf die "normalen" Veröffentlichungsseiten übertragen.

Websitespalten

Wir brauchen zuerst die Felder, die die Informationen aufnehmen, die wir später als Meta-Elemente ausgeben wollen. Dazu legt man für jedes gewünschte Element eine Websitespalte vom Typ Mehrere Textzeilen an. Wichtig dabei ist, daß bei zulässigem Texttyp Nur-Text gewählt wird. Der Feldinhalt wird später als Attributwert im HTML verwendet und Rich-Text-Formatierungen sind dort nicht erlaubt (und damit sinnlos). Im Beispiel verwenden wir eine Spalte für description und eine für keywords:

Als nächstes müssen wir dafür sorgen, daß wir diese Spalten auch in unseren Wikiseiten verwenden können. Die Seiten im Enterprise-Wiki basieren standardmäßig auf dem Inhaltstyp Unternehmenswiki-Seite. Wir fügen die Spalten also diesem Inhaltstyp hinzu.

Meta-Inhalte pflegen

Man könnte die Daten jetzt pflegen, indem man auf die Seitenbibliothek geht, eine Seite auswählt und ihre Eigenschaften bearbeitet:

Das ist natürlich nicht das, was wir unseren Benutzern anbieten möchten. Die Benutzer wollen auch die Meta-Informationen so pflegen, wie sie die eigentlichen Inhalte der Seite pflegen. Ein Benutzer geht dazu auf die gewünschte Seite und klickt auf das Bearbeiten-Symbol oder den Link Diese Seite berabeiten, wählt Seite bearbeiten aus dem Menü Websiteaktionen oder geht auf den Reiter Seite und dort auf Seite bearbeiten. In jedem Fall wird dadurch die Seite in den Bearbeitungsmodus versetzt und die Inhalte können geändert werden. Allerdings erscheinen unsere Felder noch nicht im Bearbeitungsmodus und können damit nicht mit Inhalt gefüllt werden.

Das Aussehen und Verhalten aller Wikiseiten wird durch die Vorlage EnterpriseWikis.aspx festgelegt. Wir müssen also diese Vorlage bearbeiten, damit wir unsere Felder pflegen können. Dazu öffnet man die Website in SharePoint Designer. Am Einfachsten geht das über Websiteaktionen In SharePoint Designer bearbeiten. Die Vorlage findet man dann im linken Menü unter Seitenlayouts. Man klickt auf EnterpriseWiki.aspx und dann auf Datei bearbeiten. Übrigens findet man unter Seitenlayouts auch die ganzen anderen Vorlagen, die für Veröffentlichungsseiten benutzt werden und die man auf dieselbe Weise bearbeiten kann.

Wenn die Seite geladen ist, sucht man sich eine geeignete Stelle, an der man die Felder zur Pflege einbinden möchte. Im Beispiel wurde der Bereich rechts unterhalb Kategorien gewählt. Die eigentlichen Änderungen macht man dann in der Codeansicht.

Wir möchten unsere Felder nur im Bearbeitungsmodus darstellen. Die Inhalte selbst sollen ja unsichtbar als Meta-Elemente ausgegeben werden. Um etwas nur im Bearbeitungsmodus auszugeben, bietet SharePoint das praktische Control Microsoft.SharePoint.Publishing.WebControls.EditModePanel, das so eingefügt wird:

<PublishingWebControls:EditModePanel class="ewiki-margin" runat="server">
</PublishingWebControls:EditModePanel>

Dieses Control sorgt automatisch dafür, daß sein Inhalt nur im Bearbeitungsmodus in der Seite erscheint. Zur Pflege unserer Felder verwenden wir ein weiteres mitgeliefertes Control: Microsoft.SharePoint.WebControls.FormField. Es wird so eingefügt:

<SharePoint:FormField id="metaDescField" ControlMode="Edit" FieldName="MetaDescription" runat="server"/>

Wichtig sind die Attribute ControlMode, das unbedingt auf Edit gesetzt warden muß, und FieldName, das den internen Namen des Feldes enthalten muß. Als Wert für id kann ein beliebiger Wert verwendet werden.

Das Tagprefix SharePoint steht in der Wikivorlage standardmäßig nicht zur Verfügung. Man muß die notwendige Deklaration noch im Kopf der Seite einfügen:

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

Insgesamt fügen wir zur Pflege der Metainformationen also folgendes ein (hier wurde noch eine Überschrift verwendet):

<PublishingWebControls:EditModePanel class="ewiki-margin" runat="server">
 
<b>Meta-Informationen:</b><br/>
 
<SharePoint:FormField id="metaDescField" ControlMode="Edit" FieldName="MetaDescription" runat="server"/>
 
<SharePoint:FormField id="metaKeyField" ControlMode="Edit" FieldName="MetaKeywords" runat="server"/>
</PublishingWebControls:EditModePanel>

Damit haben wir bereits alles, was wir zur Pflege der Meta-Informationen benötigen. Eine Seite im Bearbetungsmodus sieht dann so aus:

Meta-Elemente ausgeben

Wir müssen jetzt noch dafür sorgen, daß unsere Felder im Kopf der Seite als Meta-Elemente ausgegeben werden. Den Code dazu fügt man in den Platzhalter PlaceHolderAdditionalPageHead ein.

Zum Ausgeben eines bestimmten Feldwertes gibt es ebenfalls ein praktisches Control: Microsoft.SharePoint.WebControls.FieldValue. Es wird so verwendet:

<SharePoint:FieldValue id="metaDescValue" FieldName="MetaDescription" runat="server"/>

Wichtig ist auch hier wieder, daß das Attribut FieldName mit dem internen Namen des gewünschten Feldes belegt wird.

Damit wird allerdings nur der eigentliche Feldinhalt im HTML-Quelltext ausgegeben. Wir brauchen diesen Inhalt aber im content-Attribut eines meta-Elements. Für Meta-Elemente gibt es kein eigenes Control in ASP.NET und wir müssen uns deshalb mit Literal-Controls behelfen. Mit einem Literal kann man direkt HTML-Text erzeugen. Wir verwenden also jeweils ein Literal um den Teil des meta-Elements vor und hinter dem eigentlichen Feldwert auszugeben. Es sind dann so aus:

<asp:Literal ID="metaDesc1" runat="server" Text="&lt;meta name=&quot;description&quot; content=&quot;"/>
<SharePoint:FieldValue id="metaDescValue" FieldName="MetaDescription" runat="server"/>
<asp:Literal ID="metaDesc2" runat="server" Text="&quot;&gt;"/>

Damit haben wir alles, um in einem Enterprise-Wiki Meta-Informatione zu pflegen und korrekt als meta-Elemente in der Seite auszugeben. Die genannten Anpassungen müssen allerdings in jeder Websitesammlung neu durchgeführt werden. Bei Veröffentlichungsseiten ist das etwas umfangreicher als beim Enterprise-Wiki, weil mehr Inhaltstypen und mehr Seitenvorlagen verwendet werden.

Fertige Lösung

Dennis ist bei seinen Recherchen auf eine kostenlose Lösung gestoßen, die den Prozeß etwas automatisiert, die Mavention Meta Fields. Dabei handelt es sich um eine SharePoint Farm-Solution. Alle Texte sind fest einprogrammiert englisch. Zur Verwendung muß das zugehörige Websitesammlungsfeature aktiviert werden. Dadurch wird ein Delegate Control registriert, das den Platzhalter PlaceHolderAdditionalPageHead ersetzt.

Dieses Control prüft, ob es sich bei der aktuellen Seite um eine Veröffentlichungsseite handelt und falls ja, werden alle Felder der Seite, die zur Gruppe Publishing Meta Tags (fest einprogrammiert) gehören, als meta-Elemente ausgegeben. Als name-Attribut wird dabei der sichtbare Name des Feldes verwendet.

Außerdem fügt das Control im Bearbeitungsmodus ein div-Element in die Seite ein (als Kind des form-Elements). Dieses Element enthält wiederum Controls, die als Pflegemaske für die Felder dienen. Das Element wird dabei durch fest einprogrammiertes CSS positioniert und mittels jQuery 1.4.2 aus- und eingeblendet.

Alle Benutzer einer Websitesammlung anzeigen

In der letzten Version von SharePoint (WSS 3.0 und MOSS 2007) gab es in der Benutzerverwaltung einen Menüpunkt "Alle Personen". Diesen Link gibt​ es in SharePoint 2010 nicht mehr. In Foren wird immer wieder danach gefragt und auch ich selbst habe den Link schon mehrfach vermißt.

Vor Kurzem hat Christian Kaiser im Forum der SharePoint Community die Lösung gepostet (von der ich jetzt nicht mehr behaupten kann, sie selbst gefunden zu haben 😉 ):

Man geht zuerst über Websiteaktionen -> Websiteberechtigungen in die Benutzerverwaltung. Dort klickt man jetzt auf eine beliebige Gruppe und bekommt die Mitglieder dieser Gruppe angezeigt. Wenn man jetzt alle Benutzer der Websitesammlung sehen möchte, ersetzt man einfach in der URL, also in der Adresszeile des Browser, die ID der angezeigten Gruppe durch eine 0 (Null). Et voilà: man bekommt eine Übersicht aller Benutzer.

Die aufgerufene Adresse endet dann also so: MembershipGroupId=0

Vielen Dank dafür nochmal an Christian.