From: Vincent Vanwaelscappel Date: Thu, 27 Jul 2023 15:12:53 +0000 (+0200) Subject: wip #6180 @1.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=f330258d16bfc4587c96b9f4d25e8bf2ee5231cc;p=fluidbook-toolbox.git wip #6180 @1.5 --- diff --git a/app/Elearning/QuizCompiler.php b/app/Elearning/QuizCompiler.php index b7b80bc23..2b959fa22 100644 --- a/app/Elearning/QuizCompiler.php +++ b/app/Elearning/QuizCompiler.php @@ -35,7 +35,7 @@ class QuizCompiler extends Base public function __construct($quiz, $dest, $forceScorm = false) { $this->quiz = Quiz::withoutGlobalScopes()->find($quiz); - $this->theme =$this->quiz->getTheme(); + $this->theme = $this->quiz->getTheme(); $this->compilePath = protected_path('quiz/compile/' . $this->quiz->id); $this->dest = $dest; $this->forceScorm = $forceScorm; @@ -103,7 +103,7 @@ class QuizCompiler extends Base { $data = $this->quiz->getData(); $json = json_encode($data, JSON_THROW_ON_ERROR); - $dataSource = $this->compilePath . '/js/quiz.data.js'; + $dataSource = $this->compilePath . '/js/quiz.js'; file_put_contents($dataSource, str_replace('this.data = data;', 'this.data = ' . $json . ';', file_get_contents($dataSource))); } @@ -126,8 +126,9 @@ class QuizCompiler extends Base $compile->sync(true); } - protected function runWebpack() + protected function runWebpack($dev = false) { + $dev = $dev || config('app.env') === 'development'; $mix = 'const mix = require("laravel-mix");'; foreach ($this->mixDirectories as $from => $to) { $mix .= 'mix.copyDirectory("' . $from . '","' . $to . '");'; @@ -138,7 +139,11 @@ class QuizCompiler extends Base $cli = new Npx(); $cli->cd($this->compilePath); - $cli->setModule('cross-env process.env.local=1 mix --production'); + $arg = ''; + if (!$dev) { + $arg = ' --production'; + } + $cli->setModule('cross-env process.env.local=1 mix' . $arg); $cli->execute(); if (!file_exists($this->compilePath . '/dist/js/quiz.js')) { diff --git a/app/Http/Controllers/Admin/StorageController.php b/app/Http/Controllers/Admin/StorageController.php index 06c2dd3f5..fc6054b0e 100644 --- a/app/Http/Controllers/Admin/StorageController.php +++ b/app/Http/Controllers/Admin/StorageController.php @@ -17,17 +17,19 @@ class StorageController extends Controller $mediaId = $p[0]; /** @var Media $media */ $media = Media::withoutGlobalScopes()->find($mediaId); + if($media) { - $model = $media->getAttribute('model'); - $instanceId = $media->getAttribute('model_id'); + $model = $media->getAttribute('model'); + $instanceId = $media->getAttribute('model_id'); - /** @var CubistMagicAbstractModel $instance */ - $instance = $model::withoutGlobalScopes()->find($instanceId); - if (!$instance->canView(backpack_user())) { - abort(404); + /** @var CubistMagicAbstractModel $instance */ + $instance = $model::withoutGlobalScopes()->find($instanceId); + if (!$instance->canView(backpack_user())) { + abort(404); + } } $p = storage_path('app/public/') . $path; - if (!file_exists($p)) { + if ($media && !file_exists($p)) { $cmd = 'media-library:regenerate --force --only-missing --ids=' . $mediaId; Artisan::call($cmd); } diff --git a/resources/quizv2/js/quiz.data.js b/resources/quizv2/js/quiz.data.js deleted file mode 100644 index c0b92e18c..000000000 --- a/resources/quizv2/js/quiz.data.js +++ /dev/null @@ -1,8 +0,0 @@ -function QuizData(quiz) { - this.quiz = quiz; - // Data will be populated at compile time - this.data = data; - console.log(this.data); -} - -module.exports = QuizData; diff --git a/resources/quizv2/js/quiz.js b/resources/quizv2/js/quiz.js index 45cc9efb3..ddf6ac256 100644 --- a/resources/quizv2/js/quiz.js +++ b/resources/quizv2/js/quiz.js @@ -2,7 +2,7 @@ import $ from "cash-dom"; import gsap from "gsap"; import {CubeSCORM} from '/application/resources/scorm/scorm'; -import QuizData from "./quiz.data"; +import QuizResize from "./quiz.resize"; window.cubeSCORM = new CubeSCORM(); window.$ = window.jQuery = $; @@ -12,8 +12,50 @@ function Quiz() { Quiz.prototype = { init: function () { - this.data = new QuizData(this); + let $this = this; + + // Initialisation des modules + this.resize=new QuizResize(this); + + // Ici seront injectées dans this.data toutes les données du quiz et du thème pour qu'elles soient disponibles + // dans l'object à tout moment + this.data = data; + console.log(this.data); // ICI tout commence vraiment + + + + + // La fonction resize est appellée à chaque fois qu'un resize de la fenêtre survient (et à l'init de l'app) + $(window).on('resize', function () { + $this.quizResize(); + }); + this.quizResize(); + }, + + updateIcons: function () { + $("[data-icon]").each(function () { + var iconId = 'quiz-' + $(this).data('icon'); + // L'icône est déjà en place + if ($(this).children('svg.' + iconId).length) { + return; + } + // Si une autre icône est présente, on la supprime + $(this).children('svg.svg-icon').remove(); + // Puis on ajoute l'icône + var icon = getSpriteIcon(iconId); + if ($(this).is('[data-icon-prepend]')) { + $(this).prepend(icon); + } else { + $(this).append(icon); + } + }); + + }, + + quizResize: function () { + this.updateIcons(); + this.resize.resize(); }, } diff --git a/resources/quizv2/js/quiz.resize.js b/resources/quizv2/js/quiz.resize.js new file mode 100644 index 000000000..44d4f7679 --- /dev/null +++ b/resources/quizv2/js/quiz.resize.js @@ -0,0 +1,14 @@ +function QuizResize(quiz) { + this.quiz = quiz; +} + +QuizResize.prototype = { + resize: function () { + this.ww = $(window).width(); + this.hh = $(window).height(); + + // Exécuter ici toutes opérations qui doivent intervenir lorsque la fenêtre est redimensionnée par le système ou l'utiisateur + }, +} + +module.exports = QuizResize; diff --git a/resources/quizv2/style/100-global.sass b/resources/quizv2/style/100-global.sass new file mode 100644 index 000000000..b4b237065 --- /dev/null +++ b/resources/quizv2/style/100-global.sass @@ -0,0 +1,7 @@ +body + background-color: $neutral-color + font-family: $font + color: $texts-color + +[data-icon] svg + height: 20px diff --git a/resources/quizv2/style/style.sass b/resources/quizv2/style/style.sass index 6a508ed3d..2f3559ccf 100644 --- a/resources/quizv2/style/style.sass +++ b/resources/quizv2/style/style.sass @@ -2,7 +2,4 @@ @import 002-item-variables @import 003-reset -body - background-color: $neutral-color - font-family: $font - color: $texts-color +@import 100-global diff --git a/resources/views/quizv2/icons.blade.php b/resources/views/quizv2/icons.blade.php deleted file mode 100644 index 2f8b0fe15..000000000 --- a/resources/views/quizv2/icons.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -{{-- - -Downloaded from https://toolbox.fluidbook.com/tool-sprite/9/download -Edit here : https://toolbox.fluidbook.com/tool-sprite/9/edit - ---}} - diff --git a/resources/views/quizv2/index.blade.php b/resources/views/quizv2/index.blade.php index afab74806..6c1c281b2 100644 --- a/resources/views/quizv2/index.blade.php +++ b/resources/views/quizv2/index.blade.php @@ -6,13 +6,23 @@ - + {{$quiz->title}} -@include("quizv2.icons") +@include("quizv2.sprite")
- TEST +
+

{{$quiz->title}}

+ +
+ @if($quiz->intro_enable) +
+

{{$quiz->intro_title}}

+

{{$quiz->intro_text}}

+ {{$quiz->intro_button}} +
+ @endif
diff --git a/resources/views/quizv2/sprite.blade.php b/resources/views/quizv2/sprite.blade.php new file mode 100644 index 000000000..29cc12979 --- /dev/null +++ b/resources/views/quizv2/sprite.blade.php @@ -0,0 +1,47 @@ +{{-- + +Downloaded from https://toolbox.fluidbook.com/tool-sprite/9/download +Edit here : https://toolbox.fluidbook.com/tool-sprite/9/edit + +--}} +