Unlocking Course Navigation


I am looking for a way that will allow me to unlock a course's navigation features. 

Our content that we serve end users is compliance learning, some content has to be repeated year on year and as such people are required to go through the learning content completely before being able to access the assessment. 

What I'm looking for is a way to enable some user's the ability to skip through the learning whilst the default setting remains restricted for the majority of users. 

I am aware that I can amend the frame.js file to change the player from restricted to free, however as I can't be sure when certain users would be accessing the course this isn't a viable option. 

We do have the ability to change the status of the course from incomplete, to completed and this puts the course in review mode, however if a user accesses the content in this state they are not able to freely move around the course.

I've tested the possibility of duplicating suspend data from a completed course and then adding this in the database for the user who I wish to unlock, this does work however isn't an ideal solution due to the amount of content we serve. 

I'm hoping there is a way to achieve the above if possible utilizing something that already exists.


Any help would be greatly appreciated. Thank you.  

2 Replies
Joseph Francis

What criteria are you using to allow certain users unrestricted access while the rest have restricted access?

You could theoretically attach a Boolean variable to each slide (e.g., bolSlide_1.1, bolSlide_1.2, and so on), with an initial value of False. Set the state of the Next button on each slide to Disabled. Then, insert a trigger on each slide which does this:

Change state of Next Button to Normal
   When the timeline starts on this slide
      If bolSlide_1.1 = value True

Then if, for example, the Next button is on is a slide with media, you would insert two triggers, one which changes the state of the Next button to Normal when the timeline finishes (or the media completes), and one which sets the value of the Boolean variable on that slide to True.

Based on the criteria above to determine if the learner has unrestricted access, you could insert triggers at the beginning of the course which set the values of the Boolean variables to True, based on the criteria.


BTW Articulate folks, THIS is one example of where an array-type variable would be handy. Instead of a pile of variables in the variables dialog (bolSlide_1.1, bolSlide_1.2, bolSlide_1.3, ad infinitum), I could have one variable, arrSlide, check/set the individual elements inside of it, and then have triggers on each slide to check/set the value of individual elements:

Change state of Next Button to Normal
   When the timeline starts on this slide
      If arrSlide[2] = value 1

Set arrSlide[2] to value 1
   When the timeline ends on this slide

At the beginning of the course, one trigger could then be used to set all of the array elements at once, based on the criteria for unrestricted access.

John Willis

Hi Joseph,

Thank you for your reply, One criteria that this would be useful for is as an example:

If a user launches a piece of content however no suspend data is stored due to a break in the connection to the LMS. The LMS will record that there is a session start but because the course is unable to send the LMSCOMMIT data at the end of the content there is no session finish time recorded. 

With the above we've built a system that will run an SQL query on the user's 'Lessons' tab, when the user navigates to this page, the SQL query will run a check for any lost session data, if it finds a session start without a session end it will calculate the session start time vs the current time and if the difference is greater than 15 minutes it will automatically update the user's progress from incomplete to completed. 

We have to build the above solution due to the clients we have where there can be either poor network connection or just really old systems which don't handle the content very well. This works as expected and once a course is set to complete we also pop the content into review mode preventing any accidently override should they open the lesson again. - However if they have genuinely completed the content and want to revisit they are stuck going through the full content again. 

As above you've pointed out I'd have to add the value on every slide, we have roughly 80 pieces of content which have anywhere from 1 module of learning to 13, each module 20+ slides long. The sheer amount of time to add this wouldn't be feasible, so I was hoping that someone out there would have a simpler solution which may aid in setting this practice as a default. 

I know there is a possibility to duplicate suspend data and take this from a known good source and add this to the system updated 'complete' content however it's messy and any incorrect data would render this useless. Not to mention when updating content we'd have to account for the update changes and add this into the suspend data.