init: function () {
var $this = this;
+ var ok = false;
+
+ if (this.fluidbook.settings.scorm_enable && window.initScorm !== undefined) {
+ ok = initScorm();
+ }
+
if (this.fluidbook.settings.scorm_variables.linkstocomplete) {
this.linksToComplete = this.fluidbook.settings.scorm_variables.linkstocomplete.split(',');
}
$this.hideScormLinks();
});
- if (this.fluidbook.settings.scorm_enable && window.initScorm !== undefined) {
- initScorm();
- }
// Mark complete when the user reaches the last page
$(this.fluidbook).on('fluidbook.page.change.end', function () {
- if ($this.fluidbook.currentPage == $this.fluidbook.settings.pages && $this.fluidbook.settings.scorm_complete_on_last_page) {
+ if ($this.fluidbook.settings.scorm_complete_on_last_page && $this.fluidbook.currentPage === $this.fluidbook.settings.pages) {
scormMarkAsComplete();
}
});
},
linksCompleted: function () {
- return (this.linksToComplete.length == 0);
+ return (this.linksToComplete.length === 0);
},
isActive: function () {
return true;
}
- return pipwerks.SCORM.API.isFound;
+ return SCORM_OK;
},
openLinkIfCompleteOrDisplayImage: function (openLink, openImage) {
SCORM_EVENTS_INITED = false;
SCORM_INTERACTIONS_INITED = false;
SCORM_LOCATION_INITED = false;
+SCORM_OK = false;
var _CMI12 = {
'location': 'cmi.core.lesson_location',
console.log('init scorm');
SCORM_INITED = true;
try {
- pipwerks.SCORM.init();
+ if (pipwerks.SCORM.init()) {
+ SCORM_OK = true;
+ }
} catch (e) {
}
- $(document).on('fluidbook.ready', function () {
- scormExit();
- startScormTimer();
- initScormEvents();
- initScormInteractions();
- });
+ if (SCORM_OK) {
+ $(document).on('fluidbook.ready', function () {
+ scormExit();
+ startScormTimer();
+ initScormEvents();
+ initScormInteractions();
+ });
+ }else{
+ console.log('SCORM nok');
+ }
+ return SCORM_OK;
}
function _cmi(key) {
}
function initScormEvents() {
- if (SCORM_EVENTS_INITED) {
+ if (!SCORM_OK || SCORM_EVENTS_INITED) {
return;
}
SCORM_EVENTS_INITED = true;
});
- // Commit data once a minute
+ // Commit data every 5 seconds
setInterval(function () {
fluidbook.networkControl.executeWhenNetwork(function (cb) {
pipwerks.SCORM.save();
}
function scormSaveCurrentPosition(page, maxPage) {
+ if (!SCORM_OK) {
+ return;
+ }
if (page === undefined) {
page = fluidbook.currentPage;
}
}
function finishScorm() {
+ if (!SCORM_OK) {
+ return;
+ }
setSessionTime();
pipwerks.SCORM.save();
pipwerks.SCORM.quit();
}
function scormMarkAsComplete() {
+ if (!SCORM_OK) {
+ return;
+ }
scormExit();
setScormValue('status', "completed");
if (!fluidbook.scorm.manageScore) {
}
function scormExit() {
+ if (!SCORM_OK) {
+ return;
+ }
var v = 'suspend';
if (fluidbook.settings.scorm_force_attempts) {
if (pipwerks.SCORM.version === '1.2') {
}
function scormComplete() {
- scormMarkAsComplete();
- finishScorm();
+ if (SCORM_OK) {
+ scormMarkAsComplete();
+ finishScorm();
+ return;
+ }
setTimeout(function () {
parent.close();
top.close();
}
function getScormValue(elementName) {
+ if (!SCORM_OK) {
+ return null;
+ }
var cmi = _cmi(elementName);
if (cmi == '') {
return null;
}
function setScormValue(elementName, value) {
+ if (!SCORM_OK) {
+ return;
+ }
var cmi = _cmi(elementName);
if (cmi == '') {
return false;
}
function initScormInteractions() {
+ if (!SCORM_OK) {
+ return;
+ }
if (SCORM_INTERACTIONS_INITED) {
return;
}
}
function defineScormInteraction(number, id, type, question, correct_response, weighting) {
-
+ if (!SCORM_OK) {
+ return;
+ }
if (weighting === undefined) {
weighting = 1;
}
}
function getLearnerResponseById(id) {
+ if (!SCORM_OK) {
+ return;
+ }
return getScormValue('cmi.interactions.' + scormIdToN(id) + '.learner_response');
}
}
function displayScormInteraction(id) {
+ if (!SCORM_OK) {
+ return;
+ }
var n = scormIdToN(id);
var now = new Date();
if (SCORM_QUESTIONS[n].timestamp !== null) {
}
function answerScormInteraction(id, learner_response, result, set_latency) {
+ if (!SCORM_OK) {
+ return;
+ }
var n = scormIdToN(id);
var currentTime = Math.round(new Date().getTime() / 1000);
displayScormInteraction(id);
}
function updateInteractionsScore() {
- if (!fluidbook.scorm.manageScore) {
+
+ if (!SCORM_OK || !fluidbook.scorm.manageScore) {
return;
}
var score = 0;
}
function setSessionTime() {
+ if (!SCORM_OK) {
+ return;
+ }
var currentTime = new Date();
var sessionTime;