Forum Discussion
SetStatus not working for SCORM 1.2 completion - Storyline 360 HTML5 Output
Hello there,
Well yes, it's a bit shame that Scorm 1.2 manual set completion status is still overriden by default Storyline exit behaviour.
It's a shame, because there's a really simple workaround.
Javascript piece is standard, you put it under "execute javascript":
var player = GetPlayer();
function findLMSAPI(win) {
if (win.hasOwnProperty("GetStudentID")) return win;
else if (win.parent == win) return null;
else return findLMSAPI(win.parent);
}
var lmsAPI = findLMSAPI(this);
lmsAPI.SetScore(player.GetVar("points"), 100, 0);
SCORM_CallLMSSetValue("cmi.core.lesson_status", "completed")
This one reports both score and status as completed. In score there's variable passed.
But we all know that bit of code and it sadly doesn't work.
Workaroung is simple.
Publish your course with slide tracking option*.
Go to published course folder, open lms/lms.js
find line 78, and more particulary this piece of code (btw if you are not familiar with javascript, the // means comment, script will ignore that part, it's for your info use only):case "BW_ClosePlayer":
// This is an important milestone, save the data - my info: that's original comment of devs ReportStatus(); my info: that-s line 78 which you are looking for LMSCommit();lmsAPI.ConcedeControl() my info: yup, there's colon missing by devs themselves.break;So you probably guessed it already, you just put // before ReportStatus(); function. It will stop storyline from reporting completion status to the LMS. Since we are doing it manually, it's perfectly fine for us.
* - I can't remember now, but if there is a scenario, that you want to put your manual status on the last slide (like 20 of 20) and you have option to track by slide numbers, it will still override the completion status. You can bypass this in one of two ways:
1. Just add somehwere blank slide that will not be visited by learner (nice if you have one, big course)
2. After publishing, go to html5/data/js/data.js, find "viewThreshold":x, and substitue your definied earlier slide number by any greater value. This way storyline will never reach the final slide to report status.
Related Content
- 10 months ago
- 11 months ago
- 3 months ago