Mai 2011 - Einträge

ActiveDirectory mit C#
Donnerstag, 26. Mai 2011 14:33
Da ich für das aktuelle Projekt automatisierte Aufgaben innerhalb des ActiveDirectory realisieren muss, bin ich auf einen sehr guten Artikel bei Codeproject gestossen. Diesen will ich Euch nicht vorenthalten:

Codeproject - (Almost) everything in Active Directory via C#
von Timo Rehl | 1 comment(s)
Abgelegt unter:
Sharepoint 2010 Custom Masterpage
Montag, 9. Mai 2011 16:00

Sharepoint 2010 bietet nun endlich ein recht sauberes Design an, was Layout und Inhalt angeht. So ist es möglich über die Masterpage ein grundlegendes Layout für Sharepoint Seiten zu hinterlegen. Wie das geht, das zeigt nun folgende Anleitung.

Schritt 1 - Duplizieren der vorhandenen Masterpage

Die Masterpage dupliziert man am Besten über den Sharepoint Designer. Hierzu ruft man mit einem entsprechendem Designer Benutzer über die Startseite ->"Site Actions"->Sharepoint Designer auf.

Danach wählt man die Einstellungsmöglichkeit "Master Pages" und bekommt 3 bereits vorhandene Masterpages angezeigt:

Für Shareppoint 2010 ist die Masterpage v4.master relevant (Ausnahme: wenn die Kompatibilitätsfunktion SP2007 genutzt werden soll, dann wäre das der default.master). Es empfiehlt sich die Masterpage zu duplizieren, um so wenig Einfluss auf den SP2010 Standard zu nehmen. Das Duplizieren erreicht man durch Markieren des Originals, dann durch Auswahl von Copy (über das Kontextmenü oder über die Ribbon Leiste "Clipboard") und anschließendem Paste (analog zu Copy auffindbar). Es wird eine Kopie erstellt, die nun noch umbenannt werden kann (Kommando Rename über das Kontextmenü oder über die Ribbon Leiste "Edit").

Wo werden nun die Dateien abgelegt? -> Prinzipiell ist es nicht wichtig, ich komme im "Schritt 3 - Einbinden der neuen Masterpage" darauf. Es gibt hier 2 Unterscheidungen. Die Templates, die genutzt werden, sobald ein neues Sharepoint Portal angelegt wird befinden sich unter Windows:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\GLOBAL (englisches Betriebssystem!). Die duplizierte Masterpage befindet sich in der Sharepoint Datenbank (nicht auf Festplatte!).

Schritt 2 - Editieren der neuen Masterpage

Anschließend ist es möglich die neue Masterpage durch Auswahl des Kommandos EditFile (Ribbon Leiste "Edit") oder EditFile in advanced mode (Kontextmenü) zu editieren. Der "advanced mode" bedeutet hier lediglich, dass Sharepoint Standardeinstellungen im HTML Header ebenfalls editierbar sind. Ohne "advanced mode" kann man diese Stellen nicht verändern. Mein Ziel war es jQuery fest in allen Seiten verfügbar zu machen. Hierfür bietet SP2010 eine Möglichkeit über SciptLink das JavaScript einzubinden. Die genauen Details zum Thema ScriptLink werde ich nun hier nicht erläutern, Ziel hier ist es eine modifizierte Masterpage zu erzeugen.

Schritt 3 - Einbinden der Masterpage in Sharepoint-Seiten

Für das Einbinden der duplizierten Masterpage (bei mir heißt diese Arbeitsbereich.master) gibt es 2 Möglichkeiten:
  1. Man wählt die Website-Masterpage aus. Wie das geht kann man z.B. hier nachlesen: Mirjams Blog - Deploying a custom master page (im letzten Teil des Eintrages).
  2. Man verändert die Seiten direkt
Den 2. Punkt möchte ich näher betrachten, da das etwas flexibler ist, als Punkt 1. Zum manuellen Verändern der Masterpage folgt man folgender Anleitung:
  • Den Sharepoint Designer für die Webseite öffnen (siehe oben)
  • Die Auswahl "All Files" auswählen


