Sleutelen aan Sharepoint (deel 1)
Dat valt nog lang niet mee: het aanpassen van de layout van een website die gebouwd is met Microsoft Office Sharepoint Server (MOSS). Mijn eerste ervaringen met het sleutelen aan Sharepoint.
Motor
Ons nieuwe intranet krijgt Sharepoint als motor. Een system integrator en Sharepoint specialist zorgt ervoor dat we in de herfst over een nieuw intranet kunnen beschikken. Het is belangrijk dat we weten hoe het product in elkaar steekt. De afgelopen weken heb ik hiermee een begin gemaakt en ben onder andere bij CompuTrain op cursus geweest. Een paar trainingsdagen zijn natuurlijk volstrekt ontoereikend om een product als Sharepoint goed te leren kennen. Op z’n best kom je vluchtig in aanraking met een aantal functionaliteiten.
Hands on met een virtuele pc
Hoe kom je dan aan de kennis die nodig is om goed met een product als MOSS te kunnen werken? Hands on ervaring. Om me in de materie te verdiepen heb ik mijn laptoppie voorzien van een Virtual PC (probeerversies van Windows 2008 Server en MOSS 2007) . Okay, het piept en het kraakt (mijn notebook is me 3GB RAM wat bescheiden uitgerust om virtualisatiesoftware te draaien), maar het werkt.
Over sommige functionaliteit van Sharepoint ben ik erg tevreden. Het gemak en de flexibiliteit waarmee lijstjes zijn te maken en te koppelen en de mogelijkheden voor samenwerking en het delen van informatie bijvoorbeeld. Hartstikke mooi.
Een woud van code
De manier waarop Microsoft de presentatielaag van Sharepoint heeft gebouwd stemt helaas minder tot tevredenheid. Er nauwelijks sprake van scheiding van inhoud, opmaak en actie. Menustructuren worden voor een groot deel gepresenteerd in html-tabellen. Opmaak is voor een deel gedefinieerd in externe stijlbladen, maar zie je daarnaast ook regelmatig terug in inline stijldeclaraties:
<a class="zz1_TopNavigationMenu_1 ms-topNavFlyOuts zz1_TopNavigationMenu_6" style="border-style:none;font-size:1em;" href="/News/Pages/bla.aspx">bla</a>
Javascript wordt bijna zonder uitzondering links en rechts in de html gepropt. Waarom abstraheert Microsoft dit soort event handler code niet:
onclick="SetIsAccessibilityFeatureEnabled(true);UpdateAccessibilityUI();return false;"
Het resultaat? Een intimiderend woud van htmltags, css-declaraties en clientside scripting waarin het makkelijk verdwalen is.
Hack die master page
Maar je kunt toch gewoon een kopietje maken van je master page, daar de ongewenste html uitslopen en deze vervangen door meer stijlbladvriendelijke elementen?
Webcontrols
Mee eens, tot op zekere hoogte is dit ook mogelijk. Helaas vind je een deel van de vuile code niet terug in de Sharepoint masterpage, maar in webcontrols die vanuit de master page worden aangeroepen. De controls die de Sharepointnavigatiemenuutjes voor hun rekening nemen zijn hier een voorbeeld van. Je kunt je default.master hacken tot je een ons weegt, nog steeds zit je met tabellen opgescheept, omdat de controls deze uitspugen bij het renderen van de Sharepoint menu’s. Om hier iets aan te doen zul je de webcontrols zelf onder handen moeten nemen.
Vriendelijke adapters
Even dacht ik een oplossing te hebben gevonden in de vorm van CSS Friendly Control Adapters, maar na het lezen van de blogpost zonk me de moed in de schoenen. Buggy at best.
Zelf sleutelen
Na een dagje sleutelen — ik heb een kale master page gemaakt en hier m’n eigen stylesheet op losgelaten die de stijlen in het core.css bestand overschrijft — heb ik een pagina op het scherm die enigszins lijkt op de vormgeving die we voor ogen hebben. Sommige zaken zijn zo te zien niet met stijlen te tunen.
Daar heb ik de hulp van het meer dan handige jQuery framework ingeroepen om ongewenste html uit het Document Object Model te slopen.

Meer info
Meer lezen over het aanpassen van de Sharepoint look and feel? Het MOSS weblog van Heather Solomon bevat informatie om je op weg te helpen. Onder andere met een gestripte master page en een cheatsheet over de door Sharepoint gebruikte stijldeclaraties.
Add new tag · Microsoft · Sharepoint
Nullbeta aka HansR babbelt deze website louter op persoonlijke titel vol. Mogelijkerwijs worden Nullbeta's standpunten niet gedeeld door de organisatie die z'n boterham belegt. Maar kan dat iemand boeien?