]> _ Git - fluidbook-toolbox.git/commitdiff
wip #4216 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 30 Aug 2022 17:44:47 +0000 (19:44 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 30 Aug 2022 17:44:47 +0000 (19:44 +0200)
app/Fields/FluidbookThemeImage.php [new file with mode: 0644]
app/Http/Controllers/Admin/Operations/FluidbookPublication/PreviewOperation.php
app/Jobs/FluidbookCompiler.php
app/Models/FluidbookTheme.php

diff --git a/app/Fields/FluidbookThemeImage.php b/app/Fields/FluidbookThemeImage.php
new file mode 100644 (file)
index 0000000..a726fac
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Fields;
+
+use Cubist\Backpack\Magic\Fields\Images;
+
+class FluidbookThemeImage extends Images
+{
+    protected $_translatable = false;
+    protected $_nameAsCollection=false;
+    protected $_renameCollectionOnChange=true;
+}
index 9d66408137b3e6c36dafd283855b5a4dcaabaec9..107205a8f5e06dda1a6d47ccba56040ecb948133 100644 (file)
@@ -174,12 +174,10 @@ html,body{height:100%;cursor: wait;font-family: "Open Sans", Arial;background-co
     protected static function _getFluidbookAndTheme($id, $hash, &$fluidbook, &$theme)
     {
         $ee = explode('-', $id);
-        if (count($ee) === 1) {
-            $forceThemeData = request('theme', false);
-            if ($forceThemeData) {
-                $theme = FluidbookTheme::fromArray(json_decode($forceThemeData, true));
-            }
-        } else {
+        $forceThemeData = request('theme', false);
+        if ($forceThemeData) {
+            $theme = FluidbookTheme::fromArray(json_decode($forceThemeData, true));
+        } else if (count($ee) == 2) {
             $theme = FluidbookTheme::find($ee[1]);
             $id = $ee[0];
         }
index 3eb75d4751159a7ed62e19b6209e9ae58c7a82da..864d06616dcc3044131c0ea0301b1760baf90a41 100644 (file)
@@ -406,11 +406,21 @@ class FluidbookCompiler extends Base implements CompilerInterface
         if ($collection) {
             $path = $this->theme->getFirstMediaPath($collection);
             if (!$path || !file_exists($path)) {
-                return false;
+                $res = false;
+            } else {
+                $res = new SplFileInfo($path);
             }
-            return new SplFileInfo($path);
+        } else {
+            $res = false;
         }
-        return false;
+        if (null !== $this->config) {
+            if ($res instanceof SplFileInfo) {
+                $this->config->set($key, $res->getFilename());
+            } else {
+                $this->config->set($key, '');
+            }
+        }
+        return $res;
     }
 
     /**
index 838c72e95cb75579d4fcf6901e98c19562637408..536817caca21d9fe5db8d02cbbce0700d78c5985 100644 (file)
@@ -3,6 +3,7 @@
 
 namespace App\Models;
 
+use App\Fields\FluidbookThemeImage;
 use App\Jobs\GenerateThemePreview;
 use App\Jobs\UpdateWS2ThemeTable;
 use App\Models\Base\ToolboxSettingsModel;
@@ -225,8 +226,8 @@ class FluidbookTheme extends ToolboxSettingsModel
 
         $this->addField([
             'name' => 'symbols',
-            'name_as_collection' => true,
-            'type' => 'Images',
+            'type' => FluidbookThemeImage::class,
+            'accept' => '.svg',
             'label' => __('Remplacer des icônes (symboles svg)'),
             'translatable' => false,
         ]);
@@ -417,8 +418,7 @@ class FluidbookTheme extends ToolboxSettingsModel
         ]);
         $this->addField([
             'name' => 'backgroundImage',
-            'name_as_collection' => true,
-            'type' => 'Images',
+            'type' => FluidbookThemeImage::class,
             'label' => __('Image de fond'),
             'translatable' => false,
         ]);
@@ -495,8 +495,7 @@ class FluidbookTheme extends ToolboxSettingsModel
 
         $this->addField([
             'name' => 'menuImage',
-            'name_as_collection' => true,
-            'type' => 'Images',
+            'type' => FluidbookThemeImage::class,
             'label' => __('Image de fond'),
             'translatable' => false,
         ]);
@@ -510,8 +509,7 @@ class FluidbookTheme extends ToolboxSettingsModel
         ]);
         $this->addField([
             'name' => 'afterSearch',
-            'name_as_collection' => true,
-            'type' => 'Images',
+            'type' => FluidbookThemeImage::class,
             'label' => __('Image supplémentaire'),
             'hint' => __('Image disposée à droite des icônes'),
             'translatable' => false,
@@ -523,8 +521,7 @@ class FluidbookTheme extends ToolboxSettingsModel
         ]);
         $this->addField([
             'name' => 'logo',
-            'name_as_collection' => true,
-            'type' => 'Images',
+            'type' => FluidbookThemeImage::class,
             'label' => __('Logo'),
             'translatable' => false,
         ]);
@@ -540,8 +537,7 @@ class FluidbookTheme extends ToolboxSettingsModel
         ]);
         $this->addField([
             'name' => 'favicon',
-            'name_as_collection' => true,
-            'type' => 'Images',
+            'type' => FluidbookThemeImage::class,
             'label' => __('Icone (pour favicon et CD-ROM)'),
             'hint' => __('Image PNG de 256x256'),
             'translatable' => false,
@@ -580,8 +576,7 @@ class FluidbookTheme extends ToolboxSettingsModel
         ]);
         $this->addField([
             'name' => 'logoLoader',
-            'name_as_collection' => true,
-            'type' => 'Images',
+            'type' => FluidbookThemeImage::class,
             'label' => __('Logo affiché au chargement'),
             'translatable' => false,
         ]);