Wenn ein Kunde seine Intranet-Lösung auf SharePoint migriert, wählt er oft einen gestaffeltes Vorgehen in dem MySites erst sehr spät aktiv geschaltet werden. Bevor dies geschieht soll die Personensuche aber meist schon funktionieren. Ein Problem ergibt sich dabei daraus, dass wenn man auf den Namen einer Person auf der Suchergebnisseite klickt, man direkt auf die MySite weitergeleitet wird.
Wir haben dieses Problem über die Userdisp.aspx gelöst. Dies ist die Seite auf die in allen anderen Fällen (z.B. bei Klick auf eine Person in einer Liste) weitergeleitet wird. Von da aus sucht SharePoint die korrekte MySite, falls vorhanden, und leitet weiter. Diesen Mechanismus kann man zum Beispiel über ein Delegate Control im Additional Pagehead ausschalten.
Das konkrete Problem, der Link von der Personensuchergebnisseite, ist damit allerdings noch nicht gelöst. Dies kann aber durch die Veränderung des XSLs des Person Core Result –WebParts gelöst werden. Dazu muss dieses bearbeitet und der XSL-Editor aufgerufen werden (Das XSL ändert man am Besten in einem Texteditor).
Die Url, auf die beim Klick weitergeleitet wird, haben wir durch eine eigene Variable “userDetailUrl” ersetzt:
<a href="{ddwrt:EnsureAllowedProtocol(string($userDetailUrl))} " id="{concat($currentId, '_CSR')}"> <xsl:apply-templates select="hithighlightedproperties/preferredname" /> </a>
Diese wird auf folgende Weise zusammengesetzt:
1. Der Link zur userdisp.aspx mit AccountName der Person (wird durch PageHeadControl zur lokalen UserID transformiert):
<xsl:variable name="userdispUrl" select="concat('/_layouts/userdisp.aspx?username=',accountname)"/>
2. Der Link zur derzeitigen Seite, so dass man beim betätigen von “Schließen” auf der userdisp.aspx zurückgeleitet wird.
<xsl:variable name="source" select="concat('&source=',ddwrt:UrlEncode(string($NameSortUrl)))"/>
Der Link der derzeitigen Seite, kann im Übrigen von der Variable “$NameSortUrl” abgeleitet werden.
3. Nun muss das Ganze nur noch zusammengefügt werden:
<xsl:variable name="userDetailUrl" select="concat($userdispUrl,$source)"/>
Anschließend erhält man den Link direkt auf die userdisp.aspx.