Course Timer and reset the timer once user exit the course

Jun 06, 2020

Dear All,

I do have requirement from the SME to remind the learner about the time he has continuously gone through course.

For example, If the learner started the course and he continues for 30 minutes, I just want to remind him to take a break if need or else continue. If he/she continue the popup should be given in next 30 minutes. If he takes a break, the timer should rest to zero and once the course is started the timer should run again and same should happen if reaches 30 minutes. The course is 30 hours duration and we like them to take a break every 30 minutes if required.

Other than this, once they start again we like to provide a short summary of what they have completed so far. We are trying to replicate some advantages we are having in classroom to online learning as well.

Any design ideas ?

Thank you

14 Replies
Anne Seller

Hi Nabeel,

A 30-hour course?! That is going to be one huge Storyline file...

Have you considered breaking the course into smaller segments? That way, the user can take a break after completing each one (i.e. after roughly 30 minutes of content) and you could include the short summary (i.e. results of a quiz, etc.) at the end of each segment. Benefits of this also include: (1) a sense of achievement for the learner after successfully completing each segment (you could even include a badge or something similar for them to collect), (2) the chance for the learner to re-visit individual segments to review the content again, (3) smaller file sizes (especially if you are including video), etc.

Just something to consider... If you still want to include a timer, here's a great post from Matthew Bibby on how you can create a countdown timer using Javascript: 


Nabeel Ibrahim

Hi Anne,

Sorry, my mistake. Course is 3 hours, it was a typo :) .

I saw the the option to have timer in different discussion as well.

Now the concern is, how to reset timer once user exit course. Do we have an option to track the exit ? Its not only course exit trigger, we have to consider browser exit as well.

Thank you

Erik van der Zande

I used a timer as part of a quiz: using a layer with an object that animates 1 second, then trigger it to make it count down a variable. Downside is that you would need to put it on every slide and it doesnt communicate well with your other layers (because you would need to have 'the hide other slide layers' disabled).  Upside is that you can reset it on trigger. 

Anne Seller

Whew! That's a relief... 3 hours sounds much better than 30! ;) Still, I would consider breaking it up into smaller segments as I described above, but that's entirely up to you.

Regarding the timer trigger: I assume you have activated the feature (in the player properties) where you can prompt the user to resume the course where they left off? If so, then perhaps it would be better to add a trigger to start the Javascript (to start the countdown timer) when the "timeline starts" on that slide. (You will probably have to add this to every slide in your course.) Then it doesn't matter where the user exits the course or browser - the countdown timer will begin when they start or resume the course, which is where you want it to start counting down anyway. (If you activate the trigger when the user exits the course, then you would have to assign that trigger to multiple buttons/slides, since there are so many places where they could exit the course.)

This will probably involve adding a trigger where you reset or capture the current value of some of the variables. I'll try to get this to work, using Matthew's example, and let you know!


Nabeel Ibrahim

Thanks Anne, Got some info, but still not sure how to execute.

How to reset the timer once user exit the course. We have to consider not the exit browser we design but also the browser exit. Am not able to find any system variable associated with exit.

By adding this we may be able to bring some of the good factors of traditional classrooms.

Thank you

Sarah Hodge

Hi Nabeel! I haven't done anything like this before, but it looks like Anne has some great ideas on possible ways to execute this.

You mentioned this is a requirement, but I wanted to throw a few ideas out there as a possible alternative.

One idea is to break the course up into smaller 30-minute micro-learning courses. That way, the learner can consume one course at a time and take breaks in between.

If you need to keep the content in one course, another idea would be to create a Take a break/Summary slide for every 30 minutes of content. You can include an I'm Ready button on that same slide that jumps to the next section of content for when their break is over. 

I hope you find something that works.

Nabeel Ibrahim

Hi Sarah,

Thanks for your suggestion.

We can't break the course, it should be single. Breaking the course makes it a micro learning  course of 30 minutes. But here we want to give the option to take a break rather than forcing them.

We can keep the take a break slide after 30 minutes, but if a user takes a break at 20 minutes and restart the course again. The break / summary slide will pop up after 10 minutes wich is in appropriate.

Thinking of use Light box, but I need to track exit of course in all the possible ways. If we can track the exit like with exit trigger or browser exit trigger, then we can achieve this.

Storyline has a resume option in player, how storyline is tracking this ?

If we can get this component, how the storyline is tracking, then we may be able to achieve this.

Ren Gomez

Hi Nabeel,

Aside from the alternatives mentioned, this article on suspend data and resume behavior should provide a little more insight into how the resume function works when taking a course in an LMS.

Learning More About Your LMS: Suspend Data and Resume Behavior

This section, in particular, may answer your question.

As a learner makes his way through a course, a compressed chunk of suspend data is sent to the LMS after each slide. This suspend data describes everything about the current state of the course, including the learner’s responses, his navigation history, object states, variable values, interaction results, and more.

When the learner opens the course again, it asks the LMS where he previously left off. The LMS sends the suspend data back to the course, and the course uses it to resume at the same point and in the same state as before.

Nabeel Ibrahim

Hi Ren,

Thanks for the above information.  Suspend data sent by the course to LMS in each slide gives information as you mentioned. Am looking for course exit information.

For example, whether user exit by the trigger we designed or by using the browser, some information is registered in LMS regarding the same. Thats the reason once we started the course again,  it checks with LMS, course is able to understand that its a restart.

Accordingly the way we setup, it will either resume, not resume or give a prompt.

Am looking for the same concept, What is the information checked by course in LMS that it got to know that the course has been restarted. Same can be used to set the timer each time user exit the course.

Thank you

Ren Gomez

Hi Nabeel,

Based on this response by my colleague, Justin, you may want to enable LMS debug mode, which is covered in more detail in the article I shared above. Perhaps this will provide some clue as to what suspend data is being sent when exiting the course.

In particular, the cmi.exit value may be one to look at as it references how the course is exited.

As we don't support modifying output files, I'm sorry I don't have more information to share on how you can use that information to reset a timer. Hopefully someone in the community can chime in with their ideas!

Anne Seller

Hi Nabeel,

I’m sorry for the delay getting back to you, but I am still trying to get this to work...

I have been looking for the system variables associated with exit (as well as for resume) and found some interesting posts referring to „suspend_data“ and „exit_behaviour“.

In the story.js file, I found the variable „ResumeData“ and the function „RetrieveStateData();“ so maybe the timer variable can be reset by involving these somehow.

I also found this post, which you might find helpful. It's about how to call up variable values from the LMS. (You can then use JavaScript to possibly reset them):

lmsAPI Functionality in HTML5 Output

Since I’m not testing within an LMS, I’m afraid I can’t help any further. I’ll let you know if I can get it working, but in the meantime, I hope the above will help. Good luck! :)



This discussion is closed. You can start a new discussion or contact Articulate Support.