Webgestuurde deelnemersadministratie voor een sociaal...

81

Transcript of Webgestuurde deelnemersadministratie voor een sociaal...

Page 1: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten
Page 2: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten
Page 3: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten
Page 4: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

Toelating tot bruikleen

De auteurs geven de toelating deze masterproef voor consultatie beschikbaar te stellen

en delen van de masterproef te kopiëren voor persoonlijk gebruik. Elk ander gebruik

valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de

verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze

masterproef.

The authors give permission to make this master dissertation available for consultation

and to copy parts of this master dissertation for personal use.

In the case of any other use, the limitations of the copyright have to be respected, in

particular with regard to the obligation to state expressly the source when quoting

results from this master dissertation.

6 juni 2011

Tackaert Tessa Prof.dr.ir.W.Philips

Fraeyman Evy Prof. dr. D. Vyncke

Page 5: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

Dankwoord

Vooraleer we overgaan tot de eigenlijke scriptie zouden we eerst graag een aantal

mensen willen bedanken die ons geholpen hebben met de realisatie van deze

masterproef en het voltooien van deze richting.

In de eerste plaats willen we prof. Dr. Ir. Wilfried Philips bedanken voor het aanbieden

van dit interessante thesisonderwerp.

Verder willen we onze begeleiders prof. Dr. David Vyncke en dr. Ewout Vansteenkiste

bedanken. Dankzij hen kregen we een duidelijkere kijk op hoe we de scriptie konden

aanpakken en hoe de database opgebouwd moest worden.

We zouden ook onze ouders uitdrukkelijk willen bedanken. Het is dankzij hen dat we

deze opleiding konden volgen. Hun onvoorwaardelijke steun en aanmoedigingen

hielpen ons door de moeilijke momenten heen.

Als laatste willen we alle vrienden bedanken die op een of andere manier bijgedragen

hebben tot het voltooien van deze masterproef. Speciale dank gaat uit naar Merlijn

voor de waardevolle tips en naar Lindsey voor de catering.

Wij wensen u allen veel leesgenot.

Tessa & Evy

Page 6: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

Universiteit Gent

Faculteit Ingenieurswetenschappen en Architectuur

Vakgroep Telecommunicatie en Informatieverwerking

Masterproef ingediend tot het behalen van de academische graad van Master

in de Toegepaste informatica

Academiejaar 2010-2011

Ontwerp van een webgestuurde deelnemersadministrati e voor een

sociaal-toeristische jeugdvereniging in Drupal

Evy Fraeyman, Tessa Tackaert

Promotor: prof. dr. ir. Wilfried Philips

Begeleider: prof. dr. David Vyncke, dr. Ewout Vansteenkiste

Samenvatting

Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten organiseert voor

maatschappelijk kwetsbare kinderen en jongeren. Het inschrijven van jongeren voor

activiteiten dient echter op een vlotte en efficiënte manier te kunnen gebeuren. Alle

benodigde gegevens dienen dus op een gestructureerde manier te worden

bijgehouden. In deze scriptie ontwerpen we een degelijke database om de data bij te

houden en een gebruiksvriendelijke web-interface die de medewerkers van Bizon

toelaat om gegevens toe te voegen, te bekijken, te wijzigen of te verwijderen. Deze

web-interface zal ontwikkeld worden met Drupal.

Het resultaat is terug te vinden op http://bizonvzw.ugent.be

Trefwoorden: CMS, Drupal, website, Bizon

Page 7: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

Inhoud

1. INLEIDING 1

1.1 Probleemstelling en doelstellingen 1

1.2 Content Management Systems 2

1.3 Drupal 3

1.3.1 Algemeen 3

1.3.2 Basisvereisten 4

1.3.3 Veiligheid 4

1.3.4 De Drupal Core 4

1.3.5 De Bizon website 6

1.3.6 Toegangsrechten 6

2. DE DATABASE 8

2.1 Informatievergaring 8

2.1.1 Domeinanalyse 8

2.1.2 Functionele analyse 9

2.1.3 Behoefteanalyse 11

2.2 Conceptueel ontwerp 11

2.3 Logisch ontwerp 14

2.3.1 Stap 1: Omzetten van reguliere entiteittypes 14

2.3.2 Stap 2 tot en met stap 5 15

2.3.3 Stap 6: Omzetting van binaire ‘één-op-meerdere’ relatietypes 15

2.3.4 Stap 7: Omzetting van binaire ‘meerdere-op-meerdere’ relatietypes 16

2.3.5 Stappen 8 en 9 16

2.3.6 Het relationeel databaseschema 17

2.4 Fysiek ontwerp 18

3. ALGEMEEN 24

3.1 De internetbrowser 24

3.2 Template 24

3.3 Gebruikersregistratie 25

3.4 De homepage 25

3.4.1 Anonieme gebruikers 25

3.4.2 Geverifieerde gebruikers 26

3.4.3 Gebruikers met de rol van administrator 26

Page 8: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

4. INHOUDSTYPES 27

4.1 Modules 27

4.1.1 Content Construction Kit (CCK) 27

4.1.2 Unique Field 30

4.1.3 Date 31

4.1.4 Token 31

4.1.5 Rules 31

4.2 De verschillende inhoudstypes 32

4.2.1 Inhoudstype ‘Voorzieningen’ 32

4.2.2 Inhoudstype ‘Jongeren’ 36

4.2.3 Inhoudstype ‘Activiteit’ 37

4.2.4 Inhoudstype ‘Inschrijving’ 38

4.2.5 Inhoudstype ‘Onkosten’ 39

4.2.6 Inhoudstype ‘Transport’ 40

4.2.7 Inhoudstype ‘Aanvraag’ 41

4.2.8 Inhoudstype ‘Algemene Gegevens’ 42

5. DE GEGEVENSBANK 43

5.1 Modules 43

5.1.1 Views 43

5.1.2 Views Bulk Operations 44

5.2 Activiteiten 44

5.2.1 Overzicht 44

5.2.2 Filters ter beschikking van de gebruiker 44

5.2.3 Detail, bewerken en verwijderen 44

5.3 Aanvragen 45

5.3.1 Overzicht 45

5.3.2 Filters ter beschikking van de gebruiker 48

5.3.3 Detail, bewerken en verwijderen 48

5.4 Inschrijvingen 48

5.4.1 Overzicht 48

5.4.2 Filters ter beschikking van de gebruiker 49

5.4.3 Detail, bewerken en verwijderen 49

5.5 Jongeren 50

5.5.1 Overzicht 50

5.5.2 Filters ter beschikking van de gebruiker 50

5.5.3 Detail, bewerken en verwijderen 50

Page 9: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

5.6 Transportinfo 51

5.6.1 Overzicht 51

5.6.2 Filters ter beschikking van de gebruiker 51

5.6.3 Detail, bewerken en verwijderen 51

5.7 Voorzieningen 51

5.7.1 Overzicht 51

5.7.2 Filters ter beschikking van de gebruiker 52

5.7.3 Detail, bewerken en verwijderen 52

5.8 Onkosten 52

5.8.1 Overzicht 52

5.8.2 Detail, bewerken en verwijderen 53

6. INHOUD TOEVOEGEN, VERWIJDEREN OF WIJZIGEN 54

6.1 Inhoud toevoegen 54

6.1.1 Activiteiten toevoegen 54

6.1.2 Aanvragen toevoegen 55

6.1.3 Inschrijvingen toevoegen 55

6.1.4 Jongeren toevoegen 55

6.1.5 Transportinfo toevoegen 56

6.1.6 Voorzieningen toevoegen 56

6.1.7 Onkosten toevoegen 57

6.2 Inhoud verwijderen 57

6.3 Inhoud wijzigen 58

7. GEBRUIKERS 59

7.1 Modules 60

7.1.1 Role Delegation 60

7.1.2 Administer Users by Role 60

7.1.3 Password Change Confirm 60

7.1.4 Generate Password (Genpass) 61

7.1.5 Password Strength 62

7.1.6 Profile Permission 63

7.1.7 Restrict Password Change 63

7.1.8 Protect Critical Users 63

7.1.9 Profile 63

Page 10: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

7.2 Een gebruiker toevoegen 64

7.3 Gebruikersgegevens wijzigen 65

7.3.1 Geverifieerde gebruikers 65

7.3.2 Administrators 66

7.3.3 Een nieuw wachtwoord aanvragen 67

7.4 Een gebruiker verwijderen 67

8. BESLUIT 68

9. REFERENTIES 69

9.1 Boeken

9.2 Werkstukken

9.3 Websites

Page 11: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

Gebruikte afkortingen

Aanvraagid Id van een aanvraag

Aid AcitiviteitID

CCK Content Construction Kit

CMS Content Management System

CSS Cascading Style Sheets

EER Enhanced Entity-Relationship

HTML HyperText Markup Language

Iid InschrijvingsID

IIS webserver Internet information webserver

Jid JongerenID

Mb Megabyte

Nid nodeID

Oid OnkostenID

PHP Hypertext Preprocessor

ProcMedAnn Percentage bij medische annulatie

Rekeningnr Rekeningnummer

SQL Structured Query Language

Telefoonnr Telefoonnummer

Tid TransportID

URL Uniform Resource Locator

Vid RevisionID (Drupal)

Vid VoorzieningsID (inhoudstype)

XHTML Extensible Hypertext Markup Language

Page 12: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

Lijst van gebruikte figuren

Figuur 1: EER Diagram p.11

Figuur 2: Het Fysiek ontwerp zoals men zou verwachten p.20

Figuur 3: Het Fysiek ontwerp p.21

Figuur 4: Detail van de velden die in verschillende inhoudstypes voorkomen

en slechts één keer worden opgeslagen in een aparte tabel p.22

Figuur 5: De header voor anonieme gebruikers p.24

Figuur 6: De header voor geverifieerde gebruikers p.25

Figuur 7: De header voor administrators p.25

Figuur 8: Detail en bewerken van een activiteit p.45

Figuur 9: Webpagina met het overzicht van de aanvragen p.47

Figuur 10: Webpagina om een jongere toe te voegen p.55

Figuur 11: Sterk wachtwoord p.65

Page 13: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

1

1. Inleiding

1.1 PROBLEEMSTELLING EN DOELSTELLINGEN

De bedoeling van onze scriptie was het ontwikkelen van een deelnemersadministratie-

systeem voor Bizon vzw, een sociaal-toeristische jeugdvereniging. Bizon vzw

organiseert het hele jaar door activiteiten en weekends voor maatschappelijk

kwetsbare kinderen en jongeren. In de schoolvakanties worden deze activiteiten verder

uitgebreid met vakantiekampen. Om al deze activiteiten, jongeren en inschrijvingen op

een overzichtelijke manier te kunnen bijhouden is een betrouwbare database en een

duidelijke gebruikersinterface van cruciaal belang. Momenteel maakt men reeds

gebruik van een systeem die het mogelijk maakt deze variëteit aan gegevens te

beheren, maar men is toe aan een up-to-date systeem dat minder log is als het huidige

met een grotere gebruiksvriendelijkheid. Daarenboven zou het handig zijn als het

nieuwe systeem organisaties toelaat zelf een aanvraag tot inschrijving in te dienen.

Deze aanvraag kan vervolgens door medewerkers van Bizon worden bekeken en

indien geldig aanvaard worden, zonder dat men alle gegevens nog manueel moet

invoeren.

Om tegemoet te komen aan deze verschillende behoeften was er dus nood aan een

nieuwe database waarin gegevens via een webinterface kunnen worden opgeslagen,

gewijzigd en verwijderd. Wij zijn vorig jaar met deze scriptie gestart en hebben samen

met een andere groep een database opgesteld. Deze andere groep heeft deze

database reeds geïmplementeerd in een webgestuurd administratiesysteem

geschreven in PHP (Schelstraete & Jacobs, 2010). Dit jaar werken wij verder met de

database die wij samen met hen ontwikkeld hebben, maar zullen deze op een heel

andere manier implementeren.

Alvorens verder in te gaan op deze implementatie is het belangrijk om de vereiste

functionaliteiten nog wat verder te verduidelijken. Vooreerst is het belangrijk om aan te

halen dat deze website hoofdzakelijk gebruikt zal worden voor administratieve

doeleinden. Wanneer mensen informatie over Bizon of over de georganiseerde

activiteiten wensen kunnen zij nog steeds terecht op de officiële website van Bizon

(www.bizonvzw.be). Voor de administratie is het belangrijk om jongeren te kunnen

inschrijven voor een activiteit. Om deze actie mogelijk te maken dient het dus mogelijk

te zijn om activiteiten, jongeren en informatie met betrekking tot het vervoer van en

naar de activiteit, toe te voegen.

Page 14: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

2

Verder behoort een jongere ook steeds tot een bepaalde voorziening. De administratief

medewerkers moeten dus de voorziening, waartoe een bepaalde deelnemer behoort,

kunnen toevoegen. Deze verschillende entiteiten dienen vanzelfsprekend te kunnen

gewijzigd of verwijderd worden. Naast het bewerken van de database dienen

medewerkers natuurlijk ook een duidelijk overzicht te hebben van elk van deze

entiteiten. Bijvoorbeeld welke jongeren er reeds deelnamen aan een Bizon-activiteit,

wie ingeschreven is voor welke activiteit, hoe die jongeren zich van en naar de activiteit

verplaatsen,…

De webapplicatie die hiervoor gecreëerd wordt staat op een openbare website,

waardoor het noodzakelijk is om deze veelheid aan data af te schermen van het grote

publiek. Een voorziening die reeds klant is bij Bizon dient evenwel de mogelijkheid te

hebben om een aanvraag tot inschrijving in te dienen.

1.2 CONTENT MANAGEMENT SYSTEMS

Zoals zonet al werd aangehaald, hebben wij deze website op een heel andere manier

geïmplementeerd dan de vorige groep. Zij maakten gebruik van HTML voor de lay-out

en van PHP om de pagina’s dynamisch te maken. Gezien de doelstellingen leek het ons

echter een goed idee om een content management systeem (CMS) te gebruiken voor

het opbouwen van dynamische webpagina’s. Een CMS laat verschillende gebruikers

met verschillende rechten toe om inhoud aan de website toe te voegen zonder dat zij

daarvoor de technische expertise moeten hebben. Verder is er een duidelijke scheiding

tussen de site-inhoud en de presentatie ervan. De site krijgt hierdoor heel eenvoudig

een consistent beeld doorheen de verschillende pagina’s en men kan de site een

andere look geven zonder dat dit een invloed heeft op de inhoud. Samengevat laat een

CMS systeem de gebruiker toe zich te concentreren op inhoud en biedt het een goed

uitgewerkt gebruikersbeheer, een lay-out die losstaat van de inhoud en uitgebreide

basisfuncties die geen aangepaste codering vergen. In navolging van het verzoek van

de organisatie van Bizon vzw hebben wij ervoor gekozen om bij deze website gebruik

te maken van het open source content management systeem Drupal.

Page 15: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

3

1.3 DRUPAL

1.3.1 Algemeen

De basis van Drupal werd in het jaar 2000 gelegd door de Belg en voormalig UGent

student Dries Buytaert. Hij is vandaag nog steeds de projectleider van deze

snelgroeiende open-source CMS. Een uitgebreide internationale gemeenschap draagt

bij tot de verdere ontwikkeling van de Drupal core alsook de ontwikkeling van nieuwe

modules, templates en documentatie. Hierdoor blijft Drupal groeien en kent het een

stijgende populariteit. Vele commerciële organisaties (bv. IKEA), overheids-

gerelateerde instanties (bv. Witte huis) of individuele personen (bv. Robbie Williams)

creëren hun website reeds met Drupal.

Drupal is een modulair opgebouwd systeem. Een bepaalde functionaliteit dient dan ook

gerealiseerd te worden met behulp van een bepaalde module. Opdat de modules

zouden kunnen samenwerken wordt in Drupal gebruik gemaakt van hooks. Een

functionaliteit die in de ene module reeds aanwezig is kan dus ook vanuit een andere

module opgeroepen worden door gebruik te maken van deze hooks. Op deze manier

haakt elke Drupal module in een andere om zo elke functionaliteit van de website te

kunnen realiseren.

Bij de installatie van Drupal download je de Drupal Core. Met deze basisinstallatie kan

je reeds een eenvoudige website maken, content toevoegen, gebruikers en rollen

toevoegen en je site opmaken. Bij deze installatie worden standaard een aantal

modules meegeleverd die onder andere een aantal van bovenstaande functionaliteiten

mogelijk maken. Ook worden er standaard een aantal templates meegeleverd

waardoor je site vanaf het begin een bepaald uitzicht meekrijgt. Daarna kan je Drupal

eenvoudig uitbreiden door andere modules en templates te installeren op de server.

Deze modules en templates kan je onder andere downloaden op drupal.org.

Drupal kent een steile leercurve, maar eens je je de basisprincipes voldoende eigen

gemaakt hebt zijn de mogelijkheden eindeloos. Om met Drupal te leren werken hebben

wij vooral de officiële Drupal-website geraadpleegd (drupal.org) maar ook de boeken

van Van Dyk (2008), Mercer (2010) en Townsend & Pakrul (2010).

Page 16: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

4

1.3.2 Basisvereisten

Een eerste basisvereiste is dat er voldoende schijfruimte op de webserver aanwezig is.

Wanneer je gebruik maakt van verschillende modules en een aantal templates kan

deze vereiste schijfruimte gauw oplopen tot 40Mb of meer, de inhoud van de database

niet meegerekend. De aanbevolen webserver is Apache, hoewel het ook mogelijk is

om een IIS webserver te gebruiken. De database server die aanbevolen wordt is

MySQL maar ook hier zijn er andere mogelijkheden. Verder dient php geïnstalleerd te

worden op de server, met een minimale versie van 4.4.0 voor Drupal 6.

1.3.3 Veiligheid

Qua veiligheid scoort Drupal erg goed en werd het veiliger bevonden dan andere

bekende open source CMS platformen zoals Joomla en WordPress. Men heeft een

