Dynamic Exam Content

Jun 07, 2019

Hello all,

I am new to authoring tools, SCORM, xAPI and LMS's and I have a question about dynamic content. I am trying to design a course with 12 modules. After each module I would like the user to provide 2 pieces of information (2 short strings) for each module in the course. Is it possible to have the provided information appear in an expanding table as the course progresses. I.e., after the 5th module of the course, could I present them with a table that contains the information they have provided up to that point in the course?

I'm concerned that to do something like that I would need to export a cvs from the LMS and have a separate variant of my course for each unique user, which is not scalable.

1 Reply
Robert Browne

Hello people of the future,

If you're here because you are having a similar problem I'll share my own work around.

Any specific user data collected through freeform questions, quizzes or exams is fed into the LMS. This information can be manually retrieved from the LMS and then manually added to new SCORM/xAPI authored content. Due to time constraints I have a messy but viable solution that I have to settle for and an idea for a more long-term, scaleable solution for the future.

Lets say user 1 submits Red as her favorite colour as part of a question, User 2 submits Green, etc etc. What I have done is create a feedback module with a general 1st slide. I then create a user specific slide with their information on it, or even a user specific quiz on it, for each enrolled student who has submitted their favourite colour, lets label them, s1, s2, s3 ... sX-1.

Using JavaScript I can grab the user ID of the person logged in, which is their unique email address and set it as a variable in Articulate. I then create a trigger event for pressing/swiping next for each student enrolled. So, IF userID == s1, THEN jump to Slide s1. This is a pain for a number of reasons. If there are 50 students then the course admin needs to grab 50 pieces of LMS data for those students, plug it into 50 student slides, create 50 custom swipe triggers and finally then collecting the data. Its not great but it works.

The better way that I don't have time to figure out is to POST and GET the student data into an SQL database. That was you can use the userID to query the information you need into a single slide instead of having 50 of them. I've seen threads using AJAX, JQuery and PHP for it and I'm sure I can figure it out given time. For demo purposes though, I'll have to use the messy method.

Hope this helps somebody, I'll post the JavaScript i'm using below for getting the username ("newName") and ID ("myID")

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

var myID = lmsAPI.GetStudentID();
player.SetVar("myID", myID);

This discussion is closed. You can start a new discussion or contact Articulate Support.