One idea that comes to mind, you might be able to accomplish this with Javascript.
Here on the forum you'll find JS code to grab the username/ID of the student from your LMS at the beginning of the course. Perhaps JS could be used to record that ID in an external reference.
Perhaps you can hunt down a JS coder that can help with this:
Grab the ID from LMS
Check the external source/db if the ID is there already and if so, send a trigger to the course to exit.
If the ID is not there, allow the user to continue.
When the user completes the course, or very near the end, JS could be used to add that ID to the external reference table so now they would not be able to repeat it.
My meager JS skills could not do this, but I'm sure there are freelancers that could help get it done quickly ($).
Without resorting to JavaScript, you might accomplish this with a single custom variable. Once set, the custom variable should be saved to the suspend_data field of SCORM and readable when the course is opened again.
Here's what comes to my mind.
Create a custom T/F variable, let's say "completed_once" initially set to "false"
On the last slide, whatever represents "completing" the course, set "completed_once" to "true"
On the first slide, create a layer above the base layer and let's name it "completed"
On the "completed" layer, add some text saying something about the course being completed already.
Also, create a trigger to hide the Next button on the base layer when the timeline starts.
On the base layer, create a trigger to show "completed" layer when the timeline starts if "completed_once" is "true"
This was of immediate interest to me, I was wondering how the course would know to keep the T/F variable set to TRUE when you started the course a second time. Restarting a completed course resets all the variables, in my experience, so I was hoping this would work..
I uploaded this to our LMS and it does not retain the TRUE status of the flag once restarted. Is there an additional step somewhere for this?
Attached. This was published as SCORM 2004 4th Edition (all our courses are published on this setting).
You are correct - I didn't know that those types of variables are reset once completed. I wasn't able to open your file since I'm still using SL2, but created my own prototype.
I did end up using a simplified JavaScript to use the built in status values from SCORM and Rustici to retrieve the current status, show a layer of text, and disable the Next button.
Here's the pertinent code that must run before the trigger to show the layer if status returned is "completed." I've also attached the file.
var player = GetPlayer();
// get LMS API var lmsAPI = parent;
// get current completion status var getStatus = lmsAPI.SCORM2004_GetCompletionStatus();
// variable in Storyline set to variables in JS above player.SetVar("completed_status", getStatus);
I loaded story this to our SAP Litmos LMS and it does not give any status other than "Null while offline". I really wanted this to work, I have so many places I can utilize it.
Hmm, that's odd. I wonder if it's because I published to SCORM 2004 4th Edition, instead of 3rd?
I uploaded to our SumTotal/GeoMaestro LMS and it worked.
Did you go to the 2nd slide to complete the course, close it, and try to return? I only put that variable on the main stage to see what is going on and the "Null while offline" was what I put in by me as default text when creating the variable, but I would have thought on first run it would return something like "incomplete."
I just tried from a fresh login to our LMS and I'm experiencing the opposite effect, kind of.
I'm getting a "completed" status on first try, so the Next button is being disabled immediately on first attempt. Not sure how/why that is, but I'm assuming something similar in JavaScript should work.
8 Replies
One idea that comes to mind, you might be able to accomplish this with Javascript.
Here on the forum you'll find JS code to grab the username/ID of the student from your LMS at the beginning of the course. Perhaps JS could be used to record that ID in an external reference.
Perhaps you can hunt down a JS coder that can help with this:
My meager JS skills could not do this, but I'm sure there are freelancers that could help get it done quickly ($).
Without resorting to JavaScript, you might accomplish this with a single custom variable. Once set, the custom variable should be saved to the suspend_data field of SCORM and readable when the course is opened again.
Here's what comes to my mind.
Hope that helps.
Scott,
This was of immediate interest to me, I was wondering how the course would know to keep the T/F variable set to TRUE when you started the course a second time. Restarting a completed course resets all the variables, in my experience, so I was hoping this would work..
I uploaded this to our LMS and it does not retain the TRUE status of the flag once restarted. Is there an additional step somewhere for this?
Attached. This was published as SCORM 2004 4th Edition (all our courses are published on this setting).
Hi Jerry,
You are correct - I didn't know that those types of variables are reset once completed. I wasn't able to open your file since I'm still using SL2, but created my own prototype.
I did end up using a simplified JavaScript to use the built in status values from SCORM and Rustici to retrieve the current status, show a layer of text, and disable the Next button.
Here's the pertinent code that must run before the trigger to show the layer if status returned is "completed." I've also attached the file.
I loaded story this to our SAP Litmos LMS and it does not give any status other than "Null while offline". I really wanted this to work, I have so many places I can utilize it.
Hmm, that's odd. I wonder if it's because I published to SCORM 2004 4th Edition, instead of 3rd?
I uploaded to our SumTotal/GeoMaestro LMS and it worked.
Did you go to the 2nd slide to complete the course, close it, and try to return? I only put that variable on the main stage to see what is going on and the "Null while offline" was what I put in by me as default text when creating the variable, but I would have thought on first run it would return something like "incomplete."
I just tried from a fresh login to our LMS and I'm experiencing the opposite effect, kind of.
I'm getting a "completed" status on first try, so the Next button is being disabled immediately on first attempt. Not sure how/why that is, but I'm assuming something similar in JavaScript should work.
Sorry it wasn't as simple as I first assumed.
Yes, I navigated through the slides and exited normally. My LMS recorded the course as Complete. But restarting there was no difference. :(
This discussion is closed. You can start a new discussion or contact Articulate Support.