Drupal 7 website met uitvaartkosten calculator...

36
Scriptie ingediend tot het behalen van de graad van PROFESSIONELE BACHELOR IN DE ELEKTRONICA-ICT Drupal 7 website met uitvaartkosten calculator module Kenneth Dhoy Departement Wetenschappen en Techniek Opleiding Elektronica-ICT Academiejaar 2014-2015 Interne promotor: Tom Peeters Externe promotor: Michel Neven Versie: 10 juni 2015

Transcript of Drupal 7 website met uitvaartkosten calculator...

Page 1: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Scriptie ingediend tot het behalen van de graad van

PROFESSIONELE BACHELOR IN DE ELEKTRONICA-ICT

Drupal 7 website met uitvaartkostencalculator module

Kenneth Dhoy

Departement Wetenschappen en Techniek

Opleiding Elektronica-ICT

Academiejaar 2014-2015

Interne promotor: Tom PeetersExterne promotor: Michel Neven

Versie: 10 juni 2015

Page 2: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Dankwoord

Met dit dankwoord wil ik me richten naar allen die geholpen hebben bij het tot stand komenvan deze scriptie.

In de eerste plaats richt ik een dankwoord aan mijn interne promotor Tom Peeters. Niet alleenheeft hij mij geholpen met de testscriptie, dankzij zijn lessen over PHP had ik al een goedebasis voor ik aan dit eindwerk begon.

Ten tweede zou ik mijn externe promotor Michel Neven willen bedanken. Dankzij zijnbehulpzaamheid en toegang tot alle nodige drupal boeken heb ik mij meteen kunnen verdiepenin mijn eindwerk.

Tot slot zou ik de steun van het thuisfront willen vermelden. De hoeveelheid steun die uit dezehoek is gekomen valt moeilijk in woorden uit te drukken.

Antwerpen, 10 juni 2015Kenneth Dhoy

i

Page 3: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Abstract

Het doel van dit project was om een Drupal 7 website te maken met een uitvaartkostencalculator. Deze module berekent aan de hand van bepaalde vragen het totale kapitaal datweer gebruikt kan worden om een geschikte verzekering te vinden voor de klant. Tevens is hetmogelijk om de module te gebruiken voor andere verzekeringen.

Deze module toont een vragenlijst die aangepast kan worden, zo kunnen vragen toegevoegd,aangepast en verwijderd worden. Alsook kunnen er extra vragen gecreeerd worden. Deze vragenworden getoond wanneer een bepaald antwoord gegeven wordt in een andere vraag.

Dit is allemaal mogelijk in de admin pagina. Deze pagina laat alle vragen, antwoorden en extravragen met hun antwoorden zien. Tevens is er ook een resultaten pagina die weergeeft wanneerer een formulier werd doorgestuurd, wat het totale kapitaal was en welke antwoorden er juistgegeven werden.

ii

Page 4: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Inhoudsopgave

Dankwoord i

Abstract ii

1 Situering 1

2 Bespreking 22.1 Installeren Drupal 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Content toevoegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.1 Filtered HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2.2 Full HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2.3 Plain text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.3 Website design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.1 Zen theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.2 Compass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3.3 Sass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.4 Custom module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.4.1 Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.5 Uitvaartkosten Calculator module . . . . . . . . . . . . . . . . . . . . . . . . 102.5.1 Vragenlijst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.5.2 Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5.3 Admin pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.5.4 .install bestand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.5.5 Insert default vragen . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.5.6 Hoe de uitvaartkosten calculator module gebruiken . . . . . . . . . . . 24

3 Resultaten 25

4 Besluit 26

iii

Page 5: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

INHOUDSOPGAVE iv

A Appendix 27

B Opmerkingen bij scripties 28

Page 6: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Lijst van figuren

2.1 Drupal logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Start XAMPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Content toevoegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.4 Zen logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.5 Default Zen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.6 Vragenlijst voorbeeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.7 Database schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.8 Admin pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.9 Vraag en antwoord toevoegen . . . . . . . . . . . . . . . . . . . . . . . . . . 172.10 Vraag en antwoord aanpassen . . . . . . . . . . . . . . . . . . . . . . . . . . 182.11 Resultaten pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

v

Page 7: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Hoofdstuk1Situering

Toen ik de lijst met eindwerkvoorstellen zag van alle mogelijke bedrijven viel mij op dat er veelvraag was naar een Drupal 7 developer. Dit wekte mijn interesse en ik wou weten waaromDrupal zo populair is. Omdat de meeste van deze stageplaatsen maar een Drupal developernodig hadden werk ik alleen aan mijn project.

Er werd mij gevraagd om een Drupal 7 website met een custom uitvaarkosten calculator modulete maken. Deze module zal een vragenlijst aan de klant laten zien en aan de hand van deantwoorden van de klant kunnen we te weten komen wat de uitvaarkosten zijn, zo kan verderbepaald worden welke verzekering het best bij de klant past. De module moet ook een adminpagina hebben die het mogelijk maakt om vragen en antwoorden toe te voegen, aan te passenof te verwijderen.

1

Page 8: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Hoofdstuk2Bespreking Drupal 7

