There is really common requirement from clients to have a set of style guides or content standards across a Moodle site, and there have been a range of solutions to this at the editor level such as:
But we really want some thing more structured where the course creator is given a form to fill out where each field has a proper content type and optional validation and where the template is centrally maintained. If the template changes then it should be updated live across the whole site, rather than small bits of content baked into html in mod_label and elsewhere.
There has been a couple attempts at doing this using modules but there is an opportunity to do this in a much more deep and tightly integrated way:
A new module type, maybe mod_content until a better name can be found, where the admin can create a set of content types, define the fields that are needed for each content type using the custom fields api, and then a template probably in mustache which shows how to display it. Each content type may have multiple templates, at least 1 for what is shown on the course page and possible one or more for pages which drill down from there.
Each content type would then be available as a new activity / resource in a similar way to how LTI creates new psuedo activities. So a course creator is never creating a mod_content instance, they would select 'Course outline' or 'Meet the lecturer' and then fill in the gaps.
Core would ship with a small number of fairly commonly used content types, and there would be clear help that these are just a starting point and they can be added to and customized.
Each content type could be bundled up and packaged, and ideally be available as a new type of entry in the Content Bank.
Once a content type instance has been created, then as much as practical this should be editable via inline editing while on the course page if editing mode is on.
There is some conceptual overlap with the Database module templates which could either be reused or these could be co-evolved into the same content definition standard.
Some extra extensions to this concept would be the idea of dynamic strings, and dynamic capabilities. ie when you create a new content type, it is creating pseudo new strings for activity and these could be translated like a normal string. Also each content type would have a new dynamic capability made which can be mapped to roles or categories so that you could create content types which are only applicable to a certain faculty for instance.
Content type for Learning Objectives
Instead of free form text the objectives could be defined as a combination of some text in addition to references to a competency or tag or other structured data.
Content type for Useful tip
This is a really simple type, and is typically just a heading and a sentence along with an icon and some sort of formatting.
Content type for 'Meet the team' / 'Meet the teachers' / 'Meet the xyz'
The content type defines are array of data, and each item in the array has:
- a link to a user profile
- the name of their title in the context of this course
- a free form chunk of text specific to this course
The template is then able to extract data from the rich data in the users profile such as their avatar and location and name, with the blurb under it. If any of that data is changed elsewhere then it is automatically correct in all the courses where it is used. An example of where this could be used in the Moodle Academy:
Content types for Formative assessment vs summative assessment
Lots of courses want to have clearly defined and style formative assessment in the course page with the summative assessment at the end. They use different icons and heading to distinguish them, and importantly different types of both types might use different actual module types to implement them, such as quiz, lesson or assign. So the icons for assignment and quiz being tightly linked to their type is actually less important and instead we want the icon to represent the type of assessment being done, not how they are being done.
So there could be two content types, one for Formative, one for Summative, and each is configured with link to a module. In the definition the module type could be fixed or it could be a choice or a subset of module types. When creating the a new Formative assessment instance it would create the underlying quiz or assign instance and encapsulate it.