MoodleBites for Developers Level 2 is a technical course and direct follow-on from MoodleBites for Developers Level 1 (although this is not a prerequisite). This is a technical course using HTML, PHP, and Javascript. For course fees, start dates, and other information please see the course outline.

The first assumption is that you have either taken the level 1 course or you have equivalent knowledge.  We noted that you should be familiar with the material in our free course MoodleBites for Developerts Technical Preparation. There are two optional sections included on using git and debugging from that course in case you haven't taken it.   

We will first clone the widget template from GitHub and then search and replace in files, rename some files and then create a new repository in GitHub to hold the code as we develop it.

Finally for this week we will give an overview of the template code.

Then we will be ready to start our plugin development.


This week we examine the collaborate activity we installed in week 1 and consider how Moodle display browser facing pages. We discuss Mustache templates and compare to the older methods still found in many parts of Moodle.  We cover the basic APIs needed to make an activity module work. 

This week covers the use of local classes and autoloading.  We develop a local class for adding Editor Areas to our mod_form.  In order to save that data we need to modify the database.  To do this we will also cover the use of the XMLDB editor and the upgrade.php script.

Last week we added the editors for instructions A and B.  This week we learn how to process the data from them so it gets stored correctly in the database and we learn the steps needed to extract and display the data on the page.

We review the admin settings pages and test our plugin with multiple instances and roles, also re-visiting the database API.  We take a look at reports and multi-page output.  We spend some time thinking about security.  A lighter week than last.


Now that we have the submissions class sorted and we can collect the submissions from the participants we want to be able to display them under the reports tab and grade them using a simple form.

Actually passing grades to the gradebook using the lib.php functions is not the easiest thing but you may need to do it so we cover it here.

This weeks content covers three new programming APIs in Moodle that are built around automatic class loading and namespaces.

They are: Tasks, Events and Logging.

Each of those does not involve writing a lot of code. But you should be familiar with namespaces and class loading. Tasks are straightforward in code, but are really a bit tricky to debug. I suggest you stick pretty close to the code given, to avoid having to track down bugs. Logging and events are two sides of the same coin, and by now you have probably seen them in Moodle code.

Have we finished out plugin, is it ever finished?  Code checking and the plugins database.  Some additions we might make to increase interactivity.

As an extra task this week by way of revision we revisit cloning a new plugin, understanding a simple admin tool plugin and modifying it to extract data from our collaborate tables.  To do this we also re-visit templates, renderers, classes and SQL statements.

For something new we will make a sortable table.

This area is used to enable successful MoodleBites for Developers Level 2 participants to access a Certificate of Completion, and download a Badge.