Drupal is een gratis open source framework geschreven in PHP. Het werd uitgegeven onder deGNU GPL wat wil zeggen dat het gratis mag gebruikt en aangepast worden door de gebruiker.De oprichter van Drupal is Dries Buytaert, een belgische softwareontwikkelaar.

Het standaard pakket dat je krijgt als je Drupal download wordt de Drupal core genoemd, dezeheeft een aantal basis modules die je kan gebruiken zoals:

� Blog

� Forum

� Poll

� Gebruikersprofielen

� RSS

De Drupal core wordt geschreven door een vast team, alle andere modules en thema’s wordengeschreven door de Drupal community.

2

Page 9: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 3

Figuur 2.1: Drupal logo

2.1 Installeren Drupal 7

Het installeren van Drupal is zeer gemakkelijk en goed gedocumenteerd. Ik ben begonnen methet downloaden van de Drupal 7 core, deze is terug te vinden op de Drupal website1.

Omdat je voor Drupal een server of localhost nodig hebt om je website weer te geven hebik gekozen voor XAMPP2. XAMPP is een gratis open source softwarepakket met een apachewebserver, MySQL database en maakt het mogelijk om een scripttaal te lezen zoals PHP.

Vervolgens moet je de Drupal 7 core folder plaatsen in de htdocs folder van je XAMPP folder.Omdat Drupal zijn instellingen opslaagd in de database is het noodzakelijk dat bij het XAMPPpanel Apache en MySQL gestart wordt.

1https://www.drupal.org/project/drupal2https://www.apachefriends.org/index.html

Page 10: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 4

Figuur 2.2: Start XAMPP

Voor het aanmaken van deze lokale database heb ik phpmyadmin gebruikt, dit krijg jeautomatisch als je op de admin button klikt in de MySQL sectie. Zoals vermeld werkt Drupal 7met een database, dus moet er nu een database aangemaakt worden die Drupal kan gebruiken.Tijdens de installatie van Drupal 7 wordt er gevraagd om de gegevens van deze database in tevullen. Het is aan te raden de installatie gids van Drupal te volgen3.

2.2 Content toevoegen

Om content toe te voegen in Drupal 7 kan je gewoon op de knop of link add content klikken.Vervolgens kan je kiezen of je een artikel of een pagina wil toevoegen, voor dit project heb ikaltijd een pagina gekozen. Daarna kan je de titel van de pagina en de tekst die op de paginamoet komen invullen. Hier kan je kiezen uit drie soorten teksten namelijk:

� Filtered HTML

� Full HTML

� Plain text

3https://www.drupal.org/documentation/install

Page 11: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 5

Figuur 2.3: Content toevoegen

2.2.1 Filtered HTML

Filtered HTML laat URL’s en e-mailadressen direct omzetten naar links. Het laat ook bepaaldeHTML tags toe zoals <a>, <em>, <strong>, <cite>, <blockquote>, <code> en <ul>.Zinnen en paragrafen krijgen automatisch een break.

2.2.2 Full HTML

Heeft alles wat de gefilterde HTML optie ook heeft maar het laat alle HTML tags toe. Dezeoptie heb ik vaak gebruikt om mijn pagina’s te maken om zo <h1>, <h2> en <p>tags toe tevoegen.

2.2.3 Plain text

Heeft alles wat de gefilterde HTML optie ook heeft maar laat geen HTML tags toe.

Page 12: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 6

2.3 Website design

2.3.1 Zen theme

Figuur 2.4: Zen logo

Het Zen theme is een zeer populair thema in Drupal, het staat bekend om zijn zeer goededocumentatie. Zen gebruikt HTML 5 en is ook responsive wat wil zeggen dat het zich aanpastop tablets en smartphones. Het ondersteund ook Sass en Compass maar dit is niet verplicht,je kan ook CSS gebruiken.

Om Zen te gebruiken moet je het eerst downloaden van de Drupal website, dit bestand moetgeplaatst worden in Drupal7/sites/all/themes. Dit is zeer belangrijk omdat er ook een themesmap is in Drupal7/themes. Hier vind je alle basis themes terug die standaard in de Drupalcore worden meegegeven. Als je je custom Zen theme hier installeert en aanpast, zullen bij devolgende update al je aanpassingen overschreven worden.

In de Zen folder zit een starterkit folder die je moet gebruiken om je eigen thema te maken. Hetis dus niet de bedoeling dat je de Zen core folder begint aan te passen. Deze starterkit wordtook een subtheme genoemd. Er zijn verschillende readme files terug te vinden die belangrijk zijnom je eigen theme te maken. Om je eigen thema te kiezen in Drupal 7 moet je bij appearanceje eigen thema op enable en set default zetten.

Figuur 2.5: Default Zen

Page 13: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 7

2.3.2 Compass

Compass is een open-source framework dat gebruik maakt van Sass. Je kan Com-pass op twee manieren gebruiken, met of zonder een command line. Voor dit pro-ject heb ik de command line gebruikt. De enige twee commando’s die ik heb gebruikzijn ’cd C:/XAMPP/htdocs/vergelijkdirect/sites/all/themes/vergelijkdirect theme’ en ’com-pass watch’. Compass zal deze folder controleren op veranderingen en de Sass terug omzettennaar CSS in een andere stylesheet.