aangepast beleid ontwikkeld waar mogelijke veiligheidsproblemen onderzocht worden,

geverifieerd en indien nodig gerapporteerd. Een veiligheidsteam is in continue

samenwerking met de Drupal gemeenschap om deze veiligheidsproblemen op te

lossen. Gebruikers worden aangeraden zich te registreren voor de veiligheidsemails

zodat zij op de hoogte blijven van de laatste adviezen met betrekking tot veiligheid.

Wanneer een nieuw veiligheidsupdate beschikbaar is wordt elke beheerder hiervan op

de hoogte gebracht via een waarschuwing op de website.

1.3.4 De Drupal Core

Zoals eerder vermeld worden een aantal modules meegeleverd bij de eerste Drupal

installatie. Een aantal van deze modules zijn optioneel. Andere zijn vereist opdat het

systeem zou werken. Om de verdere uiteenzetting te kunnen volgen is het van belang

deze modules kort toe te lichten.

A. Verplichte core-modules

• Block

Deze module beheert de blokken informatie die rondom de hoofdinhoud kunnen

weergegeven worden. Hierdoor wordt het mogelijk om bijvoorbeeld menu’s weer te

geven in de header of het login-gedeelte eenvoudig rechts te plaatsen van de inhoud.

Page 17: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

5

• Filter

Deze module behandelt het filteren van inhoud voordat die getoond wordt. Tekst die

door gebruikers wordt ingevoerd wordt verwerkt via de ingestelde invoerformaten.

Deze invoerformaten gebruiken filters om tekst te bewerken. Hierdoor kan de

gebruikersinvoer omgevormd worden en kan hier informatie aan toegevoegd of

verwijderd worden. De beschikbare invoerformaten zijn filtered HTML, full HTML of PHP

code.

• Node

Deze cruciale module biedt gebruikers de mogelijkheid om inhoud aan de website toe

te voegen en weer te geven op bepaalde pagina’s. Alle inhoud wordt in Drupal

behandelt als een node. Met deze module kunnen de inhoudstypes van de nodes

beheerd worden. Standaard is het in Drupal mogelijk om een node met inhoudstype

pagina (page) of artikel (story) toe te voegen. Deze module laat echter toe om zelf

nieuwe inhoudstypes aan te maken. Kort samengevat maakt deze module het mogelijk

om inhoud toe te voegen, inhoudstypes aan te maken, de inhoud te beheren, revisies

aan te maken, en gebruikerstoegangen met betrekking tot de inhoud in te stellen.

• System

De system-module beheert de algemene instellingen van de website voor beheerders

zoals bijvoorbeeld de algemene gegevens van de website en de statusrapportage.

• User

Deze module beheert het inlogsysteem en de gebruikersregistraties. Dankzij deze

module kan aan elke gebruiker een bepaalde rol en bepaalde toegangsrechten worden

toegekend. Standaard zijn er in Drupal naast de super-user twee soorten rollen

beschikbaar, namelijk anonieme gebruiker en geverifieerde gebruiker. De rol van

anonieme gebruiker spreekt voor zich en groepeert de gebruikers die niet geregistreerd

zijn op de Bizon website. In ons geval behoort de surfer die toevallig op de website

belandt tot deze rol, maar ook de voorzieningen die een aanvraag wensen in te dienen.

De rol van geverifieerde gebruiker groepeert de gebruikers die over een

gebruikersnaam en paswoord beschikken. Tot deze rol behoren dus de administratief

medewerkers van Bizon die toegang moeten hebben tot de inhoud, maar geen

toegang mogen krijgen tot andere gebruikersprofielen uitgezonderd dat van zichzelf.

Page 18: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

6

Het was dus noodzakelijk nog een derde rol aan te maken, namelijk deze van

administrator. Gebruikers met deze laatste rol hebben dezelfde rechten als de

geverifieerde gebruikers, maar hebben daarenboven ook toegang tot de

gebruikersprofielen van alle gebruikers. In het hoofdstuk over de gebruikers gaan we

verder in op de specifieke verschillen tussen deze rollen.

1.3.5 De Bizon website

We hebben ervoor gekozen om Drupal 6 te gebruiken. Deze versie is momenteel het

meest gedocumenteerd en daarenboven zijn de meeste beschikbare modules enkel

stabiel voor deze versie. Voor het maken van onze website hebben we gebruik

gemaakt van beschikbare modules op drupal.org. Eigen modules creëren bleek niet

nodig. Wel hebben we sommige modules aangepast zodat ze voldeden aan onze

specifieke behoeften door bijvoorbeeld een extra functie te schrijven. Alle bijkomende

modules werden in een aparte map geplaatst (sites/default/modules). Dit zorgt ervoor

dat bij een eventuele update van de Drupal core de bijkomende modules niet

veranderd worden en nog steeds naar behoren functioneren.

Verder hebben we ervoor gezorgd dat de website met schone URL’s werkt. Dit zorgt

voor een nette URL en vergemakkelijkt het navigeren tussen de verschillende

webpagina’s.

1.3.6 Toegangsrechten

De super-user beschikt in Drupal over een Beheer-navigatie menu. Hier kan men

bijvoorbeeld extra rollen aanmaken voor gebruikers alsook de toegangsrechten

instellen. Deze laatste pagina laat toe om voor elk inhoudstype te bepalen welke

gebruikersrollen nodes van een bepaald inhoudstype mogen zien, aanmaken,

verwijderen of wijzigen. Zo mogen geverifieerde gebruikers geen aanvraag aanmaken,

maar wel bekijken of wijzigen. Per veld afzonderlijk kan men verder verfijnen welke

rollen toegang krijgen tot een bepaald veld. Zo zijn er bepaalde velden van het

inhoudstype aanvraag niet zichtbaar voor anonieme gebruikers. Deze extra velden

werden toegevoegd om de aanvraag later als een inschrijving te kunnen behandelen.

Een goed gebruik van de toegangsrechten pagina bevordert de

gebruiksvriendelijkheid, maar ook de veiligheid van de website.

Page 19: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

7

In deze inleiding hebben we kort de probleemsituatie en de te implementeren

oplossingen besproken. Verder hebben we besproken wat Drupal precies is en hoe het

systeem werkt. In de volgende hoofdstukken wordt allereerst de opbouw van de

database verder toegelicht om daarna over te gaan naar de specifieke opbouw van de

website en zijn bijzonderheden.

Page 20: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

8

2. De database

De kernfunctionaliteit van deze website bestaat uit de mogelijkheid van het ingeven

van nieuwe informatie enerzijds en het op een gestructureerde manier ophalen en

weergeven van de ingegeven informatie anderzijds. Om dit op een efficiënte en

overzichtelijke manier te verwezenlijken is er nood aan een goed functionerende

database1. Het databaseontwerp is een heel belangrijke schakel in het opzetten van

een nieuwe database. Daarom hebben wij ervoor gekozen om de verschillende fasen

van het databaseontwerp te volgen zoals die staan beschreven in Principes van

databases (De Tré, 2007).

Het volledige databaseontwerpproces bestaat uit vier fases, zijnde de

informatievergaring, het conceptueel ontwerp, het logisch ontwerp en tenslotte het

fysieke ontwerp.

2.1 INFORMATIEVERGARING

In deze fase gaan we na wat de vereisten zijn die aan de database gesteld zullen

worden, met andere woorden welke data er in de database ingevoerd zullen worden,

wat de juiste betekenis en context is van deze data en tenslotte hoe die verschillende

gegevens gerelateerd zijn aan elkaar. Deze informatie werd verkregen door

verschillende samenkomsten met de begeleiders van deze masterproef. Om deze

informatieverzameling op een gestructureerde manier te laten verlopen maken we

achtereenvolgens een domeinanalyse, een functionele analyse en tot slot een

behoefteanalyse op.

2.1.1 Domeinanalyse

In deze fase gaan we vooral na welke informatie in de database zal moeten

gerepresenteerd worden alsook de juiste betekenis en context van deze data. Uit de

verzamelde informatie bleek dat de verschillende gegevens gegroepeerd konden

worden rond een aantal kernconcepten. Hierna volgt een opsomming van deze

concepten, samen met hun specifieke eigenschappen.

1 De database die werd gebruikt voor deze website is grotendeels gebaseerd op de database die wij vorig jaar samen met de andere groep maakten.

Page 21: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

9

- Activiteit: De gegevens van een activiteit bestaan uit de naam, de begin- en

einddatum, de annulatiedatum, de locatie, het soort activiteit, de prijs en het

eventuele percentage van terugbetaling bij een annulatie omwille van medische

redenen.

- Jongere: De naam, de geboortedatum, het geslacht, een eventueel persoonlijk

telefoonnummer en de voorziening waarbij de jongere geregistreerd is, moeten

worden bijgehouden.

- Inschrijving: Bij een inschrijving moet eerst en vooral worden bijgehouden welke

persoon zich inschrijft voor welke activiteit, de datum, de prijs, de eventuele

beschikking over een medische fiche en of de jongere toestemming heeft om

naar het buitenland te gaan. Er moet ook ruimte zijn voor de medewerkers van

Bizon vzw om extra opmerkingen toe te voegen. Daarnaast is het echter ook

heel belangrijk dat een eventuele annulatie kan worden bijgehouden, of deze

annulatie omwille van medische redenen is en ten slotte of de annulatie

gebeurde voor de gestelde annulatiedatum.

- Onkosten: Bij onkosten moet voor elke inschrijving worden bijgehouden welk

bedrag nog extra moet worden betaald en er moet ruimte zijn om te

verduidelijken waarvoor dit extra bedrag betaald moet worden.

- Transport: Om het transport op een efficiënte manier bij te houden werd

gevraagd om voor elke activiteit bij te houden hoe de jongeren naar de activiteit

en terug zullen reizen alsook wie hen daarbij zal begeleiden.

- Voorziening: De gegevens van een voorziening bestaan uit de naam en het

adres van de voorziening en het telefoonnummer van de verantwoordelijke.

Optioneel moet men ook de naam en het e-mailadres van de verantwoordelijke

kunnen bijhouden evenals om welke soort voorziening het gaat. Men moet

kunnen aanduiden of er aan de voorziening een korting wordt toegekend, of de

voorziening verborgen wordt binnen de database, of er jongeren zijn die ouder

zijn dan 18 jaar en ten slotte moet er ruimte zijn om bijkomende informatie in te

geven.

2.1.2 Functionele analyse

Bij de functionele analyse gaan we na waar de informatie vandaan komt en hoe deze

zal worden verwerkt. De herkomst van de gegevens is duidelijk: deze zullen in de

database worden ingevoerd door medewerkers van Bizon vzw. Er is echter één

uitzondering op deze regel en die vinden we terug bij het concept inschrijving.

Page 22: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

10

Enerzijds is het mogelijk dat een inschrijving wordt ingegeven door een medewerker

van Bizon vzw maar anderzijds moet het ook mogelijk gemaakt worden voor een

voorziening om zelf een inschrijving in te geven. Deze laatste inschrijving is echter op

bepaalde punten verschillend van een inschrijving ingegeven door een medewerker,

het is namelijk eerder een aanvraag tot inschrijving. Praktisch gezien betekent dit dat

deze gegevens pas aan de inschrijvingen mogen worden toegevoegd nadat ze zijn

goedgekeurd door een medewerker van Bizon vzw. Medewerkers kunnen verder ook

aangeven of een bepaalde inschrijving werd geannuleerd en of de jongere werd

vervangen.

Bij de gegevens van de jongeren zelf moet de voorziening regelmatig worden

aangepast, gezien uit de praktijk blijkt dat jongeren vaak van de ene voorziening naar

de andere verhuizen. Ook het telefoonnummer dient al eens aangepast te worden. De

overige gegevens blijven normaalgezien ongewijzigd.

Een aantal activiteiten worden jaarlijks herhaald, deze moeten niet vaak aangepast

worden (het moet echter zeker mogelijk zijn). Voorts worden activiteiten die reeds

plaatsgevonden hebben niet uit de database verwijderd.

De informatie omtrent transport moet worden bijgehouden per voorziening en activiteit.

Dit betekent dat alle jongeren van dezelfde voorziening die naar dezelfde activiteit

gaan zich op dezelfde manier van en naar de locatie verplaatsen.

Per inschrijving moet het mogelijk zijn om één of meerdere onkostennota’s toe te

kennen.

De gegevens van de voorzieningen moeten kunnen aangepast worden, dit is vooral

belangrijk voor de naam, het e-mailadres en het telefoonnummer van de

verantwoordelijke.

Verder kwam aan het licht dat er ook ruimte voorzien moet worden om de algemene

gegevens van Bizon vzw in de database op te nemen. Het mag enkel mogelijk zijn voor

iemand met de juiste bevoegdheid om deze gegevens aan te passen.

In principe worden ook de inloggegevens toegevoegd aan de database. Gezien

hiervoor reeds een tabel aanwezig is in de database van Drupal, zullen wij geen extra

tabel voor inloggegevens toevoegen.

Page 23: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

11

2.1.3 Behoefteanalyse

Uit het voorgaande blijkt dat, naast de zes oorspronkelijk gedefinieerde kernconcepten,

er nood is aan een aantal bijkomende concepten. Deze omvatten een mogelijkheid

voor voorzieningen om een aanvraag tot inschrijving in te geven, het opslaan van de

algemene gegevens van Bizon vzw en tot slot het beveiligen van de website.

Het mag enkel voor reeds geregistreerde voorzieningen mogelijk zijn om een aanvraag

tot inschrijving in te dienen. Bij een aanvraag moet dus eerst en vooral de voorziening

waar de jongere toe behoort opgegeven worden en de naam van de activiteit waarvoor

de jongere zich wil inschrijven. Voorts moeten er voldoende gegevens worden

meegegeven over de jongere zelf. Indien de jongere nog niet eerder ingeschreven was

voor een activiteit bij Bizon vzw kan deze door middel van deze gegevens eerst

worden geregistreerd. Bij een aanvraag zal men dus (net als bij het concept jongere)

de naam, de voornaam, het geslacht en de geboortedatum van de jongere moeten

invullen met eventueel nog een telefoonnummer van de jongere.

Het concept algemene gegevens moet de naam van de verantwoordelijke, het adres,

het telefoonnummer en het rekeningnummer van Bizon vzw bevatten.

Voor het beveiligen van de website zal aan de gebruikers een unieke gebruikersnaam

worden toegekend waaraan een paswoord verbonden is. Zoals reeds vermeld zullen

wij hiervoor geen extra tabel aanmaken, gezien gebruikers reeds door Drupal zelf

worden beheerd. Het is een vereiste dat naast de gebruikersnaam en het paswoord

ook de naam, voornaam, e-mailadres en de eventuele administratorrechten van de

gebruiker worden bijgehouden.

2.2 CONCEPTUEEL ONTWERP

In deze fase ontwerpen we een conceptueel model (een abstracte voorstelling van de

database) op basis van de informatie die we verzameld hebben in de voorgaande fase.

Het is echter van enorm belang dat dit model losstaat van enig ander databasemodel

of datamodel van een applicatie. Indien dit niet zo zou zijn loopt men immers het

gevaar dat de database in dit stadium reeds te sterk gekoppeld wordt aan een bepaald

model of applicatie, wat nadelig kan zijn voor de algemene bruikbaarheid van de

database.

In het model zullen de reeds gevonden kernconcepten met hun eigenschappen en

onderlinge relaties visueel voorgesteld worden. De representatietechniek die we

hiervoor gebruiken is het ‘Enhanced Entity-Relationship’-diagram (EER-diagram) dat

Page 24: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

12

wordt opgebouwd volgens de voorschriften van het ‘Enhanced Entity-Relationship’-

model (EER-model) zoals gesuggereerd in ‘Principes van databases’ (De Tré, 2007).

Dit model modelleert concepten uit de reële wereld aan de hand van entiteittypes2 en

hun attributen3 enerzijds en verwantschappen tussen entiteittypes (relatietypes)

anderzijds.

Er kunnen zeven entiteittypes worden geïdentificeerd, namelijk Activiteit, Aanvraag,

Inschrijving, Jongere, Onkosten, Voorziening en Algemene gegevens. Alle

entiteittypes, uitgezonderd Algemene gegevens, zijn via verschillende relatietypes met

elkaar verbonden. De 7 entiteittypes en het relatietype Transport worden gekenmerkt

door een aantal attributen. De meeste attributen zijn enkelwaardig4 maar zowel bij

Activiteit, Transport als Voorzieningen komen ook een aantal samengestelde attributen

voor.

Alle identiteittypes moeten op een unieke manier kunnen worden geïdentificeerd. Dit

gebeurt aan de hand van primaire sleutels, deze worden gevisualiseerd door hun naam

te onderstrepen.

Ten slotte worden bij relatietypes twee soorten restricties onderscheiden: de

kardinaliteitsrestricties en de participatierestricties. De Tré (2007) stelt dat de

kardinaliteitsrestrictie een beperking oplegt aan het aantal entiteiten van het entiteittype

dat op een gegeven tijdstip maximaal kan voorkomen in een relatie van het relatietype.

Mogelijke waarden zijn 1 (maximaal één) en N (meerdere).

“De participatierestrictie bepaalt of op elk tijdstip, elke entiteit van het entiteittype moet

voorkomen in een relatie van het relatietype. Is dit het geval dan spreek men van een

totale participatie van het entiteittype (dubbele verbindingslijn), anders van een partiële

participatie (enkele verbindingslijn)” (De Tré, 2007, p. 65).

Het uiteindelijke schema (Figuur 1) kan worden teruggevonden op de volgende pagina.

