Case study: implementatie www.legerdesheils.nl

Drupal hét systeem voor multi site / multi language en multi-user vraag

Over het Leger des Heils

“Het Leger des Heils is een internationale beweging en behoort tot de universele christelijke kerk. Zijn boodschap is gebaseerd op de Bijbel. Zijn dienstverlening wordt gestimuleerd door de liefde tot God. Zijn opdracht is het Evangelie van Jezus Christus te prediken en in zijn naam menselijk nood te lenigen zonder enige vorm van discriminatie” Meer informatie www.legerdesheils.nl

Corporate website: legerdesheils.nl

Als onderdeel van het bereiken en informeren van belanghebbende, heeft het Leger des Heils al een geruime tijd een eigen website in beheer. Deze website was geproduceerd op basis van een Lotus Notes systeem. Toen het tijd werd voor een complete make-over heeft Het Leger des Heils besloten om op een open source CMS (Drupal 6 CMS) over te stappen. Deze website is medio maart 2009 live gegaan. Lucius heeft nieuwe de website ontwikkeld.

CMS keuze

Na diverse overwegingen bleek dat Drupal het meest geschikte CMS bleek om te implementeren voor het Leger des Heils. De voornaamste redenen dat er voor Drupal is gekozen:

  • Multi-site mogelijkheid het Leger des Heils beheerd zeer veel websites, deze moeten gecentraliseerd worden komende periode. Waarbij een consistente opmaak tussen alle website behouden blijft, centrale administratie en technisch beheer mogelijk is voor alle sites. Nu staan al deze websites los van elkaar.
  • Gebruikersrechtenbeheer (ACL = access control lists). Verschillende rollen worden aangemaakt, gebruikers kunnen gekoppeld worden aan de rollen. Op deze wijze kan het Leger des Heils zelf inregelen welke gedeeltes van alle websites door wie worden beheerd.
  • Content organisatie Met behulp van Drupals ‘taxonomy’ is het beheren van vele artikelen goed in te programmeren en beheren.
  • Flexibel en veilig CMS Met behulp van onder andere ‘hooks’, ‘overrides’ en custom modules kunnen alle core functionaliteiten en layout naar gespecificeerde eisen gezet worden. Reeds ontwikkelde HTML is geen probleem om te implementeren in Drupal.
  • Professionele community de geweldige community van Drupal.
  • Leveranciersonafhankelijkheid Geen ‘vendor lock-in’ wanneer er gebruik gemaakt wordt van open source software. .
Functioneel ontwerp, Design & XHTML

Allereerst is een Functioneel Ontwerp (FO) geproduceerd, waarin alle schermen, inclusief alle beheerder-schermen, middels 'wire-frames' zijn opgesteld. Na een aantal feedback-incrementen is dit FO definitief geworden. Het design heeft het Leger des Heils in samenwerking met Douglas Design tot stand gebracht. Douglas Design heeft ons het design in Photoshop formaat aangeleverd. Dit design is door ons omgezet naar XHTML/CSS, die initieel W3C Strict wordt opgemaakt. Alle pagina’s die binnen de website kunnen voorkomen, worden opgemaakt in XHTML/CSS.

Voordat wij beginnen met Drupal CMS implementatie, zorgen we ervoor dat alle HTML getest wordt in veelgebruikte browsers als Firefox, Safari, Internet Explorer, Opera & Chrome. Wanneer dit gevalideerd is, wordt de HTML als ‘theme’ geimplementeerd in het Drupal 6 CMS.

Het Lucius development-team & werkwijze

Het Lucius team die deze site heeft gerealiseerd bestaat uit 4 mensen:

Projectleider:
verantwoordelijk voor de communicatie met het Leger des Heils, 'naleving FO', besluitvorming, planning en intern testen.

Twee programmeurs:
realisatie van de Drupal implementatie conform opgesteld Functioneel Ontwerp

Software Tester:
persoon binnen Lucius die ontwikkelde modules op functionaliteit, veiligheid en stabiliteit test.

Serverhosting & workflow

Er zijn drie identieke serveromgevingen opgezet voor de initiele implementatie van www.legerdesheils.nl : Productie server, Development server & Sandbox server

Voor de veiligheid en waarborging van de website, testen wij cruciale vernieuwingen/wijzigingen eerst op Sandbox server. Na acceptatie hiervan voeren we de vernieuwing/wijziging door op de development server van het Leger des Heils. Na testen en acceptatie door het Leger des Heils wordt de wijziging geimplementeerd op de Productie server. Versie-beheer wordt gedaan met behulp van SVN (Subversion).

Implementatie Drupal: Content migratie

De content die voorgaande installatie reeds was ingevoerd is gemigreerd naar het nieuwe Drupal CMS middels diverse database scripts. Hierna is het Leger des Heils zelf verder gegaan met het invoeren van de nieuwe content in Drupal.