Hier gibt es nun diverse Verzeichnisse, die man sich in Ruhe einmal anschauen sollte. Hier eine Kurzbeschreibung der wichtigsten Verzeichnisse:
- Site Pages: Enthält alle Webseiten, die in aller Regel auch navigierbar sind
- Lists and Libraries: Das sind alle Listen und Bibliotheken. Hier sind ebenfalls ASPX Seiten zu finden (!), für die Anzeige und Bearbeitung der Listen im Portal.
- Subsites: Hier sind alle Unterwebseiten zu finden

Für alle gefundenen ASPX Dateien kann man einzeln die Masterpage verändern. Hierzu wählt man entsprechende ASPX Datei aus und editiert diese im "advanced mode" (Kontextmenü). Für mein Besipiel habe ich unter SitePages/Home.aspx verwendet (Die Standardstartseite des Portals). Dort befindet sich in der ersten Zeile für die Parametrisierung der Codebehind Assembly auch das Attribut MasterPageFile. Diesen Attributwert kann man nun ändern:



Wichtig: Der Wert ~masterurl/default.master ist stark verwirrend für ASP.NET Programmierer. Zunächst lässt das ~masterurl vermuten, dass das analog der VirtualServerRoot ~ wäre (siehe Rick Strahls Blog - Making Sense of ASP.NET Paths). Dem ist aber definitiv nicht so. Es sind nur 2 verschiedene Werte mit ~masterurl fest verdrahtet, und somit nur "default.master" und "custom.master" möglich. Siehe hierzu auch nähere Informationen aus der MSDN - Customizing Master Pages.

Es gibt aber einen einfachen Trick für den Sharepoint Designer, der wohl aus VisualStudio übernommen wurde. Hierzu einfach den gesamten Wert mit einem zufälligen Buchstaben überschreiben, dann ermöglicht der Designer eine Kontextmöglichkeit Pick URL:

Das kann man bequem doppelklcken und dann komfortabel aus einem Verzeichnis wählen. Unsere duplizierte Masterpage liegt dann unter _catalogs/masterpage/Arbeitsbereich.master. Der Designer macht dann hieraus die URL: ../_catalogs/masterpage/Arbeitsbereich.master. Also auch bereits relativ zu der eigentlichen Seite, das ist sehr komfortabel, wenn die Seiten (ASPX Dateien) auf unterschiedlichen Hierarchieebenen liegen. Jetzt die Änderung noch speichern, diese sind dann auch sofort aktiv und können ausprobiert werden.

Schritt 4 - Fazit

Das Duplizieren und das Modifizieren der Masterpage ermöglicht dem Sharepoint Entwickler die Gestaltung eines einheitlichen Designs. Weiterhin können auch Skripte und allgemeine Funktionen über die MAsterpage bereitgestellt werden (so wie bei mir die Einbindung von jQuery). Es führen sicherlich 1000 Wege nach Rom, für mich war dieser Weg nun eine Möglichkeit globale Funktionalität bereitzustellen. Außerdem lernt man hierbei auch etwas die Struktur von Sharepoint kennen.
MS VPC - Deaktivieren der Zeitsynchronisation
Montag, 9. Mai 2011 15:52

Es gibt eine versteckte Möglichkeit bei Microsoft VPC die Synchronisation der Uhrzeit zwischen der virtuellen Maschine und dem Host zu unterbinden. Hierzu muss lediglich an entsprechender Stelle in der *.vmc Datei ein Eintrag platziert werden:

<preferences> 
 <integration> 
  <microsoft> 
   <components> 
    <host_time_sync> 
     <enabled type="boolean">false</enabled> 
    </host_time_sync> 
   </components> 
  </microsoft> 
 </integration> 
</preferences>

Natürlich sollte darauf geachtet werden, dass keine vorhandenen Knoten überschrieben, sondern nur ergänzt werden.