Webapplicatie voor trainers in jeugdvoetbal Soetkin Gardin, Wesley Ceulemans
Promotoren: prof. dr. ir. Wilfried Philips, prof. dr. Renaat Philippaerts Begeleiders: dr. Roel Vaeyens, ir. Rudy Verhelst Masterproef ingediend tot het behalen van de academische graad van Master in de toegepaste informatica
Vakgroep Telecommunicatie en informatieverwerking Voorzitter: prof. dr. ir. Herwig Bruneel Vakgroep Bewegings- en sportwetenschappen Voorzitter: prof. dr. Dirk De Clercq Faculteit Ingenieurswetenschappen Academiejaar 2007-2008
Webapplicatie voor trainers in jeugdvoetbal Soetkin Gardin, Wesley Ceulemans
Promotoren: prof. dr. ir. Wilfried Philips, prof. dr. Renaat Philippaerts Begeleiders: dr. Roel Vaeyens, ir. Rudy Verhelst Masterproef ingediend tot het behalen van de academische graad van Master in de toegepaste informatica
Vakgroep Telecommunicatie en informatieverwerking Voorzitter: prof. dr. ir. Herwig Bruneel Vakgroep Bewegings- en sportwetenschappen Voorzitter: prof. dr. Dirk De Clercq Faculteit Ingenieurswetenschappen Academiejaar 2007-2008
De auteurs geven de toelating deze scriptie voor consultatie beschikbaar te stellen en delen ervan te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting uitdrukkelijk de bron te vermelden bij het aanhalen van resultaten uit deze scriptie.
The authors give the permission to use this thesis for consultation and to copy parts of it for personal use. Every other use is subject to the copyright laws, more specifically the source must be extensively specified when using results from this thesis.
Gent, 2 juni 2008
S. Gardin
W. Ceulemans
Woord vooraf We willen graag een woordje van dank richten aan iedereen die ons heeft bijgestaan in de verwezenlijking van deze thesis.
In de eerste plaats willen we onze promotoren professor Wilfried Philips en professor Renaat Philippaerts bedanken omdat zij ons de kans boden om deze webapplicatie te ontwikkelen. Bijzondere dank aan onze begeleiders Rudy en Roel. Zij waren onze helpende hand en gaven ons concrete aanwijzingen om deze opdracht tot een goed einde te brengen. Verder hebben Hiep en Stefaan een grote meerwaarde betekend voor dit werk. Ondanks hun drukke agenda’s namen ze de tijd om met ons rond de tafel te zitten. Ze brachten ons meer bij dan we in cursussen konden lezen. Ook een woordje van dank aan Philippe zonder wie de site nooit online was geraakt.
Onze ouders gaven ons de kans om nog een jaartje bij te studeren. Hiervoor willen we hen bedanken. Tot slot mogen onze collega-studenten hier niet ontbreken. Zij hebben van dit jaar een fantastische ervaring gemaakt.
Een welgemeende dankjewel!
Wesley en Soetkin
v
Overzicht Webapplicatie voor trainers in jeugdvoetbal
door Soetkin Gardin en Wesley Ceulemans
Scriptie ingediend tot het behalen van de academische graad van Master in de toegepaste informatica Academiejaar 2007-2008
Promotoren: prof. dr. ir. Wilfried Philips, prof. dr. Renaat Philippaerts Begeleiders: dr. Roel Vaeyens, ir. Rudy Verhelst
Universiteit Gent
Faculteit Ingenieurswetenschappen Vakgroep Telecommunicatie en informatieverwerking
Faculteit Geneeskunde en gezondheidswetenschappen Vakgroep Bewegings- en sportwetenschappen
vi
Samenvatting Voor dit afstudeerwerk werd een webapplicatie ontwikkeld voor het verzamelen van gegevens over jeugdvoetballers. Hiervoor werd gebruik gemaakt van het populaire content management system Drupal dat werkt met een combinatie van PHP en MySQL.
Er werden drie
gebruikersrollen aangemaakt: trainers, spelers en medische staf. Via een speciale registratieprocedure worden de rollen toegekend. Op die manier wordt vermeden dat gebruikers over bepaalde rechten gaan beschikken die hen toegang geven tot vertrouwelijke informatie. De gebruikers worden ook ingedeeld in groepen naargelang de ploeg en het team waartoe ze behoren. Afhankelijk van de rol waarmee iemand inlogt, komt de gebruiker op een specifieke startpagina terecht die hem uitleg verschaft over het verdere gebruik van de site. Daarnaast krijgt hij een rolspecifiek menu te zien dat hem verder door de site navigeert.
De parameters die trainers moeten ingeven zijn traininginhoud, wedstrijdgegevens en voor beide ook de aanwezigheid van de spelers in hun groep. De spelers zijn verantwoordelijk voor het ingeven van de sportactiviteiten die ze per week uitoefenen. De medische staf kan medische dossiers aanmaken en daarin het verloop van blessures rapporteren. Deze formulieren werden met behulp van de Drupal module Content Construction Kit (CCK) gemaakt. Deze module maakt het mogelijk om op een eenvoudige manier velden aan te maken en die samen te voegen tot een inhoudstype. Wanneer een gebruiker een formulier invult, wordt dan een node van dit type aangemaakt. Voor de functionaliteit waarin CCK niet voorzag en die wel noodzakelijk was voor deze webapplicatie werd een eigen module gemaakt.
Alle gegevens die worden ingegeven, worden op een gestructureerde manier opgeslagen in een databank die via Drupal op eenvoudige manier kan worden bevraagd. Om de gebruikers een overzicht te bieden van de opgeslagen data die voor hen belangrijk kan zijn, werd gebruik gemaakt van de module Views. Een tweede handige manier om tussen deze data te navigeren, is door gebruik te maken van de kalender die op bijna elke pagina in het klein wordt weergegeven en die per dag de ingegeven parameters weergeeft.
Trefwoorden: Drupal, CMS, PHP, MySQL
vii
Inhoudsopgave 1
INLEIDING ................................................................................................................................................. 1
2
ACHTERGROND ....................................................................................................................................... 2 2.1 RELATIVE AGE EFFECT............................................................................................................................... 2 2.2 ORGANISATIE JEUGDVOETBAL ................................................................................................................... 3
3
ALGEMENE BEGRIPPEN ........................................................................................................................ 5 3.1 PHP EN MYSQL ........................................................................................................................................ 5 3.2 CONTENT MANAGEMENT SYSTEMS ............................................................................................................ 6 3.2.1
Definitie ........................................................................................................................................... 6
3.2.2
Vergelijking ..................................................................................................................................... 7
3.3 DRUPAL ................................................................................................................................................... 11 4
WEBAPPLICATIE ................................................................................................................................... 13 4.1 INSTALLATIE DRUPAL ............................................................................................................................. 13 4.2 GEBRUIKERSROLLEN ............................................................................................................................... 15 4.3 GROEPEN ................................................................................................................................................. 17 4.4 REGISTRATIEPROCEDURE ........................................................................................................................ 18 4.5 CCK – FORMULIEREN .............................................................................................................................. 19 4.6 VIEWS ...................................................................................................................................................... 25 4.7 KALENDER............................................................................................................................................... 26 4.8 EIGEN MODULE ........................................................................................................................................ 28 4.8.1
Aanpassing formulieren ................................................................................................................ 29
4.8.2
Aanpassing view ............................................................................................................................ 30
4.8.3
Raamwerk ...................................................................................................................................... 30
4.9 RANDVOORWAARDEN ............................................................................................................................. 31 5
BESLUIT .................................................................................................................................................... 32
BIJLAGE A ......................................................................................................................................................... 33 LITERATUURLIJST ......................................................................................................................................... 56 GESCHREVEN LITERATUUR ............................................................................................................................... 56 ELEKTRONISCHE PUBLICATIES .......................................................................................................................... 57
viii
Tabel van afkortingen en symbolen API
Application Programming Interface
ASP
Active Server Pages
CCK
Content Construction Kit
CMS
Content Management System
CSS
Cascading Style Sheet
FDF
Forms Data Format
GPL
General Public License
HTML
Hypertext Markup Language
IIS
Internet Information Services
JSP
Java Server Pages
LAMP
Linux, Apache, MySQL & PHP
OG
Organic Groups
OS
Operating System
PHP
PHP: Hypertext Preprocessor
SQL
Structured Query Language
UI
User Interface
URL
Uniform Resource Locator
XML
eXtensible Markup Language
ix
Inleiding
1 Inleiding De vakgroep “Bewegings- en Sportwetenschappen” verricht onderzoek naar de evolutie van jeugdvoetballers gedurende hun opleiding. Een bekend fenomeen hierbij is het relative age effect, waarbij vastgesteld wordt dat jongeren die vroeg in het selectiejaar geboren zijn voordeel hebben ten opzichte van jongeren die op het einde van het jaar geboren zijn. In een onderzoek bij jeugdspelers van 6 tot 18 jaar tracht de vakgroep te achterhalen waar de opleiding spelers benadeelt die laat op het jaar geboren zijn en hoe dit kan opgevangen worden. Er zal samengewerkt worden met opleidingscentra op eliteniveau (eerste nationale), op sub-eliteniveau (tweede en derde klasse) en op regionaal niveau. Op regelmatige tijdstippen zullen hiervoor de antropometrische parameters en fysiologie van de spelers worden getest, waarbij deze gegevens gelinkt moeten worden aan de trainingsintensiteit, speelgelegenheid en blessures die de jonge spelers ervaren.
De doelstelling van dit afstudeerwerk is de ontwikkeling van een webapplicatie, die elk van de trainers toelaat op regelmatige basis enkele parameters in te geven voor elk van zijn spelers. De spelers zelf kunnen op de website ingeven welke andere sportactiviteiten ze naast de voetbaltrainingen en wedstrijden nog uitoefenen. Een laatste luik is voorzien voor de medische staf die een medisch dossier per (geblesseerde) speler kan aanmaken. Alle gegevens komen in een centrale database terecht, zodat ze op een efficiënte manier verder kunnen verwerkt worden. Voor de opbouw van de website is gebruik gemaakt van het content management system Drupal. Drupal werkt op basis van een combinatie van PHP en MySQL.
1
Achtergrond
2 Achtergrond Om een beeld te vormen van de aspecten die belangrijk zijn bij deze opdracht, is het belangrijk eerst de achtergrond na te gaan. Wat houdt het relative age effect precies in en waar zullen de gegevens die verzameld worden op termijn toe dienen. Een korte studie van de structuur van enkele voetbalploegen die meewerken is ook noodzakelijk om een idee te krijgen welke personen en groepen van de webapplicatie gebruik zullen maken.
2.1 Relative age effect In voetbalploegen worden kinderen en jongeren ingedeeld in groepen naar leeftijd om spelers met dezelfde fysieke mogelijkheden samen te laten trainen. In deze indeling worden spelers met hetzelfde geboortejaar in één groep geplaatst. Dit leidt tot een leeftijdsverschil van een volledig jaar tussen spelers die begin januari en eind december werden geboren. Voor volwassenen is dit eerder een klein verschil, maar voor kinderen in volle ontwikkeling kan dit resulteren in onderling grote fysieke, cognitieve en emotionele verschillen (Helsen et al., 2005). Capaciteiten en motivatie zijn de twee meest bepalende factoren voor (sportieve) prestaties. Aangezien de jongere spelers over minder fysieke capaciteiten beschikken kan dit tot – tijdelijk – mindere prestaties leiden en daardoor minder kansen om wedstrijden te spelen. De spelers kunnen hierdoor gedemotiveerd raken wat hun verdere groeiproces bemoeilijkt of hen zelfs volledig doet afhaken. Andere factoren zijn het verschil in voetbalervaring en eventueel een andere reactie op mislukkingen (interne en externe attributie afhankelijk van de leeftijd). Naar deze leeftijdsverschillen en de gevolgen ervan wordt verwezen als het relative age effect. Dit fenomeen treedt, naast het voetbal, ook op in andere sporten en scholen.
Zowel in sport als in de opleiding blijkt het relative age effect ook gevolgen te hebben in het volwassen leven. In het voetbal betekent dit dat spelers die binnen hun trainingsgroep ouder zijn sneller als talent herkend worden en meer kansen zullen krijgen, terwijl de jongere spelers de sport sneller opgeven. Een tweede probleem bestaat er in dat spelers die op het einde van het jaar geboren zijn sneller blessures ontwikkelen. Vooral wanneer ze in het begin van het seizoen met een nieuwe intensiteit moeten trainen en de competities zwaarder worden, kan de combinatie met een snelle groei en lichamelijke veranderingen te zwaar worden. De website
2
Achtergrond die ontwikkeld wordt in het kader van dit afstudeerwerk zou de monitoring van de blessures en het verband met de geboortemaand van de spelers vergemakkelijken.
Het relative age effect wordt in sterke mate veroorzaakt door de instelling van de coaches die te veel belang hechten aan prestaties op korte termijn. De opvatting “winning isn’t everything, but the only thing” ontneemt de jongste spelers van de groep kansen. Dit is spijtig genoeg vaak nefast voor de motivatie waardoor het spelplezier en een eventuele latere voetbalcarrière gehypothekeerd worden. Door enkele jeugdteams intensief te volgen, kan het fenomeen misschien beter begrepen worden en op zoek gegaan worden naar een oplossing die voor alle betrokkenen ook praktisch haalbaar is. De meest efficiënte manier om dergelijke opvolging te organiseren, is door gebruikt te maken van een webapplicatie.
2.2 Organisatie jeugdvoetbal Om een duidelijk beeld te kunnen vormen van wie de website zal gebruiken, is de structuur van de voetbalploegen KAA Gent en SV Zulte Waregem kort bestudeerd. Dit zijn de twee ploegen die al zeker met het onderzoek zullen meewerken. De indelingen waren gelijkaardig voor beide ploegen, de grootste verschillen bestonden in het aantal trainers per leeftijdsgroep en een indeling gewestelijk/nationaal die enkel bij SV Zulte Waregem gemaakt werd. SV Zulte Waregem wordt in figuur 1 als model beschreven.
3
Achtergrond
UEFA’S-19
U19
Gewestelijke Junioren Scholieren Nationaal Nationaal Gewestelijk
U17 U16
Knapen Nationaal Nationaal Gewestelijk
U15 U14
Miniemen Nationaal Nationaal Gewestelijk Gewestelijk
U13 U12 A B
Pre-miniemen Nationaal Nationaal Gewestelijk Gewestelijk
U11 U10 U11 U10
Duiveltjes Nationaal Nationaal Nationaal Nationaal Gewestelijk Gewestelijk
U9 U8 U7 U6 U9 U8
Minstens 1 trainer per ploeg, soms meerdere. Algemene trainers (zoals personal coach, techniektrainer, looptrainer, keeperstrainer, …) Medische staf : één hoofdpersoon met daaronder verschillende kinesisten, verzorgers, … Mental coach
Figuur 1 Jeugdwerking Zulte Waregem
4
Algemene begrippen
3 Algemene begrippen 3.1 PHP en MySQL Websites kunnen volledig in HTML geschreven worden, maar om deze dynamisch te maken, is er nood aan een scripting taal. Aangezien voor deze webapplicatie gegevens moeten opgeslagen worden, is er ook behoefte aan een databank.
PHP is een krachtige scripting taal om dynamische en interactieve websites te creëren die aan de serverzijde uitgevoerd worden (www.w3schools.com). PHP staat voor Hypertext Preprocessor en lijkt qua syntax sterk op C, maar is wel objectgeoriënteerd. De PHP code kan gemakkelijk in HTML code worden geplaatst en is zo heel geschikt voor het ontwikkelen van webapplicaties.
Alternatieven voor PHP zijn ondermeer ASP (Active Server Pages) en JSP (Java Server Pages). ASP en PHP zijn in veel opzichten gelijkaardig. Buiten kleine syntaxverschillen worden ze op dezelfde manier geïmplementeerd en beschikken ze over ongeveer dezelfde mogelijkheden. Het grootste verschil tussen beiden is dan ook eerder het feit dat PHP Open Source Software is, terwijl ASP eigendom is van Microsoft. Door het Open Source karakter van PHP is het gratis en wordt het op meer platformen ondersteund. Een ander voordeel is dat PHP iets sneller werkt voor veelgebruikte functies.
Bij een eerdere ontwikkeling van de website was geopteerd voor een MS Access databank in combinatie met ASP. Omdat dit systeem niet zo gebruiksvriendelijk bleek en er ook problemen verwacht werden met betrouwbaarheid als de databank te groot wordt, is er voor gekozen om over te stappen op een MySQL databank. Hiermee kan een compacte databank worden opgezet waarmee toch honderdduizenden records vlot kunnen verwerkt worden. De combinatie van PHP en MySQL geeft goede resultaten en wordt vaak door providers samen aangeboden. De grote voordelen van MySQL zijn de gebruiksvriendelijkheid en de snelheid. Ook de populariteit van het systeem is een belangrijke factor aangezien deze verdere ontwikkeling en veel online informatie garandeert.
De gebruikte versies voor de voetbalapplicatie waren PHP 4.3.8 en MySQL 4.0.20. 5
Algemene begrippen
3.2 Content management systems 3.2.1 Definitie Het zelf aanmaken van een webapplicatie betekent normaal het schrijven van veel HTML code aangevuld met PHP code of code uit een andere scripting taal. Aangezien de meeste websites toch heel gelijkaardige functionaliteit aanbieden, rijst de vraag wat het nut is van het steeds opnieuw creëren van dezelfde scripts. Content Management Systems (CMS) bieden hiervoor een oplossing.
Er bestaan veel verschillende definities voor CMS, één van de mogelijke definities is: A content management system supports the creation, management, distribution, publishing, and discovery of corporate information. (http://www.atlanticwebfitters.ca/)
In deze definitie komen een aantal elementen aan bod die hier verder worden toegelicht. -
Inhoud aanmaken
De meest gebruikte methode om inhoud aan te maken voor een website is eigen creatie. De CMS systemen voorzien in de mogelijkheid tot tekstverwerking en het definiëren van een structuur. Naast het zelf creëren van inhoud is het mogelijk om bestanden te uploaden of over te zetten uit andere CMS systemen. Een laatste mogelijkheid is de inhoud automatisch online op te halen.
-
Management van inhoud
Een centrale opslagplaats wordt gebruikt om de site en al zijn data op te slaan (bijvoorbeeld een databank voor Drupal)
-
Publicatie van inhoud
CMS’s bezitten methodes om automatisch de lay-out van een site aan te maken.
-
Presentatie van inhoud
CMS systemen bevatten een aantal methodes die het mogelijk maken om de kwaliteit en dynamiek van de site zelf te verbeteren.
6
Algemene begrippen In CMS systemen wordt ervoor gezorgd dat het management van de eigenlijke inhoud/gegevens gescheiden wordt van het webdesign proces. Vaak wordt gesproken van een beheerszijde en een gebruikerszijde.
Veel CMS systemen zijn Open Source wat wil zeggen dat niet alleen iedereen de software mag gebruiken, maar dat de broncode te bestuderen is en aan te passen naar persoonlijke behoeften. Het is ook toegelaten de software en/of aanpassingen vrij verder te verspreiden. Er is wel altijd een licentie aan de sofware verbonden die ofwel alle rechten overhevelt naar de gebruiker ofwel (GPL) de beperking oplegt dat elke verdere verdeling van de software onder dezelfde licentie gebeurt. 3.2.2 Vergelijking Door het grote aantal CMS’s is het moeilijk geworden om een keuze te maken. Een selectie kan in de eerste plaats gemaakt worden op populariteit. De populariteit wijst er op dat het systeem zich positief onderscheid van de rest. Daarnaast is het een garantie op de verdere ontwikkeling van het systeem. Er zijn meer gebruikers om te consulteren in geval van problemen en de kans daalt dat het systeem “uitsterft” op korte termijn. Een tweede factor is de werking met PHP en MySQL. De systemen die overbleven na deze eerste selectie worden hier onderling vergeleken op basis van enkele sleutelcriteria:
-
technische vereisten (server, databank, programmeertaal…)
-
gebruiksvriendelijkheid (voor de beheerder)
-
webvriendelijkheid (voor alle mogelijke gebruikers)
-
prestaties (voornamelijk de snelheid van de website)
-
veiligheid (zowel extern als intern)
-
ingebouwde functies (bijvoorbeeld zoekrobot)
-
ondersteuning (documentatie, forums, discussiegroepen en nieuwsbrieven)
In tabel 1 worden voor elk van deze punten een aantal zaken vergeleken tussen de gekozen systemen.
7
Tabel 1 Vergelijking tussen verschillende Content Management Systems (www.cmsmatrix.org) Product Laatste update
Drupal 6.2 4/10/2008
eZ Publish 3.10 en 4.0 11/19/2007
Joomla! 1.5.3 4/24/2008
phpWebSite 1.4.0 2/25/2008
TYPO3 4.2 4/23/2008
WordPress 2.2.1 7/25/2007
Xoops 2.0.18
Apache aangeraden OS onafh.
PHP 4 or 5, met XML ondersteuning alle
12/24/2007
Technische vereisten Application Server Operating System Root Access Shell Access Web Server
PHP 4.3.5+ alle
Geen
Apache aangeraden alle
LAMP aangeraden LAMP aangeraden afw afw elke server met PHP
PHP 5.2+
Linux, Windows afw afw Apache
afw afw Apache
beperkt beperkt beperkt module aanw aanw
aanw aanw aanw afw aanw aanw
afw aanw afw afw aanw aanw
aanw aanw beperkt afw aanw aanw
module aanw aanw module module aanw
aanw aanw module
aanw aanw afw
aanw aanw afw
aanw aanw afw
aanw aanw module
aanw aanw
module aanw afw
aanw beperkt aanw afw afw aanw
aanw aanw aanw aanw aanw aanw
aanw afw afw afw afw module
afw beperkt aanw afw beperkt afw
aanw module aanw module aanw aanw
module afw afw beperkt afw beperkt
afw afw aanw afw aanw Aanw
afw afw Apache, IIS
alle afw afw Apache, IIS
afw aanw afw aanw Apache, Apache, IIS mod_rewrite
Gebruiksvriendelijkheid Site Setup Wizard Template Language Undo Drag-N-Drop Content Extensible User Profiles Metadata
afw module aanw afw aanw
afw aanw beperkt module afw module
Webvriendelijkheid Friendly URLs RSS iCal Prestaties Advanced Caching Database Replication Load Balancing Static Content Export Package Deployment Web-based Translation
Tabel 1 (vervolg) Vergelijking tussen verschillende Content Management Systems Product
Drupal 6.2
eZ Publish 3.10 en 4.0
Joomla! 1.5.3
phpWebSite 1.4.0
TYPO3 4.2
WordPress 2.2.1
Xoops 2.0.18
Veiligheid Captcha Content Approval Email Verification Granular Privileges Problem Notification Sandbox
module aanw aanw aanw afw afw
module aanw aanw aanw betalend aanw
module aanw aanw afw afw afw
aanw beperkt aanw aanw afw afw
module aanw aanw aanw aanw aanw
afw aanw module aanw module beperkt
module aanw aanw aanw beperkt aanw
module afw beperkt module module afw module
aanw beperkt aanw aanw aanw module afw
module module module module module module module
aanw afw aanw aanw aanw afw beperkt
module module module module module module module
afw afw afw module module afw afw
module module module module module afw afw
afw aanw aanw aanw aanw aanw aanw
aanw aanw aanw aanw aanw aanw aanw
afw afw aanw aanw aanw aanw aanw
afw aanw afw aanw beperkt aanw aanw
afw module aanw aanw aanw aanw aanw
afw afw afw aanw aanw aanw aanw
aanw afw aanw aanw beperkt aanw aanw
Ingebouwde functies Data Entry Database Reports Document Management Events Calendar File Distribution Graphs and Charts Groupware Ondersteuning Certification Program Code Skeletons Commercial Manuals Developer Community Online Help Pluggable API Public Forum
Algemene begrippen Uit de tabel blijkt dat er geen enkel systeem duidelijk beter scoort in vergelijking met de rest. Elk systeem beschikt over sterke en minder sterke punten, maar voor de belangrijkste zaken zijn de scores gelijkaardig en overwegend positief.
Op het criterium ‘ondersteuning’ scoort het CMS Drupal opvallend sterk. Uit de tabel komt het verschil met de andere systemen niet volledig naar voor, maar de drupalgemeenschap is heel uitgebreid en er wordt veel aandacht besteed aan het verder uitbreiden en organiseren hiervan. Als Drupal op enkele andere gebieden iets zwakker scoort, wordt dit grotendeels opgevangen door deze gemeenschap. Zo zijn er al meer dan 1000 modules op de website te vinden die de gebruiksvriendelijkheid, webvriendelijkheid en veiligheid kunnen verbeteren. Aangezien het aanbod zo uitgebreid is, kan de gebruiker heel specifiek de modules selecteren met de functionaliteit die het best aan zijn noden tegemoet komt. Voor de beginnende gebruiker wordt heel veel informatie voorzien ondermeer in de vorm van videofilmpjes waarop getoond wordt hoe Drupal wordt geïnstalleerd en hoe de meest gebruikte modules geconfigureerd en gebruikt worden. Een aantal meer gevorderde gebruikers zetten zich in voor de verdere ontwikkeling van de Drupal core. Daarnaast is er ook een team dat waakt over de veiligheid van Drupal. Dit veiligheidsteam controleert de code constant op zwakke punten. Ook problemen gemeld door gebruikers worden snel onderzocht en verholpen. De veiligheid van de modules die door gebruikers worden ontwikkeld, wordt ook uitgebreid door hen gecontroleerd vooraleer ze online worden geplaatst.
Een tweede belangrijke motivatie die uiteindelijk de keuze op Drupal deed vallen, is dat men op de vakgroep Telecommunicatie en informatieverwerking al ervaring had met dit CMS. Samen met de ijzersterke drupalgemeenschap garandeerde dit de beste ondersteuning voor beginnende gebruikers. Of dit echt het systeem is dat het beste aan onze behoeften tegemoet komt, zou pas met zekerheid kunnen gezegd worden door alle systemen eerst uit te testen, maar dit viel buiten het kader van dit afstudeerwerk.
10
Algemene begrippen
3.3 Drupal Drupal is, zoals reeds eerder vermeld, een open source content management platform met een GPL licentie. Alle tekst en pointers worden opgeslagen in een databank die dynamisch kan opgevraagd en weergegeven worden als antwoord op een vraag van de webbrowser van de gebruiker. Drupal ondersteunt verschillende soorten websites waaronder persoonlijke websites, websites van bedrijven en discussiesites. Voor een overzicht van een aantal van de aanwezige elementen, zie tabel 1.
Drupal is ontstaan als een kleine nieuwssite voor het studentenkot van de ontwerper, Dries Buytaert. Initieel was gekozen voor dorp.org als domeinnaam voor de site, maar omdat deze al bestond, werd de naam veranderd tot drop.org. Door allerlei experimenten kende de site uitbreidingen en in 2001 werd de software achter de site publiek gemaakt in de hoop dat ook andere mensen mee zouden werken aan de verdere ontwikkeling. Dit gebeurde onder een andere naam, namelijk Drupal. De naam Drupal is afgeleid van de Engelse uitspraak van het woord “druppel”. De vrijgave bleek een succesvolle zet, want momenteel beschikt Drupal over een grote groep gebruikers die actief nieuwe modules ontwikkelen, problemen rapporteren, ondersteuning bieden op forums…
De mission statement is ook heel sterk op dit gemeenschapsfenomeen gericht (drupal.org):
“By building on relevant standards and open-source technologies, Drupal supports and enhances the potential of the Internet as a medium where diverse and geographically separated individuals and groups can collectively produce, discuss, and share information and ideas. With a central interest in and focus on communities and collaboration, Drupal's flexibility allows the collaborative production of online information systems and communities.”
11
Algemene begrippen Om het gebruik voor alle gebruikersgroepen aangenaam te maken, werd naar een aantal zaken gestreefd bij de ontwikkeling (drupal.org): Voor ontwerpers: •
Interactie met de kern is mogelijk
Voor administrators: •
Eenvoudig aan te maken
•
Intuïtief om mee te werken
•
Flexibel en gemakkelijk uit te breiden
Voor gebruikers: •
Intuïtief om mee te werken
•
Overzichtelijk en gestructureerd
Hoewel Drupal 6 al beschikbaar was, is voor de ontwikkeling van de website gebruik gemaakt van Drupal 5. Deze keuze is voornamelijk gebaseerd op het feit dat veel van de modules nog niet aangepast waren aan de laatste versie en dus nog niet (veilig) konden gebruikt worden.
12
Webapplicatie
4 Webapplicatie 4.1 Installatie Drupal Drupal heeft een database nodig om te worden geïnstalleerd. Voor de voetbalapplicatie was op telin.ugent.be een MySQL databank en webruimte aangemaakt. Dit is niet de definitieve locatie voor de website, maar voor de ontwikkeling maakt de locatie weinig verschil uit. De website kan nadien gemakkelijk verplaatst worden. De database kan met phpMyAdmin eenvoudig geraadpleegd worden wat soms handig is om te achterhalen hoe Drupal ingevoerde data opslaat.
De installatiefile van Drupal is te vinden op drupal.org. De files zijn gecomprimeerd (.tar.gz) en moeten dus eerst worden uitgepakt. Wanneer de uitgepakte map in de webruimte geplaatst is, toont de webbrowser volgend scherm bij surfen naar de website (Fig. 2).
Figuur 2 Installatie Drupal
Zoals te zien in figuur 2 is enkel nog specificatie van de database nodig om de installatie af te werken. Hierna wordt een welkomstpagina geopend waarop de basisstappen worden uitgelegd om de site verder aan te passen (Fig. 3).
13
Webapplicatie
Figuur 3 Basisstappen aanmaak Drupal site
Na installatie is het eerste wat moet gebeuren het aanmaken van een administrator account. Hierna kan het eigenlijke werk beginnen: van de basissite die Drupal standaard toont een gepersonaliseerde website maken die specifiek aan de noden van de toekomstige gebruikers tegemoetkomt.
Om in functionaliteit te voorzien maakt Drupal gebruik van modules. Een aantal van deze modules die vaak gebruikt worden bij het opbouwen van nieuwe websites met Drupal zijn standaard aanwezig zoals een forum, een blog of een zoekmachine. Gebruikers kunnen zelf ook
modules
aanmaken
en
deze
beschikbaar
stellen
op
de
website
(http://drupal.org/project/Modules). Hierdoor moeten niet alle gebruikers die dezelfde functionaliteit nodig hebben voor hun website dezelfde module opnieuw schrijven. Voor bepaalde specifieke eisen voor deze website zijn nog geen modules beschikbaar en wordt een eigen module geschreven, hierover later meer. Alle modules die niet standaard aanwezig zijn in Drupal worden in een aparte map geplaatst (sites/all/modules) om te voorkomen dat bij verdere updates gegevens verloren gaan en om bij problemen de oorzaak sneller op te sporen.
14
Webapplicatie
4.2 Gebruikersrollen In Drupal is automatisch een mechanisme ingewerkt waarmee je rollen kunt aanmaken die aan bepaalde gebruikers worden gekoppeld. Aan deze gebruikersrollen worden dan bepaalde rechten verbonden. Een rol groepeert dus alle gebruikers met dezelfde eigenschappen. Zo kunnen bijvoorbeeld bepaalde gegevens zichtbaar zijn afhankelijk van welke rol je hebt. Voor deze webapplicatie zijn de volgende rollen noodzakelijk: •
Root (standaard)
•
Anonieme gebruiker (standaard)
•
Geregistreerde gebruiker (standaard)
•
Trainer
•
Speler
•
Medische staf
De rol van beheerder (root) zal bij ingebruikname van de website worden overgenomen door de vakgroep van Bewegings- en Sportwetenschappen in wiens opdracht de webapplicatie is aangemaakt. In deze rol kan slechts één gebruiker worden aangemaakt en deze beschikt steeds over alle rechten. Het wordt aangeraden om nog een extra gebruikersrol aan te maken voor de beheerder(s) wanneer de website in gebruik wordt genomen. Binnen deze rol zou alle data geraadpleegd kunnen worden en beperkt beheer toegelaten zijn, zonder grote (soms riskante) wijzigingen mogelijk te maken.
De anonieme gebruiker heeft op de website bijna geen rechten. Het enige wat hij of zij te zien krijgt is de welkomstpagina met de mogelijkheid om in te loggen. Alle andere informatie is pas zichtbaar na inloggen.
De geregistreerde gebruiker is net als de anonieme gebruiker standaard in Drupal aanwezig en wordt aan iedereen toegewezen direct na inloggen. Deze gebruiker heeft voor deze website niet meer rechten dan de anonieme gebruiker. Ook nadat aan een gebruiker een andere rol wordt toegekend, blijft hij deze van geregistreerde gebruiker behouden. Elke bezoeker van de website zal dus steeds tot één van de gebruikersrollen behoren die standaard in Drupal aanwezig zijn.
15
Webapplicatie De volgende rollen zijn aangemaakt om specifiek aan de noden voor deze website tegemoet te komen. Aangezien zowel spelers, trainers als medische staf de website moeten gebruiken, maar elk voor andere doeleinden, werd voor deze gebruikersgroepen elk een rol aangemaakt. Voor elk van deze rollen zijn andere pagina’s, menu’s en formulieren zichtbaar (Fig. 4). De hiërarchie is zo opgesteld dat spelers enkel de informatie over zichzelf kunnen bekijken. De trainer kan informatie zien die door hemzelf of door de spelers van zijn ploeg zijn ingegeven, de medische informatie is niet zichtbaar voor hem. De medische staf kan alles van de ploeg waarvoor ze verantwoordelijk zijn bekijken. Figuur 5 toont een deel van het formulier waarmee rechten worden toegekend aan gebruikersgroepen.
Figuur 4 Startpagina trainer
16
Webapplicatie
Figuur 5 Toekennen rechten aan gebruikersrollen
4.3 Groepen Naast een indeling in spelers/trainers/medische staf bestaat er een indeling tussen de verschillende ploegen en teams die gebruikmaken van de webapplicatie. Het is niet de bedoeling dat trainers gegevens kunnen opvragen van spelers uit een andere ploeg.
Om deze indeling te maken wordt gebruik gemaakt van de module Organic Groups. De module laat de keuze om ‘private’ of ‘publieke’ groepen aan te maken. Voor deze website zijn private groepen nodig. Een andere instelling die hier wordt geselecteerd, houdt in dat gebruikers (buiten de site administrator) enkel kunnen posten binnen groepen waartoe ze behoren. Een laatste belangrijke instelling is het al dan niet verzenden van e-mails naar de
17
Webapplicatie volledige groep als nieuwe data wordt aangemaakt. Aangezien dit niet echt noodzakelijk is, wordt dit hier niet gedaan.
Per team zal een groep worden aangemaakt waarvan de trainer optreedt als beheerder en waarbij een registratiecode vereist is om lid te worden van de groep. Deze code wordt door de trainer verspreid onder zijn spelers.
Verschillende modules werken goed samen met de Organic Groups. Zo is het mogelijk dat data enkel zichtbaar is binnen de groep waarvan de indiener lid is. Gebruikers van verschillende groepen, maar met dezelfde rol zullen dus identiek dezelfde site te zien krijgen, alleen zal de informatie waarmee ze gevuld is compleet verschillend zijn.
4.4 Registratieprocedure Voor de registratieprocedure zijn twee andere modules essentieel, Invite en Userplus. De module Invite maakt het mogelijk voor een trainer om al zijn spelers een e-mail te sturen om hen uit te nodigen zich te registreren op de website. Deze e-mail bevat ook de speciale code zodat ze onmiddellijk in de juiste groep terechtkomen. Het enige wat hiervoor moet gebeuren is alle e-mailadressen ingeven (Fig. 6).
Figuur 6 Uitnodiging nieuwe gebruikers
18
Webapplicatie Met de module Userplus is het nog eenvoudiger om gebruikers toe te voegen omdat de degene die de uitnodigingen verstuurt zelf de accounts aanmaakt, een rol kan toekennen en de groep aanduidt. Aangezien de grote vrijheid die deze module biedt ook veiligheidsproblemen kan opleveren, bijvoorbeeld dat iedereen die Userplus kan gebruiken accounts kan maken voor elke groep in elke rol, blijft deze mogelijkheid best beperkt tot de administrator.
Zoals al eerder vermeld zullen drie groepen gebruik maken van de website, namelijk de medische staf, trainers en spelers. De medische staf zal beschikking krijgen over medische gegevens van spelers waar vertrouwelijk mee moet worden mee omgesprongen. Daarom werd ervoor geopteerd om de medische staf te laten toevoegen door de administrator, via Userplus kan dit snel en vlot gebeuren. Voor de trainers wordt hetzelfde systeem gehanteerd zodat het aanmaken van de groepen synchroon kan gebeuren met het aanmaken van een account voor een trainer die de groep zal beheren. De spelers worden dan tot deze groep uitgenodigd door hun trainers via de module Invite.
Wanneer een nieuwe ploeg beslist om mee te werken aan het project en ook gebruik gaat maken van de website moet deze enkel een kort overzicht van enerzijds medische staf en anderzijds teams en hun trainers sturen naar de administrator van de site. Deze kan dan de juiste groepen aanmaken en gebruikersrollen toewijzen. Alle trainers en medische staf zullen hierop een e-mail ontvangen met hun gebruikersnaam en wachtwoord dat ze daarna onmiddellijk kunnen wijzigen. Aangezien weinig verschuivingen verwacht worden in deze twee gebruikersgroepen is het haalbaar om de administrator te contacteren als de noodzaak voor een nieuwe account ontstaat. Indien de site op termijn door veel ploegen zou gebruikt worden en dit praktisch niet meer haalbaar is, bestaat nog steeds de mogelijkheid om een nieuwe gebruikersrol te creëren. Deze zou per ploeg aan één persoon worden toegewezen die dan de groepen, trainers en medische staf binnen de ploeg kan aanduiden. Een tweede oplossing zou zijn om de trainers in de mogelijkheid te stellen om ook andere trainers toe te voegen en idem voor de medische staf.
4.5 CCK – formulieren De bedoeling van de voetbalapplicatie is de mogelijkheid voorzien voor spelers, trainers en medische staf om op een eenvoudige manier online informatie in te geven over trainingen, wedstrijden en blessures. Om deze data op een gestandaardiseerde wijze aan te maken zodat 19
Webapplicatie ze op een overzichtelijke manier in de databank wordt opgeslagen, werden een aantal formulieren aangemaakt. In Drupal bestaan verschillende manieren om dit te verwezenlijken. Zo bestaat de module Webform die het mogelijk maakt om eenvoudige invulformulieren aan te maken. Een tweede mogelijkheid is het schrijven van pagina’s met formulieren in HTML die via PHP code naar de databank worden geschreven. Een derde optie is het gebruik van Content Construction Kit (CCK).
De Webform module is uitermate geschikt voor de aanmaak van formulieren zoals je ze vaak op websites aantreft, bijvoorbeeld voor het invullen van een enquête, het toevoegen van een comment… Er wordt ook steeds een overzichtelijke tabel aangemaakt met de ingevoerde data die heel handig zou zijn. Voor deze toepassing schiet Webform echter te kort omdat ze het gebruik van PHP in de formulieren maar beperkt ondersteunt. Het dynamisch creëren van spelerslijsten om aanwezigheid na te gaan, is daardoor onmogelijk. Deze optie werd dus niet genomen.
Het zelf aanmaken van de formulieren met PHP en HTML en daarnaast de tabellen zelf aanmaken in de databank is perfect mogelijk. Hierbij kan wel de vraag gesteld worden of het de meest efficiënte manier is, als er in Drupal gestandaardiseerde methodes bestaan om hetzelfde doel te bereiken. Daarom werd er geopteerd voor de derde mogelijkheid, namelijk formulieren aangemaakt met de Content Construction Kit, uitgebreid met een eigen module voor specifieke noden.
In Drupal zijn standaard een aantal inhoudstypes aanwezig zoals pagina’s en artikels. Met CCK is het mogelijk om daarnaast zelf inhoudstypes aan te maken. Deze inhoudstypes worden opgebouwd uit een aantal velden waarvan het titelveld altijd aanwezig is en kan worden aangevuld met zelfgedefinieerde velden. Figuur 7 toont een overzicht van de veldtypes die kunnen gekozen worden. Naast het type kunnen nog bepaalde voorwaarden worden verbonden aan een veld zoals een minimum- en een maximumwaarde. Als een gebruiker dan een verkeerde waarde ingeeft, krijgt hij een foutmelding te zien.
20
Webapplicatie
Figuur 7 Veld toevoegen
21
Webapplicatie De begrippen inhoud, inhoudstype, gegevensvelden en node zijn essentieel voor de verdere tekst en worden hier dus eerst verduidelijkt aan de hand van een voorbeeld bij het ingeven van blessuregegevens door de medische staf. Om deze functionaliteit te verwezenlijken dient een inhoudstype (blessure) te worden aangemaakt. Het inhoudstype bevat een aantal gegevensvelden waaronder de begindatum van een blessure. Deze komen overeen met de invoervelden op het formulier dat moet ingevuld worden als een speler een nieuwe blessure oploopt en dus nieuwe inhoud moet worden aangemaakt van het betreffende inhoudstype blessure. Inhoud wordt in Drupal steeds geassocieerd met een node. Telkens nieuwe inhoud wordt aangemaakt wordt er een nieuwe node in de databank aangemaakt. Dit is eigenlijk het basisgegeven waar Drupal op gebaseerd is. Figuur 8 toont het formulier waarmee ‘blessures’ worden aangemaakt. Figuur 9 is de standaard weergave van een node aangemaakt met een formulier.
22
Webapplicatie
Figuur 8 CCK invulformulier blessure
23
Webapplicatie
Figuur 9 Weergave in Drupal van een wedstrijdnode
Op deze manier werden vijf verschillende inhoudstypes aangemaakt. •
Sportdag is voor de spelers om elke dag in te geven welke sportactiviteiten ze hoe lang hebben uitgeoefend en of ze bepaalde blessures ondervinden.
•
Training is voor de trainer om aan te geven welke spelers aanwezig waren op training en welke activiteiten tijdens de training werden uitgeoefend.
•
Wedstrijd is voor de trainer om aan te geven welke spelers meespeelden in welke wedstrijden.
•
Medisch dossier is voor de medische staf om per speler een medisch dossier bij te houden en blessures toe te voegen en op te volgen.
•
Blessure (zie eerder)
Aan al deze inhoudstypes is een kalender verbonden waarop alle reeds ingegeven inhoud wordt getoond afhankelijk van de rechten van de gebruiker. Deze laat het toe om snel terug te keren naar eerder ingegeven formulieren en deze eventueel nog te wijzigen of om gewoon een duidelijk overzicht te krijgen van wat al is ingevuld en wat nog moet gebeuren. 24
Webapplicatie
4.6 Views Content management binnen Drupal is op te splitsen in twee grote deelgebieden. In de eerste plaats creatie van nieuwe inhoudstypes en aanmaak van inhoud verbonden aan deze of één van de standaard inhoudstypes. Hoe dit gebeurde, werd eerder al uitgelegd. Een tweede, minstens even belangrijk aspect is de weergave van inhoud nadat ze werd gecreëerd. Hiervoor werd de module Views gebruikt.
Om een nieuwe view aan te maken dienen eerst enkele algemene gegevens te worden gespecificeerd. Dit is bijvoorbeeld welke gebruikersrollen toegang hebben tot de view. Hierbij is het vaak beter om per gebruikersgroep een aparte view aan te maken om niet te veel informatie op één pagina te moeten weergeven.
Na het ingeven van de algemene instellingen dient het soort view te worden geselecteerd. Er zijn twee hoofdtypes, namelijk pagina’s en blokken. Aangezien binnen deze webapplicatie heel weinig gebruik gemaakt wordt van blokken, wordt hier ook de keuze gemaakt voor pagina’s. Binnen deze hoofdtypes kan men de weergave selecteren, veelgebruikte weergaven zijn volledige inhoudsweergave en tabelweergave (Fig. 10). Deze keuze is afhankelijk van welke inhoudstypes en hoeveel informatie de view moet bevatten.
Figuur 10 View in tabelvorm van een medisch dossier
Het belangrijkste aspect van views is welke velden ze moeten bevatten. Alle bestaande velden kunnen in een view worden opgenomen. Afhankelijk van het type veld worden enkel de waarden van de velden weergegeven of kan ook worden gelinkt naar de nodes waarvan ze zijn afgeleid.
Om er voor te zorgen dat de juiste gebruiker de juiste inhoud te zien krijgt, moesten meestal een aantal filters worden ingesteld. Meestal werden voor een view twee filters ingesteld. Eén 25
Webapplicatie die bepaalt dat enkel de data die binnen de groep werd gepost, moet worden weergegeven. Een tweede filter zorgt er voor dat enkel de inhoudstypes die relevant zijn voor de view worden getoond. Naast deze filters die in de achtergrond werken, kunnen ook filters getoond worden aan de gebruiker die hem de mogelijkheid geven zelf de gegevens te filteren (exposed filters), zodanig dat de gebruiker kan kiezen welke gegevens hij te zien krijgt. Een trainer kan zo bijvoorbeeld de gegevens van één bepaalde speler opvragen.
Bijlage A geeft een volledig overzicht van alle inhoudstypes, views en menu-items binnen de voetbalapplicatie.
4.7 Kalender Om trainingen, wedstrijden, sportdagboeken en blessures op een chronologische manier weer te geven, is gebruik gemaakt van de module Calendar. In combinatie met de module Views worden een aantal kalenders 1 aangemaakt.
De meeste inhoudstypes die werden aangemaakt bevatten één of meerdere datumvelden. Elk van deze inhoudstypes kan dus worden weergegeven in de kalender. Aan elke kalender werd een filter toegevoegd die er voor zorgt dat enkel data ingegeven binnen de groep wordt getoond. Per gebruikersrol wordt een aparte kalender aangemaakt die alleen de informatie weergeeft die voor deze gebruikers belangrijk is. Dit betekent meestal de data die ze zelf ingeven, maar voor de spelers worden ook de training- en wedstrijddata weergegeven. De gegevens die worden ingevoerd door de spelers worden niet op de kalender van de trainer getoond om praktische redenen. De kalender wordt voornamelijk getoond om de data overzichtelijk te maken voor de gebruiker, als per dag twintig sportdagboeken verschijnen op de kalender van de trainer, verdwijnt elk overzicht.
Elke kalender kan weergegeven worden als volledige pagina of als blok. Figuur 11 toont de paginaweergave. Deze kan zowel als dag- , maand- of jaaroverzicht worden weergegeven. De inhoud wordt per inhoudstype aan een bepaalde kleur gekoppeld. Per node wordt de titel en eventueel het tijdstip weergegeven. De titel is ook steeds een link naar de view voor de betreffende node. 1
De module Calendar voegt eigenlijk een speciaal soort view toe (Calendar view) waardoor een kalender niets
anders is dan een uitbreiding op de module Views.
26
Webapplicatie
Figuur 11 Kalender maandoverzicht
Door een kleine maandkalender (Fig. 12) in een blok op elke pagina te plaatsen, ziet de gebruiker steeds voor welke dagen hij al gegevens heeft ingevoerd. Alle ingevulde dagen worden op deze kalender ingekleurd. Door de compacte vorm waarmee de kalender wordt weergegeven, is het niet mogelijk om hier meer informatie te tonen, maar deze blok vormt ook een directe link naar de kalenderpagina’s.
Figuur 12 Maandkalender in blokvorm
27
Webapplicatie
4.8 Eigen module De formulieren die noodzakelijk zijn voor de website kunnen met CCK volledig worden opgebouwd, maar vaak niet op de meest efficiënte en overzichtelijke manier. Aangezien een breed publiek, waaronder ook jonge kinderen, de site vlot moeten kunnen gebruiken, is gebruiksvriendelijkheid één van de prioriteiten. Daarom werden de formulieren met een eigen module verder geoptimaliseerd.
Een module kan eenvoudig gecreëerd worden door een extra map te plaatsen in sites/all/modules (voetbal). De inhoud van die map bestaat minimum uit twee bestanden, in dit geval voetbal.module en voetbal.info. Het bestand voetbal.module bevat de eigenlijke code die begint met een PHP openingstag (<%php), die op het einde van het bestand niet meer wordt gesloten. Het bestand .info bevat enkel een korte omschrijving van de module die wordt weergegeven in de lijst met modules die kunnen ingeschakeld worden en een versienummer.
De module voetbal maakt het mogelijk om bij het ingeven van trainingsgegevens onmiddellijk ook de aanwezigheden en activiteiten in te vullen. Voor het wedstrijdformulier wordt op dezelfde manier in de mogelijkheid voorzien de aanwezigen te selecteren. Aangezien zowel de aanwezigheden als de trainingsactiviteiten als afzonderlijke inhoudstypes zijn geïmplementeerd in de website, dient er een koppeling tussen deze inhoudstypes geprogrammeerd te worden. Samengevat voorziet de voetbalmodule dus in deze koppelingen: • inhoudstype training en trainingsaanwezigheid_spelersinfo • inhoudstype training en trainingsactiviteit_oefeningeninfo • inhoudstype wedstrijd en wedstrijdselectie_spelersinfo
Naast deze uitbreiding van de inhoudstypes wordt nog functionaliteit voorzien binnen de module, namelijk het automatisch invullen van titelvelden. Bij CCK formulieren is het steeds verplicht om een titel in te vullen voor de nieuw aan te maken node. Aangezien titels voor deze toepassing vaak zinloos zijn en de nodes beter gekenmerkt worden door andere velden, (meestal de datum) wordt binnen de module een functie aangemaakt die het titelveld genereert op basis van deze velden.
28
Webapplicatie 4.8.1 Aanpassing formulieren Aangezien het principe voor de drie koppelingen gelijk blijft, wordt maar één koppeling in detail besproken. De verdere uitleg is volledig gebaseerd op de koppeling tussen de inhoudstypes training en trainingsaanwezigheid_spelersinfo. Inhoudstype training wordt aanzien als het hoofdinhoudstype en inhoudstype trainingsaanwezigheid_spelersinfo wordt aanzien als een subinhoudstype.
Het algemeen principe wordt verduidelijkt door een beschrijving te geven van de aanmaak van inhoud van het type trainingsaanwezigheid spelersinfo binnen de inhoudsaanmaak van het type training. De juiste databankstructuur wordt bekomen via de aanmaak van een inhoudstype training en een inhoudstype trainingsaanwezigheid_spelersinfo. Dit gebeurt via de module CCK. Aan de inhoudstypes worden telkens de nodige gegevensvelden toegevoegd.
Om bij raadpleging van het formulier horende bij het inhoudstype training (noodzakelijk voor de aanmaak van inhoud van het type Training) ook de aanwezigen in te kunnen gegeven, dienen er extra formulierelementen worden toegevoegd aan het trainingsformulier. Via de functie hook_form_alter worden formulierelementen met dezelfde eigenschappen als de gegevenselementen van het inhoudstype trainingsaanwezigheid_spelersinfo toegevoegd aan het formulier.
Het aantal formulierelementen dat wordt toegevoegd aan het inhoudstype training is te groot om deze allemaal onder elkaar te plaatsen, daarom worden ze weergegeven in tabelvorm. Dit gebeurt met behulp van een functie voor de opmaak die binnen de hook_form_alter functie toegevoegd is aan de fieldset aanwezigen.
Zowel de implementatie van het subinhoudstype als de manier waarop het weergegeven wordt binnen training is reeds besproken. Er moest echter ook in een methode voorzien worden om de gegevens te verwerken eens een gebruiker een training aanmaakt. De submit-handler voetbal_aanwezigen_activiteiten_submit zorgt voor deze verwerking van de waarden. De waarden zitten vervat in de form-values array. Via de drupal_execute functie worden nodes van het inhoudstype trainingsaanwezigheid_spelersinfo aangemaakt.
29
Webapplicatie 4.8.2 Aanpassing view De module werd verder uitgebreid om er voor te zorgen dat de data nadat ze wordt opgeslagen in de databank ook samen kan weergegeven worden in een view. Via de hook_node_api functie in combinatie met de operatie view kunnen views aan andere views worden
toegevoegd.
Dit
maakt
het
mogelijk
om
een
view
van
inhoudstype
trainingsaanwezigheid_spelersinfo toe te voegen aan een view van inhoudstype training.
Via de views_get_view functie wordt de view, welke de waarden van de toegevoegde formulierelementen bevat, ingeladen. De waarden van de toegevoegde formulierelementen kunnen worden weergegeven via de view info_training_aanwezigheid. Deze werd aangemaakt
via
de
module
Views
aan
de
hand
van
het
inhoudstype
trainingsaanwezigheid_spelersinfo. De view info_training_aanwezigheid wordt toegevoegd aan de view die hoort bij het inhoudstype training via de views_build_view functie. Wanneer nu de view voor de weergave van inhoud van het inhoudstype training wordt geraadpleegd, verschijnt automatisch de aanwezigheidslijst (via de view info_training_aanwezigheid) bij de training. 4.8.3 Raamwerk
Samengevat bevat de module dus de volgende functies: • Functie voetbal_form_alter: deze functie wordt gebruikt voor de aanpassing van de formulieren behorend tot de inhoudstypes training, wedstrijd, sportdag, blessure en medisch dossier. Voor de inhoudstypes training en wedstrijd wordt deze functie gebruikt om formulierelementen toe te voegen. Een bijkomende bedoeling van deze functie is het automatisch genereren van de titels voor inhoudstypes training, wedstrijd, sportdag, blessure en medisch dossier. • Functie voetbal_aanwezigen_activiteiten_submit: deze functie wordt gebruikt voor de verwerking van de waarden van de extra aangemaakte formulierelementen binnen inhoudstype training. • Functie voetbal_selectie_submit: deze functie wordt gebruikt voor de verwerking van de waarden van de extra aangemaakte formulierelementen binnen inhoudstype wedstrijd. 30
Webapplicatie • Functie voetbal_nodeapi: deze functie wordt ook gebruikt voor de automatische titelgeneratie bij de aanmaak van inhoud van de inhoudstypes training, wedstrijd, sportdag, blessure en medisch dossier. Deze functie (in combinatie met de operatie view)
wordt
daarnaast
ook
gebruikt voor
het
toevoegen
van
de
extra
formulierelementen aan de views verbonden aan de inhoudstypes training en wedstrijd. • Themingfuncties verantwoordelijk voor de opmaak van het subinhoudstype binnen de formulieren en views
4.9 Randvoorwaarden Om de goede werking van de website te garanderen zijn er enkele randvoorwaarden voor goed gebruik die misschien niet direct voor de hand liggen, maar waar toch rekening mee gehouden moet worden. Hieronder worden de belangrijkste regels opgesomd en verduidelijkt:
De administrator mag geen trainingen, wedstrijden, sportdagen, medische dossiers en blessures aanmaken. Dit zou op zich geen problemen opleveren, maar de informatie wordt zichtbaar binnen elke groep wat tot verwarring kan leiden. Door de aanmaak van de nieuwe gebruikersrol voor beheerders van de website kan verhinderd worden dat ze (al dan niet bedoeld) deze inhoudstypes toch aanmaken. De aanmaak van deze inhoudstypes kan voor deze gebruikersrol worden verboden.
De administrator moet lid zijn van elke groep. Doordat de administrator zelf alle groepen aanmaakt, gebeurt dit eigenlijk automatisch. Als andere gebruikers de toelating zouden krijgen om groepen aan te maken, kan dit wel problemen opleveren. Aangezien alle informatie binnen de groepen privaat is, is het voor opvragen van data eenvoudiger als de administrator overal lid is.
Een trainer kan slechts lid zijn van één enkele groep. Hier wordt niet automatisch rekening mee gehouden en buiten enkele praktische problemen is dit geen onoverkomelijke zaak. Momenteel is het de eenvoudigste oplossing om twee accounts aan te maken indien een trainer twee teams coacht, maar als het een veelvoorkomend fenomeen is, kan de website hieraan aangepast worden. Meerdere trainers binnen één enkele groep is wel mogelijk. 31
Besluit
5 Besluit Het doel van dit afstudeerwerk was de ontwikkeling van een webapplicatie die trainers, spelers en medische staf van voetbalploegen toelaat op regelmatige basis bepaalde parameters in te geven. Voor de aanmaak van deze webapplicatie is gekozen om gebruik te maken van een Content Management System. Na een korte vergelijking tussen de populairste systemen is de keuze gemaakt om met Drupal te werken. Voor het implementeren van de basisfunctionaliteit bleek Drupal een heel gebruiksvriendelijk systeem. Op snelle en efficiënte wijze kunnen rollen worden gecreëerd voor de verschillende gebruikersgroepen en per rol kunnen rechten worden toegekend. Ook de aanmaak van menu’s en pagina’s per rol gebeurt zo vlot dat de keuze voor Drupal in plaats van een volledig eigen ontwikkeling in PHP en MySQL al gerechtvaardigd lijkt. De formulieren die ontwikkeld moesten worden voor deze webapplicatie waren echter heel specifiek waardoor het onmogelijk bleek dit volledig met bestaande modules te bereiken. Voor deze verdere customisatie, via het ontwikkelen van een eigen module, bleek de instapdrempel toch redelijk hoog. Bij het zelf ontwikkelen van een website met PHP is de vertrouwdheid met de structuur van de website veel groter en kunnen aanpassingen heel vlot gebeuren. Het vertrouwd worden met Drupal en ontdekken hoe de core kan worden gemanipuleerd kost echter wel veel tijd die, bij het ontwikkelen van verscheidene websites waarschijnlijk wel opbrengt, maar bij het aanmaken van een allereerste Drupal website toch tot veel frustraties kan leiden.
32
Bijlage A
Bijlage A Hierna volgt een overzicht van de aangemaakte inhoudstypes, views en menu-items ingedeeld op basis van functionaliteit binnen de voetbalapplicatie. A.1 Organic Groups A.1.1 Inhoudstypes Groep Groepsnaam Opmerkingen:
De naam Titel is vervangen door de naam Groepsnaam Tabel 2: Velden van het inhoudstype Groep
A.1.2 Views Administrator, trainer, speler, medische staf Mijn Groepen
Volledige lijstweergave van alle groepen waar een bepaalde gebruiker is ingeschreven
Tabel 3: Views voor alle gebruikersrollen met betrekking tot het inhoudstype Groep
33
Bijlage A
A.2 Training A.2.1 Inhoudstypes Training Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Training van [Begindatum en tijdstip] tot [Einddatum en tijdstip]
Club en team Datatype:
Node Reference
Widget:
Select List
Node Reference:
View mijn groepen
Datum en tijdstip Datatype:
Date
Widget:
Select List
Opmerkingen:
Verplicht twee datums/tijdstippen op te geven: begindatum en beginuur (van) en einddatum en einduur (tot)
Trainingsduur Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440 Tabel 4: Velden van het inhoudstype Training
Trainingsaanwezigheid spelersinfo Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Trainingsaanwezigheid spelersinfo
Speler Datatype:
User Reference
Widget:
Select List
User Reference:
Geregistreerde gebruikers (authenticated users)
Voornaam speler 34
Bijlage A Datatype:
Text
Widget:
Text Field
Achternaam speler Datatype:
Text
Widget:
Text Field
Aanwezigheid Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
Aanwezig Afwezig
Trainingsduur Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra uitleg ivm niet getraind of minder getraind Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden dewelke overeenkomen met inhoud van het inhoudstype Reden
Opmerkingen:
Mogelijkheid om meerdere waarden (redenen) aan te duiden
Training Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Training
Tabel 5: Velden van het inhoudstype Trainingsaanwezigheid spelersinfo
De aanmaak, verwerking en weergave van inhoud van het inhoudstype trainingsaanwezigheid spelersinfo wordt volledig door de voetbal module behandeld. De velden zijn hier enkel nodig voor de constructie van de juiste databankstructuur.
35
Bijlage A Reden Reden Opmerkingen:
De naam Titel is vervangen door de naam Reden Tabel 6: Velden van het inhoudstype Reden
Trainingsactiviteit oefeningeninfo Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Trainingsactiviteit oefeningeninfo
Oefeningnummer Datatype:
Integer
Widget:
Text Field
Opmerkingen:
Er is een minimum (1) en maximum (5) nummer gespecifieerd. Deze waarden zijn terug te vinden in de functie oefeningen (functie_oefeningen.inc) van de voetbal module
Beschrijving Datatype:
Text
Widget:
Text Field
Oefeningenduur Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Percentage activiteit 1 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 2 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 36
Bijlage A 0 tot 100 Percentage activiteit 3 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 4 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 5 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 6 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 7 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 8 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 9 37
Bijlage A Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Percentage activiteit 10 Datatype:
Integer
Widget:
Select List
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 100
Training Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Training
Tabel 7: Velden van het inhoudstype Trainingsactiviteit oefeningeninfo
De aanmaak, verwerking en weergave van inhoud van het inhoudstype Trainingsactiviteit oefeningeninfo wordt volledig door de voetbal module behandeld. De velden zijn hier enkel nodig voor de constructie van de juiste databankstructuur (waardoor dus enkel het datatype van belang is).
De namen van de activiteiten dienen nog veranderd te worden in fictieve activiteiten (bijvoorbeeld taktiek, …).
38
Bijlage A
A.2.2 Views Administrator Trainingen
Volledige weergave van alle trainingen Filtering mogelijk op basis van de groepen van de administrator
Aanwezigheden
Volledige tabelweergave van alle aanwezigheden op trainingen Filtering mogelijk op basis van alle spelers Filtering mogelijk op basis van alle trainingen Filtering mogelijk op basis van aanwezigheid
Activiteiten
Volledige tabelweergave van alle activiteiten op trainingen Filtering mogelijk op basis van alle trainingen
Redenen
Volledige lijstweergave van alle redenen
Tabel 8: Views voor de administrator met betrekking tot het inhoudstype training
Trainer Trainingen
Volledige weergave van alle trainingen binnen de groep van de trainer
Aanwezigheden
Volledige tabelweergave van alle aanwezigheden op trainingen binnen de groep van de trainer Filtering mogelijk op basis van alle spelers Filtering mogelijk op basis van alle trainingen Filtering mogelijk op basis van aanwezigheid
Activiteiten
Volledige tabelweergave van alle activiteiten op trainingen binnen de groep van de trainer Filtering mogelijk op basis van alle trainingen
Tabel 9: Views voor de trainer met betrekking tot het inhoudstype training
39
Bijlage A Speler Trainingen
Volledige tabelweergave van alle trainingen binnen de groepen van de speler Filtering mogelijk op basis van de groep(en) van de speler
Aanwezigheden
Volledige tabelweergave van alle aanwezigheden op trainingen binnen de groepen van de speler Filtering mogelijk op basis van alle trainingen Filtering mogelijk op basis van aanwezigheid
Tabel 10: Views voor de speler met betrekking tot het inhoudstype training
Administrator, trainer info_training_aanwezigheid
Volledige tabelweergave van alle aanwezigheden op trainingen
info_training_activiteit
Volledige tabelweergave van alle activiteiten op trainingen
Tabel 11: Views voor de administrator en trainer met betrekking tot het inhoudstype training
A.2.3 Menu-structuur • Administrators menu o Aanwezigheden o Activiteiten o Redenen Reden toevoegen o Trainingen • Trainers menu o Aanwezigheden o Activiteiten o Trainingen Training toevoegen • Spelers menu o Aanwezigheden o Trainingen
40
Bijlage A
A.3 Wedstrijd A.3.1 Inhoudstypes Wedstrijd Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Wedstrijd van [Begindatum en tijdstip]
Datum en tijdstip Datatype:
Date
Widget:
Select List
Opmerkingen:
Verplicht één datum/tijdstip op te geven: begindatum en beginuur (van)
Wedstrijdduur Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 150
Wedstrijdtype Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Wedstrijdtype
Club en team Datatype:
Node Reference
Widget:
Select List
Node Reference:
View mijn groepen
Tegenstander Datatype:
Text
Widget:
Text Field
Doelpunten eigen team Datatype:
Integer
Widget:
Text Field
Opmerkingen:
Er is een minimum (0) en maximum (30) nummer gespecifieerd 41
Bijlage A Doelpunten tegenstander Datatype:
Integer
Widget:
Text Field
Opmerkingen:
Er is een minimum (0) en maximum (30) nummer gespecifieerd
Thuis/Uit wedstrijd Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
Thuis Uit Tabel 12: Velden van het inhoudstype Wedstrijd
Wedstrijdtype Wedstrijdtype Opmerkingen:
De naam Titel is vervangen door de naam Wedstrijdtype Tabel 13: Velden van het inhoudstype Wedstrijdtype
Wedstrijdselectie spelersinfo Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Wedstrijdselectie spelersinfo
Speler Datatype:
User Reference
Widget:
Select List
User Reference:
Geregistreerde gebruikers (authenticated users)
Voornaam speler Datatype:
Text
Widget:
Text Field
Achternaam speler Datatype:
Text
Widget:
Text Field
Geselecteerd Datatype:
Text 42
Bijlage A Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
Ja Neen
Gestart Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
Ja Neen
Aantal minuten gespeeld Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 150
Extra uitleg ivm niet geselecteerd, niet gestart of minder gespeeld Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden dewelke overeenkomen met inhoud van het inhoudstype Reden
Opmerkingen:
Mogelijkheid om meerdere waarden (redenen) aan te duiden
Wedstrijd Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Wedstrijd
Tabel 14: Velden van het inhoudstype Wedstrijdselectie spelersinfo
De aanmaak, verwerking en weergave van inhoud van het inhoudstype wedstrijdselectie spelersinfo wordt volledig door de voetbal module behandeld. De velden zijn hier enkel nodig voor de constructie van de juiste databankstructuur.
43
Bijlage A
A.3.2 Views Administrator Wedstrijden
Volledige weergave van alle wedstrijden Filtering mogelijk op basis van de groepen van de administrator Filtering mogelijk op basis van wedstrijdtype Filtering mogelijk op basis van thuis/uit wedstrijd
Selecties
Volledige tabelweergave van alle aanwezigheden op trainingen Filtering mogelijk op basis van alle spelers Filtering mogelijk op basis van alle wedstrijden Filtering mogelijk op basis van geselecteerd Filtering mogelijk op basis van gestart
Wedstrijdtypes
Volledige lijstweergave van alle wedstrijdtypes
Tabel 15: Views voor de administrator met betrekking tot het inhoudstype wedstrijd
Trainer Wedstrijden
Volledige weergave van alle wedstrijden binnen de groep van de trainer Filtering mogelijk op basis van wedstrijdtype Filtering mogelijk op basis van thuis/uit wedstrijd
Selecties
Volledige tabelweergave van alle selecties voor wedstrijden binnen de groep van de trainer Filtering mogelijk op basis van alle spelers Filtering mogelijk op basis van alle wedstrijden Filtering mogelijk op basis van geselecteerd Filtering mogelijk op basis van gestart Tabel 16: Views voor de trainer met betrekking tot het inhoudstype wedstrijd
44
Bijlage A Speler Wedstrijden
Volledige tabelweergave van alle trainingen binnen de groepen van de speler Filtering mogelijk op basis van de groep(en) van de speler Filtering mogelijk op basis van wedstrijdtype Filtering mogelijk op basis van thuis/uit wedstrijd
Selecties
Volledige tabelweergave van alle selecties voor wedstrijden binnen de groepen van de speler Filtering mogelijk op basis van alle wedstrijden Filtering mogelijk op basis van geselecteerd Filtering mogelijk op basis van gestart Tabel 17: Views voor de speler met betrekking tot het inhoudstype wedstrijd
Administrator, trainer info_wedstrijd_selectie
Volledige tabelweergave van alle selecties voor wedstrijden
Tabel 18: Views voor de administrator en trainer met betrekking tot het inhoudstype wedstrijd
A.3.3 Menu-structuur • Administrators menu o Wedstrijden Selecties o Wedstrijdtypes Wedstrijdtype toevoegen • Trainers menu o Wedstrijden Selecties Wedstrijd toevoegen • Spelers menu o Wedstrijden Selecties
45
Bijlage A
A.4 Sportdag A.4.1 Inhoudstypes Sportdag Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Sportdag [Voornaam speler] [Achternaam speler] [Datum sportdag]
Speler Datatype:
User Reference
Widget:
Autocomplete Text Field
User Reference:
Geregistreerde gebruikers (authenticated users)
Opmerkingen:
PHP code (via het $user object 2 ) zorgt voor de generatie van een default-waarde dewelke overeenkomt met de uid (user_id) van de gebruiker die de sportdaggegevens invult
Voornaam speler Datatype:
Text
Widget:
Text Field
Opmerkingen:
PHP code (via het $user object) zorgt voor de generatie van een default-waarde dewelke overeenkomt met de voornaam van de gebruiker die de sportdaggegevens invult
Achternaam speler Datatype:
Text
Widget:
Text Field
Opmerkingen:
PHP code (via het $user object) zorgt voor de generatie van een default-waarde dewelke overeenkomt met de achternaam van de gebruiker die de sportdaggegevens invult
Club en team Datatype:
Node Reference
Widget:
Select List
2
Het $user object is een globale variabele dewelke gegevens van de ingelogde gebruiker bevat.
46
Bijlage A Node Reference:
View mijn groepen
Datum Datatype:
Date
Widget:
Select List
Formaat:
d-m-Y
Clubtraining* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Training individueel* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Training individueel activiteiten Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
PHP code zorgt voor de generatie van een lijst met waarden dewelke overeenkomen met inhoud van het inhoudstype Voetbalactiviteit
Opmerkingen:
Mogelijkheid om meerdere waarden (voetbalactiviteiten) aan te duiden
Voetbal voor fun* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra training 1* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 47
Bijlage A 0 tot 1440 Extra training 1 plaats Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Voetbalplaats
Extra training 2* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra training 2 plaats Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Voetbalplaats
Extra training 3* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra training 3 plaats Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Voetbalplaats
Clubwedstrijd* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra wedstrijd 1* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 48
Bijlage A 0 tot 1440 Extra wedstrijd 1 plaats Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Voetbalplaats
Extra wedstrijd 2* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra wedstrijd 2 plaats Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Voetbalplaats
Les LO/turnen/zwemmen op school* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra sport 1* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra sport 1 sport Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Sport
Extra sport 2* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 49
Bijlage A 0 tot 1440 Extra sport 2 sport Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Sport
Extra sport 3* Datatype:
Integer
Widget:
Select List
Opmerkingen:
PHP code zorgt voor de generatie van een lijst met waarden van 0 tot 1440
Extra sport 3 sport Datatype:
Node Reference
Widget:
Select List
Node Reference:
Inhoud van het inhoudstype Sport
Blessure status Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
Geen blessure Start blessure In blessure Einde blessure
Uitleg blessure Datatype:
Text
Widget:
Text Field
Totaal Datatype:
Computed
Widget:
Computed
Opmerkingen:
Optelling van de waarden van de velden gemarkeerd met een * Tabel 19: Velden van het inhoudstype Sportdag
50
Bijlage A Sport Sport Opmerkingen:
De naam Titel is vervangen door de naam Sport
Code Datatype:
Integer
Widget:
Text Field Tabel 20: Velden van het inhoudstype Sport
Voetbalactiviteit Voetbalactiviteit Opmerkingen:
De naam Titel is vervangen door de naam Voetbalactiviteit Tabel 21: Velden van het inhoudstype Voetbalactiviteit
Voetbalplaats Voetbalplaats Opmerkingen:
De naam Titel is vervangen door de naam Voetbalplaats Tabel 22: Velden van het inhoudstype Voetbalplaats
A.4.2 Views Administrator Sportdagboeken
Volledige tabelweergave van alle sportdagen Filtering mogelijk op basis van de groepen van de administrator Filtering mogelijk op basis van alle spelers
Sporten
Volledige tabelweergave van alle sporten
Voetbalactiviteiten
Volledige lijstweergave van alle voetbalactiviteiten
Voetbalplaatsen
Volledige lijstweergave van alle voetbalplaatsen
Tabel 23: Views voor de administrator met betrekking tot het inhoudstype sportdag
51
Bijlage A Trainer Sportdagboeken
Volledige tabelweergave van alle sportdagen van de spelers van de groep van de trainer Filtering mogelijk op basis van alle spelers
Tabel 24: Views voor de trainer met betrekking tot het inhoudstype sportdag
Speler Sportdagboek
Volledige tabelweergave van alle sportdagen van de speler
Tabel 25: Views voor de speler met betrekking tot het inhoudstype sportdag
A.4.3 Menu-structuur • Administrators menu o Sportdagboeken o Sporten Sport toevoegen o Voetbalactiviteiten Voetbalactiviteit toevoegen o Voetbalplaatsen Voetbalplaats toevoegen • Trainers menu o Sportdagboeken • Spelers menu o Sportdagboek Sportdag toevoegen
52
Bijlage A
A.5 Blessure A.5.1 Inhoudstypes Blessure Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Blessure [Voornaam speler] [Achternaam speler] [Locatie blessure] [Startdatum blessure]
Medisch dossier Datatype:
Node Reference
Widget:
Select List
Node Reference:
View medische dossiers van de medische staf
Datum start/einde blessures Datatype:
Date
Widget:
Select List
Formaat:
d-m-Y
Opmerkingen:
Verplicht twee datums op te geven: begindatum (van) en einddatum (tot)
Datum en tijdstip eerste consultatie arts Datatype:
Date
Widget:
Select List
Formaat:
d-m-Y H:i
Blessure opgelopen tijdens Datatype:
Text
Widget:
Check boxes/radio buttons
Keuzemogelijkheden:
Training Wedstrijd Andere
Type blessure Datatype:
Text
Widget:
Text Field
Locatie blessure 53
Bijlage A Datatype:
Text
Widget:
Text Field
Extra informatie Datatype:
Text
Widget:
Text Field Tabel 26: Velden van het inhoudstype Blessure
Medisch dossier Titel Opmerkingen:
Automatische generatie van de titel via de voetbal module: Medisch dossier [Voornaam speler] [Achternaam speler]
Voornaam speler Datatype:
Text
Widget:
Text Field
Familienaam speler Datatype:
Text
Widget:
Text Field
Club Datatype:
Text
Widget:
Text Field
Teams Datatype:
Text
Widget:
Text Field
Opmerkingen:
Mogelijkheid om meerdere waarden (teams) in te geven
Extra informatie Datatype:
Text
Widget:
Text Field Tabel 27: Velden van het inhoudstype Medisch dossier
54
Bijlage A
A.5.2 Views Administrator Blessures
Volledige tabelweergave van alle blessures Filtering mogelijk op basis van alle medische dossiers
Medische dossiers
Volledige tabelweergave van alle medische dossiers
Tabel 28: Views voor de administrator met betrekking tot het inhoudstype blessure
Medische staf Blessures
Volledige tabelweergave van alle blessures binnen de groep van de medische staf Filtering mogelijk op basis van de medische dossiers aangemaakt binnen de groep(en) van de medische staf
Medische dossiers
Volledige tabelweergave van alle medische dossiers binnen de groep(en) van de medische staf
Tabel 29: Views voor de medische staf met betrekking tot het inhoudstype blessure
A.5.3 Menu-structuur • Administrators menu o Blessures o Medische dossiers • Medische staf menu o Blessures Blessure toevoegen o Medische dossiers Medische dossiers toevoegen
55
Literatuurlijst
Literatuurlijst Geschreven literatuur Relative age effect
HELSEN, W.F., VAN WINCKEL, J. & WILLIAMS, M. (2005). The relative age effect in youth soccer across Europe. Journal of Sports Sciences, 23(6), 629-636.
Vergelijkingen Content Management Systems
MICHELINAKIS, D. (2004). Open Source Content Management Systems: An argumentative approach. The university of Warwick, 99p.
REISINGER, P. (2006). Evaluation of Content Management Systems. Bachelor thesis, University of Innsbruck, 46p.
Drupal
VANDYK, J.K. & WESTGATE, M. (2006). Pro Drupal Development. Packt Publishing, Birmingham, 284p.
PHP – MySQL
KASSENAAR, P. (2002). Basiscursus PHP 4.2. Academic Service, Schoonhoven, 269p.
56
Literatuurlijst
Elektronische publicaties http://drupal.org/
officiële drupalwebsite
http://www.w3schools.com/
informatie over HTML, CSS, PHP en MySQL
http://www.kaagent.be/jeugd/
website jeugd KAA Gent
http://www.jeugdsvzw.be/
website jeugd SV Zulte Waregem
http://www.php.net/
informatie over PHP
http://www.cmsmatrix.org/
vergelijking van CMS
http://www.atlanticwebfitters.ca/
uitleg over CMS
http://www.cmswiki.com/
uitleg over CMS
57