Force First View (micro-navigation)


This question appears often: how can I force the user to view the slide completely before the Next button appears; but when revisiting the slide the Next button should appear immediately. From a pedagogical point of view, I don't think this will improve the efficiency of the learning, but that is off topic. 

Watch this movie: forcing view is used on the slide with the animated dices. The workflows for the audio slides will be explained in a future blog post.

I will explain my analysis and how to create the needed variables and advanced action.


Look at the timeline of the animated dices slide from the movie.

This particular slide is just an example. You see that the Next button (a shape button) appears after the last animation has finished, the learner is forced to watch everything that happens on this slide before the Next button becomes available and learner can proceed. We don't want to put him/her throught the same ordeal when revisiting the slide. Here are three possible workflows:

  1. Create two Next buttons: the one at the end (visible at first visit) and another hidden button, with a timeline that starts from the start of the slide. That second button has to be made visible on second and later visits, whereas the first button will be hidden. Advantage: learner can watch the animations if he wants to, but also skip them by clicking the Next button.
    Problem: this will not be possible in responsive projects with Fluid boxes if you want the two buttons in exactly the same location. Even though they are not timed to appear at the same time, a normal fluid box doesn't allow this.

  2. One Next button, timed from the start of the slide, to be shown/hidden. Use the On Enter event to check tf it is a first visit. If that is the case, hide the Next button, use the command 'Delay Next Actions by....' and enter the time that you want to keep the Next button invisible, then Show the Next button. This looks a good workflow but you have to avoid to offer the possibility to the learner to pause the slide. The Delay command takes not into account any pausing. If  you cannot figure out how to script this solution, send me a note.

  3. Use what you learned about Micro-navigation:  except for the first slide visit, jump directly to the start frame of the Next button's timeline. That means that everything will be in place, animations are finished in this case. Check to have all objects timed for the rest of the slide (CTRL-E).  Since there is no stacking in this workflow, this workflow is also functional for responsive projects developed with Fluid Boxes. Focus of this article  is on this last workflow. Check the Timeline screenshot: the jump should be equivalent with 10secs , start of the Next Button timeline.

All workflows need to track if the learner visits the slide for the first time or not. That can be done by a user variable. We could use a Boolean, or a variable that is incremented with each visit. It is the increment approach that will be used here.

Advanced Action + Variables

The variable that will track the visits got the name v_visit, and a default value of 0. It will be incremented by 1 on each visit. Eventually you can show the number of visits by inserting that variable in a text container:

We have to jump 10secs ahead, which has to be converted to frames.You can use the system variable cpInfoFPS. We'll use another variable v_skip to store the number of frames (that variable could be reused on several slides):

v_skip = cpInfoFPS * 10

The advanced action will have two decisions, as you can see in this Preview:

In the first decision 'Always' which is not conditional, the number of frames is calculated and the tracking variable v_visit is incremented. The second decision 'JumpFrames' is conditional: if it is not the first visit, the playhead will jump as many frames ahead as calculated in v_skip. Since this action is triggered On Enter of the slide, the system variable cpInfoCurrentFrame corresponds with the first frame of the slide.


How will you manage if you have a lot of slides that need to get this 'Forced view' action?  What can be reused? Will you duplicate and edit the actions? What has to be edited? Try to find an answer to those questions. Look out for my reflections in two future posts: next one will show that a similar advanced action can be used for another use case, and in a third post I'll explain why this perfect to be converted to a Shared action, how to convert the present advanced to a Shared action to make it as flexible as possible.

9 responses
Hello, first of all thank you very much for all the teachings. They have really been very valuable to me I wanted to ask you if any of these examples could be used as a basis for something that I have wanted to do for some time, and I have not found the solution. I have a slide with a synchronized video, and I would like the user to leave this slide, when he returns to it the timeline will remain in the last visited fame. Is this possible? Maybe using the variable cpInfoFPS? Regards and thank you very much in advance
Yes, you can use micronavigation, not using cpInfoFPS but cpInfoCurrentFrame. You have to store that frame when the user leaves the video but you didn't tell how they leave the video?
In this case they can leave it from the Exit button that they have available in the header of the course or simply closing the browser window (this is what they usually do). Greetings and thank you very much for your prompt reply. El lun., 17 dic. 2018 a las 16:19, Posthaven Comments () escribió:
That is a different situation: the leave the course! You would have to store the value of that variable in Local storage (provided the learner will use the same system), and retrieve it on restarting the course. This is not about leaving a slide with synchronized video as you told in the first question.
Hello, thank you very much again. I do not know if I understand you well. The course consists of several slides, including some with synchronized video. When a student leaves the course on any slide (whether you exit the Exit button or close the browser) when you re-enter from the platform (Cornerstone), the course takes you to the last visited slide. What happens is that if they leave the course from a slide with synchronized video, they are forced to watch the video from the beginning (I have hidden the navigation bar), and I would like to take them to the frame where they stayed from the video. I do not know if I am well explained. Thank you so much for everything
Variables are reset when relaunching the course. That is not the same situation as I described here for micronavigation because this example is valid during one session. If you want to retrieve the value stored in a variable when restarting a course session, you need to do some scripting to store the variable values in Local Storage and to retrieve them on restart. That requires that the learner uses the same device for each session. This is different from normal LMS use, where the LMS takes care of the status for the slides (micro navigation) if you use bookmarking.
But the course is in an LMS, it's in Cornerstone.
I explained that micronavigation is not honored by a LMS. Sorry, but it looks like you don't understand the terminology. Op wo 19 dec. 2018 om 16:47 schreef Posthaven Comments :
:O It's clear that it's been a language problem, I understand you now, thanks