13 Replies
Steve Flowers

The Storyline player stores restore / progress in suspend_data for both HTML5 and Flash versions. If you don't want to store restore within the suspend data element, you'll want to turn the player to Never resume on restart. This will also destroy your bookmark restore.

The Javascript functions to get and set values should work identically whether using the Flash or HTML5 versions. What browser are you testing in? I've seen plenty of issues in Firefox (which isn't supported by Articulate, btw.) If testing in Chrome, monitor the console for errors. If any scripts throw errors before your Get / Set calls, it'll stop execution and those won't run.

Marcus White

Hi Steve, we came across an issue with Storyline storing it's own progress within the LMS.  If you updated the course after it has gone live, users re-entering the course would report lost of progress or worst the course would display all over the place.  Only way to fix would be to clear their progress within the LMS for a 1-2 hour course, you can imagine the reaction.

We therefore use Javascript triggers store our own progress information within the LMS and push the information into storyline.  However with HTML5 95%  of the time it stores it's progress in the suspend data and when it does this, it doesn't store our progress information. (oddly every now and again it works as it should)

Steve Flowers

Ah! Makes sense. How are you handling persistence? Are you forcing your own Set and Get calls for suspend_data?

The suspend data scheme the SL player uses is one of the banes of my existence in an older LMS that interprets the field floor as a ceiling and enforces 4K for 1.2.

Would love to see more details on your solution. Not something we could use widely for all authors but for high volume deployments, I'd really love to have a reliable way of storing / restoring state. 

Marcus White

Hi Steve, we only store small bits of information like, topic progress, topic scores and some boolean values, etc.

In Storyline we have a variable for each topic in the course, which is set to 0 = not started, 1=started/incomplete, 2 = completed/passed, 9 = failed/not passed.  When a user visits our Menu we display status dots next to the topic items Grey, Orange, Green, Red to match the status value.

Each time a topic status changes, we use JavaScript to create a string separated with commas with the information from storyline and this is stored in the LMS. On starting the course we use JavaScript to GET the String from the LMS and then split the string into an array and then SET the variables within Storyline.

It means the user can track their progress within the course and if we wanted to, we can look into the LMS database and see how much of the course they have done.

What we would really like to do, is to return the user to the last visited slide, but that's currently not possible.

Marcus White

UPDATE: I have just found out a work around for us.

We were changing variable values on slides and checking the value on the master slide and then executing a JavaScript trigger. We have changed checking the value from the master slide to the slides and now the JavaScript gets triggered every time.  It still stores data within Suspend_data but we now use lesson_location so all is good.

Alison  L.

I was going through my BIG pile of Storyline, and I had a note for Storyline RC8! that "you had getVar(), now you have SetVar() -> player.SetVar"- when I went into the Community and started searching, all I could find were 3 and 4 year old references going back Storyline 1 and 2.  I know I read the js magic LIVES in user.js (after you output).

I just wonder.. with all the variable additions (subtractions?) showings (hidings?) that have gone on since these now-toddler-aged posts, if this functionality still exists? - It seems like, if this functionality still exists, it could be The Answer to my recent CMI5 query!  Maybe?