A filter, useful in a page or block, for showing and storing a button state (once). Such as when you want to enter a draw, or vote for one thing. Probably not a lot of use-cases for this one.

html can go here before


Put in the stuff you want to appear when the button hasn't been pushed

[[ENTERDRAW:BUTTON The button text goes here]]


Your vote counts! Get your socks on, it's going to be a wild ride.


html can go here too

Logs an event when the user clicks the button, and stores the state in the user preferences.

How does the user or the teacher reset or unsubmit the link? ¯\_(ツ)_/¯

Course Units

Core Units example

This filter will display a list of courses in the current category as a linked list, filtered to the courses that contain a specific custom attribute value. It automatically excludes a link to the current course.

It can display courses that have one of these custom attribute values:

  • Core
  • Elective
  • Optional
  • Introduction

It is a filter rather than a course format, activity type or block simply so that it can be used inside an activity such as a page or label. This is especially helpful for single-activity courses such as course homepages or standalone information pages.

The custom attribute value is currently hardcoded with the name ‘unittype’ of type ‘dropdown’ with the values shown in the list above in that order, but this will be made configurable in a future version.

Example scenario

Set up a single-activity course that is a page, then in the page description or content use the filter to link to your grouped courses. Use the shortcode shown below to list courses matching the attribute filter:

Welcome to the XYZ Doohickey Course. Click on the units below to get started.

Core units


Elective units



Each figure is rendered using the classnames ‘coursebox’ and the value of the custom attribute. For instance, <figure class='coursebox elective'>... This allows you to apply different styling based on the type of figure rendered. For instance, you could recolour the images based on the unit type:

/* assumes <div class='unit-list'>[[units::Core]]</div> */
.unit-list {
    display: grid;
    grid-template-columns: repeat(3,minmax(250px,1fr));
    grid-template-rows: auto;
    grid-template-areas: ". . .";
    width: 100%;
    gap: 1rem;
.unit-list>.elective img {
    filter: sepia(1) hue-rotate(135deg); /* blueish tint */
.unit-list>.core img {
    filter: sepia(1); /* yellowish tint */


You can download this plugin on my Github page.

Activity complete image

A moodle filter for automatically linking images to activities. This is useful when you want an image-based menu at the top of your course that links to hidden activities.

The image also gets an icon added over the top to signify whether or not the activity has been completed.


A quirky filter to render a specific set of HTML in a round menu.

There are probably not a great many use cases for this. It’s quirky and fun way to present a menu. It takes the title tag from the hyperlink as a label under the image; the image is just an image inserted into the course description. The alt-tag from the image is shown to the user inside each circle as the mouse hovers over. A background is taken from the styles.css file accompanying the filter – which can be overridden in the theme.

Course Catalogue

A tabbed course catalogue for Moodle rendered using a template that you can change. This can be useful if you have a theme that supports blocks in the main column and want an alternate to the built-in course category pages.


This is a Moodle filter that provides a useful function – Search and Replace.

You can use it like a simple “shortcode” system to find key elements in your blocks, activities or content and substitute it with a different set of content – typically a block of common HTML that you include in all your pages.