}
}
- file_put_contents($dest . '/data.js', 'var DATA=' . json_encode($this->getData()) . ';');
+ $data = $this->getData();
+
+ $json = json_encode($data, JSON_THROW_ON_ERROR);
+
+ file_put_contents($dest . '/data.js', 'var DATA=' . $json . ';');
if ($this->getAttribute('scorm')) {
+ $scorm_js = '<script src="js/libs/scorm/apiwrapper.js"></script>
+<script src="js/scorm.js"></script>';
$title = htmlspecialchars($this->getAttribute('title'));
file_put_contents($dest . '/imsmanifest.xml', '<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2" identifier="MANIFEST-90878C16-EB60-D648-94ED-9651972B5F42" xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd">
</resource>
</resources>
</manifest>');
+ } else {
+ $scorm_js = '';
+ unlink($dest . '/js/scorm.js');
+ unlink($dest . '/js/libs/scorm/apiwrapper.js');
}
+
+ file_put_contents($dest . '/index.html', str_replace('$SCORM_JS', $scorm_js, file_get_contents($dest . '/index.html')));
}
public function getData()
$data = $this->getPageData();
$d = $data->getRawData();
+ $unset = ['banner', 'logo'];
+ foreach ($unset as $item) {
+ unset($d[$item]);
+ }
+
// Create data.js
$d['translations'] = [];
$tid = $data->get('translation', 1) ?? 1;
<script src="js/libs/jquery.scrollTo.min.js"></script>
<script src="js/libs/gsap/TweenMax.min.js"></script>
<script src="js/libs/gsap/jquery.gsap.min.js"></script>
-<script src="js/libs/scorm/apiwrapper.js"></script>
-<script src="js/scorm.js"></script>
+$SCORM_JS
<script src="js/main.js"></script>
</body>
</html>
countQuestions++;
}
var multipleClass = question.multiple ? ' multiple' : '';
- var questionHtml = '<section class="question' + multipleClass + '" data-count="' + (question.count_for_score?'1':'0') + '" data-q="' + qn + '" data-min-score="' + question.min_score + '" data-type="' + question.type + '">';
+ var questionHtml = '<section class="question' + multipleClass + '" data-count="' + (question.count_for_score ? '1' : '0') + '" data-q="' + qn + '" data-min-score="' + question.min_score + '" data-type="' + question.type + '">';
questionHtml += '<div class="label"><h3>' + sprintf(getTranslation('question'), qn) + '</h3> ' + question.question + '</div>';
questionHtml += '<div class="answers"></div>';
if (question.multiple) {
var questionCorrection = question.explaination;
if (questionCorrection === '') {
var c = [];
- $.each(question.answers,function (kk, answer) {
- if (answer.correct==1) {
+ $.each(question.answers, function (kk, answer) {
+ if (answer.correct == 1) {
c.push(answer.answer);
}
});
$.each(question.answers, function (aa, answer) {
var a = $('<div class="answer-holder"><div class="answer" data-a="' + an + '">' + answer.answer + '</div></div>');
// Set correct tag
- var correct = answer.correct==1 ? 1 : 0;
+ var correct = answer.correct == 1 ? 1 : 0;
correctCount += correct;
$(a).find('.answer').attr('data-correct', correct);
$(holder).append($(a));
$(document).on('quizinit', function (event, state) {
init(state);
});
- initScormEvents();
+ if (DATA.scorm) {
+ initScormEvents();
+ } else {
+ SCORM = false;
+ $(document).trigger('quizinit', {q: 1});
+ }
resizeContainer();
resize();
}
function completed() {
updateScore();
- setSCORMScore(score, $("section.question").length, 0);
- setScormValue('cmi.core.lesson_status', 'completed');
- setSCORMLocation({q: 1});
+ if (DATA.scorm) {
+ setSCORMScore(score, $("section.question").length, 0);
+ setScormValue('cmi.core.lesson_status', 'completed');
+ setSCORMLocation({q: 1});
+ }
var passed = checkScore();
if (logAttempts) {