From 90eb69165113977773ce5def03002904aa8a5a65 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Thu, 27 Jul 2023 19:49:24 +0200 Subject: [PATCH] wip #6180 @1 --- app/Elearning/QuizCompiler.php | 54 +++++++++++++++---- app/Models/Quiz.php | 1 + resources/quizv2/style/101-header.sass | 2 + resources/quizv2/style/style.sass | 1 + resources/views/quizv2/index.blade.php | 18 +++---- .../base/inc/sidebar_content.blade.php | 2 +- 6 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 resources/quizv2/style/101-header.sass diff --git a/app/Elearning/QuizCompiler.php b/app/Elearning/QuizCompiler.php index 2b959fa22..bf009f534 100644 --- a/app/Elearning/QuizCompiler.php +++ b/app/Elearning/QuizCompiler.php @@ -9,8 +9,9 @@ use App\Models\QuizTheme; use Cubist\Scorm\Manifest; use Cubist\Scorm\Version; use Cubist\Util\CommandLine\Npx; +use Cubist\Util\Data; +use Cubist\Util\Files\Files; use Cubist\Util\Files\VirtualDirectory; -use Cubist\Util\Graphics\Color; class QuizCompiler extends Base { @@ -31,6 +32,7 @@ class QuizCompiler extends Base protected $sassVariables = []; protected $mixDirectories = []; + protected $data; public function __construct($quiz, $dest, $forceScorm = false) { @@ -43,7 +45,11 @@ class QuizCompiler extends Base public function handle() { - $this->copyFilesFromResources(); + $compileVdir = new VirtualDirectory($this->compilePath); + $this->initData($compileVdir); + $this->copyFilesFromResources($compileVdir); + $compileVdir->sync(true); + // Add data related to the current quiz in the "to compile" files $this->writeStyles(); $this->writeData($data); @@ -53,8 +59,9 @@ class QuizCompiler extends Base $vdir = new VirtualDirectory($this->dest); $vdir->copyDirectory($this->compilePath . '/dist/css', 'css'); $vdir->copyDirectory($this->compilePath . '/dist/js', 'js'); + $vdir->copyDirectory($this->compilePath . '/dist/assets', 'assets'); - $html = view('quizv2.index', ['quiz' => $this->quiz, 'data' => $data])->render(); + $html = view('quizv2.index', ['data' => new Data($this->data), 'quiz' => $this->quiz, 'theme' => $this->theme])->render(); $vdir->file_put_contents('index.html', $html); @@ -66,6 +73,31 @@ class QuizCompiler extends Base $vdir->sync(true); } + /** + * Init data object from Quiz and ThemeQuiz Models * These data will be injected into the quiz at compile time + * + * @return void + * @throws \Exception + * @var $vdir VirtualDirectory + */ + protected function initData($vdir) + { + $this->data = $this->quiz->getData(); + $themePageData = $this->theme->getPageData(); + $themeData = $themePageData->getRawData(); + foreach ($this->theme->getFields() as $f) { + if ($f instanceof \Cubist\Backpack\Magic\Fields\Files) { + $path = $themePageData->getImageFile($f->getName()); + $spl = new \SplFileInfo($path); + $dest = 'assets/' . Files::tidyName($spl->getFilename()); + $themeData[$f->getName()] = $dest; + $vdir->copy($path, $dest); + } + } + $this->mixDirectories['assets'] = 'dist/assets'; + $this->data['theme'] = new Data($themeData); + } + protected function writeStyles() { // Main texts color @@ -101,8 +133,8 @@ class QuizCompiler extends Base protected function writeData(&$data) { - $data = $this->quiz->getData(); - $json = json_encode($data, JSON_THROW_ON_ERROR); + + $json = json_encode($this->data, JSON_THROW_ON_ERROR); $dataSource = $this->compilePath . '/js/quiz.js'; file_put_contents($dataSource, str_replace('this.data = data;', 'this.data = ' . $json . ';', file_get_contents($dataSource))); } @@ -117,13 +149,15 @@ class QuizCompiler extends Base } - protected function copyFilesFromResources() + /** + * @param $vdir VirtualDirectory + * @return void + */ + protected function copyFilesFromResources($vdir) { // Copy base files from resources - $compile = new VirtualDirectory($this->compilePath); - $compile->copyDirectory(resource_path('quizv2/js'), 'js'); - $compile->copyDirectory(resource_path('quizv2/style'), 'style'); - $compile->sync(true); + $vdir->copyDirectory(resource_path('quizv2/js'), 'js'); + $vdir->copyDirectory(resource_path('quizv2/style'), 'style'); } protected function runWebpack($dev = false) diff --git a/app/Models/Quiz.php b/app/Models/Quiz.php index adb0707f8..041ffd86b 100644 --- a/app/Models/Quiz.php +++ b/app/Models/Quiz.php @@ -6,6 +6,7 @@ use App\Elearning\QuizCompiler; use App\Fields\SCORMVersion; use App\Http\Controllers\Admin\Operations\ChangeownerOperation; use App\Http\Controllers\Admin\Operations\Quiz\DownloadOperation; +use App\Http\Controllers\Admin\Operations\Quiz\ImportOperation; use App\Http\Controllers\Admin\Operations\Quiz\LogOperation; use App\Http\Controllers\Admin\Operations\Quiz\PreviewOperation; use App\Http\Controllers\Admin\Operations\Quiz\ReportOperation; diff --git a/resources/quizv2/style/101-header.sass b/resources/quizv2/style/101-header.sass new file mode 100644 index 000000000..0520c7f14 --- /dev/null +++ b/resources/quizv2/style/101-header.sass @@ -0,0 +1,2 @@ +#logo + height: 40px diff --git a/resources/quizv2/style/style.sass b/resources/quizv2/style/style.sass index 2f3559ccf..2f98bde2d 100644 --- a/resources/quizv2/style/style.sass +++ b/resources/quizv2/style/style.sass @@ -3,3 +3,4 @@ @import 003-reset @import 100-global +@import 101-header diff --git a/resources/views/quizv2/index.blade.php b/resources/views/quizv2/index.blade.php index 6c1c281b2..97f9c43ca 100644 --- a/resources/views/quizv2/index.blade.php +++ b/resources/views/quizv2/index.blade.php @@ -6,21 +6,21 @@ - {{$quiz->title}} + {{$data->title}} @include("quizv2.sprite")
-
-

{{$quiz->title}}

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

{{$data->title}}

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

{{$quiz->intro_title}}

-

{{$quiz->intro_text}}

- {{$quiz->intro_button}} +

{{$data->intro_title}}

+

{{$data->intro_text}}

+ {{$data->intro_button}}
@endif
diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index 8d68af7ea..c588e3fff 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -69,7 +69,7 @@ @endcan - @can('quiz:read-theme') + @can('quiz-theme:read') @endcan -- 2.39.5