Forum Discussion
lmsAPI Functionality in HTML5 Output
Hey all,
I've been searching through the forums and haven't been able to find anything solid. I'm using Storyline 360, outputting to both HTML5 and Flash to cover my bases, since the audience doesn't have dedicated machines that they are taking this from.
I'm relying heavily on external Javascript that I wrote, which I have tested thoroughly in the Flash version, and it works fine. But when it comes to the HTML5 version, it stops working. I've proven that I'm able to get into the Javascript functions, like I would expect, but it appears that lmsAPI is no longer available to the course.
Are there any similar functions to those of the lmsAPI functions in the HTML5 output?
Specifically, I'm looking for a way to do the following in HTML5:
- Get the StudentID from the LMS.
- Get the StudentName from the LMS.
- Manually call SetStatus("completed"); to pass a completion to the LMS on the last page of the course.
- karunareddygariCommunity Member
Thanks Adam! you saved my day.
Happy to hear that Steve and thanks for the update!
- JoLamontagne-8fCommunity Member
Hi Matt, hope you're well!
I've been trying to use this when publishing html5 only via scorm2004.
I keep getting a message about blnstatuswasset = false.
Do I need to do anything different to this as I'm using scorm2004? Xxx
- ChrisPerez-f9f6Community Member
I've been following several threads on this topic after trying to get a student's first name to appear in a Storyline 360 course with Cornerstone LMS. I'm publishing in HTML Only using SCORM 2004.
The code I've culled from various threads that almost works is:
var player = GetPlayer();
function findLMSAPI(win) {
// look in this window
if (win.hasOwnProperty("GetStudentID")) return win;
// all done if no parent
else if (win.parent == win) return null;
// climb up to parent window & look there
else return findLMSAPI(win.parent);
}
var lmsAPI = findLMSAPI(this);
var myName = lmsAPI.GetStudentName();
var array = myName.split(',');
var newName = array[1] + ' ' + array[0];
player.SetVar("newName", newName);When I insert the variable onto a page, "undefined" is right before the user's name (first and last).
I've tried code almost identical to the above to get just the first name, but it yields nothing in the variable.
var player = GetPlayer();
function findLMSAPI(win) {
// look in this window
if (win.hasOwnProperty("GetStudentID")) return win;
// all done if no parent
else if (win.parent == win) return null;
// climb up to parent window & look there
else return findLMSAPI(win.parent);
}
var lmsAPI = findLMSAPI(this);
var name = lmsAPI.GetStudentName();
var nameArray = name.split(", ");
var firstName = nameArray[1];
var lastName = nameArray[0];
var player = GetPlayer();
player.SetVar('first_name',firstName);
player.SetVar('last_name',lastName);Anyone have any ideas why this woulnd't be working?
- AdamTrosperCommunity Member
Hi Chris,
I wrote this original code to work with SCORM 1.2, not SCORM 2004.
I don't claim to know every difference between the two, but this might help. My guess is that the Student Name is part of an multi-part object that is getting pulled in.
Have you considered using split/join to remove the "undefined"? For example:
var firstName = nameArray[1].split('undefined').join('');
var lastName = nameArray[0].split('undefined').join('');- ChrisPerez-f9f6Community Member
Hi Adam - thanks for the reply. I will take a look on Monday. I wasn't able to get the array[1] to work at all, but I'll check and report back.
- MichaelMillikenCommunity Member
I just wanted to say thank you to Chris and Adam, This has helped me big time!
- ChrisPerez-f9f6Community Member
Just wanted to report in - this is the working code for Cornerstone LMS using HTML5 and SCORM 2004 publishing in Storyline 360 if you just want the first name (variable in SL would be 'newName'):
var player = GetPlayer();
function findLMSAPI(win) {
// look in this window
if (win.hasOwnProperty("GetStudentID")) return win;
// all done if no parent
else if (win.parent == win) return null;
// climb up to parent window & look there
else return findLMSAPI(win.parent);
}
var lmsAPI = findLMSAPI(this);
var myName = lmsAPI.GetStudentName();
// remove last name from array
var array = myName.split(' ');
var newName = array[0];
player.SetVar("newName", newName); - JoLamontagne-8fCommunity Member
Following on from this thread, is there a way to call the student's line manager information from the LMS? I want to set up an auto generated email to the line manager for users that fail an assessment 3 times.
I'll be using the first set of coding to get the student information from the LMS. Wondering if there's an obvious way of generating their line manager too?
xxx
- PaulSchneiderCommunity Member
No. This information isn't part of what SCORM sends so there is no standard way to do this. IF you LMS provided an API (or a 3rd party tool that works with your LMS data) that you could query you could send the student ID (which you can get) - query the API and then pull that info back in.
FYI this is something that you can't (and can do as described) with pretty much every authoring tool that supports Javascript. It isn't a restriction (or otherwise) of Storyline.
- SameekshaMis875Community Member
Hi Adam Trosper,
I am trying to call LMSCommit from storyline 360 but nothing is happening? Actually we are trying to achieve a functionality where the learner will get a popup if the internet connection is lost. Currently even if the internet connection is lost, the learner is able to move to teh next slides and when they close the course they don't see the completed status on LMS.
Please help me with this.