I just had a customer ask me to test a Captivate SCORM 1.2 course in the ADL 1.2.7 test suite for them and as the test suite launched the content SCO a permission denied JavaScript error came up. I was confused because I had the test suite and the content both on the C:\ drive and my internet explorer 8 settings were to allow active content. So I went looking around in the code and I noticed some comments and an DOCTYPE declaration at the top of the main .html file that launches the captivate SCO (this file is usually the same name as your captivate project). I deleted the top 3 lines (shown below), saved the file and retested and it worked fine.
Thursday, December 15, 2011
Thursday, June 23, 2011
ADL ImplementationFest 2011 August 2 through 4 at the Rosen Centre Hotel in Orlando, http://ping.fm/P1cvN
Saturday, May 14, 2011
Sunday, February 6, 2011
BlackBoard 9.1
Just had some clients needing to load content into BlackBoard 9.1. We created a very simple SCORM 2004 package for them using Simple SCORM Packager and sent it to them to post onto their LMS. They imported the content and then sent an email back to us saying that the course did not show a Table of Contents once the SCORM 2004 content package was loaded and running in the BlackBoard 9.1 LMS. We ran the package through the SCORM 2004 3rd Edition Test Suite and Sample Run-Time Environment and the course passed with flying colors. This told me that the issue was with the BlackBoard LMS. I searched the internet and came across this tutorial on how to upload content into the BlackBlard LMS "http://www.blackboard.com/quicktutorials/SCORM2004.swf". In the tutorial there is a screen that allows the admin to select whether they want to set Control Mode to Choice or Flow. It must be set to choice fi you want the student to be able to select items from the table of contents. That was the solution to the issue. I hope that you find the tutorial helpful.
Thursday, January 6, 2011
Articulate SCO to SCO SCORM 2004 sequencing
This week the question was asked "How to get sequenced Articulate published to SCORM 2004 3rd Ed flies to move from each SCO to the next SCO correctly?". This is easily accomplished within SCORM by first publishing your multi-SCO articulate package. Then when you want to move from one SCO to another SCO automatically you will have to use adl.nav.request
doSetValue("adl.nav.request","continue");
The line above will move from the current sco to the next sco in the activity tree as soon as the current sco session is terminated.
In the Articulate SCO packages set this on line 169 for the "SCORM2004Functions.js" file
blnResult = blnResult && SCORM2004_CallSetValue("adl.nav.request","continue")
UPDATE 12/13/2011
---------
Once you make the change then you will need to package up the Articulate sco packages into a single course with Simple SCORM Packager. Once do that then test it on cloud.scorm.com.
If it works on cloud.scorm.com and not on your LMS then the issue is with your LMS. If it does not work on cloud.scorm.com then you did something wrong in your code.
doSetValue("adl.nav.request","continue");
The line above will move from the current sco to the next sco in the activity tree as soon as the current sco session is terminated.
In the Articulate SCO packages set this on line 169 for the "SCORM2004Functions.js" file
blnResult = blnResult && SCORM2004_CallSetValue("adl.nav.request","continue")
UPDATE 12/13/2011
---------
Once you make the change then you will need to package up the Articulate sco packages into a single course with Simple SCORM Packager. Once do that then test it on cloud.scorm.com.
If it works on cloud.scorm.com and not on your LMS then the issue is with your LMS. If it does not work on cloud.scorm.com then you did something wrong in your code.
Friday, March 5, 2010
LMS Quirks, Issues, and Work- Arounds : LRN Learning System (part 2)
Now that we have the SCORM 1.2 package running on the LMS there has been another issues that has popped up. The issue is that the single SCO SCORM package automatically "completes with no score" in the LMS when the student launches the course. The SCORM data is clearly NOT sending cmi.core.lesson_status [see below ---SCORM DEBUG REPORT ---].
Now here is the FUN part. In this particular LMS (LRN Learning System) if you do not set the lesson status at all as soon as the course launches then the LMS ASSUMES THAT YOU WANT IT MARKED COMPLETED !!!
This kind of stuff is what makes me rant on this blog :)...
There is even a comment in the LMS javascript to this effect [see the bold text below]:
IN FILE: wrapperEscape.js
Method:persistData:
if (this.isInitialized) {
/*set the lesson status to completed if the SCO doesn't set the lesson_status*/
if(!this.isSCOSetStatus){
if(!this.prevStatus){
this.prevStatus = this.CMIDataModel["cmi.core.lesson_status"].cache;
}
this.CMIDataModel["cmi.core.lesson_status"].cache = "completed";
}
this.persistData();
this.isInitialized = false;
} else {
this.errorCode = SCORM12_ERR.NOT_INIT;
message += "failed!";
SCORM12_UTL.logAPI(message,this);
return "false";
}
--- One possible solution ---
isInitialized = doLMSInitialize();
v = doLMSGetValue("cmi.core.lesson_status");
if(v == "not attempted" || v == "" || v == "incomplete")
{
//every session you have to set the lesson_status = incomplete, failing to do this will cause the course to automatically be merked completed by the LMS doLMSSetValue("cmi.core.lesson_status","incomplete");
}
This debug report can be generated by adding ?debug=true to the end of the sco launch file name OR issuing the following command in the IE8 debugger:
top.location.href="http:/LMS_URL/lrn_start.html?debug=true&aicc_sid=xxxxxxxx&aicc_url=http://LMS_URL/app/a
icc/xscorm_handler&mode=preview&media=off&mode=preview";
---SCORM DEBUG REPORT ---
11:35:30 DEBUG - debug starting...
11:35:32 DEBUG - LMSInitialize()--succeed!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetValue(cmi.core.lesson_status)--incomplete!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetLastError()--0
11:35:32 DEBUG - LMSGetValue(cmi.suspend_data)--0,0,0,0!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetLastError()--0
11:35:32 DEBUG - LMSGetValue(cmi.suspend_data)--0,0,0,0!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetLastError()--0
11:40:09 DEBUG - LMSSetValue(cmi.core.session_time,0000:04:37.41)--succeed!
11:40:09 DEBUG - result:0--No error
11:40:09 DEBUG - LMSCommit()--succeed!
11:40:09 DEBUG - result:0--No error
Now here is the FUN part. In this particular LMS (LRN Learning System) if you do not set the lesson status at all as soon as the course launches then the LMS ASSUMES THAT YOU WANT IT MARKED COMPLETED !!!
This kind of stuff is what makes me rant on this blog :)...
There is even a comment in the LMS javascript to this effect [see the bold text below]:
IN FILE: wrapperEscape.js
Method:persistData:
if (this.isInitialized) {
/*set the lesson status to completed if the SCO doesn't set the lesson_status*/
if(!this.isSCOSetStatus){
if(!this.prevStatus){
this.prevStatus = this.CMIDataModel["cmi.core.lesson_status"].cache;
}
this.CMIDataModel["cmi.core.lesson_status"].cache = "completed";
}
this.persistData();
this.isInitialized = false;
} else {
this.errorCode = SCORM12_ERR.NOT_INIT;
message += "failed!";
SCORM12_UTL.logAPI(message,this);
return "false";
}
--- One possible solution ---
isInitialized = doLMSInitialize();
v = doLMSGetValue("cmi.core.lesson_status");
if(v == "not attempted" || v == "" || v == "incomplete")
{
//every session you have to set the lesson_status = incomplete, failing to do this will cause the course to automatically be merked completed by the LMS doLMSSetValue("cmi.core.lesson_status","incomplete");
}
This debug report can be generated by adding ?debug=true to the end of the sco launch file name OR issuing the following command in the IE8 debugger:
top.location.href="http:/LMS_URL/lrn_start.html?debug=true&aicc_sid=xxxxxxxx&aicc_url=http://LMS_URL/app/a
icc/xscorm_handler&mode=preview&media=off&mode=preview";
---SCORM DEBUG REPORT ---
11:35:30 DEBUG - debug starting...
11:35:32 DEBUG - LMSInitialize()--succeed!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetValue(cmi.core.lesson_status)--incomplete!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetLastError()--0
11:35:32 DEBUG - LMSGetValue(cmi.suspend_data)--0,0,0,0!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetLastError()--0
11:35:32 DEBUG - LMSGetValue(cmi.suspend_data)--0,0,0,0!
11:35:32 DEBUG - result:0--No error
11:35:32 DEBUG - LMSGetLastError()--0
11:40:09 DEBUG - LMSSetValue(cmi.core.session_time,0000:04:37.41)--succeed!
11:40:09 DEBUG - result:0--No error
11:40:09 DEBUG - LMSCommit()--succeed!
11:40:09 DEBUG - result:0--No error
Wednesday, February 24, 2010
ADL Test Suite 1.2.7 Bug cmi.core.score
Leaving off the .raw from cmi.core.score.raw does not result in an error in the ADL Test Suite 1.2.7. The operation LMSSetValue('cmi.core.score','100'); should returnthe following errors.
But instead in the ADL Test Suite 1.2.7 it returns:
LMSSetValue(cmi.core.score,100) has been invoked
LMSSetValue() finished successfully
Package is SCORM Version 1.2 ADLCP-PIF1 Conformant
LMSSetValue('cmi.core.score', '100') returned 'false'
CheckForSetValueError (cmi.core.score, 100, cmi.core.score, , )
SCORM ERROR FOUND - Set Error State: 201 - The parameter 'cmi.core.score' is not recognized.
LMSGetLastError() returned '201'
LMSGetErrorString('201') returned 'Invalid argument error'
But instead in the ADL Test Suite 1.2.7 it returns:
LMSSetValue(cmi.core.score,100) has been invoked
LMSSetValue() finished successfully
Package is SCORM Version 1.2 ADLCP-PIF1 Conformant
Subscribe to:
Posts (Atom)