Pulling first name from LMS

Apr 19, 2017

Hi all - I'm wondering if anyone might be able to put together a step-by-step guide as to how to set up a variable / javascript function for this? (i.e. pulling a user's first name from the LMS).

I've read through this discussion (https://community.articulate.com/discussions/articulate-storyline/retrieve-lms-user-name-as-variable) but I'm very green and have had no experience with javascript functions (and only basic variables).

Any help for dummies would be amazing.

Thanks,

Sal

44 Replies
James Bonney

Hi All,

The original code posted by Matthew works in Flash/HTML5 fallback, but not with HTML5/Flash fallback:

var lmsAPI = parent;
var name = lmsAPI.GetStudentName();
var nameArray = name.split(", ");
var firstName = nameArray[1];
var player = GetPlayer();
player.SetVar('first_name',firstName);

Any idea on how to get this working with HTML5/flash fallback?

Thanks

james

Chris Pim

I think this works in Moodle - solved by someone else a couple of weeks ago.

---------------------------

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);

-------------------------------------------

Ilana Dubovi

Hi all,

I've read through this discussion. 

Can you please help me to set up an execute  javascript  for transmitting score from HTML5 to moodle.

I've been using for Flash the following code, but seems that is not working with HTML5 publishing  only:

/*Get player to reference*/


var player = GetPlayer();

/*get LMS API*/

var lmsAPI = parent;

/*set score; the first number is the score*/

lmsAPI.SetScore(player.GetVar("zScores"), 100, 0);

/*set status; possible values: "completed","incomplete", "failed", "passed"*/

 


With thanks,

Ilana

Kevin Brake

I have revised the code a little with a few improvements.  ...and, I can confirm this code works with Saba LMS and Moodle.  The attached file is for Storyline 360, but the code itself should work with Storyline 2 files.  Published setting format: HTML5 with Flash fallback and also works with HTML5 only setting!

Be sure to create a variable named username in Storyline.

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 full_name = array[1] + ' ' + array[0];
var first_name = array[1];

// Remove blank space from the front of variable
full_name = full_name.trim();
first_name = first_name.trim();

// Remove blank space from the end of variable
full_name = full_name.replace(/\s+$/, '');
first_name = first_name.replace(/\s+$/, '');

// If value exists change variable, if not change name to participant
if (first_name) {
player.SetVar("username", first_name);
}else{
player.SetVar("username", "Participant");
}

//Modified and tested by Kevin Brake

The code above would be:  Execute JavaScript, When timeline starts

Kevin Brake

This may work, untested... let me know:

// Capture first initial from a variable
full_name = full_name.str.charAt(0);
first_name = first_name.str.charAt(0);

or maybe this one:

// Capture first initial from first and last name
var last_name = array[2];

first_name = first_name.substring(0, 1);
last_name = last_name.substring(0, 1);

 

Joseph Francis

This works with LMS' which adhere to AICC/SCORM standards, and are populating the field where the user's name is expected (retrieved using cmi.core.student_name) with the user's full name. The prescribed format is Last Name, First Name, Middle Initial, with the last name and the first name separated by a comma. Spaces in the name must be honored.

Glenda DeHoff

I am struggling with using JavaScript to capture the user's first and last names from the LMS (Vector Solutions). They store the user name as "Firstname, Lastname, Middle". This is the code I am using but it is not working. I was able to insert the date using JavaScript.

var lmsAPI = parent;
var name = lmsAPI.GetStudentName();
var nameArray = name.split(",");
var lastName = nameArray[1];
var firstName = nameArray[0];
var player = GetPlayer();
player.SetVar('first_name',firstName);
player.SetVar('last_name',lastName);

Lucio P

Hi Glenda,

From what I see in your code, you must declare the "player" variable before making the API call.

Try this:

var player = GetPlayer();
var StudentNameIn = lmsAPI.GetStudentName();
var array = StudentNameIn.split(',');
var StudentName = array[1] + ' ' + array[0];
player.SetVar("StudentName", StudentName);

If you wish to split the name in two variables, you may use your approach instead of "StudentName".