2.3.3 Sass

Sass staat voor Syntactically Awesome StyleSheets. Sass is een uitbreiding op CSS (CascadingStyle Sheets), en heeft een paar handige extra’s zoals:

� Het gebruik van variabelen

� Nesten

� Overerving

Variabelen

Het gebruik van variabelen in Sass werkt hetzelfde als bij PHP, je kan bijvoorbeeld een kleurcodetoewijzen aan een duidelijke naam:$hoofdkleur goud: #ffd700dit zorgt ervoor dat je een beter overzicht krijgt van je code.

Nesten

Met CSS moest je telkens nav li {}, nav ul {} hergebruiken, met sass kan je dit nesten:nav { li{} ul{} } (haakjes zijn niet nodig).dit zorgt weer voor een beter overzicht van je code.

Overerving

Met het gebruik van extend kan je classen overerven.

Page 14: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 8

2.4 Custom module

Een module bestaat uit twee belangerijke bestanden namelijk:

� .info bestand

� .module bestand

In het info bestand staat alle informatie over de module zoals:

� De versie (core) waarvoor de module geschreven is

� Naam van de module

� Beschrijving van de module

� De naam van het pakket waar de module terug te vinden is

� Link naar eventuele toegevoegde javascript bestanden

� Link naar eventuele toegevoegde configuratiepagina

Het .info bestand is verplicht omdat het de aanwezigheid van de module laat zien, zonder het.info bestand is er geen module.

In het .module bestand staat alle code. Drupal maakt hiervoor gebruik van hooks.

2.4.1 Hooks

Als je een eigen module wil maken zal je hooks moeten gebruiken. Een hook is een PHP functiedie herkent wordt door Drupal. Hier zijn enkele voorbeelden van belangerijke hooks.

� hook help()

� hook init()

� hook menu()

� hook form()

� hook install()

� hook uninstall

Om een hook te laten samenwerken met je eigen module moet je hook vervangen door de naamvan je module. Het is zeer belangrijk dat de naam van de custom module hetzelfde is als denaam van de hook. Anders zal de module deze niet herkennen en zo zal de hook niet uitgevoerdworden.

Page 15: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 9

Listing 2.1: hook menu voorbeeld

1 /**2 * Imp l emen ta t i e hook menu3 */4 f u n c t i o n u i t v a a r t k o s t e nCa l c u l a t o r menu ( ) {5 $ i t ems = array ( ) ;6 $ i t ems [ ’ u i t v a a r t k o s t e n C a l c u l a t o r ’ ] = array (7 ’ t i t l e ’ => ’ U i t v a a r t k o s t e n C a l c u l a t o r ’ ,8 ’ page c a l l b a c k ’ => ’ d r u p a l g e t f o rm ’ ,9 ’ page arguments ’ => array ( ’ u i t v a a r t k o s t e nC a l c u l a t o r f o rm ’ ) ,10 ’ a c c e s s c a l l b a c k ’ => TRUE11 ) ;1213 $ i t ems [ ’ admin/ c o n f i g / con t en t / c a l c u l a t o r / s e t t i n g s ’ ] = array (14 ’ t i t l e ’ => ’ C a l c u l a t o r admin pag ina ’ ,15 ’ d e s c r i p t i o n ’ => ’ C o n f i g u r a t i e voor de U i t v a a r t k o s t e n c a l c u l a t o r module ’ ,16 ’ page c a l l b a c k ’ => ’ d r u p a l g e t f o rm ’ ,17 ’ page arguments ’ => array ( ’ u i t v a a r t k o s t e nC a l c u l a t o r a dm i n f o rm ’ ) ,18 ’ a c c e s s arguments ’ => array ( ’ a dm i n i s t e r s i t e c o n f i g u r a t i o n ’ ) ,19 ’ type ’ => MENU NORMAL ITEM,20 ) ;21 r e t u r n $ i t ems ;22 }

Hierboven zien we dat de hook menu() wordt vervangen door uitvaartkostenCalculator menu().Dit is omdat de naam van mijn module uitvaartkostenCalculator is.

Page 16: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 10

2.5 Uitvaartkosten Calculator module

De uitvaartkosten calculator module bestaat uit twee delen namelijk: de vragenlijst en de adminpagina.

2.5.1 Vragenlijst

Front-end

Elke vraag wordt getoond met de daarbij horende mogelijke antwoorden. Deze worden uit dedatabase gehaald en kunnen aangepast worden via de admin pagina. Per vraag wordt er eenfieldset gegenereerd, deze is collapsible. Alsook moet elke vraag beantwoordt worden omdat deradio buttons required zijn. Dit kan je zien aan de * die bij elke vraag staat.

Tevens zijn er ook extra vragen, dit zijn vragen die verbonden zijn met een bepaalde vraag enverschijnen als een bepaald antwoord van deze vraag gekozen wordt. Deze extra vragen wordenin dezelfde fieldset getoond als de vraag waarmee ze verbonden zijn, maar deze vragen zijn nietrequired.

