RE: [Xerte] Scorm 1.2 packaged with Xerte 1.9 doesn´t comunicate with LMS
Tenney Julian
Julian.Tenney at nottingham.ac.uk
Tue Feb 5 14:26:00 GMT 2008
What browser and operating system are you using?
-----Original Message-----
From: xerte-bounces at lists.nottingham.ac.uk [mailto:xerte-bounces at lists.nottingham.ac.uk] On Behalf Of Martín Dobovsek
Sent: 05 February 2008 13:43
To: Xerte discussion list
Subject: RE: [Xerte] Scorm 1.2 packaged with Xerte 1.9 doesn´t comunicate with LMS
Tenney:
I just downloaded ver. 1.10 from site, uninstall ver. 1.9 and install 1.10
I do from scratch the file with two pages and hack scormRLO. htm to see whether pushing
buttons appears the alert for setValue. Scorm version 1.2
No luck
MainPreloader.swf modif. date 15/01/08
I was looking the .js files to find timing calculation as in the old 1.5 scormRLO.htm
(which uses // FS SCORM - fscommand adapter for ADL SCORM 1.2) and couldn´t find it too.
Well.
It seems is a litle more complex as i think before.
Very thanks for support
Martin
--- Tenney Julian <Julian.Tenney at nottingham.ac.uk> escribió:
> The correct sysntax is
>
> _level0.setValue(dataModelElement, value);
>
> So this is correct:
>
> _level0.setValue('cmi.core.lesson_status', 'completed');
>
> Let's find out whether there is a problem communicating between Flash and the html
> page. If you put an alert in the javascript function for setvalue, do you see it when
> you click your buttons to set the values?
>
> I do. I don't know why you don't. Do you have the latest MainPreloader.swf?
>
> -----Original Message-----
> From: xerte-bounces at lists.nottingham.ac.uk
> [mailto:xerte-bounces at lists.nottingham.ac.uk] On Behalf Of Martín Dobovsek
> Sent: 05 February 2008 12:24
> To: Xerte discussion list
> Subject: RE: [Xerte] Scorm 1.2 packaged with Xerte 1.9 doesn´t comunicate with LMS
>
> Tenney:
>
> My LMSFinish() has been invoked --after I close the SCO manually as you.
> Confirmation with your added script.
>
>
> Please confirm sintax:
>
> Version Xerte 1.5
>
> _level0.LMSSetValue("cmi.core.lesson_status", "completed");
>
> Version Xerte 1.9
>
> _level0.setValue('cmi.core.lesson_status', 'completed');
>
> There are differences in command sintax and quotes.
>
> I test both and nothing changes.
>
> It seems that there isn´t comunicacion between flash and html.
>
> Both functions (LMSInitialize() and LMSFinish() are called from html (onload and
> onunload) and the problem is when calling functions during events inside flash. Below
> are
> used files.
>
> Using this .rlo I got the same results old in the ADL test log (status do not change)
>
> Best regards and thanks for support
>
> Martin
>
> *******************************************
> .rlo: 2 pages with 2 pages and interaction buttons to test data sending
>
>
> <LO name="Learning Object">
> <IFC name="Interface" title="My Learning Object" visuals="1">
> <PG name="[Untitled]" title="Page Title" help="Page Help">
> <INT name="[Untitled]" perpetual="0">
> <RES name="[Untitled]" type="button" x="0" y="0" label="browsed" erase="1"
> exit="0">
> <SCR name="[Untitled]"><![CDATA[_level0.setValue('cmi.core.lesson_status',
> 'browsed');]]></SCR>
> <DIS name="[Untitled]" x="400" y="0" w="400" h="10" type="text"><![CDATA[browsed
> ]]></DIS>
> </RES>
> </INT>
> </PG>
> <PG name="[Untitled]" title="Page Title" help="Page Help">
> <INT name="[Untitled]" perpetual="0">
> <RES name="[Untitled]" type="button" x="0" y="0" label="completed" erase="1"
> exit="0">
> <SCR name="[Untitled]"><![CDATA[_level0.setValue('cmi.core.lesson_status',
> 'completed');]]></SCR>
> <DIS name="[Untitled]" x="200" y="0" w="400" h="10"
> type="text"><![CDATA[completed]]></DIS>
> </RES>
> </INT>
> </PG>
> </IFC>
> <BIN name="Deleted Items" />
> </LO>
>
> *******************************************
> *******************************************
> scormRLO.htm
>
> ********************************************
> *******************************************
> <html>
> <head>
> <script type="text/javascript" src="apiwrapper.js"></script>
>
> <script type="text/javascript">
> if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 &&
> navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows
> 3.1") == -1){
> document.write('<SCRIPT LANGUAGE=VBScript\> \n');
> document.write('on error resume next \n');
> document.write('Sub MainPreloader_FSCommand(ByVal command, ByVal args)\n');
> document.write(' call MainPreloader_DoFSCommand(command, args)\n');
> document.write('end sub\n');
> document.write('</SCRIPT\> \n');
> }
>
> function MainPreloader_DoFSCommand(command, args){
> if (command == "messageBox"){
> alert(args);
> return true;
> }
>
> if (command == "speak"){
> VoiceObj.Speak(args, 3); //params = 3: 1 for asynch and 2 for purge existing (see
> below)
> }
>
> if (command == "resize"){
> document.getElementById("sco").style.width = args.substr(0,
> args.indexOf(","))+"px";
> document.getElementById("sco").style.height = args.substr(args.indexOf(",") + 1,
> args.length)+"px";
> }
>
> if (command == "stopTTS"){
> VoiceObj.Speak('', 2); //params 2 to purge existing voices
> }
> }
> </script>
>
>
> <title>SCO Example</title>
> <body onload = "initialise();" onunload = "finish();" style="margin:0">
>
> <br><div align = "center">
> <script type="text/javascript" language="JavaScript">
>
> function launchwin(winurl,winname,winfeatures){
> //This launches a new window and then
> //focuses it if window.focus() is supported.
> newwin = window.open(winurl,winname,winfeatures);
> }
>
> function getLocation(){
> var loc = document.location.toString();
> loc = loc.substr(0, loc.lastIndexOf('/') + 1);
> return loc;
> }
> var FileLocation = getLocation();
>
> rloFile = '25.rlo';
> rloWidth = 800;
> rloHeight = 600;
> scorm = 'true';
> browser = 'ie';
> </script>
>
> <script type="text/javascript" src = "flash.js"></script>
>
> <script name="APIWRapperFunctions" type="text/javascript">
>
> var MainPreloader = document.getElementById("MainPreloader");
>
> function initialise(){
> //find and returns the API starting with this window
> doLMSInitialize()
> }
>
> function getValue(elementName){
> var result = String(doLMSGetValue(elementName));
> return result;
> }
>
> function setValue(elementName, value){
> var result = doLMSSetValue(elementName, value);
> return result;
> }
>
> function finish(){
> doLMSFinish();
> }
>
> </script>
>
> </div>
> </body>
> </html>
>
> **********************************************************+++
> **********************************************************
> APIWrapper.js
> ***********************************************************
> ***********************************************************
>
> /*******************************************************************************
> **
> ** FileName: APIWrapper.js
> **
> *******************************************************************************/
>
> /*******************************************************************************
> **
> ** Concurrent Technologies Corporation (CTC) grants you ("Licensee") a non-
> ** exclusive, royalty free, license to use, modify and redistribute this
> ** software in source and binary code form, provided that i) this copyright
> ** notice and license appear on all copies of the software; and ii) Licensee does
> ** not utilize the software in a manner which is disparaging to CTC.
> **
> ** This software is provided "AS IS," without a warranty of any kind. ALL
> ** EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
> ** IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-
> ** INFRINGEMENT, ARE HEREBY EXCLUDED. CTC AND ITS LICENSORS SHALL NOT BE LIABLE
> ** FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
> ** DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL CTC OR ITS
> ** LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
> ** INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
> ** CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
> ** OR INABILITY TO USE SOFTWARE, EVEN IF CTC HAS BEEN ADVISED OF THE POSSIBILITY
> ** OF SUCH DAMAGES.
> **
> *******************************************************************************/
>
> /*******************************************************************************
> ** This file is part of the ADL Sample API Implementation intended to provide
> ** an elementary example of the concepts presented in the ADL Sharable
> ** Content Object Reference Model (SCORM).
> **
> ** The purpose in wrapping the calls to the API is to (1) provide a
> ** consistent means of finding the LMS API implementation within the window
> ** hierarchy and (2) to validate that the data being exchanged via the
> ** API conforms to the defined CMI data types.
> **
> ** This is just one possible example for implementing the API guidelines for
> ** runtime communication between an LMS and executable content components.
> ** There are several other possible implementations.
> **
> ** Usage: Executable course content can call the API Wrapper
> ** functions as follows:
> **
> ** javascript:
> ** var result = doLMSInitialize();
> ** if (result != true)
> ** {
> ** // handle error
> ** }
> **
> ** authorware
> ** result := ReadURL("javascript:doLMSInitialize()", 100)
> **
> *******************************************************************************/
>
> var _Debug = false; // set this to false to turn debugging off
> // and get rid of those annoying alert boxes.
>
> // Define exception/error codes
> var _NoError = 0;
> var _GeneralException = 101;
> var _ServerBusy = 102;
> var _InvalidArgumentError = 201;
> var _ElementCannotHaveChildren = 202;
> var _ElementIsNotAnArray = 203;
> var _NotInitialized = 301;
> var _NotImplementedError = 401;
> var _InvalidSetValue = 402;
> var _ElementIsReadOnly = 403;
> var _ElementIsWriteOnly = 404;
> var _IncorrectDataType = 405;
>
>
> // local variable definitions
> var apiHandle = null;
> var API = null;
> var findAPITries = 0;
>
>
> /*******************************************************************************
> **
> ** Function: doLMSInitialize()
> ** Inputs: None
> ** Return: CMIBoolean true if the initialization was successful, or
> ** CMIBoolean false if the initialization failed.
> **
> ** Description:
> ** Initialize communication with LMS by calling the LMSInitialize
> ** function which will be implemented by the LMS.
> **
> *******************************************************************************/
> function doLMSInitialize()
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSInitialize was not
> successful.");
> return "false";
> }
>
> var result = api.LMSInitialize("");
>
> if (result.toString() != "true")
> {
> var err = ErrorHandler();
> }
>
> return result.toString();
> }
>
> /*******************************************************************************
> **
> ** Function doLMSFinish()
> ** Inputs: None
> ** Return: CMIBoolean true if successful
> ** CMIBoolean false if failed.
> **
> ** Description:
> ** Close communication with LMS by calling the LMSFinish
> ** function which will be implemented by the LMS
> **
> *******************************************************************************/
> function doLMSFinish()
> {
>
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSFinish was not
> successful.");
> return "false";
> }
> else
> {
> // call the LMSFinish function that should be implemented by the API
>
> var result = api.LMSFinish("");
> if (result.toString() != "true")
> {
> var err = ErrorHandler();
> }
>
> }
>
> return result.toString();
> }
>
> /*******************************************************************************
> **
> ** Function doLMSGetValue(name)
> ** Inputs: name - string representing the cmi data model defined category or
> ** element (e.g. cmi.core.student_id)
> ** Return: The value presently assigned by the LMS to the cmi data model
> ** element defined by the element or category identified by the name
> ** input value.
> **
> ** Description:
> ** Wraps the call to the LMS LMSGetValue method
> **
> *******************************************************************************/
> function doLMSGetValue(name)
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSGetValue was not
> successful.");
> return "";
> }
> else
> {
> var value = api.LMSGetValue(name);
> var errCode = api.LMSGetLastError().toString();
> if (errCode != _NoError)
> {
> // an error was encountered so display the error description
> var errDescription = api.LMSGetErrorString(errCode);
> alert("LMSGetValue("+name+") failed. \n"+ errDescription);
> return "";
> }
> else
> {
>
> return value.toString();
> }
> }
> }
>
> /*******************************************************************************
> **
> ** Function doLMSSetValue(name, value)
> ** Inputs: name -string representing the data model defined category or element
> ** value -the value that the named element or category will be assigned
> ** Return: CMIBoolean true if successful
> ** CMIBoolean false if failed.
> **
> ** Description:
> ** Wraps the call to the LMS LMSSetValue function
> **
> *******************************************************************************/
> function doLMSSetValue(name, value)
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSSetValue was not
> successful.");
> return;
> }
> else
> {
> var result = api.LMSSetValue(name, value);
> if (result.toString() != "true")
> {
> var err = ErrorHandler();
> }
> }
>
> return;
> }
>
> /*******************************************************************************
> **
> ** Function doLMSCommit()
> ** Inputs: None
> ** Return: None
> **
> ** Description:
> ** Call the LMSCommit function
> **
> *******************************************************************************/
> function doLMSCommit()
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSCommit was not
> successful.");
> return "false";
> }
> else
> {
> var result = api.LMSCommit("");
> if (result != "true")
> {
> var err = ErrorHandler();
> }
> }
>
> return result.toString();
> }
>
> /*******************************************************************************
> **
> ** Function doLMSGetLastError()
> ** Inputs: None
> ** Return: The error code that was set by the last LMS function call
> **
> ** Description:
> ** Call the LMSGetLastError function
> **
> *******************************************************************************/
> function doLMSGetLastError()
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSGetLastError was not
> successful.");
> //since we can't get the error code from the LMS, return a general error
> return _GeneralError;
> }
>
> return api.LMSGetLastError().toString();
> }
>
> /*******************************************************************************
> **
> ** Function doLMSGetErrorString(errorCode)
> ** Inputs: errorCode - Error Code
> ** Return: The textual description that corresponds to the input error code
> **
> ** Description:
> ** Call the LMSGetErrorString function
> **
> ********************************************************************************/
> function doLMSGetErrorString(errorCode)
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSGetErrorString was not
> successful.");
> }
>
> return api.LMSGetErrorString(errorCode).toString();
> }
>
> /*******************************************************************************
> **
> ** Function doLMSGetDiagnostic(errorCode)
> ** Inputs: errorCode - Error Code(integer format), or null
> ** Return: The vendor specific textual description that corresponds to the
> ** input error code
> **
> ** Description:
> ** Call the LMSGetDiagnostic function
> **
> *******************************************************************************/
> function doLMSGetDiagnostic(errorCode)
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSGetDiagnostic was not
> successful.");
> }
>
> return api.LMSGetDiagnostic(errorCode).toString();
> }
>
> /*******************************************************************************
> **
> ** Function LMSIsInitialized()
> ** Inputs: none
> ** Return: true if the LMS API is currently initialized, otherwise false
> **
> ** Description:
> ** Determines if the LMS API is currently initialized or not.
> **
> *******************************************************************************/
> function LMSIsInitialized()
> {
> // there is no direct method for determining if the LMS API is initialized
> // for example an LMSIsInitialized function defined on the API so we'll try
> // a simple LMSGetValue and trap for the LMS Not Initialized Error
>
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nLMSIsInitialized()
> failed.");
> return false;
> }
> else
> {
> var value = api.LMSGetValue("cmi.core.student_name");
> var errCode = api.LMSGetLastError().toString();
> if (errCode == _NotInitialized)
> {
> return false;
> }
> else
> {
> return true;
> }
> }
> }
>
> /*******************************************************************************
> **
> ** Function ErrorHandler()
> ** Inputs: None
> ** Return: The current value of the LMS Error Code
> **
> ** Description:
> ** Determines if an error was encountered by the previous API call
> ** and if so, displays a message to the user. If the error code
> ** has associated text it is also displayed.
> **
> *******************************************************************************/
> function ErrorHandler()
> {
> var api = getAPIHandle();
> if (api == null)
> {
> alert("Unable to locate the LMS's API Implementation.\nCannot determine LMS error
> code.");
> return;
> }
>
> // check for errors caused by or from the LMS
> var errCode = api.LMSGetLastError().toString();
> if (errCode != _NoError)
> {
> // an error was encountered so display the error description
> var errDescription = api.LMSGetErrorString(errCode);
>
> if (_Debug == true)
> {
> errDescription += "\n";
> errDescription += api.LMSGetDiagnostic(null);
> // by passing null to LMSGetDiagnostic, we get any available diagnostics
> // on the previous error.
> }
>
> alert(errDescription);
> }
>
> return errCode;
> }
>
> /******************************************************************************
> **
> ** Function getAPIHandle()
> ** Inputs: None
> ** Return: value contained by APIHandle
> **
> ** Description:
> ** Returns the handle to API object if it was previously set,
> ** otherwise it returns null
> **
> *******************************************************************************/
> function getAPIHandle()
> {
> if (apiHandle == null)
> {
> apiHandle = getAPI();
> }
>
> return apiHandle;
> }
>
>
> /*******************************************************************************
> **
> ** Function findAPI(win)
> ** Inputs: win - a Window Object
> ** Return: If an API object is found, it's returned, otherwise null is returned
> **
> ** Description:
> ** This function looks for an object named API in parent and opener windows
> **
> *******************************************************************************/
> function findAPI(win)
> {
> while ((win.API == null) && (win.parent != null) && (win.parent != win))
> {
> findAPITries++;
> // Note: 7 is an arbitrary number, but should be more than sufficient
> if (findAPITries > 7)
> {
> alert("Error finding API -- too deeply nested.");
> return null;
> }
>
> win = win.parent;
>
> }
> return win.API;
> }
>
>
>
> /*******************************************************************************
> **
> ** Function getAPI()
> ** Inputs: none
> ** Return: If an API object is found, it's returned, otherwise null is returned
> **
> ** Description:
> ** This function looks for an object named API, first in the current window's
> ** frame hierarchy and then, if necessary, in the current window's opener window
> ** hierarchy (if there is an opener window).
> **
> *******************************************************************************/
> function getAPI()
> {
> var theAPI = findAPI(window);
> if ((theAPI == null) && (window.opener != null) && (typeof(window.opener) !=
> "undefined"))
> {
> theAPI = findAPI(window.opener);
> }
> if (theAPI == null)
> {
> alert("Unable to find an API adapter");
> }
> return theAPI
> }
>
> ***********************************************************++
> ***********************************************************
> flash.js
> ************************************************************
> *************************************************************
> document.writeln('<br>');
> document.writeln('<center><div id="sco" style="width:' + rloWidth + 'px; height:' +
> rloHeight + 'px;">');
> document.writeln('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
>
Codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
> WIDTH="100%" HEIGHT="100%" id="MainPreloader" ALIGN="middle">');
> document.writeln('<param name="movie" value="MainPreloader.swf" />');
> document.writeln('<param name="quality" value="high" />');
> document.writeln('<param name="scale" value="showAll" />');
> document.writeln('<param name="salign" value="T" />');
> document.writeln('<param name="bgcolor" value="#ffffff" />');
> document.writeln('<param name="allowScriptAccess" value="always" />');
> document.writeln('<param name="seamlessTabbing" value="0" />');
> document.writeln('<param name="flashVars" value="File=' + rloFile + '&FileLocation=' +
> FileLocation + '&scorm=' + scorm + '&browser=' + browser + '" />');
> document.writeln('<embed src="MainPreloader.swf" allowScriptAccess="always"
> quality="high" scale="showAll" salign="T" bgcolor="#ffffff" WIDTH="100%" HEIGHT="100%"
> NAME="MainPreloader" ALIGN="middle" TYPE="application/x-shockwave-flash"
> PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" flashVars="File=' + rloFile +
> '&FileLocation=' + FileLocation + '&scorm=' + scorm + '&browser=' + browser + '"/>');
> document.writeln('</object>');
> document.writeln('</div></center>');
>
>
>
>
>
>
> --- Tenney Julian <Julian.Tenney at nottingham.ac.uk> escribió:
>
> > That's useful info. In the log for 1.9 below, notice that LMSFinish is getting called
> > before you set any data. Any idea why that is? Once LMSFinish has been called, there
> > can be no further communcation with the LMS.
> >
> > I made a very simple two page file. In the first page is nothing but a script icon
> with
> > this in it:
> >
> > _level0.setValue('cmi.core.lesson_status', 'browsed');
> >
> > And on the second page is this:
> >
> > _level0.setValue('cmi.core.lesson_status', 'completed');
> >
> > My log is here:
> >
> >
> > SCO is searching for the API Adapter
> > SCO was able to find the API Adapter
> >
> > LMSInitialize() has been invoked
> > LMSInitialize() finished successfully
> >
> > LMSSetValue(cmi.core.lesson_status,browsed) has been invoked
> > LMSSetValue() finished successfully
> >
> > LMSSetValue(cmi.core.lesson_status,completed) has been invoked
> > LMSSetValue() finished successfully
> >
> > LMSFinish() has been invoked --after I close the SCO manually
> > LMSFinish() finished successfully
> >
> > SCO is no longer initialized
> >
> > We need to find out why your piece is calling LMSFinish. My piece doesn't call it
> until
> > I close the SCO. Your piece appears to call it straight away. In the web page,
> > scormRLO.htm, can you put an alert('finish') in the function finish like this:
> >
> > function finish(){
> > alert("finish called - communication will now quit");
> > doLMSFinish();
> > }
> >
> > And see when it gets called? The only code in the web page that will call finish() is
> > the onunload handler in the body tag: are you unloading that page in any way?
> >
> > Julian
> >
> > -----Original Message-----
> > From: xerte-bounces at lists.nottingham.ac.uk
> > [mailto:xerte-bounces at lists.nottingham.ac.uk] On Behalf Of Martín Dobovsek
> > Sent: 04 February 2008 17:04
> > To: Xerte discussion list
> > Subject: RE: [Xerte] Scorm 1.2 packaged with Xerte 1.9 doesn´t comunicate with LMS
> >
> > Tenney:
> >
> > I uninstall and reinstall Xerte 1.9
> >
> > I edit from scratch 2 (two) rlo with 2 pages, first one with script:
> >
> > Using Xerte 1.5
> > _level0.LMSSetValue("cmi.core.lesson_status", "browsed");
> >
> > Using Xerte 1.9
> > _level0.setValue("cmi.core.lesson_status", "browsed");
> >
> >
> > Last page with script:
> >
> > Using Xerte 1.5
> > _level0.LMSSetValue("cmi.core.lesson_status", "completed");
> >
> > Using Xerte 1.9
> > _level0.setValue("cmi.core.lesson_status", "completed");
> >
> >
> > Compile each one with Xerte 1.9 and 1.5
> >
> > Both SCO Tested using Advanced Distributed Learning (ADL)
> > Sharable Content Object Reference Model (SCORM®) Version 1.2
> > Test Suite Version 1.2.7 .
> >
> > The result (see log below) shows no data transfer for version 1.9
> >
> >
> > I use the Reload Scorm 1.2 Player ver. 1.2.1 to test both SCO two : the same result:
> > cmi.core.lesson_status doesn´t change using SCO compiled with Xertes 1.9
> >
> > I tested Claroline 1.8.8 with ADL Test suite and was OK.
> >
> > Thanks for your support
> >
> > Martin
> >
> > *********************************************
> >
> > The result ADL log was:
> >
> > Advanced Distributed Learning (ADL)
> > Sharable Content Object Reference Model (SCORM®) Version 1.2
> > Test Suite Version 1.2.7
> > Self Test Log
> > Test Identification Information:
> > Date: Lunes, 04 de Febrero de 2008 02:56:53 p.m.
> > SCO Product:
> > SCO Version:
> > SCO Vendor/Developer:
> >
> > Starting Self Test
> >
> > Loading the Sharable Content Object
> > Attempting to Launch SCO
> > file:///C:\15\scormRLO.htm -------------------->>>>>> Xerte 1.5
> >
> > SCO is searching for the API Adapter
> > SCO was able to find the API Adapter
> >
> > LMSInitialize() has been invoked
> > LMSInitialize() finished successfully
> >
> > LMSGetValue(cmi.core.lesson_mode) has been invoked
> > Value returned from LMS: [normal]
> > LMSGetValue() finished successfully
> >
> > LMSGetValue(cmi.core.lesson_status) has been invoked
> > Value returned from LMS: [not attempted]
> > LMSGetValue() finished successfully
> >
> > LMSSetValue(cmi.core.lesson_status,incomplete) has been invoked
> > LMSSetValue() finished successfully
> >
> > LMSSetValue(cmi.core.session_time,0000:00:03.95) has been invoked
> > LMSSetValue() finished successfully
> >
> > LMSCommit() has been invoked
> > LMSCommit() finished successfully
> >
> > LMSFinish() has been invoked
> > LMSFinish() finished successfully
> >
> > SCO is no longer initialized
> >
> > SCORM 1.2 Run-Time Environment Conformant
> > SCO-RTE1+Mandatory and Optional
> > Features Supported:
> > API Support
> > Find an LMS provided API Adapter
> > Execution State:
> > LMSInitialize()
> > LMSFinish()
> > Data Transfer:
> > LMSGetValue()
> > LMSSetValue()
> > LMSCommit()
> > State Management:
> > None Supported
> > Data Model Support
> > SCORM Run-Time Environment Data Model
> > cmi.core.lesson_mode
> > cmi.core.lesson_status
> > cmi.core.session_time
> >
> > ==========================================
> >
> > Loading the Sharable Content Object
> > Attempting to Launch SCO:
> > file:///C:\19\scormRLO.htm --------------------->>>>> XERTE 1.9
> >
> > SCO is searching for the API Adapter
> > SCO was able to find the API Adapter
> >
> > LMSInitialize() has been invoked
> > LMSInitialize() finished successfully
> >
> > LMSFinish() has been invoked
> > LMSFinish() finished successfully
> >
> > SCO is no longer initialized
> >
> > SCORM 1.2 Run-Time Environment Conformant
> > SCO-RTE1
> > Features Supported:
> > API Support
> > Find an LMS provided API Adapter
> > Execution State:
> > LMSInitialize()
> > LMSFinish()
> > Data Transfer:
> > None Supported
> > State Management:
> > None Supported
> >
> > ==========================================
> >
> >
> > **************************************************************************
> >
> >
> >
> >
> >
> >
> > --- Tenney Julian <Julian.Tenney at nottingham.ac.uk> escribió:
> >
> > > I'm getting it working fine in the ADL test suite 1.2.7.
> > >
> > > Did you re-package the file from scratch?
> > >
> > > -----Original Message-----
> > > From: xerte-bounces at lists.nottingham.ac.uk
> > > [mailto:xerte-bounces at lists.nottingham.ac.uk] On Behalf Of Martín Dobovsek
> > > Sent: 04 February 2008 12:16
> > > To: Xerte discussion list
> > > Subject: RE: [Xerte] Scorm 1.2 packaged with Xerte 1.9 doesn´t comunicate with LMS
> > >
> > > Julian:
> > >
> > > I changed the pages to
> > >
> > > _level0.setValue("cmi.core.lesson_status", "browsed");
> > > _level0.setValue("cmi.core.lesson_status", "completed");
> > >
> > > Now the words "setValue" appears in blue in the Xerte editor.
> > >
> > > In the LMS (Claroline 1.8.8) the status remain unchanged (NOT ATTEMPTED). It seems
> > the
> > > problem persists.
> > >
> > > Thanks for support
> > >
> > > Martin
> > >
> > >
> > > --- Tenney Julian <Julian.Tenney at nottingham.ac.uk> escribió:
> > >
> > > > I changed the implementation to make it consistent with the implementation of the
> > > SCORM
> > > > 2004 in Xerte. Try using these functions:
> > > >
> > > > _level0.getValue(dataElement);
> > > > _level0.setValue(dataElement, value);
> > > >
> > > > Julian
> > > >
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: xerte-bounces at lists.nottingham.ac.uk
> > > > [mailto:xerte-bounces at lists.nottingham.ac.uk] On Behalf Of Martín Dobovsek
> > > > Sent: 04 February 2008 10:07
> > > > To: xerte at lists.nottingham.ac.uk
> > > > Subject: [Xerte] Scorm 1.2 packaged with Xerte 1.9 doesn´t comunicate with LMS
> > > >
> > > > Julian:
> > > >
> > > > Scorm 1.2 packages made with Xerte 1.9 (downloaded 04/02/02008) doesn´t
> communicate
> > > > with
> > > > LMS.
> > > >
> > > > I use
> > > >
> > > > _level0.LMSSetValue("cmi.core.lesson_status", "completed");
> > > >
> > > > in the last page to change the status in the system.
> > > >
> > > > The same .rlo file compiled with Xertes 1.5 function OK: the status is well
> changed
> > > in
> > > > the LMS.
> > > >
> > > > Thanks for support
> > > >
> > > > Martin
> > > >
> > > >
> > > >
> > > > Tarjeta de crédito Yahoo! de Banco Supervielle.
> > > > Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa.
> > > > www.tuprimeratarjeta.com.ar
> > > > _______________________________________________
> > > > Xerte mailing list
> > > > Xerte at lists.nottingham.ac.uk
> > > > http://lists.nottingham.ac.uk/mailman/listinfo/xerte
> > > > _______________________________________________
> > > > Xerte mailing list
> > > > Xerte at lists.nottingham.ac.uk
> > > > http://lists.nottingham.ac.uk/mailman/listinfo/xerte
> > > >
> > >
> > >
> > >
> > > Tarjeta de crédito Yahoo! de Banco Supervielle.
> > > Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa.
> > > www.tuprimeratarjeta.com.ar
> > > _______________________________________________
> > > Xerte mailing list
> > > Xerte at lists.nottingham.ac.uk
> > > http://lists.nottingham.ac.uk/mailman/listinfo/xerte
> > > _______________________________________________
> > > Xerte mailing list
> > > Xerte at lists.nottingham.ac.uk
> > > http://lists.nottingham.ac.uk/mailman/listinfo/xerte
> > >
> >
> >
> >
> > Yahoo! Encuentros.
> >
> > Ahora encontrar pareja es mucho más fácil, probá el nuevo Yahoo! Encuentros
> > http://yahoo.cupidovirtual.com/servlet/NewRegistration
> > _______________________________________________
> > Xerte mailing list
> > Xerte at lists.nottingham.ac.uk
> > http://lists.nottingham.ac.uk/mailman/listinfo/xerte
> > _______________________________________________
> > Xerte mailing list
> > Xerte at lists.nottingham.ac.uk
> > http://lists.nottingham.ac.uk/mailman/listinfo/xerte
> >
>
>
>
> Tarjeta de crédito Yahoo! de Banco Supervielle.
> Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa.
> www.tuprimeratarjeta.com.ar
> _______________________________________________
> Xerte mailing list
> Xerte at lists.nottingham.ac.uk
> http://lists.nottingham.ac.uk/mailman/listinfo/xerte
> _______________________________________________
> Xerte mailing list
> Xerte at lists.nottingham.ac.uk
> http://lists.nottingham.ac.uk/mailman/listinfo/xerte
>
Yahoo! Encuentros.
Ahora encontrar pareja es mucho más fácil, probá el nuevo Yahoo! Encuentros http://yahoo.cupidovirtual.com/servlet/NewRegistration
_______________________________________________
Xerte mailing list
Xerte at lists.nottingham.ac.uk
http://lists.nottingham.ac.uk/mailman/listinfo/xerte
More information about the Xerte
mailing list