-
Notifications
You must be signed in to change notification settings - Fork 34
Single Pages Managed by LMS Navigation
You may have a requirement to produce a single page SCO, that will take advantage of the next/previous buttons within the LMS. SCORM 2004 introduced the adl.nav.request
which allows you to request to 'continue' or go back through 'previous'. It even supports requesting the check if the call is supported before you request it. They also allow you to call 'choice' from the SCO so you can jump around if need be. Queue the music.
Building a SCO with multiple pages means your using AJAX, a IFRAME or a Flash Movie to yield the desired result. Since this means building out all the player logic for moving forward/backward, saving (suspending), submitting (exiting) building single pages that can behave this way may save you time to market.
SCORM 2004 supports a 'controlMode' element which allows you to specify the ability for the student (and sco) to "choose" where it wants to go. Keep in mind if you state choice="false"
, neither the student or the SCO will be able to "jump" from SCO to SCO, and will be left with moving next or previous. If forwardOnly="true"
, then the student cannot go backwards. choiceExit="false"
(defaults to true) will stop a student (or SCO) from being able to effectively jump past it, and can only request to 'continue'.
<imsss:sequencing>
<!--
Tips:
choice false removes the student selection
choiceExit false removes the ability for the student to jump past it
flow true tells the LMS to activate their next/previous buttons
forwardOnly true would stop the student from going 'previous'.
-->
<imsss:controlMode choice="true" choiceExit="true" flow="true" forwardOnly="false" />
</imsss:sequencing>
Where you place this in your imsmanifest.xml and organization structure matters. You may even find you need to place it at a couple levels depending on your structure. Since no tools I'm aware of exist for you to directly view the flow of your manifest file, you are left editing the XML, re-packaging, and uploading to a LMS to test.
In order to jump around 'choice', the SCO needs to make some requests. And in order for that to happen beyond 'continue' and 'previous', this requires the page to effectively know about its other identifiers in the CAM package. You can get around this by pushing in these values in launch data so its not something you have to manually code change if you re-ordered the pages in the XML. But this means the development of these pages needs to support reading in launch data and or launch parameters to pull out behavior.
var canContinue = SB.getvalue('adl.nav.request_valid.choice.{target=PAGE-D}');
if (canContinue === 'true') {
SB.setvalue('adl.nav.request', '{target=PAGE-D}choice'); // On Terminate LMS will auto advance
} else {
// Failover
canContinue = SB.getvalue('adl.nav.request_valid.continue');
if(canContinue === 'true') {
SB.setvalue('adl.nav.request', 'continue');
} else {
// choice must be 'false' or someone missed control mode on a tier in the XML
}
}
When the SCO terminates the LMS will take this request and auto launch the next SCO in line. This can be handy even on multi-page SCO's when you want to naturally progress the student thru a lesson or unit/chapter without leaving them to push the next button.
Sample Package: One Page Progression.zip
Any issues, concerns or feedback - make contact