Moodle Developer
Posted in Moodle on March 3rd, 2010 by adminMoodle Developer Workshop
Inleiding
Moodle is voor veel van onze klanten aantrekkelijk omdat het de mogelijkheid biedt om functionaliteit toe te voegen met behulp van plugins. Moodle is beschikbaar onder de GPL, een licentie die het mogelijk maakt uitbreidingen (plugins) en aanpassingen voor Moodle te ontwikkelen. Plugins zijn een verzameling van toevoegingen aan Moodle waarbij de originele Moodle code niet aangepast hoeft te worden. Het voordeel van deze manier van werken is dat Moodle gemakkelijk is te updaten naar een nieuwe versie. De belangrijkste plugin types voor Moodle zijn:
- Blocks
- Activity modules
- Authentication plugins
- Enrolment plugins
- Course reports
Bij Stoas wordt een onderscheid gemaakt tussen grote en kleine projecten. De grote projecten worden langzamerhand steeds gestructureerder. Er wordt bijvoorbeeld steeds meer met een ontwikkel, test, acceptatie, productie (OTAP) omgeving gewerkt. De test en productie omgevingen zijn daarbij beschikbaar voor de klant. We hebben goede ervaringen met communicatie tools zoals Basecamp en Google docs. Hiermee worden projecten bewaakt en kunnen alle betrokken informatie met betrekking tot een project uitwisselen.
Kleine projecten komen veel meer voor. Bij de opstart van Moodle projecten en gedurende het gebruik van Moodle wordt nieuwe functionaliteit voor Moodle gevraagd die met behulp van een eigen plugin kan worden gerealiseerd. Voorbeelden hiervan zijn een Google Maps weergave, een KML export voor Google Earth en rapportages van Scorm content. Stoas streeft ernaar om de aanpassingen voor klanten zo generiek mogelijk te houden, zo kan het werk dat is uitgevoerd en betaald teruggegeven worden aan de Moodle community. In deze workshop ga ik in op een nieuw Block voor Moodle dat nu in ontwikkeling is bij Stoas.
Tot nu toe zijn de meeste aanpassing voor onze klanten erg specifiek maatwerk geweest dat moeilijk voor andere klanten inzetbaar is. Maar gaandeweg willen wij een steeds activere rol in de Moodle community gaan spelen. Ons klanten bestand geeft Stoas een belangrijke positie in het Moodle Partner netwerk. Maar wat ook belangrijk is, is de contributie aan Moodle zelf. Door onze lopende projecten gedegen uit te voeren en terug te geven aan de Moodle community worden Moodle, u en wij geholpen. Uiteindelijk is alles ten bate van het product Moodle.
In deze workshop wil ik niet ingaan op coding guidelines of andere richtlijnen vanuit de Moodle community. Het gaat erom een beeld te geven van de mogelijkheden om een eigen Moodle plugin te maken. Voordat het daadwerkelijke werk begint moet er minstens een globaal idee zijn over de wens van de klant.
Over het ontwikkelen van een Moodle plugin
Een van onze klanten heeft mij een paar weken geleden gevraagd iets te ontwikkelen waarmee cursisten kunnen zien binnen hoeveel dagen de inschrijving voor een cursus is verlopen. Deze klant maakt gebruik van een Moodle omgeving waarbij cursisten een beperkte cursusduur hebben. Na een aantal dagen wordt de cursist uit de cursus uitgeschreven. Omdat het om een kleine functionaliteit gaat willen we hier geen uitgebreide project management, OTAP, communicatie tools en versie beheer gebruiken. In dit geval heb ik aangegeven maximaal 6 uur bezig te zijn met een dergelijke functionaliteit. Het ontwikkelen van een eenvoudige plugin is dus relatief goedkoop!
In dit voorbeeld gebruik ik het afteller block van Mat Cannings voor Moodle. De basis voor deze code heb ik gevonden in de Moodle community.
zie: http://moodle.org/mod/data/view.php?d=13&rid=718
Een van de methoden om te bepalen of dit een geschikte block is, is het lezen van de reacties van de gebruikers.
http://moodle.org/mod/forum/discuss.php?d=66217#298137
Ik kan in dit forum in ieder geval zien dat er nog activiteit bestaat. Ga ik wat verder lezen dan vind ik reacties als:
‘Outstanding block.. very nice….’
‘I installed the Countdown Block on Moodle 1.9.5+ and it works properly.’
De schrijver Mat Cannings is zeer actief in de Moodle community en reageert op verzoeken van gebruikers. Dit is een goede indicatie dat ik bruikbaar bron materiaal heb.
Na dit onderzoek is het vervolgens tijd om zelf aan het werk te gaan. Als eerste ben ik gaan kijken in hoeverre deze module aan de wensen voldoet, en in hoeverre het aan te passen is.
Het is mogelijk dit soort plugins van de grond af aan op te bouwen met behulp van de Moodle developer documentatie. Op http://docs.moodle.org/en/Development:Blocks staat uitgebreide documentatie voor het ontwikkelen van een nieuw block.
Ik heb de plugin van Mat Cannings, het counddown block, geinstalleerd in mijn test omgeving en gekeken wat het ongeveer doet. Het voldoet nog lang niet aan de eisen maar is prima bruikbaar. Zie hiervoor ook de screenshots in onderstaande galerij.
Vervolgens maak ik een simpel ontwerp schema met behulp van Meindmeister.
Dit schema kan vervolgens worden omgezet in een plugin. Voor elk van bovenstaande onderdelen is documentatie beschikbaar. Hiervoor maak ik gebruik van http://xref.moodle.org. Dit is geen ideaal systeem om in te zoeken, maar het bevat alle documentatie die in de Moodle code te vinden is.
De functies die ik in dit voorbeeld gebruik zijn:
- is_siteadmin
- groups_get_all_groups($COURSE->id)
- groups_get_members($coursegroup->id)
- $usersdate = get_record_sql($SQL);
- $SQL = “SELECT mra.timemodified FROM {$CFG->prefix}role_assignments AS mra WHERE mra.contextid = $context->id AND mra.userid = $groupmember->id”;
- $usersdate = get_record_sql($SQL);
Zie hieronder de stappen in dit ontwikkelings proces.
- Countdown module
- instellingen block
- Moodle code schema
- block toevoegen
- locale configuratie
- weergave block
- aanpassen code
- aangepaste configurate
- database
- admin view
- Moodle code
Presentatie materiaal voor deze workshop
















