]> _ Git - fluidbook-toolbox.git/commitdiff
wip #5319 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 28 Jun 2022 15:40:55 +0000 (17:40 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 28 Jun 2022 15:40:55 +0000 (17:40 +0200)
app/Jobs/ElearningMediaDownload.php
app/Jobs/ElearningPackageDownload.php
app/Jobs/QuizDownload.php
app/Models/Quiz.php
resources/elearningpackage/js/app.js
resources/quiz/js/app.js
resources/scorm/scorm.js

index b6c08a7969c54f804c77a736a9058cd003f79744..7459a699b753316b396e0b948e0118bde4aa2be8 100644 (file)
@@ -32,7 +32,7 @@ class ElearningMediaDownload extends DownloadBase
 
             try {
                 if ($this->action === 'scormcloud') {
-                    $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->entry->id);
+                    $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->entry->id, true);
                     $body .= "<br><br>";
                     $body .= __('Le media peut être testé sur SCORM Cloud : <a href=":url">:url</a>', ['url' => $scormURL]);
                 }
index d5de9a2d8d2df3e22ebeaa7daf06e90f9055c353..23b5fcaf000aa38a42c52f4068c4acdef2f3abd9 100644 (file)
@@ -15,7 +15,7 @@ class ElearningPackageDownload extends DownloadBase
     {
         try {
             $compilepath = $this->entry->getFinalPath();
-            $this->entry->compile($compilepath,$this->user);
+            $this->entry->compile($compilepath, $this->user);
 
             $fname = $this->_fname();
             $dest = Files::mkdir(storage_path('app/public/elearningpackage/download/')) . $fname;
@@ -32,7 +32,7 @@ class ElearningPackageDownload extends DownloadBase
 
             try {
                 if ($this->action === 'scormcloud') {
-                    $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->entry->id);
+                    $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->entry->id, true);
                     $body .= "<br><br>";
                     $body .= __('Le package peut être testé sur SCORM Cloud : <a href=":url">:url</a>', ['url' => $scormURL]);
                 }
index 6b149dd0d7cc5f12d94bd396ebc274c12bd1341f..f9cd1b03945c30f6af30c5efe8d39245d6a19281 100644 (file)
@@ -32,7 +32,7 @@ class QuizDownload extends DownloadBase
 
             try {
                 if ($this->action === 'scormcloud') {
-                    $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->entry->id);
+                    $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->entry->id, true);
                     $body .= "<br><br>";
                     $body .= __('Le package peut être testé sur SCORM Cloud : <a href=":url">:url</a>', ['url' => $scormURL]);
                 }
index dbc03bcbdadc7f65ef0bc3d1f65a94fada63a443..9c420632600124e8133a30ea93ab4f1830d7b335 100644 (file)
@@ -242,32 +242,6 @@ class Quiz extends ToolboxModel
      */
     public function compile($dest, $forceScorm = false, $user = null)
     {
-        /*
-
-         $defaultModuleContent = ['content_title' => '', 'complete_when_opened' => false, 'mandatory' => true,
-             'quiz_id' => '', 'fb_id' => '', 'audio_id' => '', 'pdf_id' => '', 'video_id' => ''];
-
-
-
-         $modules = [];
-
-         foreach ($this->contents as $id => $content) {
-             $m = $this->_compileModule($id, array_merge($defaultModuleContent, $content), $vdir, $user);
-             if ($m !== false) {
-                 $modules[] = $m;
-             }
-         }
-
-         $data = ['title' => $this->title, 'description' => $this->description, 'modules' => $modules];
-
-         $vdir->file_put_contents('data.js', 'const DATA=' . json_encode($data) . ';');
-         $vdir->file_put_contents('imsmanifest.xml', new Manifest($this->title, Version::SCORM_2004, $organization, 'PACKAGE_' . $this->id));
-         $vdir->copyDirectory(resource_path('elearningpackage/dist/css'), 'css');
-         $vdir->copyDirectory(resource_path('elearningpackage/dist/js'), 'js');
-         $vdir->copyDirectory(resource_path('elearningpackage/dist/fonts'), 'fonts');
-         $vdir->copy(resource_path('elearningpackage/index.html'), 'index.html');
-         $vdir->sync(true);*/
-
         $wdir = resource_path('quiz');
         $vdir = new VirtualDirectory($dest);
 
index 6272b99b2ab831ef505f3ae5a56e2bbcdd49a001..ec990fc5a7b53a6c5b35437aae6c6b67475c47d8 100644 (file)
@@ -27,7 +27,7 @@ function initPackage() {
         return;
     }
 
-    var res=initScorm();
+    var res = initScorm();
     initState();
     setContents();
     initEvents();
@@ -72,6 +72,7 @@ function initState() {
         }
     });
 }
