]> _ Git - fluidbook-toolbox.git/commitdiff
wait #4388 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 1 Apr 2021 17:23:30 +0000 (19:23 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 1 Apr 2021 17:23:30 +0000 (19:23 +0200)
app/Models/Quiz.php
resources/quiz/index.html
resources/quiz/js/main.js

index fa17ca03b175345d3b05d1dc31136d4e188b80eb..eba871bbeebeb9e3466b60731e631b86b2f92341 100644 (file)
@@ -256,9 +256,15 @@ class Quiz extends CubistMagicAbstractModel
             }
         }
 
-        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">
@@ -280,7 +286,13 @@ class Quiz extends CubistMagicAbstractModel
         </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()
@@ -288,6 +300,11 @@ class Quiz extends CubistMagicAbstractModel
         $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;
index 00815481f8fc0435b8b2e0943bd8c935c3f73344..2cd105b3593eb94a0ab04b8b866f5e356ee95d01 100644 (file)
@@ -26,8 +26,7 @@
 <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>
index 446e94a727e160437738250cd2c7baa423e11d8d..227e2f7f018ac13cd59118576b48c0aa667c00e0 100644 (file)
@@ -96,7 +96,7 @@
                     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) {