Figuur 2.6: Vragenlijst voorbeeld

Page 17: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 11

Back-end

Listing 2.2: vragenlijst fieldset

1 $ form = array ( ) ;2 $vragen = db que ry ( ”SELECT * FROM vragen o r d e r by ID” ) ;34 whi le ( $row = $vragen−>f e t c hAs s o c ( ) ){5 $ i d = $row [ ” ID” ] ;6 $ form [ ’ f i e l d s e t ’ . $ i d ] = array (7 ’#type ’ => ’ f i e l d s e t ’ ,8 ’#t i t l e ’ => ’ Vraag ’ . $ id ,9 ’#c o l l a p s i b l e ’ => TRUE,10 ’#c o l l a p s e d ’ => FALSE ,11 ) ;

Hierboven staat de code die gebruikt wordt om de fieldset te genereren, hier kan je kiezenof de fieldset collapsible is. Elke fieldset wordt verbonden met de id van de vraag.

Listing 2.3: vragenlijst vragen en antwoorden

1 $antwoorden = db que ry ( ”SELECT * FROM antwoorden WHERE ID = ’ $ i d ’ ” ) ;2 whi le ( $row2 = $antwoorden−>f e t c hAs s o c ( ) ) {3 $op t i o n s = a r r a y f i l t e r ( array ( $row2 [ ”ANTWOORD 1” ] , $row2 [ ”ANTWOORD 2” ] ,4 $row2 [ ”ANTWOORD 3” ] , $row2 [ ”ANTWOORD 4” ] ) ) ;5 // f i l t e r ”” , 0 , n u l l67 $ v a l u e s = a r r a y d i f f ( array ( $row2 [ ”WAARDE ANTWOORD 1” ] ,8 $row2 [ ”WAARDE ANTWOORD 2” ] ,9 $row2 [ ”WAARDE ANTWOORD 3” ] ,10 $row2 [ ”WAARDE ANTWOORD 4” ] ) , array ( ’ ’ ) ) ;11 // f i l t e r n u l l1213 $ v a l u e s o p t i o n s = a r r ay comb ine ( $va l ue s , $op t i o n s ) ;1415 $ form [ ’ f i e l d s e t ’ . $ i d ] [ ’ antwoord ’ . $ i d ] = array (16 ’#type ’ => ’ r a d i o s ’ ,17 ’#t i t l e ’ => $row [ ”VRAAG” ] ,18 ’#op t i o n s ’ => $ v a l u e s o p t i o n s ,19 ’#r e q u i r e d ’ => TRUE,20 ) ;21 }

Vervolgens wordt elke vraag met bijhorende antwoorden uit de database gehaald. Elk antwoordwordt gelinkd aan een waarde, deze waarde wordt gebruikt om het totale kapitaal te berekenen.Er kunnen maximum vier antwoorden per vraag gegenereerd worden, het is mogelijk om minderantwoorden te genereren. Daarom worden de arrays met antwoorden en waardes gefilterd.

Page 18: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 12

Hiervoor maken we gebruik van de PHP functies array filter()4 en array diff().5

Array filter() zal ervoor zorgen dat wanneer een antwoord een lege string, de waarde 0 of nullheeft om deze uit de array te halen. De andere waardes worden in een nieuwe array gestoken.

De manier waarop array diff() gebruikt wordt werkt het gelijkaardig als array filter() met datverschil dat de waarde 0 wel toegelaten wordt. Dit is noodzakelijk omdat we de waarde 0 nodighebben in het berekenen van het totale kapitaal. Er zullen twee arrays met elkaar vergelekenworden, de eerste array is degene met de waardes in, de andere is een lege array. Dit wil zeggendat alle lege strings of null waardes eruit gehaald worden. De waardes die doorgelaten wordenzullen in een nieuwe array gestoken worden.

Omdat drupal de sleutels van een array gebruikt als de waardes van de radio buttons maak ikgebruik van de PHP functie array combine().6 Dit zal ervoor zorgen dat in plaats van [0] ⇒’Begraven’, [1]⇒ ’Cremeren’ de waardes van het antwoord de sleutel vervangen zodat de arrayer zo uitziet: [1000] ⇒ ’Begraven’, [500] ⇒ ’Cremeren’.

Array combine() zal twee arrays combineren tot een array, de eerste array bevat de sleutels ende tweede de waardes. Deze array wordt doorgegeven om de radio buttons te genereren.

Om deze radio buttons te creeren moet je het type meegeven, in dit geval radios. Ook de titelen opties worden meegegeven, dit zijn de gegevens die uit de database gehaald worden namelijkde vraag en antwoorden met de waarden. Vervolgens maken we deze vraag required wat wilzeggen dat drupal zal controleren of deze vraag beantwoord is bij het verzenden. Als dit niethet geval is zal er een error optreden en zal het formulier niet doorgestuurd worden.

Is dit wel het geval dan wordt de totale kost berekent. Dit is mogelijk omdat bij het verzendenvan het formulier we alle waarden kunnen bemachtigen via $form state[’values’].

4http://php.net/manual/en/function.array-filter.php5http://php.net/manual/en/function.array-diff.php6http://php.net/manual/en/function.array-combine.php

Page 19: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 13

Listing 2.4: vragenlijst extra vragen

1 $ form [ ’ f i e l d s e t ’ . $ i d ] [ ’ antwoord ’ . $ i d . ’− ’ . $ e x t r a i d ] = array (2 ’#type ’ => ’ r a d i o s ’ ,3 ’#t i t l e ’ => $row3 [ ”EXTRA VRAAG” ] ,4 ’#op t i o n s ’ => $ v a l u e s o p t i o n s e x t r a ,5 //’# r e q u i r e d ’ => TRUE,6 ’#s t a t e s ’ => array (7 ’ v i s i b l e ’ => array (8 ’ i n pu t [ name=”antwoord ’ . $ i d . ’ ” ] ’ =>9 array ( ’ v a l u e ’ => $ v a l u e s [ $counte r ] ) ,10 ) ,11 ) ,12 ) ;13 $counte r++;

Tot slot worden er ook extra vragen gegenereerd, dit zijn vragen die getoond worden wanneerhet passende antwoord gegeven wordt bij een hoofdvraag. Drupal’s form API heeft een attribuutgenaamd states. Deze maakt het mogelijk om de extra vragen te tonen wanneer een bepaaldantwoord gegeven wordt.

De states attribuut heeft de naam van de radio button groep nodig en de waarde van de radiobutton. Als de radio button met dezelfde waarde in de juiste groep geselecteerd wordt zal deextra vraag verschijnen.

Page 20: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 14

2.5.2 Database

Figuur 2.7: Database schema

De database bestaat uit vijf tabellen namelijk:

� vragen

� antwoorden

� extra vraag

� extra antwoorden

� resultaten

De vragen tabel bestaat uit een id en een vraag, dit id is gekoppeld aan de antwoorden tabel.Deze bevat maximum vier antwoorden met zijn waarden. De extra vraag tabel is gelijkaardigaan de vragen tabel met dat verschil dat er een extra id verbonden is met het id van de vragentabel. Dit is noodzakelijk omdat de extra vraag afhankelijk is van de hoofdvraag. De extraantwoorden tabel blijft hetzelfde als de antwoorden tabel.

Als het formulier wordt doorgestuurd zullen alle antwoorden opgeslagen worden in de resultatentabel. Deze heeft een auto increment id en slaagt de datum, het totale kapitaal en alleantwoorden op.

Dit schema verschilt een klein beetje met het originele schema omdat de database wordtaangemaakt met een .install bestand. In Drupal 7 is het niet mogelijk om foreign keys aan

Page 21: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 15

te maken in een .install bestand. Daarom zijn er geen foreign keys als de module geınstalleerdwordt.

Page 22: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 16

2.5.3 Admin pagina

Front-end

Figuur 2.8: Admin pagina

De admin pagina bestaat uit twee tabs namelijk de default admin pagina en de resultaten pagina.De default admin pagina toont de vier database tabellen. Hier kunnen vragen en antwoordentoegevoegd, aangepast of verwijderd worden.

Voor de extra vragen en extra antwoorden is de werking juist hetzelfde. Extra vragen enantwoorden kunnen ook toegevoegd, aangepast en verwijderd worden. Het enige verschil is dateen extra vraag gekoppeld moet worden aan een bestaande hoofdvraag.

Page 23: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 17

Vraag en antwoord toevoegen

Figuur 2.9: Vraag en antwoord toevoegen

Als er een vraag en zijn antwoorden toegevoegd worden wordt er minstens een vraag en tweeantwoorden met hun waarden verwacht. Deze velden zijn required en zijn dus verplicht in tevullen.

Antwoord drie en vier en hun waarden zijn optioneel. De textbox voor de waarde verwacht eeninteger.

Page 24: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 18

Vraag en antwoord aanpassen

Figuur 2.10: Vraag en antwoord aanpassen

Om een vraag met zijn antwoorden aan te passen moet je een vraag kiezen uit de tabel.Vervolgens wordt er een formulier geladen met de vraag en zijn huidige antwoorden en waardeningevuld.

Hier kan alles aangepast worden, zowel vraag als antwoorden en het is mogelijk om een vraagmet twee antwoorden uit te breiden naar drie of vier antwoorden.

Vraag en antwoord verwijderen

Het is mogelijk om een vraag en zijn antwoorden te verwijderen. De admin kan zoveel vragenselecteren als hij wil, de vragen en bijhorende antwoorden zullen verwijderd worden.

Page 25: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 19

Resultaten

Figuur 2.11: Resultaten pagina

De resultaten pagina laat alle resultaten van de resultaten tabel in de database zien. Hier kanje de datum, het totale kapitaal en alle geselecteerde antwoorden terugvinden.

Het is niet mogelijk om de resultaten aan te passen of te verwijderen via de admin of resultatenpagina.

Page 26: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 20

Back-end

Om vragen en antwoorden toe te voegen, aan te passen en te verwijderen maken we gebruikvan drie verschillende queries namelijk:

� insert

� update

� delete

In de codevoorbeelden 2.5, 2.6 en 2.7 die hieronder terug te vinden zijn zien we bovenaanin commentaar een drupal 6 query. Deze is gelijkaardig aan een gewone PHP query met datverschil dat in plaats van de PHP functie mysqli query de drupal functie db query gebruiktwordt.

Het wordt aangeraden om de db query() functie niet meer te gebruiken in drupal 7 uitveiligheidsoverwegingen. Dit is vooral bij de insert en update queries. In drupal 6 was er defunctie db escape string() die apart gebruikt moest worden. In drupal 7 gebeurt dit automatischwanneer de db insert() en db update() query uitgevoerd worden.

Vraag en antwoord toevoegen

Listing 2.5: code vraag en antwoord toevoegen

1 /* db que ry (” INSERT INTO antwoorden (ANTWOORD 1, ANTWOORD 2,2 ANTWOORD 3, ANTWOORD 4,3 WAARDE ANTWOORD 1, WAARDE ANTWOORD 2,4 WAARDE ANTWOORD 3, WAARDE ANTWOORD 4, ID )5 VALUES ( ’ $antwoord1 ’ , ’ $antwoord2 ’ , ’ $antwoord3 ’ , ’ $antwoord4 ’ ,6 ’ $waarde antwoord1 ’ , ’ $waarde antwoord2 ’ , ’ $waarde antwoord3 ’ ,7 ’ $waarde antwoord4 ’ , ’ $ v o l g e n d e i d ’ ) ” ) ; */89 $ i n s e r t a n twoo r d e n 1 2 3 4 = d b i n s e r t ( ’ antwoorden ’ )10 −> f i e l d s ( array (11 ’ANTWOORD 1 ’ => $antwoord1 ,12 ’ANTWOORD 2 ’ => $antwoord2 ,13 ’ANTWOORD 3 ’ => $antwoord3 ,14 ’ANTWOORD 4 ’ => $antwoord4 ,15 ’WAARDE ANTWOORD 1 ’ => $waarde antwoord1 ,16 ’WAARDE ANTWOORD 2 ’ => $waarde antwoord2 ,17 ’WAARDE ANTWOORD 3 ’ => $waarde antwoord3 ,18 ’WAARDE ANTWOORD 4 ’ => $waarde antwoord4 ,19 ’ ID ’ => $ vo l g ende i d ,20 ) )21 −>e x e cu t e ( ) ;

De eerste zeven regels zijn een drupal 6 insert query. Daaronder vind je de drupal 7 insert queryterug, deze is identiek aan de drupal 6 query.

Page 27: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 21

Vraag en antwoord aanpassen

Listing 2.6: code vraag en antwoord aanpassen

1 /* $ s q l an twoo rd en aanpa s s en = db que ry (”UPDATE antwoorden2 SET ANTWOORD 1=’$antwoord1 ’ , ANTWOORD 2=’$antwoord2 ’ ,3 ANTWOORD 3=’$antwoord3 ’ , ANTWOORD 4=’$antwoord4 ’ ,4 WAARDE ANTWOORD 1=’$waarde antwoord1 ’ ,5 WAARDE ANTWOORD 2=’$waarde antwoord2 ’ ,6 WAARDE ANTWOORD 3=’$waarde antwoord3 ’ ,7 WAARDE ANTWOORD 4=’$waarde antwoord4 ’8 WHERE ID = ’ $ i d ’ ” ) ; */910 $ s q l an twoo rd en aanpa s s en = db update ( ” antwoorden ” )11 −> f i e l d s ( array (12 ’ANTWOORD 1 ’ => $antwoord1 ,13 ’ANTWOORD 2 ’ => $antwoord2 ,14 ’ANTWOORD 3 ’ => $antwoord3 ,15 ’ANTWOORD 4 ’ => $antwoord4 ,16 ’WAARDE ANTWOORD 1 ’ => $waarde antwoord1 ,17 ’WAARDE ANTWOORD 2 ’ => $waarde antwoord2 ,18 ’WAARDE ANTWOORD 3 ’ => $waarde antwoord3 ,19 ’WAARDE ANTWOORD 4 ’ => $waarde antwoord4 ,20 ) )21 −>c o n d i t i o n ( ’ ID ’ , $ id , ’= ’ )22 −>ex e cu t e ( ) ;

De eerste acht regels zijn een voorbeeld van een drupal 6 update query. Gevolgd door eendrupal 7 update query met een voorwaarde.

Vraag en antwoord verwijderen

Listing 2.7: code vraag en antwoord verwijderen

1 f u n c t i o n u i t v a a r t k o s t e nC a l c u l a t o r a dm i n f o rm v r a a g v e rw i j d e r e n ( $form , &$ f o rm s t a t e ){2 $ v r a a g v e r w i j d e r e n a r r = a r r a y f i l t e r ( $ f o rm s t a t e [ ’ v a l u e s ’ ] [ ’ v r a g e n t a b e l ’ ] ) ;3 foreach ( $ v r a a g v e r w i j d e r e n a r r as $ v a l u e i d ) {4 // $ s q l d e l e t e = db que ry (”DELETE FROM vragen WHERE ID = ’ $ v a l u e i d ’ ” ) ;5 $ s q l d e l e t e v r a a g = db d e l e t e ( ’ v ragen ’ )6 −>c o n d i t i o n ( ’ ID ’ , $ v a l u e i d )7 −>ex e cu t e ( ) ;8 $ s q l d e l e t e a n two o r d = db d e l e t e ( ’ antwoorden ’ )9 −>c o n d i t i o n ( ’ ID ’ , $ v a l u e i d )10 −>ex e cu t e ( ) ;11 }12 }

Hierboven zien we een simpele delete query. Hier worden de geselecteerde vragen met bijhorendeantwoorden verwijderd.

Page 28: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 22

2.5.4 .install bestand

Een .install bestand zal ervoor zorgen dat wanneer een module voor de eerste keer geınstalleerdwordt de nodige database tabellen en velden aangemaakt worden. Dit is de voornaamste redenwaarom een .install bestand gebruikt wordt.

Het .install bestand wordt net zoals een .info en .module bestand gebruikt. Het wordt ook indezelfde map geplaatst. Dit wil zeggen dat eerst de naam van de module komt gevolgd dooreen .install: uitvaartkostenCalculator.install.

Listing 2.8: installeren van de vragen tabel

1 f u n c t i o n u i t v a a r t k o s t e nC a l c u l a t o r s c h ema ( ) {2 $schema [ ’ v ragen ’ ] = array (3 ’ f i e l d s ’ => array (4 ’ ID ’ => array (5 ’ type ’ => ’ i n t ’ ,6 ’ un s i gned ’ => TRUE,7 ’ not n u l l ’ => TRUE,8 ) ,9 ’VRAAG ’ => array (10 ’ type ’ => ’ v a r c ha r ’ ,11 ’ l e n g t h ’ => 500 ,12 ’ not n u l l ’ => TRUE,13 ) ,14 ) ,15 ’ p r imary key ’ => array ( ’ ID ’ ) ,16 ) ;17 }

In codevoorbeeld 2.8 zien we hoe de vragen tabel wordt geınstalleerd. Dit gebeurt in deuitvaartkostenCalculator schema() hook.

Elke tabel komt in de $schema array gevolgd door desbetreffende velden, hun type en optioneleparameters.

Het voordeel van hook schema() is dat deze wordt aangeroepen als de module wordtgeınstalleerd en als deze wordt verwijderd. De module moet niet verwijderd worden uit de drupalfolder, het enige dat de admin moet doen is de module uitschakelen (disable) en vervolgens opde uninstall tab klikken.

Ten slotte kan je uninstall aanvinken in de uninstall tab en zo worden ook alle tabellen uit dedatabase verwijderd.

Page 29: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 23

2.5.5 Insert default vragen

Listing 2.9: installeren default vragen

1 i f ( d b t a b l e e x i s t s ( ” v ragen ” ) ) {2 $vragen = array (3 array ( ’ ID ’ => 1 ,4 ’VRAAG ’ => ’Wenst u t e worden begraven o f gecremeerd ? ’ ) ,5 array ( ’ ID ’ => 2 ,6 ’VRAAG ’ => ’Wat voor type k i s t wenst u? ’ ) ,7 array ( ’ ID ’ => 3 ,8 ’VRAAG ’ => ’Waar wenst u de r ouwd i en s t ? ’ ) ,9 array ( ’ ID ’ => 4 ,10 ’VRAAG ’ => ’ Hoevee l vo lgwagens wenst u? ’ ) ,11 array ( ’ ID ’ => 5 ,12 ’VRAAG ’ => ’ Type consumpt ie ’ ) ,13 array ( ’ ID ’ => 6 ,14 ’VRAAG ’ => ’Wenst u rouwbr i e v en ? ’ ) ,15 array ( ’ ID ’ => 7 ,16 ’VRAAG ’ => ’Wenst u b i d p r e n t j e s ? ( g e d a c h t e n p r e n t j e s ) ’ ) ,17 array ( ’ ID ’ => 8 ,18 ’VRAAG ’ => ’ Hee f t u graag een r ouwadv e r t e n t i e i n de k r an t ? ’ ) ,19 array ( ’ ID ’ => 9 ,20 ’VRAAG ’ => ’ Hee f t u graag een rouwkrans ? ’ ) ,21 array ( ’ ID ’ => 10 ,22 ’VRAAG ’ => ’Wenst u een g r a f s t e e n ? ’ ) ,23 ) ;24 $ i n s e r t v r a g e n q u e r y = d b i n s e r t ( ’ v ragen ’)−> f i e l d s ( array ( ’ ID ’ , ’VRAAG ’ ) ) ;25 foreach ( $vragen as $vraag ) {26 $ i n s e r t v r a g e n q u e r y−>v a l u e s ( $vraag ) ;27 }28 $ i n s e r t v r a g e n q u e r y−>ex e cu t e ( ) ;29 }30 e l s e d r u p a l s e t me s s a g e (31 ’ Vragen t a b e l b e s t a a t n i e t , i n s t a l l e e r de module opnieuw . ’ ,32 ’ e r r o r ’ ) ;

Onderaan de admin pagina kan je de insert default vragen button terugvinden. Deze actie zalalle vragen, extra vragen met hun antwoorden en extra antwoorden in de database plaatsen.

Om alle vragen en antwoorden te verwijderen moet de module verwijderd worden. Het is nietmogelijk om bestaande vragen te overschrijven.

Tevens is er een controle of de database tabellen zijn geınstalleerd in de database. Is dit niet hetgeval dan wordt er een error weergegeven die aanraadt om de module opnieuw te intstalleren.

Page 30: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

HOOFDSTUK 2. BESPREKING 24

2.5.6 Hoe de uitvaartkosten calculator module gebruiken

Stap 1

Als u de module voor een nieuwe site wil gebruiken: Plaats de uitvaartkostenCalculator folderin sites/all/modules/custom folder. Het wordt aangeraden om een custom folder zelf aan temaken om custom modules in te plaatsen.

Stap 2

De administrator moet ingelogd zijn op zijn site.Dit kun je doen via http://localhost/vergelijkdirect/user/login of uwsite.be/user/login.

Als u bent ingelogd krijgt u bovenaan de pagina een navigatiebalk te zien, kies hier voor modules.Vervolgens krijg je een lijst met alle modules. Onderaan de pagina onder verzekeringen zou deuitvaartkosten calculator module zichtbaar moeten zijn. Natuurlijk moet deze module enabledworden.

Stap 3

Als de module enabled is zouden de database tabellen al geınstalleerd moeten zijn. Alsook zouer naast de module een Help en Configure link zichtbaar moeten zijn. De configure link leidtnaar de admin pagina waar u kunt starten.

Stap 4

Als u de uitvaartkosten vragen en antwoorden wilt toevoegen kan u onderaan de pagina opinsert default vragen klikken. Wilt u opnieuw beginnen dan kan u bovenaan beginnen metvragen en extra vragen en antwoorden toe te voegen.

Page 31: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Hoofdstuk3Resultaten

Het was de bedoeling om een custom module te maken die ook voor andere verzekeringengebruikt kan worden. De basis hiervoor is gelegd, maar er moeten nog aanpassingen gebeurenom de module te gebruiken voor een andere verzekering.

Eerst moet de module naam verandert worden, als deze wordt verandert moet ook de .info en.module bestanden aangepast worden. Dit wil zeggen dat ook de hooks aangepast moetenworden, dit kan eenvoudig gedaan worden met een goede IDE1. Deze hebben een goedezoekfunctie waarmee je alle namen kan veranderen door namen die gekozen wordt voor denieuwe module.

Tot slot kan de database nog aangepast worden om niet alleen op id’s te vertrouwen. Eenmogelijkheid hiervoor is om een extra rij toe te voegen met vraagnummer.

1http://en.wikipedia.org/wiki/Integrated development environment

25

Page 32: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Hoofdstuk4Besluit

De uitvaartkosten calculator module zal vooral gebruikt worden om de uitvaartkosten teberekenen. De module kan ook aangepast worden zodat deze gebruikt kan worden voor andereverzekeringen.

Met drupal 7 kan je knappe sites maken zonder echt veel te programmeren. Dit is een voordeelals het vooral draait om het design van de site.

Helaas ben ik ook heel wat beperkingen tegengekomen, vooral met het programmeren van demodule en het installeren van de database. Zoals in de .install file kan je een primary keyaanduiden maar geen foreign key. Dit vindt ik teleurstellend.

Tevens is de documentatie voor bepaalde onderwerpen zeer uitgebreid en duidelijk en overandere onderwerpen is zeer weinig terug te vinden. Sommige documentatie is ook te veelgekoppeld aan drupal 6.

26

Page 33: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

BijlageAAppendix

27

Page 34: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

BijlageBOpmerkingen bij scripties

28

Page 35: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken

Bibliografie

[1] John Albin. Zen. https://www.drupal.org/project/zen. [Online; laatst bezocht 10-Juni-2015].

[2] Drupal community. Form API Reference. https://api.drupal.org/api/drupal/developer!topics!forms api reference.html/7. [Online; laatst bezocht 10-Juni-2015].

[3] Drupal community. Database API. https://www.drupal.org/developing/api/database,2008. [Online; laatst bezocht 10-Juni-2015].

[4] Todd Tomlinson en John K. VanDyk. Pro Drupal 7 Development. Apress, 2010.

[5] Christopher M. Eppstein. Getting started with Compass. http://compass-style.org/help/.[Online; laatst bezocht 10-Juni-2015].

[6] Chris Eppstein Hampton Catlin, Natalie Weizenbaum and numerous contributors. SassBasics. http://sass-lang.com/guide. [Online; laatst bezocht 10-Juni-2015].

[7] Matt Farina Larry Garfield Ken Rickard John Albin Wilkins Matt Butcher, Greg Dunlap.Drupal 7 Module Development. packt, 2010.

[8] David Mercer. Drupal 7. packt, 2010.

29

Page 36: Drupal 7 website met uitvaartkosten calculator modulebeta.eaict.ap.be/wp-content/uploads/2015/06/1415_Scrip...Abstract Het doel van dit project was om een Drupal 7 website te maken