2 “Een entiteit is een ‘ding’ dat een zelfstandig bestaan leidt in de reële wereld. Een entiteittype is een collectie van entiteiten en wordt gekenmerkt door een naam en een verzameling van attributen” (De Tré, 2007, p. 62). 3 “De entiteiten die naar voor komen uit de domeinanalyse worden gegroepeerd op basis van gemeenschappelijke karakteristieken, de attributen” (De Tré, 2007, p. 62). 4 “Als een attribuut enkelwaardig is betekent dit dat het attribuut, binnen de context waarin wordt gewerkt, op elk tijdstip slechts één waarde mag aannemen. Samengestelde attributen kunnen, binnen de gegeven context, op elk tijdstip een collectie van (verschillende) waarden aannemen” (De Tré, 2007, p.65).

Page 25: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

13

Inschrijving

Iid

Prijs

Datum

Toestemming Buitenland

MedischAttest

Actie

Opmerkingen

Onkosten

Oid Beschrijving

Activiteit

Aid

Prijs Data Annulatiedatum

Aankomst

Vertrek

Naam

Tran- sport

TypeActiviteit

Locatie ProcMedAnn

Tid

Heen

Begeleider

Vervoer

Terug Vervoer

Begeleider

Transport-Opmerkingen

1

n

n

n 1

1

Voorzieningen

Aanvraag

Jongeren

n

Naam Voorziening

Voornaam

Familienaam

Geboortedatum

Telefoonnr

Geslacht

Datum

AanvraagId

n

1 m

Naam

Korting Info

Soort

Verborgen

Oudere Jongeren

Adres

Straat + nr

Postcode

Plaats Provincie Land

Vid

Verantwoordelijke

Telefoonnr

E-mail

naam

1

1 n

Telefoonnr

Geboortedatum

Familienaam

Voornaam Geslacht

Jid

n

Algemene Gegevens

Adres

Verantwoordelijke

Telefoonnr

Uniek Bic

Iban

Rekeningnr Plaats

Bedrag

Figuur 1: EER diagram

Page 26: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

14

2.3 LOGISCH ONTWERP

In deze fase wordt een databasemodel gekozen en het databaseschema wordt

opgebouwd. De keuze van het databasemodel is in deze fase normaalgezien

onafhankelijk van het later gekozen databasemanagementsysteem. In dit geval weten

we echter al dat het databasemanagementsysteem voor de website MySQL, een

opensource managementsysteem voor relationele databases, zal zijn (MySQL).

Bijkomend zijn relationele databasemodellen tegenwoordig de standaard in de

industrie. Hierdoor ligt de keuze voor een relationeel databasemodel voor de hand.

Om het EER-diagram om te zetten naar een relationeel databaseschema moeten we

gebruik maken van een omzettingsalgoritme. Dit algoritme bestaat uit negen stappen

(De Tré, 2007).

2.3.1 Stap 1: Omzetten van reguliere entiteittypes

We maken een basisrelatie aan voor elk regulier entiteittype. De attributen van het

entiteittype worden toegevoegd aan de basisrelatie. De primaire sleutel wordt gevormd

door alle attributen uit de sleutel van het entiteittype samen.

(1.0) Activiteit (Aid: integer, Naam: text, TypeActiviteit: enum(‘Eendagsactiviteit’,

‘Weekend’, ‘Kamp’), Annulatiedatum: date, Aankomst: date, Vertrek: date,

Locatie: text, Dagprijs: decimal(10,2), ProcMedAnn: decimal(10,2)).

Primaire sleutel: {Aid}

(2.0) Inschrijving (Iid: integer, Datum: date, Actie: enum(‘Inschrijving’, ’Tijdige

annulatie’, ‘Laattijdige annulatie’, ‘Vervanging’, ‘Medische annulatie’), Prijs:

decimal(10,2), MedischAttest: enum(‘Ja’, ‘Neen’), ToestemmingBuitenland:

enum(‘Ja’, ‘Neen’), Opmerkingen: text)

Primaire sleutel: {Iid}

(3.0) Jongeren (Jid: integer, Voornaam: text, Familienaam: text, Geslacht:

enum(‘v’, ‘m’), Geboortedatum: date, Telefoonnummer: text)

Primaire sleutel: {Jid}

Page 27: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

15

(4.0) Voorzieningen (Vid: integer, NaamVoorziening: text, StraatEnNummer: text,

Postcode: integer, Plaats: text, Provincie: text, Land: text,

NaamVerantwoordelijke: text, EmailVerantwoordelijk: text,

TelVerantwoordelijke: text, SoortVoorziening: text, Korting: enum(‘Ja’,

‘Neen’), OudereJongeren: enum(‘Ja’, ‘Neen’), Verborgen: enum(‘Ja’, ‘Neen’),

ExtraInfo: text)

Primaire sleutel: {Vid}

(5.0) Onkosten (Oid: integer, Bedrag: decimal(10,2), Beschrijving: text)

Primaire sleutel: {Oid}

(6.0) Aanvraag (Aanvraagid: integer, NaamVoorziening: text, Voornaam: text,

Familienaam: text, Telefoonnummer: text, Geboortedatum: date, Geslacht:

enum(‘v’, ‘m’), Datum: date)

Primaire sleutel: {Aanvraagid}

(7.0) Algemene gegevens (Uniek: integer, VerantwoordelijkeBizon: text,

StraatNummerBizon: text, PostcodeBizon: integer, PlaatsBizon: text,

TelefoonnummerBizon: text, RekeningNummerBizon: text, IbanBizon: text,

BicBizon: text)

Primaire sleutel: {Uniek}

2.3.2 Stap 2 tot en met stap 5

Deze stappen zijn hier niet van toepassing.

2.3.3 Stap 6: Omzetting van binaire ‘één-op-meerdere’ relatietypes

De primaire sleutel van een entiteittype met kardinaliteit ‘één’ wordt opgenomen als

vreemde sleutel in het entiteittype met kardinaliteit ‘meerdere’.

(2.1) Inschrijving (Iid: integer, Aid: integer, Jid: integer, Datum: date, Actie:

enum(‘Inschrijving’, ’Tijdige annulatie’, ‘Laattijdige annulatie’, ‘Vervanging’,

‘Medische annulatie’), Prijs: decimal(10,2), MedischAttest: enum(‘Ja’,

‘Neen’), ToestemmingBuitenland: enum(‘Ja’, ‘Neen’), Opmerkingen: text)

Primaire sleutel: {Iid}

Vreemde sleutel: {Aid} verwijst naar Activiteit

Vreemde sleutel: {Jid} verwijt naar Jongeren

Page 28: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

16

(3.1) Jongeren (Jid: integer, Vid: integer, Voornaam: text, Familienaam: text,

Geslacht: enum(‘v’, ‘m’), Geboortedatum: date, Telefoonnummer: text)

Primaire sleutel: {Jid}

Vreemde sleutel: {Vid} verwijst naar Voorzieningen

(5.1) Onkosten (Oid: integer, Iid: integer, Bedrag: decimal(10,2), Beschrijving:

text)

Primaire sleutel: {Oid}

Vreemde sleutel: {Iid} verwijst naar Inschrijving

(6.1) Aanvraag (Aanvraagid: integer, Vid: integer, Aid: integer, NaamVoorziening:

text, Voornaam: text, Familienaam: text, Telefoonnummer: text,

Geboortedatum: date, Geslacht: enum(‘v’, ‘m’), Datum: date)

Primaire sleutel: {Aanvraagid}

Vreemde sleutel: {Vid} verwijst naar Voorzieningen

Vreemde sleutel: {Aid} verwijst naar Activiteit

2.3.4 Stap 7: Omzetting van binaire ‘meerdere-op-meerdere’ relatietypes

In deze stap maken we voor elk ‘meerdere-op-meerdere’ relatietype een nieuwe

basisrelatie aan. De primaire sleutels van de betrokken entiteittypes worden als

vreemde sleutels toegevoegd aan de nieuwe basisrelatie. De primaire sleutel van de

nieuwe basisrelatie zelf wordt samengesteld uit de attributen van deze vreemde

sleutels. De attributen van het relatietype zelf worden ook toegevoegd.

(8.0) Transport (Tid: integer, Vid: integer, Aid: integer, BegeleiderHeen: text,

VervoerHeen: text, BegeleiderTerug: text, VervoerTerug: text,

TransportOpmerkingen: text)

Primaire sleutel: {Tid}

Vreemde sleutel: {Vid} verwijst naar Voorzieningen

Vreemde sleutel: {Aid} verwijst naar Activiteit

2.3.5 Stappen 8 en 9

Deze stappen zijn hier niet van toepassing.

Page 29: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

17

2.3.6 Het relationeel databaseschema

Het definitieve databaseschema wordt samengesteld uit de recentste versies van de

aangemaakte basisrelaties. In dit geval bestaat dit uit: (1.0), (2.1), (3.1), (4.0), (5.1),

(6.1), (7.0), (8.0).

(1.0) Activiteit (Aid: integer, Naam: text, TypeActiviteit: enum(‘Eendagsactiviteit’,

‘Weekend’, ‘Kamp’), Annulatiedatum: date, Aankomst: date, Vertrek: date,

Locatie: text, Dagprijs: decimal(10,2), ProcMedAnn: decimal(10,2)).

Primaire sleutel: {Aid}

(2.1) Inschrijving (Iid: integer, Aid: integer, Jid: integer, Datum: date, Actie:

enum(‘Inschrijving’, ’Tijdige annulatie’, ‘Laattijdige annulatie’, ‘Vervanging’,

‘Medische annulatie’), Prijs: decimal(10,2), MedischAttest: enum(‘Ja’, ‘Neen’),

ToestemmingBuitenland: enum(‘Ja’, ‘Neen’), Opmerkingen: text)

Primaire sleutel: {Iid}

Vreemde sleutel: {Aid} verwijst naar Activiteit

Vreemde sleutel: {Jid} verwijt naar Jongeren

(3.1) Jongeren (Jid: integer, Vid: integer, Voornaam: text, Familienaam: text,

Geslacht: enum(‘v’, ‘m’), Geboortedatum: date, Telefoonnummer: text)

Primaire sleutel: {Jid}

Vreemde sleutel: {Vid} verwijst naar Voorzieningen

(4.0) Voorzieningen (Vid: integer, NaamVoorziening: text, StraatEnNummer: text,

Postcode: integer, Plaats: text, Provincie: text, Land: text,

NaamVerantwoordelijke: text, EmailVerantwoordelijk: text,

TelVerantwoordelijke: text, SoortVoorziening: text, Korting: enum(‘Ja’, ‘Neen’),

OudereJongeren: enum(‘Ja’, ‘Neen’), Verborgen: enum(‘Ja’, ‘Neen’), ExtraInfo:

text)

Primaire sleutel: {Vid}

(5.1) Onkosten (Oid: integer, Iid: integer, Bedrag: decimal(10,2), Beschrijving: text)

Primaire sleutel: {Oid}

Vreemde sleutel: {Iid} verwijst naar Inschrijving

Page 30: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

18

(6.1) Aanvraag (Aanvraagid: integer, Vid: integer, Aid: integer, NaamVoorziening:

text, Voornaam: text, Familienaam: text, Telefoonnummer: text,

Geboortedatum: date, Geslacht: enum(‘v’, ‘m’), Datum: date)

Primaire sleutel: {Aanvraagid}

Vreemde sleutel: {Vid} verwijst naar Voorzieningen

Vreemde sleutel: {Aid} verwijst naar Activiteit

(7.0) Algemene gegevens (Uniek: integer, VerantwoordelijkeBizon: text,

StraatNummerBizon: text, PostcodeBizon: integer, PlaatsBizon: text,

TelefoonnummerBizon: text, RekeningNummerBizon: text, IbanBizon: text,

BicBizon: text)

Primaire sleutel: {Uniek}

(8.0) Transport (Tid: integer, Vid: integer, Aid: integer, BegeleiderHeen: text,

VervoerHeen: text, BegeleiderTerug: text, VervoerTerug: text,

TransportOpmerkingen: text)

Primaire sleutel: {Tid}

Vreemde sleutel: {Vid} verwijst naar Voorzieningen

Vreemde sleutel: {Aid} verwijst naar Activiteit

2.4 FYSIEK ONTWERP

Alvorens verder te gaan met het fysieke ontwerp, is het belangrijk om te vermelden dat

ook Drupal zelf nood heeft aan een database om instellingen en inhoud op te slaan.

Vanuit de technische afdeling werd het voor ons mogelijk gemaakt om hiervoor gebruik

te maken van een MySQL-database, via het databasemanagementsysteem

phpMyAdmin. MySQL is een relationele database die gebruik maakt van SQL

(Structured Query Language). PhpMyAdmin verschaft de mogelijkheid om de MySQL

database via het internet te beheren. Beide zijn, evenals Drupal, enorm populaire open

source systemen.

Indien men de database rechtstreeks in phpMyAdmin zou opbouwen verkrijgt men het

schema in Figuur 2. Dit schema werd bijgevoegd als vergelijkingspunt, gezien het

uiteindelijke schema in Drupal (Figuur 3) iets ingewikkelder overkomt en wat meer

uitleg vergt.

De meeste informatie op een Drupal website wordt toegevoegd via inhoudstypes

(content types). Wanneer de informatie opgeslagen wordt creëert Drupal een node die

de ingegeven informatie bevat.

Page 31: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

19

Naast de twee standaard inhoudstypes page en story is er ook de mogelijkheid om zelf

een specifiek inhoudstype te definiëren met behulp van de CCK module (Content

Construction Kit). Deze inhoudstypes kunnen worden opgebouwd uit een aantal velden

(fields) met een welbepaald type, bijvoorbeeld: date, text, integer,…

Voor elke basisrelatie die geïdentificeerd werd in de voorgaande fases werd een

inhoudstype aangemaakt. De attributen van een basisrelatie werden aan het

overeenkomstige inhoudstype toegevoegd door gebruik te maken van velden. Voor elk

inhoudstype wordt door Drupal automatisch een tabel (content_type_’naam van het

inhoudstype’) toegevoegd aan de database die de gespecificeerde velden (field_’naam

van het veld’) bevat alsook de kolommen node ID (nid) en revision ID (vid).

Wanneer een node wordt aangemaakt krijgt deze een uniek node ID en een uniek

revision ID. Aanvankelijk hebben ze elk dezelfde integer als waarde. Het verschil is

echter dat het nid nooit verandert maar het vid wel. Telkens wanneer een node bewerkt

wordt, verandert de waarde van vid. In de tabel wordt steeds het vid bijgehouden van

de recentste versie van de node.

Indien we in een inhoudstype een veld aanmaken met als type node referentie kunnen

we het inhoudstype kiezen waarnaar we willen refereren. Dit veld zal dan een

verwijzing maken naar het gekozen nid. Een nid is voor een node dus eigenlijk een

primaire sleutel. Een veld met als type node referentie in het ene inhoudstype gebruikt

de node ID’s uit het andere, gespecificeerde inhoudstype om een relatie te maken

tussen de twee inhoudstypes.

Om het overzicht te behouden hebben we ervoor gekozen om de velden met als type

node referentie de namen Vid, Jid en Iid te geven, zodat het duidelijk is naar welk

inhoudstype ze verwijzen. Voor Aid was dit echter niet mogelijk. Om extra functionaliteit

te kunnen toevoegen werd de node referentie Aid opgesplitst in een aantal

verschillende velden namelijk: content_field_eendagsactiviteit, content_field_weekend

en content_field_kamp. Uiteraard hebben deze velden het type node referentie. Deze

opsplitsing laat het toe om op basis van het gekozen type van activiteit slechts een

selectie van mogelijkheden weer te geven, wat het gebruiksgemak bevordert (dit wordt

verder uitgelegd op p.54).

Vervolgens is het belangrijk om op te merken dat Drupal voor elk veld, dat in meer dan

één inhoudstype wordt gebruikt, een aparte tabel aanmaakt in de database.

Figuur 3 toont de volledige database die werd gebruikt voor het implementeren van de

inhoudstypes en hun velden.

Page 32: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

20

Om het overzicht te bewaren hebben we de velden, die in meer dan één inhoudstype

voorkomen en waar in de praktijk een aparte tabel (met als benaming

content_field_’naam van het veld’) voor wordt gemaakt, toch bijgevoegd bij elk

inhoudstype waarin ze voorkomen. Figuur 4 toont deze velden op de manier waarop ze

in de database worden opgeslagen.

Tenslotte zijn er in sommige inhoudstypes extra velden toegevoegd die niet aanwezig

waren in de vorige fases van het databaseontwerpproces. Deze zijn tijdens het

ontwikkelen van de website toegevoegd voor het creëren van extra functionaliteit en

zullen later worden besproken.

Page 33: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

21

Figuur 2: Fysiek ontwerp zoals men dit zou verwachten

Page 34: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

22

Figuur 3: Fysiek ontwerp

Database Drupal met alle velden bij het inhoudstype waarin ze voorkomen.

Page 35: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

23

Figuur 4

Detail van de velden die in verschillende inhoudstypes voorkomen en slechts één keer worden opgeslagen in een aparte tabel.

Page 36: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

24

3. Algemeen

In dit hoofdstuk lichten we de algemene instellingen van de website toe. Zo bespreken

we met welke browsers de website compatibel is, welke template we gekozen hebben,

hoe gebruikers zich kunnen registreren, en hoe de verschillende rollen zich

onderscheiden.

3.1 DE INTERNET BROWSER

Drupal core sites zijn compatibel met zowat elke browser die CSS en JavaScript

ondersteunt. Er kunnen natuurlijk altijd kleine verschillen zijn in presentatie maar deze

zijn te verwaarlozen. Internet Explorer, Firefox, Opera, Safari, Camino en Google

Chrome ondersteunen de Drupal core programmatie. Onze website kan dus gebruikt

worden voor elk van bovenstaande browsers, maar werd geoptimaliseerd voor Firefox.

3.2 TEMPLATE

Bij Drupal maakt men een duidelijk onderscheid tussen inhoud en vormgeving. De

vormgeving wordt mogelijk gemaakt door templates. De gebruiker krijgt de mogelijk om

bestaande templates te installeren of om er zelf een te schrijven. Wij hebben ervoor

geopteerd om een bestaande template te gebruiken. De templates die beschikbaar zijn

