If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

New lesson navigation

From MoodleDocs

One of the unique features of lesson is its ability to provide different forms of navigation: branching, randomization, linear, etc. The current form for controlling this navigation is via jump definitions that are defined with nearly every question answer or Branch page button. Also, the navigation is defined by using special pages called Cluster and End of Cluster. Lastly, to add yet another layer, one can define specific navigation between Branch and End of Branch pages. With so many options for designing the navigation of the lesson, one can easily get confused and lost. Further, supporting all of these methods becomes a burden at the user support level and at the code base support level. Thus, we must take a step back and look toward a new method that could combine all of the above methods, but at the same time provide the possibility to support new navigation innovations.

Check Points

For a lack of a better name, "Check Points" could be the solution for which we search. Check Points would be a special place holder within the lesson layout. For example:

Question #1
Question #2
Check Point
Question #3
Question #4

At these Check Points, one could define a change in navigation. So, let's say that before the Check Point, the navigation was set to linear. The student would then see Question #1 followed by Question #2. Once the student came to the Check Point, the navigation could be changed. Let's say the Check Point changes the navigation to random. Thus, after answering Question #2, the student would then see Questions #3 and #4 in random order.

One might ask though, how was the navigation defined for Questions #1 and #2? In the lesson settings, one would set the default flow for the lesson. This default flow could be overridden by the Check Points.

Possible uses

Check Points could be used for much more than changing the order in which a student views the questions. Here is an idea list for possible uses:

  • Redirect: when a student hits the Check Point, s/he is redirected to another page in the lesson.
  • Conditional: best to explain with examples.
    • If student has a current grade of 60% or more, then go to this page. Otherwise go to this page.
    • If student answered last question correctly, go to this page. Otherwise go to this page.
    • If student received 100% of the possible points on the last question, go to this page. If 99% to 60%, go to this page. If less than 60%, go to this page.
  • Flow change: as described above, this would change the default flow for which the questions are viewed (random, linear, etc).
  • Visible Check Point: the user is presented with text and buttons with labels. The buttons are navigational choices for the user. This is the same fundamental functionality found in current lesson Branch Tables.

Changes to the lesson module

Here is a quick list of the changes that would take place if Check Points were implemented:

  • Jump definitions would be removed from questions.
  • Cluster and End of Cluster pages would be replaced with Check Points.
  • Branch pages would remain, but End of Branch would be removed. The functionality between Branch and End of Branch pages would be replaced with Check Points. (Branch tables could be replaced, see above section Possible uses: Visible Check Points Mark Nielsen 12:55, 21 January 2009 (CST))


  • Primary: this would make the transition to the question type class more natural. See this problem with the migration (Note: A new path section talks about state checkers. state checkers are the same as Check Points).
  • Centralizes the navigation. By using Check Points for navigation, we simplify the process for defining and maintaining a lesson's flow. When one wants to change the navigation, s/he does not have to choose from a myriad of possibilities, s/he would know to add a Check Point.
  • Check Points provide possibility for potential growth. When engineering the Check Points, they can be designed to easily support with new navigation innovations.


  • Lesson users will have to learn a new form for controlling their lesson's navigation.
  • Migration to the use of Check Points would require Lesson users to redefine their lesson's navigation. Although, some aspects of the navigation can be migrated automatically.
  • Lesson question will strictly be used for grading, no customized jumps depending upon a specific answer.


Check Points would provide a simplification to the design of the lesson yet allow for more advanced learning experiences. A simple example would be if a student is answering all or most of the questions correctly, then the lesson could adapt to a harder set of questions in order to challenge the student (Adaptive Learning). Also Check Points appear to solve the support problem by centralizing the navigation at both the user level and at the code base level.


Mark Nielsen

See also