Not signed in (Sign In)

Vanilla 1.1.4 is a product of Lussumo. More Information: Documentation, Community Support.

Welcome Guest!
Want to take part in these discussions? If you have an account, sign in now.
If you don't have an account, apply for one now.
    • CommentAuthoralway
    • CommentTimeJul 10th 2008
     
    I am trying to get a course to work in the Docebo and Plateau? LMS systems. We have been able to get it to work in Moodle. When it opens up in Docebo it just exits and when it opens in Plateau (not sure if this is what it is called because we don't have access to the back end of the site.) It doesn't run any of the functions.

    We debugged it on Docebo and on Docebo it finds the Scorm version but when it goes to find the API it gives the debug message "API: [Object, object]


    Unfortunately we have to use the bookmarking feature in Scorm with this project and below is the code that I modified from one of Philip's examples. Please let me know if you have any ideas of why this is not working?

    Thanks so much, I don't know how we could have done this project with out the Scorm Classes and Wrapper.


    Actionscript code
    ////////////////////-------------------SCORM---------------------/////////////////////////
    public function scormInit():void {
    //debugPanel.appendText("Run Scorm Function");
    scorm = new SCORM();
    lmsConnected = scorm.connect();
    if (lmsConnected) {
    lessonStatus = scorm.get("cmi.core.lesson_status");
    if (lessonStatus == "completed" || lessonStatus == "passed") {
    //Course has already been completed.
    scorm.disconnect();
    setStartPage("802");
    debugPanel.appendText("Lesson Completed");

    } else {
    //Must tell LMS course has not been completed yet.
    success = scorm.set("cmi.core.lesson_status", "incomplete");
    debugPanel.appendText("Lesson Incomplete");
    //If scorm.set was successful, perform other actions
    if (success) {

    //Get the bookmark from the LMS, if available
    var lesson_location:String = scorm.get("cmi.core.lesson_location");
    debugPanel.appendText(lesson_location);
    if (lesson_location != null && lesson_location != "") {

    //Since your bookmark is a number, you need to convert it from string
    //bookmark = Number(lesson_location);
    setStartPage(lesson_location);


    } else {

    //Go to your default first frame
    xmlChapter = 0;
    //specify starting page
    currentPage = 0;

    debugPanel.appendText("NO Lesson Location");
    }
    }
    }
    } else {
    trace("Could not connect to LMS.");
    debugPanel.appendText("Could not connect to LMS.");
    }
    }
    function scormCompletion():void {
    success = scorm.set("cmi.core.lesson_status", "completed");
    scorm.disconnect();
    lmsConnected = false;
    debugPanel.appendText("scorm completed");
    }

    function setBookmark(pageNumberID:Number):void {
    bookmark = pageNumberID;
    scorm.set("cmi.core.lesson_location", pageNumberID.toString());
    scorm.save();
    debugPanel.appendText("SET Bookmark");
    }

    function removeAlert(event:MouseEvent):void {
    TweenLite.to(alert, 1, {autoAlpha:0});
    }
    function showAlert():void {
    TweenLite.to(alert, .5, {autoAlpha:1});
    TweenLite.to(alert, 1, {delay:1, autoAlpha:0, overwrite:false});
    swapChildren(alert, getChildAt(numChildren -1));
    }

    function setStartPage(myBookMark:String):void {
    var myNewNum:Number = Number(myBookMark.slice(0, 1));
    var myNewNum2:Number = Number(myBookMark.slice(1, 3));
    xmlChapter = myNewNum-1;
    currentPage = myNewNum2-1;
    //debugPanel.appendText("Start Page");
    firstButton = false;
    //trace(highestVisitedPage);



    }
    • CommentAuthorphilip
    • CommentTimeJul 11th 2008
     
    "API: [Object, object]" means the SCORM API was found. That's a good sign. :)

    I don't see any problems with the code. Maybe you have security issues related to the server or location of the content files? Cross-site scripting is much trickier these days, and LMSs often place content on dedicated servers.

    Try editing your SWF's security settings and see if it makes a difference.

    allowScriptAccess = "always"

    http://www.adobe.com/devnet/flash/articles/external_interface_02.html
    http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html (search page for "allowscriptaccess")

    - philip
    • CommentAuthoralway
    • CommentTimeJul 15th 2008
     
    Thanks for your comment. I put the allowScriptAccess = "always" in the HTML and I also put the Security.allowDomain("*") in the flash. I understand that it isn't the best to use wildcards but I just wanted to see if it worked.

    Here is what we are getting now. I tried using the Firebug console but had to resort to having it use javascript alerts instead.

    Here is what comes up now.

    "Initializing SCORM class. Checking dependencies: ExternalInterface.available evaluates true. SCORM.isAvailable() evaluates true. SCORM class file ready to go! :)
    pipwerks.SCORM.connect() called from class file
    connection.initialize called.
    SCORM.API.find: SCORM version 1.2 was specified by user, but API cannot be found.
    SCORM.API.find: Error finding API. Find attempts: 1. Find attempt limit: 500
    API.get failed: Can't find the API!
    SCORM.connection.initialize failed: API is null.

    Any ideas why this would be happening?

    Thanks so much for your help,
    Alan
    • CommentAuthorphilip
    • CommentTimeJul 15th 2008
     
    the diagnostic info basically says that all your files are present and working fine, but for some reason the SCORM API isn't being detected.

    what's strange (to me) is that your previous post said the API was found correctly, and your latest post says it isn't. hmm... have you made any other changes to the code besides the security settings?
    • CommentAuthoralway
    • CommentTimeJul 15th 2008
     
    Sorry, the problem is that we are testing this on two different LMS' Docebo and Plateau. We are testing it out on Docebo because we have to go through a third-party to encrypt and upload the SCO onto the Plateau LMS. It is a headache believe me. So we thought that if we could get it to work on Docebo that it would work in Plateau. The last information is from Plateau and the debug info below is from Docebo.

    In Internet Explorer we get this when it tries to find the API in Plateau. The code above is from Firefox.
    API: com.plateausystems.elms.client.applet.scorm.PlateauSCORMAPI[panel0,0,0,1x1,layout=java.awt.FlowLayout]

    SCORM.connection.initialize failed.

    Error code: 101
    Error info: General Exception
    pipwerks.SCORM.init() failed.

    Error code: 101
    Error info: General Exception
    __connectionActive: false


    This is the code we get from Firefox using the Docebo LMS

    "
    Initializing SCORM class. Checking dependencies: ExternalInterface.available evaluates true. SCORM.isAvailable() evaluates true. SCORM class file ready to go! :)
    pipwerks.SCORM.connect() called from class file
    connection.initialize called.
    SCORM.API.find: API found. Version: 1.2
    API: [object Object]
    POST http://www.woundcme.org/doceboLms/modules/scorm5/soaplms.php?op=Initialize 320msScormApi.js (line 372)
    __connectionActive: true
    SCORM.data.get(cmi.core.entry) failed. Error code: 0 Error info: No error
    SCORM.data.get(cmi.core.entry) value:
    public function get returned:
    SCORM.data.get(cmi.core.lesson_status) value: completed
    public function get returned: completed
    "

    I put this code in and another code in to test for the entry property.
    var entryB:String = scorm.get("cmi.core.entry");
    debugPanel.appendText(entryB);

    I also put in this code to test for the External Interface.
    public function extint_test() {
    isAvailable = ExternalInterface.available;
    debugPanel.appendText(String(isAvailable));
    }

    I changed this value to false. But maybe it was changed before.
    handleCompletionStatus: false,


    any ideas?

    Thanks for your help.
    • CommentAuthoralway
    • CommentTimeJul 29th 2008
     
    So we got it to work. However, we ended up not using your classes. For some reason the javascript file wasn't working with this LMS. Also, it was setting it to complete from the start instead of setting it to incomplete. I changed it to check for "not attempted" and then it worked to set it to incomplete.

    FYI.
    • CommentAuthorphilip
    • CommentTimeJul 29th 2008
     
    ok, thanks for the info. I plan to install Docebo on a test server someday and try it out myself. :)