op drupal.org dienen vooraleer deze gedownload kunnen worden een uitgebreid

validatieproces en een veiligheidstest te doorlopen, waardoor de kans op fouten

verkleind wordt. Bij de installatie van Drupal worden standaard een aantal templates

geïnstalleerd met name Bluemarine, Garland, Chameleon, Marvin, Minelli en

Pushbutton. Elk van deze templates geeft de toegevoegde inhoud op een andere

manier weer. Zo worden primaire links bijvoorbeeld bij de ene template links in een

navigatie-blok weergegeven en bij een andere in de header. De template die wij

gekozen hebben is gebaseerd op de Zen-template. Deze populaire template biedt een

basis XHTML template die voldoet aan de standaarden maar die toch toelaat om

belangrijke aanpassingen te doen met behulp van CSS. Wij hebben gebruik gemaakt

van de ‘CTI Flex’-template. Deze Zen-gebaseerde template is nog steeds uiterst

aanpasbaar maar voegt een aantal functies toe. Zo is het bijvoorbeeld mogelijk om de

primaire links als een drop-down menu weer te geven, wat niet mogelijk is in bepaalde

andere templates.

Page 37: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

25

3.3 GEBRUIKERSREGISTRATIE

Op de homepage van de bizon website kunnen medewerkers van Bizon zich

aanmelden. Het is echter niet mogelijk om een nieuwe account aan te maken. Gezien

enkel medewerkers van Bizon zich mogen registreren op de site is deze optie

weggelaten. Wanneer een nieuwe account nodig is kan deze enkel worden

aangemaakt door een administrator.

De nieuwe gebruiker krijgt vervolgens een e-mail toegestuurd met zijn of haar

inloggegevens. In het hoofdstuk over de gebruikers zullen we hier uitgebreider op

ingaan.

3.4 DE HOMEPAGE

Aangezien het de bedoeling was om een administratieve site te maken voor het beheer

van Bizon inschrijvingen, is de voorpagina bewust redelijk sober gehouden. De

homepage voor anonieme gebruikers ziet er lichtjes anders uit dan deze voor

geregistreerde gebruikers. Met de module ‘Menu per Role’ kan men instellen welke

menu’s zichtbaar zijn per gebruikersrol. Hierdoor worden menu’s die verwijzen naar

inhoud waar gebruikers, met een bepaalde rol, geen toegang toe hebben niet zichtbaar

voor die bepaalde rol. Dit bevordert de gebruiksvriendelijkheid van de website.

Voor elke geregistreerde gebruiker is er op de homepagina rechts bovenaan een link

voorzien die de gebruiker toelaat zijn persoonlijke gegevens te wijzigen. Deze link

wordt gepresenteerd als de gebruikersnaam van de medewerker.

Naast deze account-link is er een link voorzien die een gebruiker toelaat uit te loggen.

3.4.1 Anonieme gebruikers

Figuur 5: De header voor anonieme gebruikers

Een anonieme gebruiker kan op de website enkel een aanvraag tot inschrijving

indienen. Dit kan via de primaire link ‘inschrijven voor een activiteit’. Deze aanvraag

wordt echter enkel opgenomen in de database wanneer er een geldig klantennummer

ingevoerd werd.

Page 38: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

26

3.4.2 Geverifieerde gebruikers

Figuur 6: De header voor geverifieerde gebruikers

Geverifieerde gebruikers krijgen in de header de primaire links te zien die hen helpen

navigeren doorheen de pagina’s. Zo kan men via het drop-down menu

“Gegevensbank” naar de overzichten gaan van de activiteiten, de inschrijvingen, de

aanvragen, de onkosten, de jongeren, de voorzieningen en van de transportinfo.

Via dit zelfde drop-down menu kan men voor elk van deze inhoudstypen ook een node

toevoegen. Geverifieerde gebruikers kunnen geen aanvraag toevoegen, gezien zij

beschikken over de mogelijk om een jongere onmiddellijk in te schrijven.

Naast het menu gegevensbank is er een menu ‘algemene gegevens’. Hier kan men de

algemene gegevens van Bizon vzw bekijken. Gezien dit inhoudstype voor elk veld

slechts één waarde kan hebben is het niet mogelijk om nieuwe algemene gegevens

toe te voegen. Geverifieerde gebruikers kunnen deze gegevens ook niet bewerken.

3.4.3 Gebruikers met de rol van administrator

Figuur 7: De header voor administrators

Gebruikers met de rol van administrator hebben dezelfde rechten en krijgen dus

dezelfde menu’s te zien op de homepage als geverifieerde gebruikers. Administrators

hebben daarentegen nog extra bevoegdheden. Zo krijgen zij, in tegenstelling tot de

gewone geverifieerde gebruikers, de mogelijkheid om de algemene gegevens van

Bizon aan te passen. Verder krijgen administrators nog een extra menu in de header te

zien, namelijk het menu Gebruikers. Via deze link kunnen zij de gebruikers beheren. In

het hoofdstuk over gebruikers zullen we verder toelichten welke functionaliteiten

hiervoor geïmplementeerd werden.

Page 39: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

27

4. Inhoudstypes

Zoals reeds eerder vermeld wordt informatie op een Drupal website toegevoegd via

inhoudstypes. Naast de twee standaard inhoudstypes, page en story, is het ook

mogelijk om zelf een specifiek inhoudstype te definiëren. Inhoudstypes bestaan uit een

aantal velden die kunnen worden ingevuld door gebruikers. Met behulp van de CCK

module (Content Construction Kit) worden de mogelijkheden om het type5 van een veld

te bepalen reeds sterk uitgebreid. Toch was er, naast CCK, nood aan enkele extra

modules om de functionaliteit te optimaliseren.

Wanneer men de velden van een inhoudstype invult en deze vervolgens opslaat,

creëert Drupal een node die de ingegeven informatie bevat.

In dit deel bespreken we de inhoudstypes in detail. Eerst bespreken we de modules die

werden gebruikt om de inhoudstypes te creëren. Vervolgens bekijken we per

inhoudstype de functies, de configuratie van de verschillende velden en of eventueel

code toegevoegd werd om extra functionaliteit te bekomen.

4.1 MODULES

4.1.1 Content Construction Kit (CCK)

Deze module is niet standaard aanwezig in de Drupal core en dient dus gedownload te

worden op drupal.org.

De CCK module is eigenlijk een verzameling van kleinere modules die naadloos in

elkaar overvloeien. De primaire module heet ‘Content’, deze dient ingeschakeld te zijn

alvorens men gebruik kan maken van de andere deelmodules. Naast de deelmodules

die aanwezig zijn in de CCK core bestaan er nog veel andere deelmodules die men kan

downloaden indien nodig. In wat volgt bespreken we eerst de gebruikte deelmodules

die reeds aanwezig waren in de CCK core en vervolgens de extra geïnstalleerde

deelmodules.

5 Voorbeelden van types zijn: tekst, integer, datum, nodereferentie,…

Page 40: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

28

A. Deelmodules aanwezig in de CCK core

• Content Permissions: Deze module creëert de mogelijkheid om veldpermissies

in te stellen voor de verschillende gecreëerde velden. Dit wil zeggen dat men bij

de toegangsrechten voor gebruikers per veld kan instellen welke

gebruikersgroep dit veld kan bekijken en bewerken. Men kan er bijvoorbeeld

voor kiezen dat bepaalde velden enkel zichtbaar zijn voor administrators maar

niet voor geverifieerde gebruikers.

• Fieldgroup: Deze module maakt het mogelijk om bepaalde velden die werden

aangemaakt te groeperen. Het resultaat is dat in het inhoudstype de

gegroepeerde velden in een kader worden geplaatst met bovenaan de naam

van de groep.

• Option Widgets: Deze module levert selectielijsten (dropdown menu’s), vinkje-

en radiobutton widgets voor zowel tekstvelden als numerieke velden.

• Node Reference: Deze module levert een veldtype voor het refereren van de

ene node naar de andere. Indien men een veld aanmaakt met als type node

referentie kan men één of meerdere inhoudstypes selecteren die men wil

refereren in het node referentie veld. Men kan kiezen uit een aantal widgets die

vergezeld gaan met dit veldtype, bijvoorbeeld een automatisch aanvullend

tekstveld, selectielijst of radio buttons. De waarden die in deze widgets getoond

worden zijn de titels van de nodes van het gerefereerde inhoudstype. Soms is

dit echter niet wenselijk, bijvoorbeeld in het geval dat men liever de waarden

van een bepaald veld van het andere inhoudstype wil tonen in plaats van de

titels. Om dit te bereiken moet men gebruikmaken van een andere module,

namelijk ‘Views’. De module ‘Views’ komt uitgebreid aan bod in het hoofdstuk

over de gegevensbank.

• Number: Deze module levert numerieke veldtypes, namelijk decimaal, float en

integer. De widgets die bij dit veldtype gebruikt kunnen worden zijn selectielijst,

radio button, aan/uit vinkje of een gewoon tekstveld waarbij men het cijfer

manueel kan ingeven.

• Text: Deze module maakt het mogelijk om velden met als type ‘tekst’ aan te

maken. Hierbij kan men kiezen uit de volgende widgets: selectielijst, radio

button, aan/uit vinkje, tekstveld met één rij of een tekstveld met meerdere rijen.

Page 41: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

29

B. Deelmodules die niet aanwezig zijn in de CCK core

• Email: Deze module maakt het mogelijk om het type van een veld in te stellen

als e-mail. Dit type levert een tekstveld waarin men een e-mailadres kan

invoeren. Er wordt gecontroleerd of het ingevoerde e-mailadres een geldige

vorm heeft. Indien dit niet zo is wordt er een foutmelding gegenereerd en dient

men het e-mailadres te corrigeren.

• Computed Field: Het veldtype ‘computed’ maakt het mogelijk om een veld in te

voeren die een berekening uitvoert. Dit veld levert waarden die berekend

worden uit een ingevoerde PHP code. Deze PHP code kan gebruik maken van

andere velden, database tabellen, gebruikers,… De mogelijkheden zijn quasi

eindeloos, de bijnaam van dit veldtype is dan ook terecht ‘het Zwitserse zakmes

onder de CCK velden’.

• Serial: Serievelden worden beheerd per inhoudstype en genereren een uniek

sequentieel nummer per node van een bepaald inhoudstype. Er wordt ook voor

gezorgd dat de waarden eveneens uniek zijn bij nodes die op hetzelfde moment

gecreëerd worden.

• Conditional Fields: Als velden of gegroepeerde velden gecontroleerd worden

door de inhoud van andere velden (de controlerende velden) betekent dit dat de

zichtbaarheid van deze gecontroleerde velden afhankelijk is van de waardes

van de andere velden. Dit wil zeggen dat men de toegestane waarden6 van een

veld kan gebruiken om een ander veld te controleren. Het gecontroleerde veld

zal enkel zichtbaar worden als in het controlerende veld een waarde aangeduid

wordt die overeenkomt met de waarde die ingesteld werd. Bijvoorbeeld: Men

kan met een aan/uit vinkje antwoorden op de vraag “Heeft u huisdieren?”. Enkel

indien men het vinkje aanklikt, wat ja betekent, wordt een extra selectielijst met

diersoorten zichtbaar waaruit men het soort huisdier kan selecteren.

6 De toegestane waarden van een veld zijn enerzijds de mogelijke waarden die gespecificeerd werden voor option widgets of anderzijds waarden die manueel ingesteld werden bij een gewoon tekstveld. Een voorbeeld van het eerste geval is de selectielijst. Dit is een eindige lijst van waarden waaruit de gebruiker een keuze kan maken. Een voorbeeld van het tweede geval is dat men bij een tekstveld instelt dat de gebruiker enkel ‘ja’ of ‘nee’ mag invullen.

Page 42: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

30

• CCK Required Reference Select: Deze module voegt een ‘Selecteer…’ optie toe

aan elk, verplicht in te vullen, veld van het type node referentie met als option

widget selectielijst. Indien deze module niet gebruikt wordt is de eerste waarde

in een selectielijst één van de mogelijke waarden die kunnen aangeduid

worden. Dit kan gevaarlijk zijn indien de gebruiker even onoplettend is en

vergeet dat hij het verplichte veld eigenlijk niet heeft aangepast. Hierdoor zou

een foutieve waarde kunnen worden opgeslagen. Door ‘Selecteer…’ in te

stellen als default waarde weet men dat men het veld nog niet heeft ingevuld en

krijgt men ook een foutmelding indien men geen andere waarde aanduidt.

• Automatic Nodetitles: Deze module laat toe om het veld titel in het inhoudstype

te verbergen. Indien dit niet gebeurd krijgt de gebruiker een tekstveld te zien

waarin hij een titel dient in te voeren. Omdat het niet wenselijk is dat een node

zonder titel wordt opgeslagen in de database laat deze module toe om een

patroon in te vullen op basis waarvan de titel automatisch zal worden

gecreëerd. Met behulp van de ‘Token’ module (deze module wordt uitgelegd

op p.30) is het mogelijk om data, ingevuld in een veld van het betreffende

inhoudstype, te gebruiken als titel van de node. Het is ook mogelijk om PHP

code te gebruiken voor het genereren van een passende titel voor de node.

4.1.2 Unique Field

Hoewel ‘Unique Field’ integreert met de CCK module kan deze toch niet als deelmodule

van CCK gecategoriseerd worden. Deze module integreert namelijk ook met een aantal

andere modules zoals ‘Date’ en ‘Content Taxonomy’. Met behulp van ‘Unique Field’

kan men instellen of een node titel, auteur, taal of CCK veld uniek moet zijn binnen een

gegeven context. Zo kan er aangeduid worden of de waarden van de CCK velden uniek

moeten zijn in nodes van hetzelfde inhoudstype, in nodes van alle inhoudstypen

(sommige velden komen in verschillende inhoudstypes voor) of in nodes geschreven in

dezelfde taal. Verder kan ingesteld worden of de waarde van elk aangeduid veld uniek

moet zijn of dat de combinatie van de waarden van de geselecteerde velden uniek

moeten zijn. Telkens een nieuwe node aangemaakt wordt of een bestaande node

gewijzigd wordt, worden de waarden van de geselecteerde velden geëvalueerd. Deze

functie is niet hoofdlettergevoelig.

Page 43: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

31

4.1.3 Date

De ‘Date’ module omvat verschillende modules die allerhande zaken mogelijk maken in

verband met data en kalenders. In het kader van deze website wordt gebruik gemaakt

van één van de deelmodules die eveneens de naam ‘Date’ heeft. Om ‘Date’ te kunnen

gebruiken dienen twee primaire modules ingeschakeld te zijn, namelijk ‘Date API’ en

‘Date Timezone’. De ‘Date’ module stelt een veldtype datum ter beschikking. Men heeft

hierbij de keuze uit een datum als selectielijst of een tekstveld waarin men een datum

kan invoeren aan de hand van een vooraf ingesteld formaat. Verder heeft men de

mogelijkheid om te kiezen tussen één datum of een begin- en einddatum en allerhande

formaten waarin de data moeten worden ingevoerd of weergegeven.

4.1.4 Token

De ‘Token’ module op zichzelf heeft geen enkele functie, hij dient gebruikt te worden

door andere modules zoals bijvoorbeeld CCK en Views. In de context van onze

inhoudstypes gebruiken we deze module bij het automatisch genereren van titels voor

aangemaakte nodes. We kunnen bij het instellen van deze titel kiezen uit een hele lijst

van gegenereerde tokens. Deze tokens maken het mogelijk om de inhoud van de titel

te genereren op basis van andere informatie. Men kan er bijvoorbeeld voor kiezen om

de waarde van een veld, dat werd ingevuld in een node van een bepaald inhoudstype,

te gebruiken als titel voor de node. Op deze manier kan men bijvoorbeeld bekomen dat

voor het inhoudstype ‘Jongere’ steeds de voornaam van de jongere als de titel van de

node wordt ingesteld. Een aantal andere mogelijkheden zijn het node ID, de datum

waarop de node gecreëerd werd, de auteur van de node,…

4.1.5 Rules

De ‘Rules’ module maakt het mogelijk om Drupal automatisch acties te laten uitvoeren

bij een nader te specificeren gebeurtenis. Er zijn tal van mogelijke combinaties van

acties en gebeurtenissen. Voorbeelden van gebeurtenissen zijn: een gebruiker die

inlogt, inhoud die bekeken wordt, een nieuwe node die wordt opgeslagen,…

Voorbeelden van acties zijn: een e-mail verzenden naar een gebruiker, inhoud

publiceren, een reactie verwijderen. Een mogelijke combinatie is dus bijvoorbeeld:

‘Stuur een bepaalde gebruiker een e-mail nadat hij is ingelogd.’

Page 44: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

32

4.2 DE VERSCHILLENDE INHOUDSTYPES

4.2.1 Inhoudstype ‘Voorzieningen’

Dit inhoudstype wordt gebruikt om een nieuwe voorziening toe te voegen aan de

database.

Men is verplicht om de naam van de voorziening, het adres, het e-mailadres en het

telefoonnummer in te vullen.

Optioneel kan men ook aangeven om welk soort voorziening het gaat, wie de

verantwoordelijke is, of de voorziening korting geniet, of er oudere jongeren aanwezig

zijn en of de voorziening verborgen moet worden in het overzicht van de database.

Tenslotte is er nog een tekstveld voorzien waar men, indien gewenst, extra informatie

kan toevoegen over de voorziening.

De naam van de voorziening moet uniek zijn. Indien in de database een voorziening

wordt teruggevonden met dezelfde naam verschijnt er een foutmelding op het scherm.

Naast deze foutmelding verschijnt er ook een link naar de voorziening met dezelfde

naam. Op basis hiervan kan de gebruiker beslissen of het inderdaad om dezelfde

voorziening gaat. Indien het toch om een andere voorziening zou gaan heeft de

gebruiker, ondanks de waarschuwing, de mogelijkheid de voorziening toch op te slaan.

Bizon vzw organiseert in elke provincie een aantal activiteiten. Om de deelnemers