Implementatie Drupal: Content typen

Er zijn een aantal typen content gedefineerd. Hieronder worden deze benoemd en kort toegelicht.

  • Agenda item:
    Hiermee kan het Leger des Heils een agenda item worden aanmaken. Het bevat de volgende velden: start datum, eind datum, tijd, locatie, inhoudelijke tekst. De eerstkomende drie agenda-punten worden middels een custom module automatisch op de homepage getoond.
  • Nieuwsbericht
    Met dit type is het mogelijk een nieuwsbericht te plaatsen op de site. Een nieuwsbericht kan door het Leger des Heils gekenmerkt worden als ‘frontpage’, waardoor betreffende bericht op de homepage wordt gepubliceerd door het Drupal CMS. Een nieuwsbericht kan ook gekenmerkt worden als ‘Sticky’, dan wordt het bericht getoond als bovenste, groot artikel op de frontpage. De bijbehorende grote afbeelding wordt automatisch door Drupal ‘op maat gesneden’.
  • Quote
    In de linker blauw balk van de site is een random quote te zien. Bij iedere pagina verversing wordt random een quote getoond. Deze quotes kunnen kan het Leger des Heils beheren binnen het Drupal CMS.
  • Strijdkreet(SK)
    De SK is een magazine wat door het Leger des Heils wordt uitgegeven. Iedere maand verschijnt er een nieuw nummer. Via dit type kan er nieuwe strijdkreet aangemaakt worden waarin ingevoerd kan worden: nummer, jaargang en bodytekst. Het blad wordt tevens door het Drupal CMS ter download aangeboden. Middels een custom module wordt de laatste strijdkreet automatisch op de homepage geplaatst.
  • Externe pagina
    Doordat er een nog een aantal functies zijn die via een i-frame geladen moeten worden, is hier een apart content type voor aangemaakt. Hierin is het mogelijk middels invoeren van een directe link de pagina / functie in een i-frame te laden. Dit betreft functies die nog gemigreerd moeten worden naar het Drupal CMS. Hierdoor wordt de functie intern ingeladen, zonder dat de bezoeker de site verlaat of dat de lay-out drastisch veranderd.
  • Statische pagina
    Voor alle statische pagina’s is gekozen om het type Page te gebruiken. Page is een type dat standaard aanwezig is in Drupal. Pagina’s als ‘disclaimer’ en ‘algemene voorwaarden’ kunnen hierin worden opgemaakt.
  • Vacatures
    Zie “Implementatie Drupal: diverse functionaliteiten”.
  • Veel gestelde vragen
    Veelgestelde vragen (http://www.legerdesheils.nl/veel-gestelde-vragen-hulpverlening) kunnen een titel en een inhoudelijke tekst bevatten. Hierbij is gebruik gemaakt van Drupal’s taxonomy systeem, om de vragen gebruiksvriendelijk in te delen in de verschillende categorien. Een custom module zorgt ervoor dat de website bezoekers de juiste opmaak gepresenteerd krijgen. De module maakt hierbij de complete pagina met alle benodigde links volledig automatisch aan.
  • Vermiste personen
    Het Leger des Heils kan vermiste personen invoeren. Velden: titel, tekst en foto zijn gedefinieerd. Een custom module zorgt ervoor dat de ingevoerde foto automatisch wordt verkleind en dat de lijst met ‘lees meer’ links (http://www.legerdesheils.nl/vermiste-personen) automatisch wordt opgemaakt.
  • Weblink
    Het Leger des Heils kan weblinks beheren. Velden: titel en link moeten ingevoerd worden. Daarbij moet een keuze gemaakt worden binnen welke categorie de link valt. Dit wordt gedaan met behulp van Drupal’s taxonomy systeem. Een custom module zorgt ervoor dat de ingevoerde links automatisch voor de bezoeker gecategoriseerd worden getoond, zoals te zien op http://www.legerdesheils.nl/weblinks.
Implementatie Drupal: open source ‘contributed’ Modules

Naast de Drupal core modules is er ook gebruik gemaakt van een aantal contributed modules.

Administration menu
Dit is een module die het administratie menu van de Drupal core kan vervangen. Het biedt een meer gebruiksvriendelijke interface voor administratie opties.

CCK module
Deze module is bedoeld voor het uitbreiden van content type met verschillende velden. Zo is het bijvoorbeeld mogelijk om een datumveld, een afbeeldingveld of extra text veld toe tevoegen.

Imagecache
Deze module behandelt alle afbeeldingen die toegevoegd worden aan content. Imagecache zorgt voor een automatische ‘resizing’ en ‘caching’ van aan content toegevoegde afbeeldingen. Wat het afbeeldingen-beheer op de website optimaliseerd. Hierbij wordt de ‘bron’-afbeelding bewaard, waardoor deze over de gehele site kan worden getoond zoals ingeprogrammeerd in een module.

External links
Externe links die worden aangemaakt in het menu of in de content worden opgevangen door deze module. Het is een simpele module er voor zorgt dat alle externe links een nieuw venster worden geopend, zodat een bezoeker niet de site van het Leger des Heils verlaat.

Implementatie Drupal: Custom modules

In dit project zijn onder andere volgende custom modules geproduceerd:

Sitemap
De bestaande sitemap module van de Drupal community gaf niet genoeg voldoening. Voor dit project is daarom een custom module geproduceerd. Hierbij worden diverse Drupal API-functies gebruikt. http://www.legerdesheils.nl/sitemap

Beeldmerk
Bij het aanmaken/wijzigen van een menu item is het middels deze module mogelijk een beeldmerk te kiezen bij elke menu item. Het beeldmerk is de afbeelding rechts van de site, die dus kan wisselen per pagina.

Lijstpagina’s
Deze modules zorgt voor een geheel op maat geprogrammeerde weergave van alle lijstpagina’s binnen het systeem (bijvoorbeeld nieuwslijsten, agenda, vacature overzichten, veelgestelde vragen). Hierin worden automatisch teksten ingekort, afbeeldingen verkleind en geached middels imagecahe module en ‘lees meer links’ gegenereerd.

Homepage:
Deze module zorgt voor een geheel op maat geprogrammeerde weergave van de homepage.

Weblinks:
Deze module zorgt voor een geheel op maat geprogrammeerde weergave de ingevoerde weblinks en categorisering hiervan.

Hoofdmenu:
Deze module zorgt voor een geheel op maat geprogrammeerde weergave van het hoofdmenu.

Implementatie Drupal: diverse functionaliteiten

Lijst pagina’s
Dit zijn pagina’s waar opsommingen van een bepaald content type te zijn. Legerdesheils.nl heeft aantaal van deze lijsten. Deze zijn allemaal volledig dynamsich.

  • Nieuws: De 10 nieuwste nieuwsberichten worden in een lijst weergegeven met intro tekst, thumbnail en een lees meer link, die verwijst naar het gehele artikel.
  • Persberichten: De 10 nieuwste persberichten worden in een lijst weergegeven met intro-tekst en een lees meer link, die verwijst naar het gehele artikel.
  • Lijst vermiste personen: Deze lijst laat alle opgegeven vermiste personen zien. De lijst bestaat uit een intro-tekst, een foto en een lees meer link.
  • Agenda: Alle aankomende evenementen worden getoond en een zoekfunctie is geimplementeerd. http://www.legerdesheils.nl/agenda

Archieven
Volledig dynamisch worden archieven gegenereerd inclusief zoekfunctionaliteit.

  • Nieuws: Voor nieuwsberichten is er een archief waarin gezocht kan worden op keyword en op datum. Standaard laat het archief de berichten zien die niet voorkomen in de lijst en op de frontpage. Een toon alles knop is aanwezig om álle nieuwsberichten die ooit zijn geplaatst te laten zien.
  • Persberichten: Bij persberichten geldt het zelfde principe als bij nieuwsberichten. De functies zijn exact hetzelfde op verschil van content type na.
  • Strijdkreet: Voor alle strijdkreet magazines is er een archief gebouwd. Hierin zijn alle strijdkreet magazines te vinden geordend op uitgave nummer en jaargang. Deze bevat overigens geen zoekfunctie.
  • Agenda Standaard worden enkel de aankomende evenementen getoond, maar met de knop toon alles, is het mogelijk alle evenementen te bekijken, dus ook evenementen dus al gepasseerd zijn.

De vacaturebank
De vacaturebank bestaat uit 2 lijsten. Deze worden met behulp Drupal taxonomy ingedeeld. Momenteel zijn de categorien ‘ betaald werk’ & ‘vrijwilligerswerk’.

De vacatures beschikken over alle benodigde informatie en krijgen bij het plaatsen een sluitingsdatum mee. Wanneer de sluitingsdatum met 1 dag is overschreden word de vacature automatisch ge-depubliceerd.

Implementatie Drupal: Acces Control List (ACL) = gebruikersrechten beheer

In het Functioneel ontwerp is gedefineerd welke rollen en permissions er geimplementeerd moeten worden.

Implementatie Drupal: themes

In het backend (administratie gedeelte van de website) is er gebruik gemaakt van een core-theme: Garland. Dit is een standaard theme van Drupal en veilig, gebruiksvriendelijk en efficiënt bevonden door de community.

Voor het frontend (bezoekersgedeelte van de website) is een custom theme gebouwd, die geheel ‘from scratch’ is opgebouwd. De XHTML/CSS is inititeel w3c strict gevalideerd en zoekmachine vriendelijk, semantisch opgebouwd . Doordat externe content middels frames noodzakelijk was, is deze vallidatie helaas momenteel niet geldig.