+
 function initEvents() {
     $(document).on('click', '[data-id]:not([data-lock="locked"])', function () {
         openSubSCO($(this).data('id'));
index 76c12af5ee72ed50b176a3fbacbcac859c22380d..e52db5cf1882be7e9b6f3b3b5c68120a09d46246 100644 (file)
@@ -300,9 +300,8 @@ require('../../scorm/scorm');
 
             if ($(next).is("#resultsscreen")) {
                 updateScore();
-                console.log(showReview, checkScore())
                 var show = showReview === 'always' || (showReview === 'passed' && checkScore());
-                console.log(showReview, checkScore(), show, score);
+
                 if (!show) {
                     $('#correction').hide();
                 } else {
@@ -316,8 +315,7 @@ require('../../scorm/scorm');
             resize();
             gsap.fromTo($(next), {left: w + 50, opacity: 0}, {duration: 0.5, left: 0, opacity: 1});
             gsap.fromTo($(prev), {left: 0, opacity: 1}, {
-                duration: 0.5,
-                left: -w - 50, opacity: 0, onComplete: function () {
+                duration: 0.5, left: -w - 50, opacity: 0, onComplete: function () {
                     $(prev).hide();
                     endTransition();
                 }
@@ -332,20 +330,29 @@ require('../../scorm/scorm');
         function completed() {
             updateScore();
 
+            var passed = checkScore();
+            if (logAttempts) {
+                logAttempt(passed);
+            }
+
             if (DATA.scorm) {
-                setSCORMScore(score, $("section.question").length, 0);
-                setScormValue('cmi.core.lesson_status', 'completed');
+                setScormValue('status', 'completed');
+                setScormValue('success_status', passed ? 'passed' : 'failed');
+                setSCORMScore(getNormalizedScore(true), 100, 0, getNormalizedScore());
                 setSCORMLocation({q: 1});
             }
+        }
 
-            var passed = checkScore();
-            if (logAttempts) {
-                logAttempt(passed);
+        function getNormalizedScore(pct) {
+            var s = score / countQuestions;
+            if (pct === undefined || pct === false) {
+                return s;
             }
+            return Math.round(100 * s);
         }
 
         function logAttempt(passed) {
-            var score = Math.round(100 * (score / countQuestions));
+            var score = getNormalizedScore(true);
             if (isNaN(score)) {
                 score = 0;
             }
@@ -353,16 +360,13 @@ require('../../scorm/scorm');
                 score: score, passed: passed, questions: logQuestions,
             };
 
-            console.log(logdata);
-
-
             $.ajax('https://toolbox.fluidbook.com/quiz/' + DATA.id + '/log', {
                 method: 'POST', data: logdata, crossDomain: true,
             });
         }
 
         function checkScore() {
-            var normalizedScore = score / countQuestions;
+            var normalizedScore = getNormalizedScore(false);
             $('#results > h2').hide();
             var passed;
             $('#restart').hide();
index 31f8c73ef9d99d54c765fea7c69236bbd675f010..0d69b83d4d9921b8e9c8642ccc8a7df3678c4e1f 100644 (file)
@@ -34,8 +34,7 @@ window._CMI2004 = {
     'exit': 'cmi.exit',
 };
 
-window.initScorm=function()
-{
+window.initScorm = function () {
     if (SCORM_INITED) {
         return;
     }
@@ -97,17 +96,20 @@ window.initScormEvents = function () {
 };
 
 window.setSCORMLocation = function (location) {
-    return setScormValue('cmi.location', JSON.stringify(location));
+    return setScormValue('location', JSON.stringify(location));
 };
 
-window.setSCORMScore = function (score, max, min) {
+window.setSCORMScore = function (score, max, min, scaled) {
     if (min === undefined) {
         min = 0;
     }
 
-    setScormValue('cmi.core.score.raw', score);
-    setScormValue('cmi.core.score.min', min);
-    setScormValue('cmi.core.score.max', max);
+    if (scaled !== undefined) {
+        setScormValue('cmi.score.scaled', scaled);
+    }
+    setScormValue('cmi.score.raw', score);
+    setScormValue('cmi.score.min', min);
+    setScormValue('cmi.score.max', max);
 };
 window.getScormValue = function (elementName) {
     if (!SCORM_OK) {
@@ -117,10 +119,10 @@ window.getScormValue = function (elementName) {
     if (cmi == '') {
         return null;
     }
-    return result = SCORM.get(cmi);
+    return SCORM.get(cmi);
 };
 
-window.setScormValue=function(elementName, value) {
+window.setScormValue = function (elementName, value) {
     if (!SCORM_OK) {
         return;
     }
@@ -133,7 +135,7 @@ window.setScormValue=function(elementName, value) {
 };
 
 
-window.scormMarkAsComplete=function() {
+window.scormMarkAsComplete = function () {
     if (!SCORM_OK) {
         return;
     }
@@ -141,7 +143,7 @@ window.scormMarkAsComplete=function() {
 };
 
 
-window.finishScorm=function() {
+window.finishScorm = function () {
     if (!SCORM_OK) {
         return;
     }