zoveel mogelijk te kunnen spreiden over de verschillende activiteiten, is het belangrijk

dat van elke voorziening de juiste provincie gekend is. Gezien de provinciale spreiding

cruciaal is voor de erkenning als landelijk georganiseerd jeugdwerk, moet vermeden

worden dat gebruikers, al dan niet doelbewust, een verkeerde provincie invullen.

Daarom is het niet mogelijk voor de gebruikers om de provincie zelf in te voeren. De

provincie zal bij het opslaan van de nieuwe voorziening berekend worden op basis van

de postcode. Hiervoor beschikte Bizon vzw reeds over een algoritme, geschreven in

Visual Basic.

Het e-mailadres moet een geldige vorm hebben, indien niet wordt er een foutmelding

gegenereerd.

Page 45: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

33

Bij het opslaan van de nieuwe voorziening wordt er automatisch een uniek

klantennummer aangemaakt. Het is dit klantennummer dat een voorziening zal

gebruiken indien hij een aanvraag tot inschrijving wil invoeren. De aanvraag kan enkel

verzonden worden indien de voorziening een correct klantennummer invoert. Gezien

de kans op een correcte gok groot is bij een klantennummer bestaande uit één cijfer,

hebben we er voor geopteerd om klantennummers te genereren van minimaal drie

cijfers.

A. Het klantennummer

Het unieke klantennummer wordt gegenereerd door middel van twee velden,

‘field_berekenklantnummer’ en ‘field_klantennummer’. Het veld berekenklantnummer is

een serieveld en genereert een uniek sequentieel cijfer per aangemaakte node van het

inhoudstype ‘Voorzieningen’. Gezien het niet mogelijk is om de startwaarde in te stellen

begint het serieveld bij één. Uit het bovenstaande bleek dat dit niet wenselijk is.

Daarom werd het veld ‘klantennummer’ aangemaakt, met een ‘computed’ veldtype. Dit

veld telt de waarde 100 op bij het getal, dat gegenereerd werd door het serieveld, aan

de hand van volgende code:

$node_field[0]['value'] = $node->field_berekenklantnummer[0]['value'] + 100;

Gezien het serieveld pas berekend wordt tijdens het opslaan, kan het ‘klantennummer’

de waarde van ‘berekenklantnummer’ niet gebruiken bij de eerste maal dat de node

opgeslagen wordt. Dit is uiteraard niet de bedoeling. Als oplossing werd met behulp

van de ‘Rules’ module een ‘rule’ aangemaakt die, telkens er een node wordt

opgeslagen van het inhoudstype ‘Voorzieningen’, de volgende PHP code uitvoert:

auto_nodetitle_operations_update(array($node->nid));

De code zorgt ervoor dat de node na het opslaan nogmaals geüpdatet wordt, waardoor

de seriewaarde correct gegenereerd wordt en de berekening correct wordt uitgevoerd

en opgeslagen in de database.

Het klantennummer wordt met behulp van de modules ‘Automatic Nodetitles’ en

‘Token’ gebruikt als titel voor de nodes van dit inhoudstype.

Page 46: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

34

B. Unieke voorzieningen

Met behulp van de module ‘Unique Field’ wordt ervoor gezorgd dat men dezelfde

voorziening niet meermaals in de database invoert. De module controleert of de

waarde in het veld ‘naam_voorziening’ niet reeds eerder opgenomen werd in de

database. Ook werd gebruikers de mogelijkheid gelaten om, ondanks de

waarschuwing, toch door te gaan met het opslaan van de node.

C. Geldig e-mailadres

De module ‘Email’ gaat na of het ingevoerde e-mailadres een correcte vorm heeft.

D. Groeperen van velden

Met behulp van de CCK deelmodule ‘Fieldgroup’ werden een aantal velden

gegroepeerd. Voor de velden met betrekking tot het adres van de voorziening werd

een groep met als naam ‘adres’ aangemaakt. Voor de velden met betrekking tot de

gegevens van de verantwoordelijke van de voorziening werd een groep met als naam

‘verantwoordelijke’ aangemaakt. Tenslotte werd voor de optionele velden ‘verborgen’,

‘oudere jongeren’, ‘korting’ en ‘extra info’ een groep aangemaakt met als naam ‘extra’.

E. Het berekenen van de provincie

Het veld ‘land’ is het eerste veld van de groep ‘adres’. Dit (verplichte) veld bestaat uit

een selectielijst met een aantal landen.

De waarde ervan staat standaard ingesteld op ‘België’, gezien de meeste

voorzieningen die jongeren inschrijven gevestigd zijn in België. Het veld land

controleert drie andere velden, namelijk ‘field_postcode’, ‘field_provincie’ en

‘field_postcode buitenland’.

Indien de waarde van ‘land’ België is, wordt het verplichte veld ‘postcode’ getoond. In

dit veld moet men een integer die gelijk aan of groter is dan 1000 en kleiner dan of

gelijk aan 9999 invullen. Indien er een andere waarde wordt ingevuld, wordt een

foutmelding gegenereerd.

Indien de waarde van ‘land’ verschillend is van België, wordt het veld

‘postcode_buitenland’ zichtbaar. Dit is een tekstveld, gezien de postcode van sommige

landen wordt voorafgegaan door letters.

Page 47: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

35

Het veld ‘provincie’, van het type ‘computed’, berekent op basis van de waarde in het

veld ‘postcode’ de provincie. Het Visual Basic algoritme werd hiervoor omgezet naar de

volgende code:

$postcode = $node->field_postcode[0]['value']; switch ($postcode) { case ($postcode >= 1000 && $postcode < 1300): $node_field[0]['value'] = "Brussel"; break; case ($postcode >= 1300 && $postcode < 1500): $node_field[0]['value'] = "Waals-Brabant"; break; case ($postcode >= 1500 && $postcode < 2000): $node_field[0]['value'] = "Vlaams-Brabant"; break; case ($postcode >= 2000 && $postcode < 3000): $node_field[0]['value'] = "Antwerpen"; break; case ($postcode >= 3000 && $postcode < 3500): $node_field[0]['value'] = "Vlaams-Brabant"; break; case ($postcode >= 3500 && $postcode < 4000): $node_field[0]['value'] = "Limburg"; break; case ($postcode >= 4000 && $postcode < 5000): $node_field[0]['value'] = "Luik"; break; case ($postcode >= 5000 && $postcode < 6000): $node_field[0]['value'] = "Namen"; break; case ($postcode >= 6000 && $postcode < 6700): $node_field[0]['value'] = "Henegouwen"; break; case ($postcode >= 6700 && $postcode < 7000): $node_field[0]['value'] = "Luxemburg"; break; case ($postcode >= 7000 && $postcode < 8000): $node_field[0]['value'] = "Henegouwen"; break; case ($postcode >= 8000 && $postcode < 9000): $node_field[0]['value'] = "West-Vlaanderen"; break; case ($postcode >= 9000 && $postcode < 10000): $node_field[0]['value'] = "Oost-Vlaanderen"; break; }

Page 48: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

36

4.2.2 Inhoudstype ‘Jongeren’

Dit inhoudstype wordt gebruikt om een nieuwe jongere aan de database toe te voegen.

Men is verplicht om de voorziening waartoe de jongere behoort aan te duiden.

Dit veld bestaat uit een selectielijst waarin alle voorzieningen, die reeds in de databank

aanwezig zijn, getoond worden. Verder zijn de voornaam en de familienaam verplicht

in te vullen tekstvelden. De geboortedatum dient aangeduid te worden in een

selectieveld en is vereist. Tenslotte is men ook verplicht om het geslacht van de

jongere aan te vinken. Optioneel kan een telefoonnummer van de jongere worden

toegevoegd.

Het is niet wenselijk dat dezelfde jongere meermaals voorkomt in de database. Als

men een jongere toevoegt waarvan de combinatie van voornaam en familienaam reeds

voorkomt in de database, dient er een waarschuwing gegeven te worden. Naast deze

waarschuwing krijgt men ook een link naar de jongere met dezelfde naam. Op basis

hiervan kan de gebruiker beslissen of het inderdaad om dezelfde jongere gaat. Gezien

het steeds mogelijk is dat meerdere jongeren dezelfde voornaam en familienaam

hebben is er, ondanks de waarschuwing, toch de mogelijkheid om de jongere alsnog

op te slaan.

A. Unieke jongeren

Met behulp van de module ‘Unique Field’ wordt ervoor gezorgd dat men dezelfde

jongere niet meermaals in de database invoert. De module controleert of de waarde in

het veld ‘voornaam’ in combinatie met de waarde in het veld ‘familienaam’ niet eerder

opgenomen werd in de database. Ook werd gebruikers de mogelijkheid gelaten om,

ondanks de waarschuwing, toch door te gaan met het opslaan van de node.

B. Selectielijst met voorzieningen uit de database

Er werd een veld ‘content_field_vid’ met als type node referentie aangemaakt en met

als option widget een selectielijst. Indien men bij het te refereren inhoudstype

‘Voorzieningen’ kiest, zijn de waarden die verschijnen in de selectielijst de

klantennummers van de voorzieningen. Gezien we niet de klantennummers willen,

maar de namen van de voorzieningen, werd er een View aangemaakt met de namen

van de voorzieningen. Na het aanmaken kan deze view geselecteerd worden bij de

instellingen van de node referentie.

Page 49: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

37

C. Nodetitels van het inhoudstype ‘Jongeren’

De titel van elke node van dit inhoudstype wordt, met behulp van de modules

‘Automatic Nodetitles’ en ‘Token’ , opgebouwd uit de naam van de voorziening waartoe

de jongere behoort (‘field_vid_value’), gevolgd door de familienaam en de voornaam

van de jongere (‘field_familienaam_value’ en ‘field_voornaam_value’). In tokenvorm is

dit:

[field_vid-title-raw] | [field_familienaam-raw] [field_voornaam-raw]

4.2.3 Inhoudstype ‘Activiteit’

Dit inhoudstype wordt gebruikt om een nieuwe activiteit aan de database toe te

voegen.

Bij het aanmaken van een nieuwe activiteit is men verplicht de naam van de activiteit,

de uiterste annulatiedatum, het type activiteit, de datum waarop de activiteit doorgaat

en de locatie van de activiteit in te vullen. Tenslotte zijn er nog twee optionele velden,

namelijk dagprijs en procent medische annulatie.

Afhankelijk van het type activiteit dat werd geselecteerd verschijnt er ofwel een

enkelvoudig datumveld ofwel een meervoudig datumveld waarin men een begin- en

einddatum kan invullen.

Indien men koos voor een kamp of een weekend wordt het meervoudig veld zichtbaar.

De begindatum dient hierbij steeds voor de einddatum te liggen, indien dit niet zo is

wordt er een foutmelding gegenereerd.

Gezien bij een ééndagsactiviteit de begin- en einddatum gelijk zijn aan elkaar, wordt

hierbij slechts één datumveld zichtbaar gemaakt.

A. Datum aan de hand van het type activiteit

Met behulp van de ‘Conditional Fields’ module werden de waarden van het veld

‘type_activiteit’ controlerend gemaakt voor de zichtbaarheid van het enkelvoudige

datumveld (‘field_activiteit_datum_value’) en het meervoudige datumveld

(‘field_begin_einddatum_value’). Indien nog niets werd aangeduid in het selectieveld

‘type_activiteit’ wordt er geen enkel datumveld getoond. Gezien dit een verplicht veld is

dient men een keuze te maken uit de verschillende types activiteiten. Op basis van

deze keuze wordt ofwel het verplichte veld ‘activiteit_datum’ , ofwel het verplichte veld

‘begin_einddatum’ zichtbaar.

Page 50: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

38

B. Nodetitels van het inhoudstype ‘Activiteit’

De titel van elke node van dit inhoudstype wordt, met behulp van de modules

‘Automatic Nodetitles’ en ‘Token’ , opgebouwd uit de naam van de activiteit

(‘field_naam_value’), gevolgd door de tekststring ‘met als annulatiedatum’ en tenslotte

de ingevulde annulatiedatum (‘field_annulatiedatum_value’).

In tokenvorm wordt dit:

[field_naam-raw] met annulatiedatum

[field_annulatiedatum-dd]/[field_annulatiedatum-mm]/[field_annulatiedatum-yyyy]

4.2.4 Inhoudstype ‘Inschrijving’

Dit inhoudstype wordt gebruikt om een nieuwe inschrijving aan de database toe te

voegen.

Men is verplicht om het type activiteit, de naam van de activiteit, de naam van de

jongere, de datum van de actie, het type van de actie en de prijs in te vullen. De velden

medisch attest, toestemming buitenland en opmerkingen zijn optioneel.

Afhankelijk van het type activiteit (ééndagsactiviteit, weekend en kamp) dat werd

geselecteerd verschijnt er een veld waarin men de naam en de annulatiedatum van de

activiteit kan aanduiden. Deze selectielijst toont enkel de namen van de activiteiten van

het gespecificeerde type.

Vervolgens selecteert men uit de selectielijst ‘naam jongere’ de in te schrijven jongere.

Deze selectielijst bevat een lijst van alle jongeren die reeds opgenomen zijn in de

database samen met de naam van de voorziening waarin ze verblijven.

A. Naam aan de hand van het type activiteit

Het veld ‘type_activiteit’ werd reeds gebruikt in het inhoudstype ‘Activiteit’. Opnieuw

werden de waarden van dit veld, met behulp van de ‘Conditional Fields’ module,

controlerend gemaakt voor de zichtbaarheid van andere velden. Er werden drie velden

aangemaakt: ‘eendagsactiviteit’ (‘content_field_eendagsactiviteit’), weekend

(‘content_field_weekend’) en ‘kamp’ (‘content_field_kamp’). Deze drie velden hebben

het type node referentie.

Page 51: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

39

Indien nog niets werd aangeduid in het selectieveld ‘type_activiteit’ wordt geen enkel

van deze velden weergegeven. Gezien dit een verplicht veld is dient men een keuze te

maken uit de verschillende types activiteiten. Op basis van deze keuze komt de

selectielijst met de namen van de activiteiten van het gespecificeerde type

tevoorschijn.

Om de juiste waarden in deze velden te kunnen weergeven werden er voor elk type

activiteit een View gemaakt met de namen van de activiteiten. Gezien de drie velden

van het type node referentie zijn, is het mogelijk om bij elk veld de juiste View in te

schakelen zodanig dat de juiste namen worden weergegeven.

B. Selectielijst met de jongeren (en hun voorzienin g) uit de database

Er werd een veld ‘field_jid_nid’ met als type node referentie aangemaakt en met als

option widget een selectielijst. Indien men bij het te refereren inhoudstype ‘Jongeren’

kiest, zijn de waarden die verschijnen in de selectielijst van de vorm ‘Klantennummer

voorziening: Naam van de jongere’. Gezien we niet de klantennummers willen, maar

de namen van de voorzieningen, werd er een View aangemaakt met telkens de naam

van de jongere en de voorziening waartoe deze behoort. Na het aanmaken kan deze

view geselecteerd worden bij de instellingen van de node referentie.

4.2.5 Inhoudstype ‘Onkosten’

Dit inhoudstype wordt gebruikt om een nieuwe onkostennota aan de database toe te

voegen.

Men is verplicht om de gegevens van de jongere en de prijs aan te duiden. Optioneel

kan men in het tekstveld met het label ‘beschrijving’ invullen van waar de extra kosten

afkomstig zijn.

A. Selectielijst met de jongeren uit de database

Er werd een veld ‘field_iid_nid’ aangemaakt met als type node referentie. De waarden

die in de selectielijst van dit veld getoond worden zijn alle jongeren, die ingeschreven

zijn voor een bepaalde activiteit, gevolgd door de voorziening waartoe ze behoren. Ook

voor deze node referentie werd een View aangemaakt.

Page 52: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

40

4.2.6 Inhoudstype ‘Transport’

Dit inhoudstype wordt gebruikt om nieuwe transportinformatie aan de database toe te

voegen.

Men dient verplicht het type van de activiteit, de naam van de activiteit, de naam van

de voorziening, het vervoer van en naar de activiteit en de begeleider op de heen- en

terugreis in te vullen. Optioneel kan men in het tekstveld met het label ‘Opmerkingen’

nog extra informatie toevoegen.

Afhankelijk van het type activiteit (ééndagsactiviteit, weekend en kamp) dat werd

geselecteerd verschijnt er een veld waarin men de naam en de annulatiedatum van de

activiteit kan aanduiden. Deze selectielijst toont enkel de namen van de activiteiten van

het gespecificeerde type.

De naam van de voorziening wordt gekozen uit een selectielijst waarin alle

voorzieningen, die reeds in de databank aanwezig zijn, getoond worden.

A. Naam aan de hand van het type activiteit

Dit werd op dezelfde manier en met dezelfde velden geïmplementeerd als bij het

inhoudstype ‘Activiteit’ (p. 38).

B. Selectielijst met voorzieningen uit de database

Dit werd op dezelfde manier en met hetzelfde veld geïmplementeerd als bij het

inhoudstype ‘Jongeren’ (p. 35).

C. Groeperen van velden

Met behulp van de CCK deelmodule ‘Fieldgroup’ werden een aantal velden

gegroepeerd. Er werd een groep ‘Heen’ en een groep ‘Terug’ aangemaakt. De groep

‘Heen’ bevat de velden ‘field_vervoer_heen’ en ‘field_begeleider_heen’. De groep

‘Terug’ bevat de velden ‘field_vervoer_terug’ en ‘field_begeleider_terug’.

Page 53: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

41

4.2.7 Inhoudstype ‘Aanvraag’

Dit inhoudstype kan door voorzieningen worden gebruikt om een aanvraag tot

inschrijving voor een bepaalde activiteit in te dienen.

Enkel voorzieningen die reeds geregistreerd zijn bij Bizon vzw kunnen een aanvraag

tot inschrijving indienen. Bij het toevoegen van een voorziening aan de database wordt

