]> _ Git - fluidbook-toolbox.git/commitdiff
wip #5471 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 20 Oct 2022 08:58:19 +0000 (10:58 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 20 Oct 2022 08:58:19 +0000 (10:58 +0200)
app/Models/Quiz.php
resources/quiz/js/app.js

index a1551bc4824c20fd72b9eeb099d8b5a414ae2864..54007fb1820918c16e875837a39abd18e32c69ff 100644 (file)
@@ -10,6 +10,7 @@ use App\Http\Controllers\Admin\Operations\Quiz\PreviewOperation;
 use App\Http\Controllers\Admin\Operations\Quiz\ReportOperation;
 use App\Models\Base\ToolboxModel;
 use App\Models\Traits\SCORMVersionTrait;
+use Cubist\Backpack\Magic\Fields\Code;
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
 use Cubist\Scorm\Manifest;
 use Cubist\Util\Files\VirtualDirectory;
@@ -248,13 +249,12 @@ class Quiz extends ToolboxModel
             $f = array_merge($default, $color, ['name' => $name]);
             $this->addField($f);
         }
-
-
         $default = ['tab' => __('Thème'), 'type' => 'Images', 'maxFiles' => 1];
         foreach (self::_getImages() as $name => $label) {
             $f = array_merge($default, ['name' => $name, 'label' => $label]);
             $this->addField($f);
         }
+        $this->addField('css', Code::class, __('Code CSS supplémentaire'), ['language' => 'css', 'tab' => __('Thème')]);
 
     }
 
index 377fe20eff277a242543bdccb01fd5a0ef6ba71b..3378b28ebd1ef523505f03a55d7e727dfec1e37b 100644 (file)
@@ -88,6 +88,9 @@ require('../../scorm/scorm');
         }
 
         function initContents() {
+            if (DATA.css !== '') {
+                $("head").append('<style type="text/css">' + DATA.css + '</style>');
+            }
             $("header .headerholder .titleHolder").append('<h1>' + DATA.title + '</h1>');
             $("header .headerholder .titleHolder h1").css('width', '99%');
             $("title").text(DATA.title);
@@ -195,6 +198,26 @@ require('../../scorm/scorm');
             passedAction = DATA.passedAction !== '' ? DATA.passedAction : null;
             failedAction = DATA.failedAction !== '' ? DATA.failedAction : null;
 
+            var results;
+            if (testMode) {
+                results = testResults();
+            } else {
+                results = quizResults();
+            }
+
+            $("main").append(results);
+
+            $(document).on('quizinit', function (event, state) {
+                init(state);
+            });
+
+            initApp();
+
+            resizeContainer();
+            resize();
+        }
+
+        function quizResults() {
             var results = '<section id="resultsscreen">';
             results += '<div id="results">';
             results += '<h2 class="defaultMessage">' + defaultMessage + '</h2>';
@@ -209,17 +232,20 @@ require('../../scorm/scorm');
 
             results = $(results);
             $(results).append(correction);
+            return results;
+        }
 
-            $("main").append(results);
-
-            $(document).on('quizinit', function (event, state) {
-                init(state);
+        function testResults() {
+            var results = '<section id="resultsscreen">';
+            results += '<div id="results">';
+            $.each(DATA.test_results, function (k, v) {
+                results += '<h2 class="test_result" data-min="' + (Math.min(v.score.first, v.score.second)) + '"  data-max="' + (Math.max(v.score.first, v.score.second)) + '">' + v.text + '</h2>';
             });
+            results += '</div>';
+            results += '</section>';
 
-            initApp();
-
-            resizeContainer();
-            resize();
+            results = $(results);
+            return results;
         }
 
         function init(state) {
@@ -305,12 +331,24 @@ require('../../scorm/scorm');
 
             if ($(next).is("#resultsscreen")) {
                 updateScore();
-                var show = showReview === 'always' || (showReview === 'passed' && checkScore());
+                if (quizMode) {
+                    var show = showReview === 'always' || (showReview === 'passed' && checkScore());
 
-                if (!show) {
-                    $('#correction').hide();
+                    if (!show) {
+                        $('#correction').hide();
+                    } else {
+                        $('#correction').show();
+                    }
                 } else {
-                    $('#correction').show();
+                    $('.test_result').each(function () {
+                        var show = score >= $(this).data('min') && score <= $(this).data('max');
+                        console.log(this, show, score, $(this).data('min'), $(this).data('max'));
+                        if (show) {
+                            $(this).show();
+                        } else {
+                            $(this).hide();
+                        }
+                    });
                 }
                 completed();
             }
@@ -371,26 +409,29 @@ require('../../scorm/scorm');
         }
 
         function checkScore() {
-            var normalizedScore = getNormalizedScore(false);
-            $('#results > h2').hide();
-            var passed;
-            $('#restart').hide();
-            if (threshold === 0) {
-                $('.defaultMessage').show();
-                passed = true;
-            } else if (normalizedScore >= threshold) {
-                $(".passedMessage").show();
-                execAction(passedAction);
-                passed = true;
-            } else {
-                $('.failedMessage').show();
-                execAction(failedAction);
-                passed = false;
-                if ($(data).find('restart_button').text() === "1") {
-                    $('#restart').show();
+            if (quizMode) {
+                var normalizedScore = getNormalizedScore(false);
+                $('#results > h2').hide();
+                var passed;
+                $('#restart').hide();
+                if (threshold === 0) {
+                    $('.defaultMessage').show();
+                    passed = true;
+                } else if (normalizedScore >= threshold) {
+                    $(".passedMessage").show();
+                    execAction(passedAction);
+                    passed = true;
+                } else {
+                    $('.failedMessage').show();
+                    execAction(failedAction);
+                    passed = false;
+                    if ($(data).find('restart_button').text() === "1") {
+                        $('#restart').show();
+                    }
                 }
+                return passed;
             }
-            return passed;
+            return true;
         }
 
         function execAction(action) {