I have just completed updating the Scheduler plugin for a client of mine. The changes were rather extensive and required changes to both the student and teacher views of the module.
The client does a lot of face to face training, and they use the Scheduler module to book these session. As it should be I guess. However, the module did not quite fit their requirements, thus necessitating the change.
What they were looking for was more information about the user booking the Event (Slot), as well as a better report for the Facilitator.
One of these changes included added in a event end time. This would allow them to specify a two or even three day event.
As an Admin, you could still see all the controls, but they wanted these removed for the Facilitator, who would only be marking the Event.
To that end I had to compare the logged in user to the assigned Facilitator and then adjust the permissions accordingly. In this instance the Facilitator cannot delete the event.
One additional requirement was that the student upload a copy of their ID. Once uploaded, this can be downloaded by the Facilitator by simply clicking the Download link next to the students name.
A new report was added, namely the Attendance by Facilitator report.
When run, it adds in the company logo, as well as details about the event. Lastly the students are listed on per line, with their details pulled through from the database.
The student view naturally also had a few changes to its UI. Most notably being the Book Event button next to each available event.
When clicked, a Requirements form is loaded. Here the student can request a special meal, upload their ID photo etc.
The students can cancel and event, by returning to this form, and selecting the Decline option on the left. If they decline an event, a reason will be required.
Once the event has been booked, the Edit button is displayed.
I have been doing Moodle development for a while, but one never stops learning. If I can provide two bits of advice for anyone embarking on a piece of development work, then it would be this;
Get a detailed spec and plan to do extensive testing.
Fortunately I had a really good spec document from the client, which helped me understand exactly what their requirements were. Once the coding was done, we could then use the spec doc to do our testing.
Test on as many browsers as you can, with as many different variations as you can come up with. The more you test, the better you sleep, so don’t be lazy, or scared to break the code.