er een klantennummer gegenereerd. De voorzieningen die geregistreerd zijn bij Bizon

kennen hun eigen klantennummer.

In het eerste verplichte veld, dienen de voorzieningen dit klantennummer in te vullen.

Indien dit klantennummer niet gekend is bij Bizon wordt er een foutmelding

gegenereerd en kan de voorziening geen aanvraag indienen.

De naam van de voorziening en het type en de naam van de activiteit, waarvoor men

een jongere wil inschrijven, zijn verplichte velden. Verder is het ook nodig dat er een

aantal gegevens over de jongere die men wil inschrijven toegevoegd worden, namelijk

de voornaam, de familienaam, de geboortedatum en het geslacht van de jongere.

Optioneel kan men ook het telefoonnummer van de jongere toevoegen.

A. Nagaan of klantennummer correct is

Hiervoor gebruiken we het reeds bestaande veld ‘field_vid’. Dit is een veld van het type

node referentie. Het is mogelijk om per inhoudstype de widget van een bepaald veld te

veranderen zonder dat dit invloed heeft op zijn verschijningsvorm in een ander

inhoudstype. Tot nu toe hebben we voor ‘field-vid’ steeds een selectielijst gekozen als

widget. In dit geval kiezen we echter voor een tekstveld. Hierdoor zijn de toegelaten

waarden voor dit tekstveld gelijk aan de klantennummers die worden aangemaakt in

het inhoudstype ‘Voorzieningen’.

B. Naam aan de hand van het type activiteit

Dit werd op dezelfde manier en met dezelfde velden geïmplementeerd als bij het

inhoudstype ‘Activiteit’ (p. 38).

Page 54: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

42

C. Extra informatie over de gebruikte velden

Uitgezonderd het veld ‘field_voorziening_value’, zijn alle velden die in dit inhoudstype

worden gebruikt reeds bestaande velden. Dit heeft als voordeel dat, indien een

aanvraag door een geverifieerde gebruiker of administrator aanvaard wordt, de

informatie over de inschrijving rechtstreeks op de juiste plaats terechtkomt in de

database. Een aanvraag die aanvaard werd, wordt dus omgezet naar een inschrijving.

Gezien in het inhoudstype ‘Inschrijving’ nog andere velden bestaan, werd er voor

gezorgd dat deze extra velden ook opgenomen werden in het inhoudstype ‘Aanvraag’.

Deze worden evenwel niet getoond in het officiële formulier om een aanvraag in te

vullen. Deze verborgen velden krijgen een standaardwaarde mee. Dit zorgt ervoor dat,

wanneer een aanvraag geaccepteerd wordt als een inschrijving, alle benodigde velden

aanwezig zijn zodanig dat de medewerkers van Bizon, indien gewenst, verdere

informatie kunnen toevoegen en aanpassen.

Indien een jongere nog niet aanwezig was in de database, kan er uit dit inhoudstype

voldoende informatie worden gehaald om de jongere automatisch toe te voegen aan

de gegevensbank ‘Jongeren’.

4.2.8 Inhoudstype ‘Algemene Gegevens’

Dit inhoudstype werd gebruikt om de algemene gegevens van Bizon vzw toe te voegen

aan de website. Geen van de gebruikers krijgt de toegang om algemene gegevens toe

te voegen of te verwijderen. Wanneer dit wel het geval zou zijn kan dit enkel tot

redundantie en inconsistenties leiden. Gebruikers met de rol van administrator kunnen

deze gegevens, indien nodig, wel aanpassen.

De ingevoerde informatie bestaat uit het adres, het telefoonnummer en de

bankgegevens (rekeningnummer, IBAN en BIC) van Bizon VZW enerzijds en de naam

van de verantwoordelijke anderzijds.

.

Page 55: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

43

5. De gegevensbank

In de primaire links is er een drop-down menu gegevensbank. Dit menu is enkel

zichtbaar voor geverifieerde gebruikers en administrators. Door het betreffende

inhoudstype aan te klikken krijgt de gebruiker vervolgens een pagina te zien met een

overzicht van alle nodes die aangemaakt werden voor dit inhoudstype.

We maken gebruik van overzichten per inhoudstype om gebruikers een beeld te geven

van de data die opgeslagen werd in de databank voor een specifiek inhoudstype. Bij de

overzichten worden steeds bepaalde filters zichtbaar gemaakt waardoor gebruikers

snel een bepaalde node kunnen terugvinden.

In dit deel bespreken we de gegevensbank in detail. Eerst bespreken we de modules

die werden gebruikt om de gegevensbank te creëren. Vervolgens bespreken we per

inhoudstype hoe het overzicht gegenereerd werd, welke mogelijke filters zichtbaar zijn

voor de gebruikers en welke operaties toegelaten zijn op de nodes.

5.1 MODULES

5.1.1 Views

De overzichten worden gegenereerd door gebruik te maken van de module ‘Views’.

Zoals beschreven in De Tré (2007) worden de views op de database in de externe laag

van de drie-lagen-architectuur van het databasemodel gedefinieerd. Hierdoor kan men

een gepersonaliseerde kijk op de database realiseren.

De module ‘Views’ werd speciaal ontwikkeld om de CCK velden van een bepaald

inhoudstype op een gestructureerde manier weer te geven. Elke view kan op een

andere manier weergegeven worden aan de hand van displays. Men kan een view

weergeven als een pagina, een blok, een bijlage of een feed. Voor de gegevensbank

hebben we een view ‘databank’ aangemaakt, met voor elk inhoudstype een ander

pagina-display. Elke sub-view van de view ‘databank’ wordt aldus weergegeven als

een pagina met een eigen URL en een eigen menu.

De overzichten fungeren verder als een interface om de opgeslagen nodes te

bewerken, te verwijderen of in detail te bekijken. Een overzicht geeft immers maar een

deel van de velden van een bepaald inhoudstype weer. Door een detail van een node

aan te vragen kan men de waarde voor alle velden van dat inhoudstype bekijken.

Page 56: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

44

5.1.2 Views Bulk Operations

Het is wenselijk dat men de nodes in een view ook kan bewerken, verwijderen of,

wanneer het om een aanvraag gaat, aanvaarden. Hiervoor hebben we gebruik

gemaakt van de module ‘Views Bulk Operations’. Deze module combineert views met

bepaalde acties en laat verschillende operaties op de weergegeven nodes toe.

5.2 ACTIVITEITEN

5.2.1 Overzicht

Om aan te duiden welke inhoud we in de view activiteiten te zien willen krijgen dienen

we de filters in te stellen. Een node van het inhoudstype activiteit wordt standaard

gepubliceerd. In de ‘filter’ dient dus aangeduid te worden dat het om een node gaat van

het type activiteit (Node: type=activiteit) en dat deze node gepubliceerd moet zijn

(Node: Gepubliceerd Ja).

Bij het onderdeel ‘fields’ kunnen we instellen welke velden er in de tabel moeten

getoond worden. Voor de activiteiten is dit dus de naam van de activiteit, de

annulatiedatum, het type activiteit, de begin - en einddatum van de activiteit, de locatie,

de dagprijs en het percentage medische annulatie.

5.2.2 Filters ter beschikking van de gebruiker

We willen gebruikers toelaten om enkel activiteiten van een bepaald type weer te

geven. Hiervoor maken we een extra filter aan met als inhoud de types activiteiten, die

we zichtbaar maken voor gebruikers in een blok boven de tabel.

5.2.3 Detail, bewerken en verwijderen

Het moet mogelijk zijn voor de gebruikers om nodes in detail te kunnen bekijken en te

bewerken. Dit kan door bij het onderdeel ‘velden’ ook een ‘edit’ link toe te voegen

(Node: edit link) en een link naar de node (Node: Link). Figuur 8 toont een detail van

een activiteit en welke velden bewerkt kunnen worden.

Page 57: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

45

Figuur 8: Detail en bewerken van een activiteit.

Vervolgens willen we de gebruikers ook toelaten om een of meerdere activiteiten te

verwijderen uit de database. Dit kan door een bulk operation toe te voegen, namelijk

deze om een node te verwijderen (views_bulk_operations_ delete_node_action).

De gegevens in dit overzicht worden standaard gesorteerd volgens de naam van de

activiteit. Men kan indien gewenst ook sorteren volgens een ander veld door het

kolomhoofd van dit betreffende veld aan te klikken. De URL voor dit overzicht is

/databank/ activiteiten.

5.3 AANVRAGEN

5.3.1 Overzicht

Nodes van het inhoudstype ‘aanvraag’ worden standaard niet gepubliceerd. Indien de

medewerkers van Bizon de aanvraag goedkeuren wordt deze aanvraag gepubliceerd

en komen die gegevens terecht in het overzicht van de inschrijvingen.

Om een overzicht van de aanvragen te genereren moeten we de filter dus zo instellen

dat enkel nodes weergegeven worden van het type aanvraag die niet gepubliceerd zijn

(Node: Gepubliceerd Nee ; Node: Type = aanvraag).

De velden die we in het overzicht willen weergeven zijn de datum van de aanvraag, de

voorziening die werd opgegeven, de naam van de jongere, de activiteit waarvoor een

aanvraag werd ingediend, het telefoonnummer, het geslacht en de geboortedatum van

de jongere.

We bouwen echter nog een extra controle in. Een voorziening die een aanvraag wenst

in te dienen moet over een geldig klantennummer van Bizon beschikken. Het is echter

mogelijk dat een voorziening een geldig klantennummer opgeeft, maar als naam van

Page 58: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

46

de voorziening een naam opgeeft die niet bij dat geldige klantennummer hoort. Door

een kolom ‘werkelijke voorziening’ bij te voegen kan een medewerker beslissen om bij

verschillen tussen de ingeschreven voorziening en de werkelijke voorziening de

aanvraag te weigeren.

Het veld ‘werkelijke voorziening’ kan in een view weergegeven worden door een relatie

toe te voegen. In dit geval moet er een relatie zijn met het inhoudstype ‘Voorzieningen’.

Deze relatie kan aangemaakt worden door een nieuwe relatie toe te voegen namelijk

‘field_vid’. Aan de hand van het klantennummer, ingevuld bij de aanvraag, wordt de

naam van de voorziening uit het inhoudstype voorzieningen gehaald ((voorziening)

Inhoud: field_naam_voorziening_value).

De aanvragen worden in het overzicht standaard gesorteerd volgens de datum van de

aanvraag. Men kan echter ook volgens een ander veld sorteren door het betreffende

kolomhoofd aan te klikken. De URL voor dit overzicht is /databank/aanvragen.

In Figuur 9 wordt een webpagina van het overzicht van de aanvragen weergegeven.

Page 59: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

47

Figuur 9: Overzicht aanvragen.

Page 60: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

48

5.3.2 Filters ter beschikking van de gebruiker

We willen de medewerkers toelaten om de inhoud die weergegeven wordt in de view

zelf, te filteren. Zo kan men door een filter die bovenaan de view verschijnt enkel de

aanvragen voor een bepaalde activiteit weergeven, of enkel de aanvragen van een

bepaalde voorziening weergeven.

5.3.3 Detail, bewerken en verwijderen

Om het mogelijk te maken voor de gebruikers om nodes in detail te bekijken en te

bewerken, voegen we in het onderdeel ‘velden’ van de view ook een ‘edit’ link toe

(Node: edit link) en een link naar de node (Node: Link).

Aangezien de medewerkers hier een overzicht van de aanvragen te zien krijgen,

dienen zij de mogelijkheid te hebben om deze aanvragen te aanvaarden of te

verwijderen. We voegen dus de bulk operatie ‘verwijderen’ toe alsook de operatie

‘publiceren’. Door een aanvraag te aanvaarden, publiceert men in feite de aanvraag.

De aanvraag verdwijnt hierdoor uit het overzicht van de aanvragen, aangezien we in de

filter ingesteld hebben dat we enkel de aanvragen die niet gepubliceerd zijn willen te

zien krijgen.

5.4 INSCHRIJVINGEN

5.4.1 Overzicht

In de view van de inschrijvingen willen we een overzicht krijgen van de aangemaakte

inschrijvingen, maar ook van de gepubliceerde aanvragen. Beide inhoudstypes

gebruiken immers dezelfde velden waardoor een aanvraag ook als een inschrijving kan

beschouwd worden.

Anonieme gebruikers krijgen bij het invullen van een aanvraag echter niet alle velden

te zien waardoor deze lege velden een default waarde krijgen. Wanneer bijvoorbeeld

het veld ‘Actie’ leeg is krijgt dit standaard de waarde ‘inschrijving’. De prijs van een

activiteit dient bij de aanvraag niet ingevuld te worden. Dit veld krijgt dus de waarde

‘0.00’. De datum van de inschrijving krijgt automatisch de datum van de aanvraag. De

velden ‘toestemming buitenland’ en ‘medisch attest’ krijgen automatisch de waarde

‘geen info’, en het veld ‘opmerkingen’ blijft per default leeg.

Een gepubliceerde aanvraag kan dus dankzij deze aanpassingen als een inschrijving

beschouwd worden.

Page 61: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

49

Nieuwe inschrijvingen worden standaard gepubliceerd en aanvragen mogen enkel

opgenomen worden in het overzicht van de inschrijvingen wanneer deze gepubliceerd

werden.

We dienen dus in de filter van de view inschrijvingen in te stellen dat we enkel inhoud

willen zien die gepubliceerd is, maar die zowel van het inhoudstype inschrijving of

aanvraag mag zijn (Node: type in aanvraag, inschrijving). Wanneer een medewerker

dus een aanvraag aanvaardt (publiceert) verdwijnt deze aanvraag uit het overzicht van

de aanvragen en komt deze terecht in het overzicht van de inschrijvingen.

In het overzicht van de inschrijvingen willen we als velden de familienaam en de

voornaam van de jongere zien, de naam van de activiteit waarvoor de jongere

ingeschreven is, de datum van de inschrijving, om welke actie het gaat, wat de prijs is,

of de jongere toestemming heeft om naar het buitenland te reizen, of de jongere over

een medisch attest beschikt, en eventuele opmerkingen.

5.4.2 Filters ter beschikking van de gebruiker

Er werden filters ter beschikking gesteld aan de medewerkers om de view aan te

passen aan hun wensen. Zo hebben we filters zichtbaar gemaakt waardoor men enkel

de inschrijvingen voor een bepaalde activiteit of voor een bepaalde jongere kan

bekijken.

Men heeft ook de mogelijkheid om op basis van ‘actie’ de view aan te passen en

bijvoorbeeld enkel de medische annulaties te bekijken.

5.4.3 Detail, bewerken en verwijderen

Om de inschrijvingen in detail te kunnen bekijken werd een detail-link toegevoegd en

om de inschrijvingen vlot te kunnen bewerken werd een veld met een edit-link

toegevoegd.

Er werd vervolgens nog een bulk operatie toegevoegd waardoor men vlot één of

meerdere inschrijvingen uit de database kan verwijderen. De gegevens in het overzicht

van de inschrijvingen worden standaard gesorteerd volgens de familienaam van de

jongere. Men kan echter ook op andere velden sorteren door het betreffende

kolomhoofd aan te klikken. De URL voor dit overzicht is /databank/inschrijvingen.

Page 62: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

50

5.5 JONGEREN

5.5.1 Overzicht

In het overzicht van de jongeren worden alle jongeren weergegeven die toegevoegd

werden door de medewerkers van Bizon. De jongeren die via een aanvraag werden

ingevuld dienen echter ook te worden weergegeven. Nodes van het inhoudstype

jongeren worden standaard gepubliceerd. We willen de jongeren die ingevuld werden

bij de aanvraag ook enkel toevoegen in de tabel jongeren wanneer deze aanvraag

aanvaard werd (e.a. gepubliceerd).

In de filter van deze view dienen we dus aan te geven dat we enkel gepubliceerde

nodes wensen weer te geven (Node: gepubliceerd Ja). Deze nodes mogen echter

zowel van het inhoudstype aanvraag als van het inhoudstype jongeren afkomstig zijn

(Node: type = aanvraag, jongeren).

In deze view willen we onder andere dat het veld met de naam van de voorziening en

het klantennummer zichtbaar is maar dat deze weergegeven worden in een kolom.

Door de output van de naam van de voorziening te herschrijven, met behulp van de

‘Token’ module, kunnen we het klantennummer tussen haakjes weergeven na de

naam van de voorziening ([field_naam_voorziening_value] ([field_vid_nid])).

Verder willen we dat de voornaam en familienaam van de jongere in het overzicht

staat, het telefoonnummer, de geboortedatum en het geslacht van de jongere.

De gegevens in het overzicht van de jongeren worden standaard gesorteerd volgens

de naam van de voorziening. Door een kolomhoofd aan te klikken kan men de

gegevens echter ook sorteren volgens een ander veld. De URL voor dit overzicht is

/databank/jongeren.

5.5.2 Filters ter beschikking van de gebruiker

Er werd een filter beschikbaar gesteld voor de medewerkers om de jongeren per

voorziening weer te geven.

5.5.3 Detail, bewerken en verwijderen

Om gebruikers in staat te stellen een node in detail te bekijken of te bewerken hebben

we naast de velden van het inhoudstype jongeren ook een edit-link field en een detail-

link field toegevoegd. Tevens werd er een bulk operatie toegevoegd om een of

meerdere jongeren te kunnen verwijderen.

Page 63: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

51

5.6 TRANSPORTINFO

5.6.1 Overzicht

Nodes van het inhoudstype transportinfo worden standaard gepubliceerd. In onze view

dienen we de filter dus zo in te stellen dat enkel de nodes die gepubliceerd en van het

inhoudstype ‘transport’ zijn, getoond worden (Node: Gepubliceerd Ja; Node: type =

transport).

Als velden voor deze view willen we de naam van de voorziening met het

klantennummer (cf. overzicht jongeren), de naam van de activiteit, het vervoer voor de

heenreis, het vervoer voor de terugreis, de begeleiders voor de heen-en terugreis en

het veld opmerkingen.

