Heute gab es die Nachfrage eines Users auf der Seite sharepointcommunity.de, wie man im "Welcome Menü" den Anzeigetext austauschen kann. Ihm ging es nicht um die allgemeinen Texte innerhalb des Menüs ("My Settings", "Sign in as different User" ...) sondern um den Text der dieses Menü aufklappt ("Welcome Displayname").

Aufzeichnen

Für dieses Menü ist die Welcome.ascx im Verzeichnis 12/Template/ControlTemplates/ verantwortlich und ich machte mich auf die Suche, wie man dieses am besten anpassen könnte. Schnell kam ich zu folgenden Ergebnissen:
- die Eigenschaft "Text" wird ignoriert
- in der Sprachdatei wss.resx findet sich kein Hinweis auf das Wörtchen "Welcome"
- der Text wird wohl codeseitig gesetzt

Als Idee, den Text mit geringstem Aufwand abzuändern, kam mir folgende: Der Menüpunkt wird per Javascript ermittelt und ersetzt. Die nötigen Schritte hierzu möchte ich im folgenden aufzeigen und beschreiben...

Zuerst setze ich mich an das benötigte Javascript:

<script type="text/javascript"><!--mce:0--></script>

Dieses Script tut nichts weiter, als sich alle <div>'s der aktuellen Seite über das DOM zu holen und durchläuft diese um das <div> zu finden, welches in der id den Teil "Menu_t" enthält. Wurde dieses div ermittelt, durchläuft es die Kindsknoten und schaut ob es ein "Kind" gibt welches "Welcome" im Text hat. Ist es so, dann wird der Text ausgetauscht.

Somit wäre die eigentliche Funktionalität auch schon erledigt... Aber wie bekommen wir das Javascript am besten eingebunden? Wir bauen uns eine ascx und binden diese in der Masterpage ein!

Der Aufbau der ascx:

<!--Control Language="C#"-->
<!--Import Namespace="Microsoft.SharePoint"-->
 
<script><!--mce:1--></script>

 

Ich habe mich der Einfachheit halber für eine InlineCode ascx Datei entschieden. Selbstverständlich ist hier auch eine mit CodeBehind möglich..

Was passiert in diesem Code? Der angemeldete User wird über den aktuellen Kontext ermittelt und der Displayname des Users wird gesplittet und im zuvor erstellten Javascript eingefügt sofern dieser gefüllt ist und ein Leerzeichen enthält. Vor dem Namen wird der Text "Welcome my friend " geschrieben. Selbstverständlich sind hier alle Möglichkeiten gegeben einen anderen Text anzuzeigen.

Diese ascx Datei wird nun in das Verzeichnis 12/Template/ControlTemplates kopiert und muss bspw. in der Masterpage referenziert werden.
Dazu öffnet man eine Masterpage seiner Wahl (in meinem Test nehme ich die default.master aus dem 12/Template/global ACHTUNG: Dies ist eine Originaldatei und eine Anpassung wird seitens Microsoft nicht empfohlen oder supported) und referenziert sein neues Usercontrol:

<!--Register TagPrefix="dbWel" TagName="Welcome" src="~/_controltemplates/ReplaceWelcomeText.ascx"-->

Im Anschluss daran muss das Usercontrol nur noch am Ende der Masterpage  eingebunden werden (vor dem schließenden </body>):

 

 

Nun könnte das neue Menü so aussehen:

image




  2 Antworten zu “Welcome Text anpassen”

  1. Hallo,

    leider klappt das bei mir nicht so ganz, ich befolge Ihre Anweisungen und bekomm dann ein Fehler im treeviewheader oder so aehnlich.

    • Daniel

      Hallo, das ist schade.. was ist denn im Einsatz.. MOSS oder WSS? Wie lautet der Fehler genau? Quelltext der Seite wäre von Vorteil dann könnte ich mal schauen was er eventuell nicht findet!

      Gruß Daniel

 Antworten

(erforderlich)

(erforderlich)

Du kannst diese HTML Tags und Attribute benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2012 Daniel Buschke - Blog Suffusion theme by Sayontan Sinha