Is anyone building courses for LearnUpon LMS?

broeme
broeme Community Member Posts: 94 ♪ Opening Act ♪
I've got a client using the LearnUpon LMS, and I'm running into issues when they launch my Lectora courses. I'm publishing to SCORM 1.2 and using the JavaScript title manager. The course appears to import without error, but when launching the course, the content doesn't fully render.



LearnUpon tech support told me when then viewed debugger in Chrome, they detected scripting errors preventing the content from communicating cross-domain. This was a surprise to me that they store the content on a separate domain (Cloudfront) than that of the LMS server. I've created AICC content for cross-domain, but SCORM 1.2 content has always been for same-domain configurations. The LearnUpon LMS doesn't support for AICC so moving in that direction isn't an option. Their tech support further stated:



"The debug points towards line 720 in the “trivantis-toc.js” file. The line reads "top.defaultStatus = "";"

The error its giving is " Uncaught SecurityError: Blocked a frame with origin “[url]https://d3pg1c2bhy6429.cloudfront.net”[/url] from accessing a frame with origin “[url]https://lisaproduction.learnupon.com”[/url]. Protocols, domains, and ports must match." The lisaproduction bit is just because its being launched from my portal you can replace this with your portal name. It also point to some scripting errors in the apiwrapper11.js, and scofunctions.js files"



Has anyone dealt with the LearnUpon LMS before? Specifically, have you resolved the cross-domain permissions issue when using SCORM 1.2 content?



Thanks!

Comments

  • tkswanson
    tkswanson Community Member Posts: 2
    Hi, I noticed your post on here while searching for other issues on the .js files. We do not use LearnUpon, but had the same XDomain issues with our current LMSes (we use two but I cannot mention their name, but one uses Cloudfront also as a hosting network). It is quite common for modern LMSes to use CDNs for storing content on other domains, its not that difficult to get windows speaking to each other with Javascript. Unfortunately the .js files with Lectora do not have that in mind, so unlike other tools (we also use Captivate), their javascript is more aware of other windows residing on other domains. We found that you have to remove the "top." references from the files in Lectora, and that worked. I would suggest that you start by trying to remove the top., references in the code and use code like window.parent, or else you can place the code in an exception block, like



    try

    {

    top....

    }

    catch(yourexception)

    {

    ; // nothing to do here, just pass by the error that the browser catches by trying to access top.

    }



    I hope this helps. On a side note, maybe you know being a Lectora user, is it possible to customise the completion statuses, to send "completed" or "passed" depending on the result, rather than "failed" and "passed". We don't want our learners failing, just completing but awarding them more points if they pass. Its a gaming idea that we have, but I am not able to find information on that on the forums here.
  • broeme
    broeme Community Member Posts: 94 ♪ Opening Act ♪
    Thanks a lot for the suggestion. I recently received some additional advice from the LearnUpon LMS tech support (which has been very responsive and good to work with). They stated nearly the exact same thing regarding the references to "top." in the code. If I understand you correctly, the fix is a post-publish process. I should replace all "top." instances with "window.parent" using a text editor like Notepad++? If so, a sample result would be as follows: The line in the trivantis-toc.js file 'top.defaultStatus =""; becomes 'window.parent.defaultStatus =""; Am I on the right track?



    Regarding your question about status, yes, you can control what value is sent to the LMS. As a matter of fact, Lectora requires the developer to add actions to control this functionality, it's not automatic. The variable used to communicate completion status in AICC and SCORM 1.2 is "AICC_Lesson_Status". Based on my experience, an AICC course require the value "p" to complete the course in the LMS. SCORM 1.2 uses the value "completed". SCORM 2004 is slightly different in its use of completion and status variables. The variable AICC_Lesson_Status is interpreted by SCORM 2004 as "cmi.success_status". SCORM 2004 looks for the final completion status on a variable called CMI_Completion_Status. So, on the page that you want the course to complete, simply add an action or two:



    AICC

    Trigger -> On Show

    Action -> Modify Variable

    Target -> AICC_Lesson_Status

    Type -> Set Equal To

    Value -> p



    SCORM 1.2

    Trigger -> On Show

    Action -> Modify Variable

    Target -> AICC_Lesson_Status

    Type -> Set Equal To

    Value -> completed



    SCORM 2004

    Trigger -> On Show

    Action -> Modify Variable

    Target -> AICC_Lesson_Status

    Type -> Set Equal To

    Value -> passed



    and



    Trigger -> On Show

    Action -> Modify Variable

    Target -> CMI_Completion_Status

    Type -> Set Equal To

    Value -> completed
  • broeme
    broeme Community Member Posts: 94 ♪ Opening Act ♪
    That did it! I replaced the "top." with "window.parent." in apiwrapper.js, scofunctions.js, trivantis-scroll.js, trivantis-toc.js, and trivantis.js. The course now works in same domain environment (SCORM Cloud) and the LearnUpon LMS. Thanks!
  • tkswanson
    tkswanson Community Member Posts: 2
    Great, glad that sorted the issue for you! also thank you very much for the detailed response on the completion settings. We have not even found it to be that clear in any posts here or online guides, that has been VERY useful and set us on the right direction. We have not gotten to look at 2004 right now, but that is also very useful to know as that would most certainly be our next problem. Great.