Archiv für den Monat: Oktober 2012

Office 2013 erreicht RTM-Status

Wie das Office-Team in seinem Blog berichtet hat die Office-Palette in der Version 2013 RTM-Status erreicht. Das bedeutet, dass in den nächsten Monaten die Auslieferung an alle Kunden anlaufen wird, generelle Verfügbarkeit wird zum 1. Quartal 2013 angestrebt.

Dieses Release umfasst dabei nicht nur die Client-Applikationen, sondern auch alle damit zusammenhängenden Serverkomponenten:

  • SharePoint 2013
  • Lync 2013
  • Exchange 2013

Alle, die ab dem 19. Oktober Office-Lizenzen erwerben erhalten kostenlose Upgrade-Gutscheine für Office 2013. Die Auslieferung aller Versionen beginnt Mitte November für die TechNet-, MSDN-Kunden und solche mit Software Assurance. Für Office 365-Kunden beginnt die Umstellung mit dem nächsten Service-Release ab Mitte November.

Suche zur Auflistung aller Site Collections verwenden

Oft werde ich gefragt, wie man die Navigation in SharePoint einfacher gestalten kann, oder ob es nicht möglich sei, eine ganze Liste aller verfügbaren Websites anzuzeigen, auf die ein Benutzer Zugriff hat.

Personen mit Entwickler-Kenntnissen würden nun u.U. direkt zu Visual Studio greifen und ein WebPart schreiben, schließlich gibt es doch im Objektmodell alles: Ich kann auf alle Webs zugreifen und dort über die Methode DoesUserHavePermission() die Berechtigung prüfen. Damit befülle ich dann einfach eine DropDown-List.

In diesem Beitrag möchte ich jedoch zeigen, dass es auch mit Standardmitteln in Verbindung mit der Suche ganz einfach ist. Und zudem funktioniert es, denn die obige Methode hat einen großen Nachteil: Sie funktioniert nur in sehr kleinen Umgebungen zuverlässig. Sobald Sie eine große Anzahl Site Collections habe (>30-40) werden Sie sehr schnell einen Performanceeinbruch bemerken, die Auflistung dauert dann gefühlte Ewigkeiten und belastet das System enorm.

Für die Lösung benötigen wir Folgendes:

  • Ein Query zum Finden aller Site Collections
  • Das WebPart “Kernergebnisse der Suche”
  • Ein eigenes XSL-Template

Das Query

Um alle Site Collections zu finden, auf die ein Benutzer Zugriff hat, müssen wir nur auf die Site Collection Typen einschränken, die Berechtigungsprüfung ist bereits eingebaut. Hierzu verwenden wir das Managed Property “contentclass”. In diesem Artikel sind mögliche Werte beschrieben, unser Query lautet damit:

Contentclass:STS_Site

Das WebPart

Das CoreResults-WebPart wird auf einer beliebigen Page plaziert, eben dort, wo Sie das DropDown haben möchten:

In den WebPart-Properties muss dann ein Fixed Query angegeben werden (Abfrageoptionen für Ergebnisse à Feste Stichwortabfrage), hier wird unser Query von oben eingetragen. Zudem muss die Location Visualization deaktiviert werden (Eigenschaften anzeigen à Speicherortvisualisierung verwenden)

Das XSL-Template

Und nun kommt der schwierige Teil. Wir benötigen ein XSL-Template, das eine DropDown-List befüllt und zudem ein kleines JavaScript zur Weiterleitung an die URL hinterlegt. Hier steckt der größte Aufwand, ich poste den Code dafür direkt hier:

Dieser Code muss in den WebPart-Properties im XSL-Editor eingetragen werden. Den Quelltext habe ich hier zum Download zur Verfügung gestellt.

Das Ergebnis

Alles zusammen sieht dann wie gewünscht aus:

Dies kann natürlich auch Teil einer MasterPage sein, wobei man hier eventuell noch ein Caching einbauen sollte, um die Suche nicht zu überlasten.