Het overzicht wordt standaard gesorteerd op de naam van de voorziening. Door een

kolomhoofd aan te klikken kan men echter ook sorteren op basis van een ander veld.

De URL voor dit overzicht is /databank/transportinfo

5.6.2 Filters ter beschikking van de gebruiker

Er werden twee filters zichtbaar gemaakt zodat medewerkers enkel de transportinfo

voor een welbepaalde activiteit kunnen weergeven, of voor een welbepaalde

voorziening.

5.6.3 Detail, bewerken en verwijderen

Ook in deze view zijn er extra velden toegevoegd met een edit-link en een detail-link,

zodat gebruikers de nodes in detail kunnen bekijken en bewerken.

Verder werd een operatie toegevoegd waardoor men snel een of meerdere nodes van

het inhoudstype transport kan verwijderen.

5.7 VOORZIENINGEN

5.7.1 Overzicht

De nodes van het inhoudstype ‘voorzieningen’ worden standaard gepubliceerd. Voor

deze view dienen we dus in de filter in te stellen dat we enkel gepubliceerde nodes van

het inhoudstype voorzieningen willen zien. De voorzieningen waarbij het veld

‘verborgen’ aangekruist werd mogen echter niet getoond worden in het overzicht. We

dienen dus nog een extra filter toe te voegen namelijk Inhoud: Verborgen = niet

verborgen.

Page 64: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

52

De velden die we zichtbaar maken zijn de naam van de voorziening, het

klantennummer, de verantwoordelijke van de voorziening, de velden met de

adresgegevens, het telefoonnummer en het e-mail adres.

Het overzicht van de voorzieningen wordt standaard gesorteerd op de naam van de

voorziening. Het is echter mogelijk om de nodes op een andere manier te sorteren.

Dit kan eenvoudig door op een kolomhoofd in het overzicht te klikken. De nodes

worden op die manier alfabetisch of numeriek gesorteerd op de waardes van dit

betreffende veld. De URL voor dit overzicht is /databank/voorzieningen.

5.7.2 Filters ter beschikking van de gebruiker

Gebruikers hebben de mogelijkheid om ook de verborgen voorzieningen weer te geven

door in een filter ‘verborgen’ aan te klikken. Hierdoor kan men de voorzienings-node

aanpassen en deze eventueel op niet verborgen instellen.

Verder kunnen medewerkers snel de gegevens van een enkele voorziening zichtbaar

maken door een andere publieke filter die toelaat te filteren op de naam van de

voorziening.

5.7.3 Detail, bewerken en verwijderen

Om de nodes in detail te kunnen bekijken en te bewerken werd er in de view bij de

velden een detail-link en een edit-link toegevoegd.

Er werd ook een verwijder-knop voorzien zodat een of meerdere voorzieningen tegelijk

verwijderd kunnen worden.

5.8 ONKOSTEN

5.8.1 Overzicht

De nodes van het inhoudstype onkosten worden standaard gepubliceerd.

In dit overzicht willen we dus gepubliceerde nodes van het inhoudstype onkosten

tonen. Dit duiden we aan in de filter van de onkosten-view.

Bij de velden voegen we de naam van de jongere en het klantennummer van de

voorziening waartoe de jongere behoort toe, de prijs die betaald moet worden en de

beschrijving van de gemaakte onkosten.

Het overzicht van de onkosten wordt standaard gesorteerd op klantennummer en

vervolgens op familienaam. De URL voor dit overzicht is /databank/onkosten.

Page 65: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

53

5.8.2 Detail, bewerken en verwijderen

Bij het aanmaken van de view werd in het onderdeel ‘velden’ ook een detail-link en een

link om de node te bewerken toegevoegd.

Verder is het ook mogelijk om een of meerdere nodes te verwijderen dankzij de

toegevoegde operatie ‘verwijderen’.

Page 66: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

54

6. Inhoud toevoegen, verwijderen of wijzigen

6.1 INHOUD TOEVOEGEN

Door via het menu ‘Gegevensbank’ het betreffende inhoudstype aan te wijzen,

verschijnt rechts van dit inhoudstype een nieuwe link die de gebruiker naar de pagina

brengt om een nieuwe node van dit inhoudstype toe te voegen.

Wanneer men vervolgens een node van een bepaald inhoudstype wensen toe te

voegen krijgt men te maken met optionele - en verplichte velden. Bepaalde velden zijn

verplicht in te vullen omdat deze velden de node een betekenis geven. Wanneer een

activiteit zou worden toegevoegd zonder hiervoor een naam in te geven heeft de node

geen betekenis meer en valt deze moeilijk te onderscheiden van andere nodes.

Bepaalde velden dienen dus verplicht ingevuld te worden omdat ze essentiële

informatie voor dat bepaald inhoudstype bevatten. Wanneer een gebruiker een

verplicht veld niet ingevuld heeft, verschijnt er een foutmelding dat het verplichte veld

wel degelijk verplicht in te vullen is. Verder wordt redundantie zoveel mogelijk

vermeden door na te gaan of de ingevoerde informatie reeds aanwezig is in de

database. Redundante data vormen immers een potentiële bron van inconsistentie (De

Tré, 2007, p.104).

Om redundante data zoveel mogelijk te voorkomen hebben we gebruik gemaakt van

de module ‘Unique Field’. Deze module laat toe om per inhoudstype de velden (of de

combinatie van velden) aan te duiden die uniek moeten zijn.

6.1.1 Activiteiten toevoegen

Wanneer men een nieuwe activiteit wenst aan te maken dient men een aantal

verplichte velden in te vullen. In dit geval is elk veld verplicht, met uitzondering van de

prijs en het percentage medische annulatie. Het gekozen type activiteit bepaalt of er

een enkele datum dient ingevuld te worden of als er een begin – en een einddatum

dient ingevuld te worden. Voor elk verplicht veld dat niet ingevuld werd verschijnt er

een foutmelding met de verwijzing naar het veld dat nog ingevuld dient te worden.

Indien men een activiteit wenst toe te voegen met een naam die reeds toegevoegd

werd in de database verschijnt er een foutmelding met een link naar de betreffende

node. Wanneer men echter een activiteit wenst toe te voegen met dezelfde naam,

maar van een ander type of die plaatsvindt op een andere datum kan men deze

foutmelding negeren en toch verder gaan met het toevoegen van de nieuwe activiteit.

Page 67: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

55

6.1.2 Aanvragen toevoegen

Zoals reeds vermeld hebben enkel anonieme gebruikers de mogelijkheid om een

aanvraag in te dienen. Deze anonieme gebruikers zijn de voorzieningen die een

jongere wensen in te schrijven voor een activiteit. Alvorens dit mogelijk is dienen zij

echter over een geldig klantennummer te beschikken.

Het eerste veld op het aanvraagformulier controleert of het klantennummer gekend is

in de database. Dit is een verplicht veld, waardoor de aanvraag niet opgeslagen wordt

in de database wanneer dit veld blanco wordt gelaten of wanneer er geen geldig

klantennummer ingevoerd werd.

Verder wordt gecontroleerd of alle verplichte velden ingevuld werden. Indien dit niet het

geval is worden de voorzieningen hierop gewezen door middel van een foutmelding.

6.1.3 Inschrijvingen toevoegen

Wanneer men een nieuwe inschrijving wenst toe te voegen dient men alle verplichte

velden in te vullen. Ook hier verschijnt een gepaste foutmelding wanneer dit niet het

geval is. Verder kan men pas nadat men gekozen heeft voor een bepaald type activiteit

de namen van de activiteiten zien. Wij hebben deze optie ingevoerd om de kans op

fouten te verkleinen. Zo is het bijvoorbeeld mogelijk dat er zowel een kamp als een

weekend bestaat met de naam ‘wigwam’. Hierdoor zou een medewerker per abuis de

verkeerde activiteit kunnen aanduiden bij een inschrijving. Deze optie vergroot

daarenboven de gebruiksvriendelijkheid, aangezien er hierdoor geen grote lijst met

activiteiten getoond wordt. Enkel de activiteiten van het type waarvoor men een

jongere wenst in te schrijven zijn zichtbaar.

6.1.4 Jongeren toevoegen

Wanneer men een nieuwe jongere wil toevoegen dient men de voorziening waartoe de

jongere behoort aan te duiden. Dit is belangrijk omdat alle communicatie met

betrekking tot die jongere hoofdzakelijk gebeurt met de betreffende voorziening. Deze

communicatie betreft bijvoorbeeld het transport van en naar een activiteit, maar

bijvoorbeeld ook de betalingen.

Andere belangrijke, en dus ook verplichte velden, zijn de voornaam en de familienaam

van de jongere, de geboortedatum en het geslacht. Het telefoonnummer is niet

verplicht. Ook hier worden foutmeldingen weergegeven per verplicht veld dat niet

ingevuld werd. In Figuur 10 is te zien hoe het formulier om een jongere toe te voegen

eruit ziet.

Page 68: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

56

Figuur 10: Jongere toevoegen

Wanneer men een jongere wenst toe te voegen die reeds bestaat in de database wordt

men hier van op de hoogte gebracht. Indien dit toevallig om een jongere gaat met

dezelfde voor- en familienaam als de jongere in de database kan men ervoor kiezen de

nieuwe jongere toch toe te voegen en de foutmelding te negeren.

6.1.5 Transportinfo toevoegen

Wanneer men transportinfo wenst toe te voegen kan men op basis van het type

activiteit, de naam van de activiteit aanduiden waaraan men de transportinfo wenst te

koppelen. Vervolgens dient men de voorziening aan te duiden waarvoor men de

transportinfo toevoegt, en hoe de jongere van en naar de activiteit zal gaan.

Verder heeft men de mogelijkheid om opmerkingen toe te voegen. De controle of

verplichte velden ingevuld werden, wordt ook hier uitgevoerd.

6.1.6 Voorzieningen toevoegen

Wanneer men een nieuw voorziening wenst toe te voegen zijn er verschillende

verplichte velden. Zo is de naam van de voorziening verplicht in te vullen, het adres

(vier velden), het telefoonnummer en het email adres van de verantwoordelijke.

Wanneer deze velden niet ingevuld worden verschijnt er een waarschuwing die hen

laat weten welke velden nog ingevuld dienen te worden. Wanneer men het optionele

veld ‘verborgen’ aankruist, zal de voorziening niet zichtbaar zijn in het overzicht van de

voorzieningen. Deze vraag kwam vanuit de organisatie van Bizon vzw.

Door deze optie wordt het mogelijk om voorzieningen die tijdelijk geen jongeren zullen

inschrijven te verbergen. Wanneer een voorziening later toch opnieuw jongeren wenst

Page 69: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

57

in te schrijven kan men deze optie opnieuw uitvinken waardoor de voorziening terug

zichtbaar wordt in het overzicht. We kiezen er ook voor om deze voorziening louter te

verbergen en niet te verwijderen omdat de inschrijvingen van jongeren behorende tot

die voorziening in de database moeten blijven.

Verder wordt er bij het toevoegen van een nieuwe voorziening gecontroleerd of deze

voorziening reeds opgenomen werd in de database. Wanneer dit het geval is wordt

deze specifieke node getoond in de foutmelding.

Indien er echter nog een voorziening is met die naam kan men deze foutmelding

negeren en verder gaan met het toevoegen van deze nieuwe voorziening.

6.1.7 Onkosten toevoegen

Wanneer medewerkers nieuwe onkosten willen toevoegen krijgt men een formulier te

zien met twee verplichte velden. In het eerste veld ‘gegevens jongere’, wordt de naam

van de jongere waarvoor nog onkosten dienen betaald te worden opgegeven. Dit veld

is gekoppeld aan de view noderefiid.

Hierdoor wordt het mogelijk om enkel jongeren en hun voorziening weer te geven die

reeds ingeschreven zijn voor een activiteit. Het volgende veld is ook verplicht, namelijk

het bedrag. Indien de verplichte velden niet ingevuld worden krijgt de gebruiker een

foutmelding te zien. Verder hebben we gebruikers de ruimte gegeven een beschrijving

van de onkosten in te geven.

6.2 INHOUD VERWIJDEREN

In het beste geval bevat een database enkel de informatie die strikt noodzakelijk is.

Hier bestaat natuurlijk geen sluitende controle voor. De mogelijkheid om overbodige

data te kunnen verwijderen is echter van groot belang. Daarom werd er bij de

overzichten de mogelijkheid gegeven om een of meerdere nodes aan te kruisen en

vervolgens te verwijderen. Om gebruikers te behoeden voor fouten wordt een controle

ingebouwd en dient de gebruiker te bevestigen dat hij of zij wel degelijk de

geselecteerde informatie wil verwijderen.

Geen van de medewerkers krijgt echter de mogelijkheid om de algemene gegevens

van Bizon te verwijderen. Het is belangrijk dat men te allen tijde het rekeningnummer of

de verantwoordelijke van Bizon kan nakijken.

Page 70: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

58

6.3 INHOUD WIJZIGEN

De gegevensbank van Bizon bevat heel wat data die kan veranderen doorheen de tijd.

Zo kan het bijvoorbeeld zijn dat een jongere niet langer bij voorziening x hoort maar bij

voorziening y. De medewerkers kunnen data wijzigen door naar het overzicht te gaan

van een bepaald inhoudstype en vervolgens naast de te wijzigen node op de knop

‘bewerken’ te klikken. Hierdoor krijgt men alle opgeslagen informatie te zien voor die

node en kan men de nodige wijzigingen aanbrengen. Wanneer men alle te wijzigen

velden aangepast heeft kan men op de knop ‘opslaan’ klikken en werd de data

succesvol gewijzigd.

Page 71: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

59

7. Gebruikers

Er werden drie soorten gebruikers gedefinieerd, namelijk anonieme gebruikers,

geverifieerde gebruikers en administrators.

De gebruikers van onze website bestaan in principe uit de medewerkers van Bizon vzw

(geverifieerde gebruikers en administrators) enerzijds en de voorzieningen (anonieme

gebruikers) die een aanvraag tot inschrijving wensen in te dienen anderzijds. In

voorgaande hoofdstukken werd reeds uitgelegd wat de verschillen zijn tussen deze

groepen gebruikers met betrekking tot de toegang tot de data.

Zoals beschreven in De Tré (2007) is enige vorm van toegangscontrole belangrijk om

de authenticiteit van de gebruiker te kunnen controleren. De Bizon medewerkers

beschikken over een gebruikersnaam en een paswoord die opgeslagen werd in de

database.

Er dient echter ook een toegangscontrole te worden ingebouwd die de toevallige

gebruiker onderscheidt van de voorziening die een aanvraag wenst in te dienen. Dit

werd gerealiseerd door in het formulier voor het toevoegen van een aanvraag, een veld

klantennummer toe te voegen. Een werkelijke voorziening krijgt immers een

klantennummer toegewezen wanneer deze wenst samen te werken met Bizon.

Wanneer een gebruiker een geldig klantennummer ingeeft wordt de authenticatie als

geldig beschouwd. Hoewel deze vorm van toegangscontrole niet als veilig beschouwd

kan worden volstaat dit voor het doel van deze website.

Het is namelijk belangrijk dat voorzieningen op een vlotte en gebruiksvriendelijke

manier een aanvraag kunnen indienen, zonder dat ze daarvoor een wachtwoord en

een gebruikersnaam moeten onthouden.

Verder blijven de gegevens in ieder geval afgeschermd van het grote publiek,

aangezien geen van de anonieme gebruikers toegang heeft tot de gegevens. Verder

werden er, zoals beschreven in het hoofdstuk views, extra controles voorzien voor de

medewerkers opdat zij zelf zouden kunnen oordelen over de betrouwbaarheid van de

aanvraag.

Elke geregistreerde gebruiker (geverifieerde gebruikers en administrators) heeft via zijn

account menu de mogelijkheid om zijn persoonlijke gegevens aan te passen.

Het zijn echter enkel de administrators die ook de gegevens van andere gebruikers

kunnen beheren. Het zijn dan ook enkel de gebruikers met de rol van administrator die

Page 72: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

60

de primaire link ‘Gebruikers’ te zien krijgen. Via dit menu kan een administrator een

gebruiker toevoegen, verwijderen, de gegevens wijzigen, of een andere rol geven.

Om misbruik tegen te gaan hebben administrators echter niet de mogelijkheid om

wachtwoorden van andere gebruikers te wijzigen. Een wachtwoord van een gebruiker

kan dus enkel gewijzigd worden door de gebruiker zelf, en dit geldt voor alle

gebruikersrollen.

Wanneer een administrator naar het menu ‘Gebruikers’ gaat, komt hij terecht op de

gebruikersbeheer pagina. Deze pagina is onderverdeeld in twee tabbladen. Het eerste

tabblad toont de lijst met alle geregistreerde gebruikers. Dit tabblad laat toe de

gegevens van een gebruiker te wijzigen, een gebruiker te verwijderen, te blokkeren, of

een andere rol te geven. Via het tweede tabblad kan een administrator een gebruiker

toevoegen.

In wat volgt bespreken we eerst de modules die gebruikt werden om de functionaliteit

met betrekking tot te gebruikers te realiseren. Vervolgens zullen we beide tabbladen

uitgebreid bespreken.

7.1 MODULES

7.1.1 Role Delegation

Deze module laat toe om bepaalde rollen, een rol te laten toekennen aan een andere

gebruiker zonder dat zij daarvoor toegang moeten krijgen tot het volledige

beheerpaneel.

Voor deze website werd het voor gebruikers met de rol administrator mogelijk gemaakt

om andere gebruikers de rol van administrator toe te wijzen en af te nemen.

7.1.2 Administer Users by Role

Deze module creëert de mogelijkheid om gebruikers, met een bepaalde rol, nieuwe

gebruikers te laten aanmaken en bestaande gebruikers te bewerken of te verwijderen

zonder dat zij daarvoor toegang moeten krijgen tot het gehele beheerpaneel.

7.1.3 Password Change Confirm

Deze module zorgt ervoor dat indien een gebruiker zijn paswoord wil veranderen, hij

