-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
-
Future Dev
A fairly normal and best practice way of setting up a course is to have completion on for everything. From the course page if you have half completed a course it can often end up hard for a student see the status of all their activity and when its complete and incomplete, especially when you have a lot of sections or depending on the format when you can't see all activities on one screen. This problem is made worse when a student has inadvertently skipped ahead or completed things out of order, or completion has been automatically marked as done due to mere viewing when they have't actually done it (see MDL-80690 which has a proposed fix for this)
Most other LMS's has this concept, and we've built this concept for multiple clients but it is an obvious omission in functionality.
The default intent for students is to simply resume the course and continue wherever they left off, or better yet to continue on the earliest incompleted activity in the course. It should be contexually aware so that if the next activity in a course isn't released yet then there is no action, so if there are say 4 courses in 'My courses' then its obvious which ones you should focus on next.
This conceptually pairs well with the 'Next & Prev' api in MDL-80690 but should be fully independent. In both cases at any given point it should be really clear to the student what is 'Next' and get on with it with minimal fuss.
Proposing:
- When the completion is on for a course then a 'Resume at module X' call to action should appear in the course card in various places in the home, dashboard and other course blocks
- Even when the completion api isn't on for a course it could automatically leverage other saved data around what module you were last in and take you back to the same place
- If they are on the course index page there is a resume prompt somewhere obvious
- Modules have a new API to optional add extra context of their state inside the activity so that the course cards can resume directly into the sub page within the activity, avoiding yet another level of the student needing to ask themselves 'where was I up to?' and without an extra page or prompt on the activity index page to continue
- Very similar to the Next and Prev API proposed in MDL-80690, this api which we might tentatively call the 'Here API' lets core know where you are and can be a url, label, help string, optional javascript event etc. The shape of this api is likely identical to the Prev and Next API so it probably makes sense to align them into a holistic course state and navigation api but they can be implemented independently in either order.
- It is roughly analogous to the browser history pushState concept: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState - each module that opts in would have its internal state managed by core and emits its state at each page view. Core only needs to store the most recent state. The is some overlap with view events in the Events / Logging API so there might be some syntactic sugar to make it easy to kill two birds with one stone
- It might be possible to implement this with minimal or even zero input in some cases by plugin developers by leveraging the existing calls to require_login / require_course_login combined with $PAGE->set_url() and $PAGE->set_title(). Or if there is a gap then slightly extending these rather than adding yet another new api for plugin authors to implement.
- One challenge that might make this not possible to implement completely automatically is activities which have changing availability. For example you read a page and now you are up to a quiz, but you wait too long and now the quiz is shut. I think for the activity link itself core would be able to detect this and fall back to something else like just link to the course index page, but I'm not sure if it could do this for all pages deeper inside an activity which might have special capabilities. That said this might be a reasonable trade off to ignore this use case in order to make this zero-code for each activity.
- has been marked as being related by
-
MDL-80690 Create a Next & Prev API for seamless navigation across sections and activities
-
- Open
-