Dat is nu dus eens een typische situatie hé: ik moet een menu maken op de website van het werk, en ik zit al een kwartier te debatteren met mezelf hoe ik dat het beste doe.

Probleem is dat het algemene menu alles proper doet zoals het hoort, en databasegegenereerd en zo, maar dat de news & events-pagina’s door andere code gegenereerd worden, uit een ander stuk database, met een volledig andere logica.

So indulge me while I think out loud… Het menu van news & events ziet er voorlopig alsdus uit:

  • Headlines
  • News archive
  • Events calendar
  • Press releases
  • Speeches

Daar moet iets uit komen als

<ul id="leftnav">
  <li class="current"><a href="news/">Headlines</a></li>
  <li><a href="news/archive">News archive</a></li>
  <li><a href="events/">Events calendar</a></li>
  <li><a href="press/">Press releases</a></li>
  <li><a href="speeches/">Speeches</a></li>
</ul>

waarbij die class="current" mee verhuist met de pagina. Al die pagina’s worden door verschillende stukken code gemaakt, en bevatten nog eens onderverdelingen (“events calendar” kan bijvoorbeeld eventsIndex zijn, of eventRange, of eventSingle, etc.), dus het is geen eenvoudige één op één, maar da’s een detail: ik zou een Dictionary kunnen maken (old skool ASP hé, geen asociative arrays of zo) met daarin de menu-items, die aflopen, en de juiste op “current” zetten.

Allemaal goed en wel, maar de reden waarom ik er lastig van loop, ik dat ik voorzie dat dat nieuws zeer binnenkort allemaal uitbreidingen gaat kennen, waardoor er meer dan één niveau zal zijn, en dat ik dan allerlei prutserijen ga moeten uithalen. En: dat ik precies hetzelfde—een te genereren menu van min of meer wisselende complexiteit—ga meemaken op nog andere delen van de website. En dat het weer eens een andere plaats is waar “dingen” moeten aangepast wordenals er “iets” verandert.

Gn. Het ideaal zou zijn om het allemaal eens grondig te herbekijken, maar daar is nu geen tijd voor: ‘t is zaak van parer au plus pressé en af te raken van een gescheiden intranet/internetnieuws en een Typepad-account overbodig maken en een archief ontsluiten.

Zucht.

Kijk zie, het van u afschrijven is therapeutisch én handig. Ik ga het voorlopig houden op simpel en eenvoudig (en, helaas, vies): domweg een lijstje in één niveau, uitzonderingsmaatregel voor news & events, mooi documentere in de site manual, en dan zien we wel waar we uiteindelijk op uitkomen als het ooit nodig is om complexere dingen te gebruiken.

Le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien……

Geschreven al luisterend naar: P.J. Harvey – Is This Desire? – A Perfect Day Elise

update: the best laid plans of mice & men… Ik heb het uiteindelijk nog simpeler gedaan:

Response.Write("<li"&iif(thisLeftnav="latest"," class=""current""","")&"><a href=""news/"">Actualités</a></li>")
Response.Write("<li"&iif(thisLeftnav="archive"," class=""current""","")&"><a href=""news/archive/"">Archives</a></li>")
Response.Write("<li"&iif(thisLeftnav="events"," class=""current""","")&"><a href=""events/"">Calendrier</a></li>")

Ja, ‘t is vies. En dan? 🙂

O ja, VBScript (ugh yuck bleah, I know) heeft blijkbaar geen iif, terwijl dat toch wel een serieus handig ding is. Dan maar in de rapte:

function iif(sTest, sTrue, sFalse)
  if sTest then iif=sTrue else iif=sFalse end if
end function

Ach ja. Simpel kan ook.

Geschreven al luisterend naar: Planxty – After The Break – You Rambling Boys Of Pleasure



Reacties

2 reacties op “Menu”

  1. En voor zo’n dingen worden wij dus gebuisd op school he

  2. Allez, wat is daar nu mis mee? 🙂