1
votes

I need some help in understanding how Captivate 7 bookmarking works in SCORM 2004 courses. By default, Captivate seems to bookmark your location as the last slide you visited, whether it be the first one in the course or the last one. Restarting a course on Slide 50, moving backwards 20 slides and then exiting will cause you to start again on Slide 30 NOT Slide 50. This is NOT the default functionality we want. We are looking to have Captivate remember your highest slide number visited and then restart from there if you exit and resume at a later time. From what I can tell, there is not an option anywhere to allow this type of behavior so I am working on an HTML5 Widget that will hopefully solve this issue. To accomplish this, I have done the following:

  • Created a maxSlide variable in JavaScript that tracks the highest slide visited;
  • Overwrote the following functions found in scormdriver.js in my local widget.js file thus replacing the cmi.location variable with my maxSlide variable:
  • SCORM2004_SetBookmark(strBookmark)
  • SCORM2004_CallSetValue(strElement,strValue)
  • setBookmark(strBookmark)

So, testing this out on cloud.scorm.com, using both the console window and debug logger, on the surface it appears that the steps I have taken above are working. However, as the images below show, I navigated to Slide 11, then went back to Slide 1, and exit the course. Upon restarting the course, Captivate grabs the initial bookmark location of 11, but then overwrites it with Slide_1 and then almost immediately after calls setValue with 1. On the prior attempt's log, NO WHERE do I see any cmi.location value being set other than my highest location of 11. Therefore, the $64,000 question is where/how is Captivate getting my last slide location of 1? Is it using a cookie to pull this value of 1? Also,why is it overwriting the first cmi.location getValue of 11 with Slide_1?

Relevant Debug logs from cloud.scorm.com:

First attempt at the course all locations (cmi.location) are 11, despite navigating backwards to Slide 1.

First attempt at the course and all locations (cmi.location) are 11, despite navigating backwards to Slide 1 and exiting on Slide 1.

Subsequent attempt with the course shows the initial cmi.location value of 11 being returned. However, Captivate then decides to overwrite it with Slide_1 and then later just "1".

Subsequent attempt with the course shows the initial cmi.location value of 11 being returned. However, Captivate then decides to overwrite it with Slide_1 and then later just "1". Thus, I started the course again on Slide 1 - not Slide 11.

How can I stop the incorrect bookmark value from being loaded/saved? Any and all insight is appreciated. Thanks!

1

1 Answers

3
votes

I haven't used Captivate 7, but Captivate has previously used cmi.suspend_data to track almost everything. In previous versions of Captivate, the development team decided not to use SCORM's CMI fields the way they were intended to be used, preferring to shoehorn almost everything they need into cmi.suspend_data. This provided flexibility for them because they supported other tracking systems as well, and were not married to SCORM's CMI model.

They certainly changed things up a bit in CP7, but I wouldn't be surprised if they still use some custom logic that melds cmi.suspend_data with cmi.location (if they even use cmi.location at all... it may be populated, but that doesn't mean they use it in their logic).