SCORM courses in the SumTotal 6.5 Learning Management System are launched from a page that lists each SCO (lesson) in a list of links representing the course structure.

On clicking the “Enter the Lesson” button next to any SCO, a new frameset window opens. The screenshot below shows the “Enter the Lesson” page, with the course window open in front of it.

(Click to enlarge)

Once the course window opens, there is no corresponding list of links within it to allow the user to jump back and forth between SCOs. In some courses, it would be useful to allow inter-SCO navigation without having to close the course window.

SumTotal 6.5 does have a “sequencing” feature, which means that if the LMSFinish command is sent by the SCO, the next SCO, if there is one, will open in the same frame. But there is no way to jump around between SCOs at will, or perhaps more importantly, to try the same SCO again without closing the window.

The frameset structure of the course window is as shown below:


SumTotal provides API extensions which allow such functions as “nextSCO”, “previousSCO” etc., all of which consult the course structure to generate the actual links.

The easiest way to determine the correct DOM paths to these functions from wherever you currently are in the window is probably to use the DOM inspector tool in Firefox. The image below illustrates.

The code for various types of jumps is shown below. These links work from within the course itself. I’ll post the code for generating a complete navbar in a future entry.

Go to the first SCO:
<a href="javascript:top.API.LMSFinish('');top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.scos[0],parent.frames[0]);">SCO1</a>  

Go to the second SCO:
<a href="javascript:top.API.LMSFinish('');top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.scos[1],parent.frames[0]);">SCO2</a> 

Go to the third SCO:
<a href="javascript:top.API.LMSFinish('');top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.scos[2],parent.frames[0]);">SCO3</a>

Go to the fourth SCO:
<a href="javascript:top.API.LMSFinish('');top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.scos[3],parent.frames[0]);">SCO4</a> 

Go to the next SCO:
<a href="javascript:top.API.LMSFinish('');top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.getNextSCO(),parent.frames[0]);">getNextSCO()</a> 

Go to the previous SCO:
<a href="javascript:top.API.LMSFinish('');top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.getPreviousSCO(),parent.frames[0]);">getPreviousSCO()</a>

Try this SCO again:
<a href="javascript:top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.getCurrentSCO(),parent.frames[0]);">getCurrentSCO() (Try again!)</a>

Get a SCO by specific ID:
<a href="javascript:top.API.LMSFinish('');top.API_extensions.changeSCOContent(top.API_extensions.gSCOCourseStructure.getSCO('A2'),parent.frames[0]);">getSCO('A2')</a>