steeds nog eens zijn oude paswoord moet invullen alvorens het gewijzigde paswoord

zal worden opgeslagen. Analoog zal de gebruiker bij het veranderen van andere

Page 73: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

61

persoonlijke gegevens eerst zijn paswoord moeten invullen alvorens de wijzigingen

worden opgeslagen. Tevens zorgt de module ervoor dat een administrator bij het

wijzigen van de gegevens van een andere gebruiker, het eigen paswoord moet

invoeren alvorens de wijzigingen worden opgeslagen.

Op deze manier kan worden vermeden dat onbevoegden allerlei instellingen

veranderen indien een computer met een ingelogde gebruiker onbemand wordt

achtergelaten.

7.1.4 Generate Password (Genpass)

De standaard pagina, in Drupal, om een nieuwe gebruiker te voegen bevat een veld

paswoord dat moet worden ingevuld door de administrator. Voor onze website is het

echter niet wenselijk dat de administrator over de mogelijkheid beschikt om een

paswoord te kiezen voor de nieuwe gebruiker. Verder bevat deze pagina een checkbox

waarin men kan aanduiden of de nieuwe gebruiker al dan niet via e-mail op de hoogte

gebracht moet worden van zijn nieuwe account en inloggegevens. Voor onze website

is het echter de bedoeling dat deze e-mail altijd verstuurd wordt. Het is niet de

bedoeling dat de administrator hierover kan beslissen.

Deze module helpt ons een stapje in de goede richting. Hij zorgt er namelijk voor dat

het paswoordveld op deze pagina niet langer verplicht dient te worden ingevuld door

de administrator. Indien de administrator de velden blanco laat, zal er automatisch een

sterk paswoord worden gegenereerd. Indien de administrator de checkbox, voor het

verzenden van een e-mail, vergeet aan te vinken ontstaat er een groot probleem:

zowel de administrator als de nieuwe gebruiker zullen het paswoord nooit kennen en

de nieuwe account is aldus onbruikbaar.

Deze situatie is dus allesbehalve wenselijk voor onze website, daarom hebben wij zelf

de code voor een klein deel herschreven. Ten eerste hebben wij ervoor gezorgd dat

het paswoordveld onzichtbaar wordt, zodanig dat het altijd blanco gelaten wordt en er

dus automatisch een sterk paswoord wordt gegenereerd. Vervolgens hebben we

ervoor gezorgd dat de checkbox voor het verzenden van een e-mail standaard

aangevinkt staat. Tenslotte hebben we ervoor gekozen om deze checkbox ook

onzichtbaar te maken, zodanig dat ook deze instelling niet meer kan veranderd worden

door de administrator.

Page 74: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

62

Originele code:

// De administrator maakt een gebruiker aan

if ($_GET['q'] == 'admin/user/user/create') {

// Verander het verplichte paswoordveld naar optioneel

$mode = GENPASS_OPTIONAL;

// Geef een extra waarschuwing bij de checkbox

$notify_item =& _genpass_get_form_item($form, 'notify');

$notify_item['#description'] = t(‘Wanneer het paswoord automatisch gegenereerd

wordt is het aan te raden deze checkbox aan te vinken. Anders zal niemand het

paswoord kennen');

}

Aangepaste code:

// De administrator maakt een gebruiker aan

if ($_GET['q'] == 'admin/user/user/create') {

// Verander het verplichte paswoordveld naar optioneel en verborgen

$mode = GENPASS_RESTRICTED;

// Zorg ervoor dat de checkbox standaard aangevinkt is en verberg deze

$notify_item =& _genpass_get_form_item($form, 'notify');

$notify_item['#value'] = 1;

$notify_item['#access'] = FALSE;

$notify_item['#description'] = t(‘Wanneer het paswoord automatisch

gegenereerd wordt is het aan te raden deze checkbox aan te vinken. Anders zal

niemand het paswoord kennen');

}

7.1.5 Password Strength

Met behulp van deze module kan men instellen welke sterkte de gebruikte paswoorden

op de website moeten hebben. Voor de huidige website zijn enkel sterke paswoorden

toegelaten. De functionaliteit wordt zichtbaar in het account menu van een gebruiker,

waar een gebruiker zijn paswoord kan veranderen. Bij de velden waarin men een

nieuw paswoord kan specificeren wordt aangeduid of het nieuwe paswoord aan de

gestelde eisen voldoet en indien dit niet zo is, welk soort karakter er nog moet worden

toegevoegd.

Page 75: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

63

7.1.6 Profile Permission

Met behulp van deze module kan men per rol instellen welke velden een gebruiker kan

bekijken en aanpassen in het eigen account menu en welke velden hij kan aanpassen

in het account menu van een andere gebruiker.

7.1.7 Restrict Password Change

Deze module maakt het mogelijk om in te stellen dat een administrator enkel het eigen

paswoord kan veranderen en niet het paswoord van anderen.

7.1.8 Protect Critical Users

Deze module zorgt ervoor dat de super-user en de huidige ingelogde gebruiker niet

kunnen verwijderd worden. Voor onze site was het echter ook nodig dat het niet alleen

niet mogelijk mag zijn voor een administrator om zichzelf te verwijderen, het mag

eveneens niet mogelijk zijn om de eigen rol te veranderen. Daarom hebben wij zelf een

extra stukje code geschreven en dit toegevoegd aan de module.

Extra code:

// Indien men in de gebruikerspagina de rol wil veranderen

if (strpos($_GET['q'], 'admin/user/user') === 0) {

if (!empty($_POST['accounts']) && isset($_POST['operation']) &&

($_POST['operation'] == 'role_delegation_remove_role-3')) {

if (isset($_POST['accounts'][1])) {

drupal_set_message(t('Oeps! Je kan de rol van user #1 niet veranderen!'), 'error');

drupal_goto('admin/user/user');

}

else if (isset($_POST['accounts'][$user->uid])) {

drupal_set_message(t('Oeps! Je kan je eigen administratorrechten niet

veranderen!'), 'error');

drupal_goto('admin/user/user');

}}}}

7.1.9 Profile

In tegenstelling tot de andere modules, is deze module reeds verwerkt in de Drupal

core. Hij dient dus enkel te worden ingeschakeld. Deze module biedt ondersteuning

voor instelbare gebruikersprofielen. Via deze module kunnen extra velden aangemaakt

worden die zullen verschijnen in het account menu van een gebruiker. Men kan per

Page 76: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

64

veld instellen of dit een verplicht of een optioneel veld is. Indien een administrator een

nieuwe gebruiker wil aanmaken zal hij deze velden ook reeds kunnen (optionele

velden) of moeten (verplichte velden) invullen. Men kan er bijvoorbeeld voor kiezen om

persoonlijke informatie, zoals de naam, toe te voegen aan het account menu van een

gebruiker.

7.2 EEN GEBRUIKER TOEVOEGEN

Via de Bizonwebsite is het niet mogelijk om zich te registreren. Enkel een medewerker

van Bizon vzw met de rol van administrator kan een gebruiker toevoegen.

Waarom niet iedereen zich zonder meer kan registreren spreekt voor zich. Vanaf het

moment dat een gebruiker geregistreerd is, krijgt deze namelijk toegang tot de

gegevens. Een andere mogelijkheid zou zijn om een controle in te bouwen. Men zou

de administrator elke registratie kunnen laten nakijken en goedkeuren alvorens een

gebruiker toegang krijgt tot de website. Dit zou de administrators met onnodig veel

werk opzadelen.

Hoewel er bij elke organisatie een zeker personeelsverloop is, alsook bij Bizon, blijft de

kern van medewerkers redelijk stabiel. Het sporadisch verwijderen of toevoegen van

een gebruiker vergt veel minder tijd en energie dan het voortdurend nakijken van

registraties. Om misbruik te voorkomen hebben we ervoor geopteerd om slechts een

beperkt aantal medewerkers de mogelijkheid te geven een gebruiker toe te voegen,

namelijk de medewerkers met de rol van administrator. Dit werd verwezenlijkt door

gebruik te maken van de module ‘Administer Users by Role’.

Wanneer men een gebruiker toevoegt dient de administrator een gebruikersnaam in te

geven. Om het beheer van de gebruikers te vereenvoudigen kiest men dan ook best

voor een gestandaardiseerde gebruikersnaam bv. de eerste letter van de voornaam

gevolgd door de familienaam. De gebruikersnaam dient verder uniek te zijn voor elke

gebruiker.

Voor deze nieuwe gebruiker dient er vervolgens een geldig e-mailadres opgegeven te

worden. Ook dit e-mailadres dient uniek te zijn.

Verder kan men de status van de account instellen (geblokkeerd/actief), de rol

(standaard geverifieerde gebruiker, optioneel administrator), de standaardtaal van de

e-mails (Engels/Nederlands) en de voor- en familienaam van de nieuwe gebruiker.

Page 77: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

65

De meeste van deze velden zijn standaardvelden, behalve de velden rol en voor- en

familienaam. Voor de checkbox ‘rol’ toe te voegen aan de gebruikersregistratie pagina

werd gebruik gemaakt van de module ‘Role Delegation’. De velden voor- en

familienaam zijn verplicht en werden door ons geconfigureerd met behulp van de

module ‘Profile’.

Wanneer men deze nieuwe gebruiker toegevoegd heeft wordt er een e-mail verstuurd

naar het opgegeven e-mailadres.

In deze e-mail kan men de gebruikersnaam en een automatisch gegenereerd sterk

wachtwoord vinden. Dit wachtwoord kan uit veiligheidsoverwegingen niet gekozen

worden door de administrator. In deze e-mail werd er ook een eenmalige login

voorzien. Wanneer een gebruiker vervolgens voor het eerst hiermee inlogt wordt deze

automatisch doorgestuurd naar de pagina waar hij zijn wachtwoord kan wijzigen. Dit

werd gerealiseerd met behulp van de door ons aangepaste module ‘Generate

Password’.

7.3 GEBRUIKERSGEGEVENS WIJZIGEN

7.3.1 Geverifieerde gebruikers

Een gewone gebruiker heeft enkel toegang tot zijn eigen gegevens en kan via zijn

account enkel zijn wachtwoord en e-mailadres wijzigen.

De naam van de gebruiker verandert normaal gesproken niet en men kan deze dan

ook niet wijzigen. Indien dit toch nodig zou zijn, kan de naam wel gewijzigd worden

door een administrator. Dit werd geconfigureerd aan de hand van de module ‘Profile

Permission’.

Een gewone gebruiker is niet in staat om zichzelf of anderen de rol van administrator

toe te wijzen.

Wanneer een gewone gebruiker zijn of haar wachtwoord wenst te wijzigen dient dit een

sterk wachtwoord te zijn. Bij het ingeven van het nieuwe wachtwoord wordt er, per

ingevoerd teken, weergegeven welk soort karakters nog dienen toegevoegd te worden

opdat het wachtwoord een sterk wachtwoord zou zijn. Dit werd gerealiseerd dankzij de

module ‘Password Strength’.

Het nieuwe wachtwoord moet tweemaal worden ingevoerd. Hierbij wordt gecontroleerd

of deze twee wachtwoorden gelijk zijn aan elkaar. Indien dit niet het geval is moet men

het wachtwoord opnieuw invoeren. In Figuur 11 wordt er weergegeven hoe er

gecontroleerd word op een sterk wachtwoord.

Page 78: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

66

Figuur 11: Sterk wachtwoord

Wanneer men klaar is met het wijzigen van de gegevens dient men het oude

wachtwoord in te voeren om de aanpassingen te bevestigen. Dit werd

geïmplementeerd om ervoor te zorgen dat niemand anders dan de gebruiker zelf zijn

gegevens kan aanpassen. Dit werd geconfigureerd aan de hand van de module

‘Password Change Confirm’.

7.3.2 Administrators

Wanneer een administrator zijn eigen gegevens wenst te wijzigen kan dit, net als bij

gewone gebruikers, via zijn account menu. Een administrator kan zijn eigen

gebruikersnaam en naam wijzigen, het e-mailadres, het wachtwoord en zijn status

(geblokkeerd/actief).

Net als bij gewone gebruikers dient het nieuwe wachtwoord een sterk wachtwoord te

zijn. Wanneer men de aanpassingen wenst door te voeren, dient men net als gewone

gebruikers, het oude wachtwoord op te geven.

Zoals reeds gezegd heeft een administrator ook de mogelijkheid om gegevens van

andere gebruikers te wijzigen. Dit kan door in de lijst van gebruikers, naast een

bepaalde gebruiker, op bewerken te klikken. Men kan voor de geselecteerde gebruiker

dan de persoonlijke informatie wijzigen zoals de naam en de voornaam, het e-

mailadres, de status (geblokkeerd/actief), de taalinstellingen en de tijdzone. Voordat

deze wijzigingen kunnen worden opgeslagen dient de administrator zijn wachtwoord op

te geven. Dit werd geconfigureerd aan de hand van de module ‘Password Change

Confirm’.

De administrator is echter niet bevoegd om het paswoord van een andere gebruiker te

veranderen. Hiervoor werd de module ‘Restrict Password Change’ gebruikt.

Page 79: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

67

Een administrator kan administratorrechten toewijzen aan, of afnemen van, andere

gebruikers. Hiervoor werd de module ‘Role Delegation’ gebruikt.

Het dient te worden vermeden dat een administrator zijn eigen gebruikersrol kan

aanpassen. Men kan zichzelf dus de rol van administrator niet afnemen, enerzijds om

te vermijden dat men zichzelf per ongeluk de rechten afneemt en anderzijds om er

zeker van te zijn dat er minstens één gebruiker de rol van administrator bezit. Dit werd

gerealiseerd aan de hand van de door ons aangepaste module ‘Protect Critical Users’.

7.3.3 Een nieuw wachtwoord aanvragen

Indien een gebruiker zijn wachtwoord vergeten is, kan hij naar de inlogpagina van de

website surfen. In het kadertje van de gebruikerslogin kan men “Nieuw wachtwoord

aanvragen” aanklikken. Vervolgens kan de gebruiker zijn gebruikersnaam of e-

mailadres invullen. Er zal automatisch een nieuw wachtwoord worden gegenereerd en

verzonden naar het e-mailadres van de gebruiker.

7.4 EEN GEBRUIKER VERWIJDEREN

Gezien het niet wenselijk is dat ex-medewerkers van Bizon vzw nog steeds toegang

hebben tot de website moet het mogelijk gemaakt worden om gebruikers te

verwijderen. Enkel administrators kunnen gebruikers verwijderen.

Een mogelijk probleem is dat men, per ongeluk, een verkeerde gebruiker verwijdert.

Om dit te voorkomen moet de administrator, nadat hij een gebruiker geselecteerd heeft

en op verwijderen geklikt heeft, nogmaals bevestigen dat hij de geselecteerde

gebruiker wil verwijderen. Er wordt hierbij gewaarschuwd dat deze actie niet ongedaan

kan gemaakt worden.

Indien er geen administrator meer aanwezig zou zijn, zouden er geen gebruikers meer

toegevoegd of verwijderd kunnen worden. Om er zeker van te zijn dat er steeds

minstens één administrator is, is het niet mogelijk om de eigen account te verwijderen.

Dit werd mogelijk gemaakt door de module ‘Protect Critical Users’.

Page 80: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

68

8. Besluit

De doelstelling van onze scriptie bestond uit twee delen. Enerzijds dienden we een

database te ontwerpen om de gegevens van Bizon vzw in op te slaan. Anderzijds

dienden we een web-applicatie te ontwerpen in Drupal, met dezelfde functionaliteiten

als de website van de groep van vorig jaar. Deze web-interface moet de medewerkers

van Bizon toelaten om gegevens toe te voegen, te bekijken, te wijzigen of te

verwijderen en voorzieningen toelaten om een aanvraag tot inschrijving in te dienen.

De databankstructuur werd opgezet na een grondige analyse van de behoeften van de

administratie van Bizon vzw. De databank werd vervolgens aan de hand van Drupal

geïmplementeerd in phpMyAdmin, een SQL database managementsysteem.

De web-applicatie zelf kwam tot stand na analyse van de functionaliteiten van de

bestaande website. Er werd net zoals de bestaande website een publiek en een privaat

deel voor de website ontwikkeld. In het publieke deel kunnen voorzieningen aan de

hand van hun klantennummer een aanvraag indienen. In het private deel kunnen

medewerkers van Bizon vzw data toevoegen, bekijken en manipuleren.

Bij de demonstratie van de website aan een medewerker van Bizon, bleek de website

te voldoen aan de gestelde eisen. Of de website ook operationeel wordt zal de

toekomst moeten uitwijzen, maar men leek alvast erg geïnteresseerd.

Page 81: Webgestuurde deelnemersadministratie voor een sociaal ...lib.ugent.be/fulltxt/RUG01/001/805/300/RUG01... · Bizon vzw is een sociaal-toeristische jeugdvereniging die activiteiten

69

9. Referenties

9.1 BOEKEN

De Tré, G. (2007). Principes van databases. Pearson Education Benelux

Mercer, D. (2010). Drupal 7. Packt Publishing

Townsend, R.J. & Pakrul, S. (2010). Foundation Drupal 7. Friends of ED

VanDyk, J.K. (2008). Pro Drupal Development, second edition. Apress

9.2 WERKSTUKKEN

Schelstraete, G. & Jacobs, G. (2010). Webgestuurde deelnemersadministratie voor

een sociaal-toeristische jeugdvereniging. Vakgroep Telecommunicatie en informatie-

verwerking.

9.3 WEBSITES

MySQL (http://www.mysql.com)

Nederlandstalige Drupal gemeenschap (http://drupal.be)

Nederlandstalige Drupal-handboek website (http://www.drupalhandboek.nl)

Officiële Drupal website (http://drupal.org)

Persoonlijke website van Dries Buytaert (http://buytaert.net)

PHP (http://php.net)

phpMyAdmin (http://www.phpmyadmin.net)

Theme Garden (http://themegarden.org/drupal6)