]> _ Git - fluidbook-toolbox.git/commitdiff
wip #4211 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 17 May 2022 17:44:49 +0000 (19:44 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 17 May 2022 17:44:49 +0000 (19:44 +0200)
.idea/workspace.xml
app/Jobs/LegacyBookSettingsGenerate.php [new file with mode: 0644]
app/Models/FluidbookPublication.php
app/Models/Traits/PublicationSettings.php [new file with mode: 0644]

index abbc085071face2dce3722c6cbef969c8022e586..821b5cb7036275f60e7c11ed6a7f1cd51524f817 100644 (file)
     <select />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="5d2ecd5e-a05a-4f96-a195-fa6372618165" name="Default Changelist" comment="wait #5127 @2">
-      <change afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/ToolboxSettingsController.php" afterDir="false" />
+    <list default="true" id="5d2ecd5e-a05a-4f96-a195-fa6372618165" name="Default Changelist" comment="wait #5282 @0.5">
+      <change afterPath="$PROJECT_DIR$/app/Jobs/LegacyBookSettingsGenerate.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/app/Models/Traits/PublicationSettings.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/resources/views/tools/sidebar.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/tools/sidebar.blade.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/web.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/app/Models/FluidbookPublication.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/FluidbookPublication.php" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
       <workItem from="1652268786509" duration="1257000" />
       <workItem from="1652692762350" duration="3636000" />
       <workItem from="1652718109996" duration="3224000" />
-      <workItem from="1652768161632" duration="4171000" />
-    </task>
-    <task id="LOCAL-00230" summary="wip #5045 @0.75">
-      <created>1644255323413</created>
-      <option name="number" value="00230" />
-      <option name="presentableId" value="LOCAL-00230" />
-      <option name="project" value="LOCAL" />
-      <updated>1644255323413</updated>
+      <workItem from="1652768161632" duration="8698000" />
+      <workItem from="1652782240791" duration="7763000" />
     </task>
     <task id="LOCAL-00231" summary="wip #5045 @1.1">
       <created>1644341477665</created>
       <option name="project" value="LOCAL" />
       <updated>1652721174125</updated>
     </task>
-    <option name="localTasksCounter" value="279" />
+    <task id="LOCAL-00279" summary="wait #5282 @0.5">
+      <created>1652775116684</created>
+      <option name="number" value="00279" />
+      <option name="presentableId" value="LOCAL-00279" />
+      <option name="project" value="LOCAL" />
+      <updated>1652775116684</updated>
+    </task>
+    <option name="localTasksCounter" value="280" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
     <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
     <option name="CHECK_NEW_TODO" value="false" />
     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
-    <MESSAGE value="wait #5109 @2.5" />
     <MESSAGE value="wip #5127 @1" />
     <MESSAGE value="wip #5127" />
     <MESSAGE value="wait #5127 @1.5" />
     <MESSAGE value="wait #5265" />
     <MESSAGE value="wip #5279 @1" />
     <MESSAGE value="wait #5127 @2" />
-    <option name="LAST_COMMIT_MESSAGE" value="wait #5127 @2" />
+    <MESSAGE value="wait #5282 @0.5" />
+    <option name="LAST_COMMIT_MESSAGE" value="wait #5282 @0.5" />
   </component>
   <component name="XSLT-Support.FileAssociations.UIState">
     <expand />
diff --git a/app/Jobs/LegacyBookSettingsGenerate.php b/app/Jobs/LegacyBookSettingsGenerate.php
new file mode 100644 (file)
index 0000000..013b388
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Models\Traits\PublicationSettings;
+use Cubist\Backpack\Magic\BunchOfFields;
+use Cubist\Backpack\Magic\Fields\FormSection;
+use Cubist\Backpack\Magic\Fields\FormSeparator;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Util\Files\Files;
+use Cubist\Util\PHP;
+
+class LegacyBookSettingsGenerate extends Base
+{
+    use BunchOfFields;
+    use PublicationSettings;
+
+    public function handle()
+    {
+        $this->setSettingsFields();
+
+        $forms = [];
+        $fields = [];
+        $currentForm = null;
+
+        foreach ($this->getFields() as $field) {
+            if ($field instanceof FormSection) {
+                if (null !== $currentForm) {
+                    $key = $currentForm['key'];
+                    unset($currentForm['key']);
+                    $forms[$key] = $currentForm;
+                }
+                $currentForm = [
+                    'key' => substr($field->getName(), 8),
+                    'label' => $field->getAttribute('label'),
+                    'fieldsnames' => [],
+                ];
+                continue;
+            }
+            if ($field instanceof FormSeparator) {
+                $currentForm['fieldsnames'][] = '|';
+                continue;
+            }
+            $f = json_decode($field->getAttribute('v2'), true);
+            $currentForm['fieldsnames'][] = $field->getName();
+            if ($field instanceof SelectFromArray) {
+                $f['datas'] = $field->getOptions();
+            }
+            $fields[$field->getName()] = $f;
+        }
+        $forms[] = $currentForm;
+        $code = '<?php
+
+class wsBookParametres extends wsParametres
+{
+
+    protected function initFields()
+    {
+        parent::initFields();
+
+        $this->fields=' . PHP::var_export($fields, true) . ';
+        $this->forms=' . PHP::var_export($forms, true) . ';
+    }
+}
+';
+        file_put_contents('/data1/', $code);
+    }
+}
index aa687872ec7459390d646c08cc7f2fd3a345e205..0747bff516129e18c0d8aba69bbadc53124020bb 100644 (file)
@@ -3,22 +3,15 @@
 
 namespace App\Models;
 
-use App\Fields\FluidbookDevelopmentVersion;
 use App\Fields\FluidbookLocale;
-use App\Fields\FluidbookSignature;
 use App\Fields\FluidbookTitle;
 use App\Fields\User;
 use App\Models\Base\ToolboxModel;
-use Cubist\Backpack\Magic\Fields\Checkbox;
+use App\Models\Traits\PublicationSettings;
 use Cubist\Backpack\Magic\Fields\Code;
 use Cubist\Backpack\Magic\Fields\Datetime;
-use Cubist\Backpack\Magic\Fields\FilesOrURL;
-use Cubist\Backpack\Magic\Fields\FormSection;
-use Cubist\Backpack\Magic\Fields\FormSeparator;
 use Cubist\Backpack\Magic\Fields\Hidden;
 use Cubist\Backpack\Magic\Fields\Integer;
-use Cubist\Backpack\Magic\Fields\LongText;
-use Cubist\Backpack\Magic\Fields\Number;
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
 use Cubist\Backpack\Magic\Fields\Textarea;
 
@@ -33,6 +26,7 @@ class FluidbookPublication extends ToolboxModel
     protected $_enableTrackNonDefaultValues = true;
     protected static $_permissionBase = 'fluidbook-publication';
 
+    use PublicationSettings;
 
     public function setFields()
     {
@@ -104,2757 +98,21 @@ class FluidbookPublication extends ToolboxModel
         parent::onBeforeUpdate($controller, $request);
     }
 
-    protected function setComposedAttributes(){
+    protected function setComposedAttributes()
+    {
         /** @var \App\Models\User $owner */
-        $owner=\App\Models\User::find($this->owner);
+        $owner = \App\Models\User::find($this->owner);
         /** @var Company $company */
-        $company=Company::find($owner->company);
-
-        $this->admin=$company->admin;
-        $this->super_admin='';
-        $this->owner_company_name=$company->company_with_name;
-        $this->owner_name=$owner->name;
-        $this->invoicable='';
-        $this->invoicable_company='';
-        $this->extranet_project='';
+        $company = Company::find($owner->company);
+
+        $this->admin = $company->admin;
+        $this->super_admin = '';
+        $this->owner_company_name = $company->company_with_name;
+        $this->owner_name = $owner->name;
+        $this->invoicable = '';
+        $this->invoicable_company = '';
+        $this->extranet_project = '';
     }
 
-    public function setSettingsFields()
-    {
-        $this->addField('section_important', FormSection::class, __('Description de la publication'));
-        $this->addField('mobileLVersion', FluidbookDevelopmentVersion::class, __('Version logicielle'), [
-            'default' => 'stable',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('mobileVersion', SelectFromArray::class, __('Version mobile'), [
-            'options' => [
-                'pdf' => 'Rediriger vers le PDF',
-                'html5-desktop' => 'Version HTML5 recommandée (vecteurs sur desktop)',
-                'html5' => 'Version HTML5 vecteurs',
-                'html5-images' => 'Version HTML5 en images',
-            ],
-            'default' => 'html5-desktop',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('title', LongText::class, __('Titre de la publication'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('url_link', LongText::class, __('URL du lien de retour au site'), [
-            'default' => 'http://',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('signature', FluidbookSignature::class, __('Signature'), [
-            'default' => '1',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_assets', FormSection::class, __('Assets'));
-        $this->addField('assetsDir', LongText::class, __('Utiliser le dossier d\'assets du fluidbook'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linksAssets', FilesOrURL::class, __('Charger ou remplacer des fichiers de liens'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_basicStats', FormSection::class, __('Statistiques'));
-        $this->addField('stats', Checkbox::class, __('Activer les statistiques Fluidbook'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('googleAnalytics', LongText::class, __('Code Google Analytics'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('googleTagManager', LongText::class, __('Code Google Tag Manager'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_share', FormSection::class, __('Fonctions de partage'));
-        $this->addField('share', Checkbox::class, __('Activer les fonctions de partage'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('email_title', LongText::class, __('Titre de l\'email "Envoyer à un ami"'), [
-            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('email_body', Textarea::class, __('Corps de l\'email "Envoyer à un ami"'), [
-            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('email_editable', Checkbox::class, __('Permettre au lecteur de modifier le corps de l\'email'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('askAcknowledge', Checkbox::class, __('Demander au destinataire un accusé de réception'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('sendasfluidbook', Checkbox::class, __('Envoyer le mail comme Fluidbook'), [
-            'hint' => __('L\'expéditeur apparaîtra en reply-to'),
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('email_mailto', Checkbox::class, __('Envoyer le mail via le client mail du visiteur (mailto:)'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('facebook_title', LongText::class, __('Titre du contenu partagé'), [
-            'hint' => __('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('facebook_description', Textarea::class, __('Description du contenu partagé'), [
-            'hint' => __('Description proposée sur les fonctions de partage (par défaut, vide)'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('facebook_image', FilesOrURL::class, __('Miniature affichée'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.jpg',
-                1 => '*.jpeg',
-                2 => '*.png',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('twitter_description', Textarea::class, __('Contenu Partage court'), [
-            'hint' => __('Contenu du partagé sur les partages courts'),
-            'default' => '%title% : %short%',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('friend', Checkbox::class, __('E-mail'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('facebook', Checkbox::class, __('Facebook'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('twitter', Checkbox::class, __('Twitter'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('whatsapp', Checkbox::class, __('WhatsApp'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linkedin', Checkbox::class, __('LinkedIn'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pinterest', Checkbox::class, __('Pinterest'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('googleplus', Checkbox::class, __('Google +'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('viadeo', Checkbox::class, __('Viadeo'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('customSharer', LongText::class, __('Classe personnalisée de partage'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('friendWidth', Integer::class, __('Largeur du menu'), [
-            'default' => 319,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('friendHeight', Integer::class, __('Largeur du menu'), [
-            'default' => 500,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_seo', FormSection::class, __('Optimisation pour les moteurs de recherche'));
-        $this->addField('seoVersion', Checkbox::class, __('Générer une version pour les moteurs de recherche'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('seoRobots', Checkbox::class, __('Autoriser le parcours par les moteurs de recherche'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('seoDescription', Textarea::class, __('Meta tag Description'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('seoKeywords', Textarea::class, __('Meta tag Keywords'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('seoBaseURL', LongText::class, __('URL de base'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('seoAdvanced', FilesOrURL::class, __('Données SEO par page'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.xlsx',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_3d_mode', FormSection::class, __('Options de visualisation'));
-        $this->addField('mobileNavigationType', SelectFromArray::class, __('Mode de navigation'), [
-            'options' => [
-                'book' => 'Normal (automatique)',
-                'landscape' => 'Normal (double page)',
-                'portrait' => 'Normal (une page)',
-                'mobilefirst' => 'Mobile first',
-                'tab' => 'Magazine tablette',
-            ],
-            'default' => 'book',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('mobileTransitions', SelectFromArray::class, __('Transitions entre les pages'), [
-            'options' => [
-                'none' => 'Aucune transition',
-                'fade' => 'Opacité',
-                'slide' => 'Glisser',
-                'flip' => 'Tourner (rigide)',
-                'flip3d' => 'Tourner (souple)',
-            ],
-            'default' => 'flip3d',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('mobileTransitionDuration', Number::class, __('Durée de la transition'), [
-            'default' => 0.5,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('forceWhiteBackground', Checkbox::class, __('Ajouter un fond blanc aux pages'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('rasterizePages', Textarea::class, __('Ecraser les pages'), [
-            'hint' => __('1-3,5 = 1,2,3,5'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('vectorPages', Textarea::class, __('Conserver les pages en vecteur'), [
-            'hint' => __('1-3,5 = 1,2,3,5'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('visualisationMode', SelectFromArray::class, __('Mode de visualisation 3D'), [
-            'options' => [
-                0 => 'Mode 3D',
-                1 => 'Mode 2D (caméra fixe et pages à plat)',
-                2 => 'Laisser le choix à l\'utilisateur (mode 3D par défaut)',
-                3 => 'Laisser le choix à l\'utilisateur (mode 2D par défaut)',
-            ],
-            'default' => '3',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('antialiasReading', Checkbox::class, __('Amélioration de la lisibilité en mode 2D'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('correctCenter', Checkbox::class, __('Corriger les lignes blanches entre les pages'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pagesBaseAngle', Integer::class, __('Angle de base entre les pages'), [
-            'hint' => __('0 : Publication à plat
-2 : Valeur par défaut'),
-            'default' => 2,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('centerBook', Checkbox::class, __('Centrer la publication sur les couvertures'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('extraXSpace', Integer::class, __('Marge supplémentaire horizontale'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('mobileExtraXSpace', Integer::class, __('Marge supplémentaire horizontale'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('extraYSpace', Integer::class, __('Marge supplémentaire verticale'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('viewMode', SelectFromArray::class, __('Mode de visualisation (beta)'), [
-            'options' => [
-                0 => 'Classique',
-                1 => 'Diaporama',
-            ],
-            'default' => '0',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('dynamicBackgroundColor', Textarea::class, __('Couleur de fond dynamique'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('svgToCanvas', Checkbox::class, __('Activer le rendu svgtocanvas'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('svgToCanvasUpscale', Number::class, __('Upscale de la fonction svgtocanvas'), [
-            'default' => 1,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('textsThickness', Number::class, __('Epaisseur des textes'), [
-            'default' => 1,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('textsThicknessPages', LongText::class, __('Appliquer l\'épaisseur des texte sur les pages'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('imageFormat', SelectFromArray::class, __('Format des images'), [
-            'options' => [
-                'jpg' => 'JPEG',
-                'png' => 'PNG',
-            ],
-            'default' => 'jpg',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('maxResolution', SelectFromArray::class, __('Résolution maximale des pages'), [
-            'options' => [
-                300 => '300dpi',
-                150 => '150dpi',
-                125 => '125dpi',
-                100 => '100dpi',
-            ],
-            'default' => 300,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('JPEGQuality', Integer::class, __('Qualité JPEG'), [
-            'default' => 85,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_performances', FormSection::class, __('Performances'));
-        $this->addField('rasterizeOnSafari', Checkbox::class, __('Ecraser les pages pour Safari (Mac OS)'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('performance3DMode', SelectFromArray::class, __('Performance de la 3D'), [
-            'options' => [
-                'auto' => 'Tester la machine',
-                'highPerf' => 'Haute',
-                'lowPerf' => 'Moyenne',
-                'veryLowPerf' => 'Basse',
-            ],
-            'default' => 'auto',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_general', FormSection::class, __('Fonctionnalités générales'));
-        $this->addField('tooltipTimer', Number::class, __('Temps maximum d\'apparition des infos-bulles (en secondes)'), [
-            'default' => 3,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('mobilePlugins', Textarea::class, __('Plugin'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('preload', Integer::class, __('Nombre de pages à précharger'), [
-            'default' => 16,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('maxPages', Integer::class, __('Nombre de pages maximal affiché à l\'ouverture du fluidbook (pas de limite = 0)'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pages', Integer::class, __('Nombre de pages'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('width', Number::class, __('Largeur'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('height', Number::class, __('Hauteur'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_menu', FormSection::class, __('Menu'));
-        $this->addField('navOrder', Textarea::class, __('Ordre des icônes dans la nav'), [
-            'default' => 'index, chapters, search, print, friend, bookmark, pdf, notes, archives, basket, fullscreen, sound, 3d, extra, extra1, extra2, extra3, extra4, extra5, help, lang',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navOrderH', Textarea::class, __('Ordre des icônes dans la nav (Si différente)'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('mobileNavScale', Integer::class, __('Taille du menu (en %)'), [
-            'default' => 100,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('menuBreakpoint', LongText::class, __('Breakpoint burger menu'), [
-            'hint' => __('Par défaut 1023px'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('afterSearchDisplayForHTML', Checkbox::class, __('Afficher l\'image après le moteur de recherche sur la version HTML5'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('navExtraImage', FilesOrURL::class, __('Image pour navigation'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraImageMobile', FilesOrURL::class, __('Image pour mobile'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraLink', LongText::class, __('URL'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraTooltip', LongText::class, __('Infobulle ou label'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('navExtraIcon1', FilesOrURL::class, __('Icône supplémentaire 1'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraType1', SelectFromArray::class, __('Type'), [
-            'options' => [
-                'icon' => 'Icône + Label',
-                'image' => 'Image',
-            ],
-            'default' => 'icon',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraLink1', LongText::class, __('URL 1'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraVisibility1', SelectFromArray::class, __('Visible 1'), [
-            'options' => [
-                'horizontal' => 'Navigation horizontale',
-                'burger' => 'Navigation burger',
-                'both' => 'Navigations horizontale et burger',
-            ],
-            'default' => 'both',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('navExtraIcon2', FilesOrURL::class, __('Icône supplémentaire 2'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraType2', SelectFromArray::class, __('Type'), [
-            'options' => [
-                'icon' => 'Icône + Label',
-                'image' => 'Image',
-            ],
-            'default' => 'icon',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraLink2', LongText::class, __('URL 2'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraVisibility2', SelectFromArray::class, __('Visible 2'), [
-            'options' => [
-                'horizontal' => 'Navigation horizontale',
-                'burger' => 'Navigation burger',
-                'both' => 'Navigations horizontale et burger',
-            ],
-            'default' => 'both',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('navExtraIcon3', FilesOrURL::class, __('Icône supplémentaire 3'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraType3', SelectFromArray::class, __('Type'), [
-            'options' => [
-                'icon' => 'Icône + Label',
-                'image' => 'Image',
-            ],
-            'default' => 'icon',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraLink3', LongText::class, __('URL 3'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraVisibility3', SelectFromArray::class, __('Visible 3'), [
-            'options' => [
-                'horizontal' => 'Navigation horizontale',
-                'burger' => 'Navigation burger',
-                'both' => 'Navigations horizontale et burger',
-            ],
-            'default' => 'both',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('navExtraIcon4', FilesOrURL::class, __('Icône supplémentaire 4'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraType4', SelectFromArray::class, __('Type'), [
-            'options' => [
-                'icon' => 'Icône + Label',
-                'image' => 'Image',
-            ],
-            'default' => 'icon',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraLink4', LongText::class, __('URL 4'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraVisibility4', SelectFromArray::class, __('Visible 4'), [
-            'options' => [
-                'horizontal' => 'Navigation horizontale',
-                'burger' => 'Navigation burger',
-                'both' => 'Navigations horizontale et burger',
-            ],
-            'default' => 'both',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('navExtraIcon5', FilesOrURL::class, __('Icône supplémentaire 5'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraType5', SelectFromArray::class, __('Type'), [
-            'options' => [
-                'icon' => 'Icône + Label',
-                'image' => 'Image',
-            ],
-            'default' => 'icon',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraLink5', LongText::class, __('URL 5'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('navExtraVisibility5', SelectFromArray::class, __('Visible 5'), [
-            'options' => [
-                'horizontal' => 'Navigation horizontale',
-                'burger' => 'Navigation burger',
-                'both' => 'Navigations horizontale et burger',
-            ],
-            'default' => 'both',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('mobileBottomNav', LongText::class, __('Barre de boutons en bas'), [
-            'hint' => __('Identifiants des boutons séparés par des virgules'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_landing', FormSection::class, __('Custom Landing Page'));
-        $this->addField('landingPage', FilesOrURL::class, __('Landing Page content'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_fs', FormSection::class, __('Plein écran'));
-        $this->addField('fullscreen', Checkbox::class, __('Activer le mode plein-écran'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('fullscreenAuto', Checkbox::class, __('Lancer la publication en mode plein écran (lorsque possible)'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_bookmark', FormSection::class, __('Marques-pages'));
-        $this->addField('bookmark', Checkbox::class, __('Activer les marques-pages'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmarkView', SelectFromArray::class, __('Menu des marques-pages'), [
-            'options' => [
-                'small' => 'Réduit',
-                'large' => 'Complet',
-            ],
-            'default' => 'small',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmarkFunctionsMainMenu', Checkbox::class, __('Fonctions vers menus généraux'), [
-            'hint' => __('Les fonctions des marques pages (Télécharger, Imprimer, Envoyer) dirigent vers les menus généraux'),
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmarkEmpty', Checkbox::class, __('Bouton pour effacer les marques-pages'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('bookmarkSendEnable', Checkbox::class, __('Activer l\'envoi des marques-pages par e-mail'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmark_email_title', LongText::class, __('Titre de l\'email "Envoyer à un ami"'), [
-            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmark_email_body', Textarea::class, __('Corps de l\'email "Envoyer à un ami"'), [
-            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('bookmarkPrint', Checkbox::class, __('Activer l\'impression des marques-pages'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('bookmarkCornerSize', Integer::class, __('Taille des marques-pages'), [
-            'hint' => __('Taille relative à la largeur de la page'),
-            'default' => 8,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmarkOffset', Integer::class, __('Décaler de x pixels vers l\'intérieur'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmarkPermanentIcon', Checkbox::class, __('Afficher l\'icône en permanance'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmarkBlinkOnPageChange', Checkbox::class, __('Faire clignoter le marque page à l\'apparition de la page'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('bookmarkDisablePages', LongText::class, __('Désactiver les marques-pages sur ces pages'), [
-            'hint' => __('1-3,5 = 1,2,3,5'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('bookmarkUsePDF', SelectFromArray::class, __('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'), [
-            'options' => [
-                'pages' => 'PDF des pages',
-                'download' => 'PDF de remplacement',
-                'thumbnails' => 'PDF des miniatures',
-            ],
-            'default' => 'pages',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_help', FormSection::class, __('Aide'));
-        $this->addField('help', Checkbox::class, __('Activer l\'aide'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('helpStartup', Checkbox::class, __('Afficher l\'aide au démarrage'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('helpStartupTime', Integer::class, __('Temps d\'affichage en secondes'), [
-            'default' => 15,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('helpBookmarks', Checkbox::class, __('Améliorer l\'aide des marques-pages'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('helpArrowTooltip', LongText::class, __('Bulle affichée au niveau de la flèche de droite'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('landscapeWarning', Textarea::class, __('Avertissement affiché sur mobile au chargement de la publication'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_index', FormSection::class, __('Vue d\'index (vignettes)'));
-        $this->addField('indexAutoScroll', Checkbox::class, __('Activer le scroll automatique'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pdfThumbnails', FilesOrURL::class, __('PDF utilisé pour générer les miniatures'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.pdf',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('indexMessage', Textarea::class, __('Message en haut'), [
-            'hint' => __('Message en haut de la vue index'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_print', FormSection::class, __('Impression'));
-        $this->addField('print', Checkbox::class, __('Activer l\'impression'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('printFullBrochure', Checkbox::class, __('Autoriser l\'impression de la brochure complète'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('printPageRange', Checkbox::class, __('Activer l\'option pour imprimer une plage de pages'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_search', FormSection::class, __('Moteur de recherche'));
-        $this->addField('search', Checkbox::class, __('Activer le moteur de recherche'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('searchFullBurger', Checkbox::class, __('Afficher le burger menu complet à l\'ouverture de la recheche'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('ignoreWordLimit', Integer::class, __('Ignorer les mots de moins de X caractères'), [
-            'default' => 3,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('ignoreSearch', Textarea::class, __('Mots à ignorer'), [
-            'hint' => __('Liste des mots à ignorer séparés par des virgules'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('ignoreSearchSeparators', LongText::class, __('Caractères à ne pas considérer comme un séparateur de mot'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('searchWordSelectionAlgorithm', SelectFromArray::class, __('Algorithme de sélection des occurences'), [
-            'options' => [
-                'begins' => 'mot commençant par la requête',
-                'exact' => 'mot correspondant exactement à la requête',
-                'contains' => 'mot contenant la requête',
-                'expression' => 'expression exacte',
-            ],
-            'default' => 'begins',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('searchPageSelectionAlgorithm', SelectFromArray::class, __('Algorithme de sélection des résultats'), [
-            'options' => [
-                'AND' => 'les double-pages qui contiennent tous les mots recherchés (ET logique)',
-                'OR' => 'les double-page qui contiennent un des mots recherché (OU logique)',
-            ],
-            'default' => 'AND',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('highlightResults', Checkbox::class, __('Surligner les résultats'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('highlightAllOccurences', Checkbox::class, __('Surligner toutes les occurences'), [
-            'hint' => __('Même sur les pages non considérées comme un résultat'),
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('searchShowNoResultsPages', Checkbox::class, __('Afficher les pages sans résultats'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('textExtraction', SelectFromArray::class, __('Méthode d\'extraction des textes'), [
-            'options' => [
-                'pdfbox' => 'PDFBox',
-                'poppler' => 'Poppler',
-                'fluidbook' => 'Fluidbook (expérimentation basée sur PDFBox)',
-            ],
-            'default' => 'pdfbox',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_sound', FormSection::class, __('Effets sonores'));
-        $this->addField('soundTheme', SelectFromArray::class, __('Thème sonore'), [
-            'options' => [
-                '' => 'Pas de son',
-                'classic' => 'Classique',
-                'heavy' => 'Papier épais',
-                'light' => 'Papier fin',
-                'silent' => 'Silencieux',
-                'woosh' => 'Woosh',
-            ],
-            'default' => 'classic',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('soundOn', Checkbox::class, __('Activer les effets sonores à l\'ouverture'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('ambientSound', FilesOrURL::class, __('Ambiance sonore'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.mp3',
-                1 => '*.wav',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('ambientSoundVolume', Integer::class, __('Volume de l\'ambiance sonore'), [
-            'min' => 0,
-            'max' => 100,
-            'default' => 50,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_downloadpdf', FormSection::class, __('Fonction de téléchargement'));
-        $this->addField('pdf', Checkbox::class, __('Activer les fonctions de téléchargement'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pdfName', LongText::class, __('Nom du fichier PDF'), [
-            'default' => 'document.pdf',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pdfReplace', FilesOrURL::class, __('PDF de remplacement'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.pdf',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pdfCompress', Checkbox::class, __('Compression du fichier PDF'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('pdfComplex', Checkbox::class, __('Téchargement de PDF avancé'), [
-            'hint' => __('Permet à l\'utilisateur de sélectionner les pages qu\'il souhaite télécharger'),
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('pdfComplexShowCurrent', Checkbox::class, __('Afficher les pages courrantes'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_zoom', FormSection::class, __('Zoom'));
-        $this->addField('zoomWheel', SelectFromArray::class, __('Zoom molette'), [
-            'options' => [
-                'disabled' => 'Désactivé',
-                'wheel' => 'Molette',
-                'ctrlwheel' => 'Ctrl+Molette',
-            ],
-            'default' => 'wheel',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('zoom', Integer::class, __('Zoom par défaut (atteint au clic)'), [
-            'default' => 200,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('zoomw', Integer::class, __('Zoom maximal (atteint à l\'aide de la molette)'), [
-            'default' => 300,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_slider', FormSection::class, __('Slider'));
-        $this->addField('sliderImage', FilesOrURL::class, __('Image pour le slider'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_stats', FormSection::class, __('Statistiques avancées'));
-        $this->addField('tagcommander_id', LongText::class, __('Tag commander ID'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tagcommander_prod', Checkbox::class, __('Production'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tagcommander_plan', FilesOrURL::class, __('Plan de taggage "Tag commander"'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tagcommander_default_vars', Textarea::class, __('Variables par défaut'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('anchorsAliases', LongText::class, __('Alias des ancres'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('stats_score', Checkbox::class, __('Afficher les scores dans les rapports'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('stats_exclude_ip', Textarea::class, __('Exclure les IP suivantes des statistiques'), [
-            'hint' => __('Indiquer une adresse ip de la forme www.xxx.yyy.zzz par ligne'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('relay_url_params', LongText::class, __('Relayer les paramètres d\'url dans les liens sortants'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('gtag_additional_code', Textarea::class, __('Code additionnel Google Tag Manager'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('googleAnalyticsCustom', Textarea::class, __('Code Stats personnalisé (placé avant fermeture de head)'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('statsCustom', Textarea::class, __('Code Stats personnalisé (placé avant fermeture du body)'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('xiti', Textarea::class, __('Code XiTi global'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('xiti_page', Textarea::class, __('Modèle code xiti (pour tags relatifs aux pages)'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_sommaire', FormSection::class, __('Sommaire'));
-        $this->addField('chaptersCaptionDisplay', Checkbox::class, __('Afficher le titre "Sommaire" dans la popup'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersFontSize', Integer::class, __('Taille du texte des élements du sommaire'), [
-            'hint' => __('En % par rapport à la taille normale'),
-            'min' => 50,
-            'max' => 120,
-            'default' => 100,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('displayChaptersIcon', Checkbox::class, __('Affiche l\'icône du sommaire'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('displayChaptersPopup', Checkbox::class, __('Always display chapters in a popup'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('displayChaptersAtStart', Checkbox::class, __('Afficher le sommaire au chargement de la publication'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersPage', LongText::class, __('Faire pointer le sommaire sur la page'), [
-            'hint' => __('Laisser vide pour utiliser le sommaire classique'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersPosition', SelectFromArray::class, __('Position du sommaire'), [
-            'options' => [
-                'center' => 'Centré',
-                'chaptersIcon' => 'Aligné sur l\'icône',
-            ],
-            'default' => 'center',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersLevelLimit', Integer::class, __('Limiter à x niveaux'), [
-            'default' => 5,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersCascade', Checkbox::class, __('Sommaire en cascade'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersPagesNumber', SelectFromArray::class, __('Numérotation du sommaire'), [
-            'options' => [
-                'virtual' => 'Virtuelle',
-                'physical' => 'Physique',
-            ],
-            'default' => 'virtual',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('chaptersColMaxWidth', Integer::class, __('Largeur max d\'une colonne'), [
-            'default' => 300,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersColumns', Integer::class, __('Afficher le sommaire sur x colonne(s)'), [
-            'default' => 1,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('displayChaptersLine', Checkbox::class, __('Affiche une ligne entre le label et le numéro de page'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('chaptersIndent', Checkbox::class, __('Indenter les éléments (pour les sommaires à plat)'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('externalChaptersHTML', FilesOrURL::class, __('Sommaire personnalisé'), [
-            'hint' => __('Laisser vide pour utiliser le sommaire classique'),
-            'default' => '',
-            'accept' => [
-                0 => '*.zip',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('mobileChaptersStyle', SelectFromArray::class, __('Style des chapitres'), [
-            'options' => [
-                'classic' => 'Classique',
-                'ina' => 'INA',
-            ],
-            'default' => 'classic',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_tabs', FormSection::class, __('Onglets'));
-        $this->addField('tabsHTML5', FilesOrURL::class, __('Fichier d\'onglets (SVG, ZIP)'), [
-            'hint' => __('Charger un zip rendra les options ci-dessous inopérantes'),
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.zip',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsPages', LongText::class, __('Pages des onglets'), [
-            'hint' => __('Numéros de pages séparas par une virgule'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsSections', LongText::class, __('Sections des onglets'), [
-            'hint' => __('Numéros de pages séparés par une virgule'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsPagesNumbers', SelectFromArray::class, __('Numérotation utilisée'), [
-            'options' => [
-                'virtual' => 'Virtuelle',
-                'physical' => 'Physique',
-            ],
-            'default' => 'virtual',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsDisabledOnPages', LongText::class, __('Onglets inactifs sur les pages'), [
-            'hint' => __('1-3,5 = 1,2,3,5'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('tabsSide', SelectFromArray::class, __('Position des onglets'), [
-            'options' => [
-                'left' => 'Gauche',
-                'right' => 'Droite',
-            ],
-            'default' => 'right',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsMargin', Number::class, __('Marge des onglets'), [
-            'hint' => __('Une marge négative = les onglets passent sous la publication'),
-            'default' => -10,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('tabsHideOnPages', LongText::class, __('Cacher les onglets sur les pages'), [
-            'hint' => __('1-3,5 = 1,2,3,5'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsHideOnCover', Checkbox::class, __('Cacher les onglets sur la couverture'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsHideOnLastPage', Checkbox::class, __('Cacher les onglets sur la dernière page'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsHideEdges', SelectFromArray::class, __('Masquer les bordures du fluidbook'), [
-            'options' => [
-                'none' => 'Aucune',
-                'left' => 'Gauche',
-                'right' => 'Droite',
-                'both' => 'Les deux',
-            ],
-            'default' => 'right',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('tabsPriority', Integer::class, __('Priorité des onglets sur les contenus (%)'), [
-            'hint' => __('La valeur indique la réduction permise de la taille de la publication.'),
-            'min' => 0,
-            'max' => 100,
-            'default' => 15,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsLinkWidth', Number::class, __('Largeur des onglets'), [
-            'hint' => __('Largeur réservée pour les onglets et largeur de la zone cliquable des liens'),
-            'default' => 30,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsHideWhenOverlapingArrows', Checkbox::class, __('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsHideOnPortrait', Checkbox::class, __('Cacher les onglets lorsque le fluidbook est en mode portrait'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('tabsHideOnZoom', Checkbox::class, __('Cacher les onglets lorsque le fluidbook est zoomé'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_links', FormSection::class, __('Liens'));
-        $this->addField('permanentLinks', Checkbox::class, __('Liens visibles en permanence'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('mobileLinksRevealAnim', Checkbox::class, __('Animer les liens après un changement de page'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linkBlinkTime', Number::class, __('Temps d\'apparition du lien à l\'ouverture de la page (en secondes)'), [
-            'default' => 1.0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linkBlinkRepetition', Integer::class, __('Nombre de clignotement lors de l\'apparition des liens'), [
-            'default' => 1,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('openLinkAtStartup', LongText::class, __('Déclencher un lien à l\'ouverture du fluidbook'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('customLinkClass', LongText::class, __('Classe pour les liens personnalisés'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('ignoreLinksTypes', LongText::class, __('Ignorer les liens de type'), [
-            'hint' => __('Liste des numéros séparés par des virgules'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('mobileIgnoreBackgroundLinks', Checkbox::class, __('Ignorer les liens de background'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linkTooltipManager', LongText::class, __('Gestionnaire des info-bulles'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linkCornerSize', Integer::class, __('Taille des liens de coins de page'), [
-            'hint' => __('Pourcentage de la largeur de la page'),
-            'default' => 10,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linkTooltipMaxWidth', Integer::class, __('Largeur max des infobulles des liens de type "infobulle"'), [
-            'default' => 140,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('linkTracker', LongText::class, __('Tracking des liens'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('linkTrackerRegexp', LongText::class, __('Tracking des liens applicables aux liens du domaine'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('linkFilePrefix', LongText::class, __('Préfixer les liens de téléchargement'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_multimedia', FormSection::class, __('Multimedia'));
-        $this->addField('textPopupStylesheet', FilesOrURL::class, __('Feuille de style des popups de texte'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.css',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('textPopupWidth', Integer::class, __('Largeur optimale des popups'), [
-            'default' => 600,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('iframePopupMaxWidth', Integer::class, __('Largeur maximale des popups iframe'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('OAMChromeFactor', Number::class, __('Facteur OAM Chrome'), [
-            'default' => 1,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('OAMIEFactor', Number::class, __('Facteur OAM IE11'), [
-            'default' => 1,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_pdf', FormSection::class, __('PDF'));
-        $this->addField('PDFRenderer', SelectFromArray::class, __('Rendu des PDF par'), [
-            'options' => [
-                'native' => 'Navigateur',
-                'pdfjs' => 'PDF.js',
-                'pdfjs-legacy' => 'PDF.js (legacy)',
-            ],
-            'default' => 'native',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('PDFJSCSS', Textarea::class, __('Styles PDF.js'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_slideshow', FormSection::class, __('Slideshow'));
-        $this->addField('inlineSlideshowLibrary', SelectFromArray::class, __('Librarie utilisée pour les slideshow intégrés aux pages'), [
-            'options' => [
-                'dummy' => 'Simple (défaut)',
-                'vacheron' => 'Vacheron',
-            ],
-            'default' => 'dummy',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('popupSlideshowLibrary', SelectFromArray::class, __('Librarie utilisée pour les slideshow popup'), [
-            'options' => [
-                'splide' => 'Splide (défaut)',
-                'vacheron' => 'Vacheron',
-            ],
-            'default' => 'splide',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('slideshowCaptionSize', LongText::class, __('Taille de police de la légende du diaporama'), [
-            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('inlineSlideshowTransitionDuration', Number::class, __('Durée de la transition des diaporamas intégrés aux pages(s)'), [
-            'default' => 0.75,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('inlineSlideshowDuration', Number::class, __('Temps d\'attente des diaporamas intégrés aux pages (s)'), [
-            'default' => 7,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_videos', FormSection::class, __('Vidéos'));
-        $this->addField('webvideoAsLocal', Checkbox::class, __('Intégrer les webvidéos en local'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('mobileVideosPath', LongText::class, __('Chemin vers les vidéos'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('brightcovePlayerId', LongText::class, __('Brightcove Player Id'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('brightcovePlayerSecret', LongText::class, __('Brightcove Player Secret'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('bigPlayImage', FilesOrURL::class, __('Image pour le bouton "Big Play"'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.svg',
-                1 => '*.jpg',
-                2 => '*.png',
-                3 => '*.gif',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_audio', FormSection::class, __('Lecteur audio'));
-        $this->addField('audioPlayerTheme', SelectFromArray::class, __('Apparence du lecteur audio'), [
-            'options' => [
-                'native' => 'Apparence native du navigateur',
-                'invisible' => 'Zone cliquable invisible',
-                'redbull' => 'Circulaire',
-            ],
-            'default' => 'native',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_downloadportion', FormSection::class, __('Téléchargement d\'extraits'));
-        $this->addField('downloadPortionPDF', FilesOrURL::class, __('PDF utilisé pour le téléchargement des extraits'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('downloadPortionZoom', Integer::class, __('Zoom des images extraites'), [
-            'default' => 8,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_product_zoom', FormSection::class, __('Zooms produits'));
-        $this->addField('product_zoom_references', FilesOrURL::class, __('Références produits'), [
-            'hint' => __('Fichier contenant les références produits'),
-            'default' => '',
-            'accept' => [
-                0 => '*.xml',
-                1 => '*.xlsx',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('product_zoom_buttons_order', SelectFromArray::class, __('Order des boutons'), [
-            'options' => [
-                'right' => 'De la droite vers la gauche',
-                'left' => 'De la gauche vers la droite',
-            ],
-            'default' => 'right',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('product_zoom_label_1', LongText::class, __('Label du bouton 1'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_tooltip_1', LongText::class, __('Label de l\'infobulle 1'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_icon_1', SelectFromArray::class, __('Icône du bouton 1'), [
-            'options' => [
-                'none' => 'Aucune',
-                'nav-share' => 'Partage',
-                'icon-site' => 'Ecran',
-                'nav-download' => 'Télécharger',
-                'icon-pdf' => 'PDF',
-                'icon-video' => 'Video',
-                'icon-link' => 'Lien',
-                'icon-code' => 'Code',
-                'icon-qr' => 'QR code',
-                'icon-article' => 'Article',
-                'nav-basket' => 'Panier (sac)',
-                'nav-cart-caddie' => 'Panier (caddie)',
-                'nav-cart-wishlist' => 'Panier (wishlist)',
-                'icon-360' => '360°',
-                'icon-photo' => 'Photo',
-            ],
-            'default' => 'click',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_action_1', SelectFromArray::class, __('Action du bouton 1'), [
-            'options' => [
-                'disabled' => 'Désactiver',
-                'link' => 'Ouvrir un lien',
-                'iframe' => 'Ouvrir en iframe',
-                'copy' => 'Copier un contenu',
-                'video' => 'Web Vidéo',
-                'videofile' => 'Vidéo',
-                'videogif' => 'Vidéo (boucle, sans contrôle)',
-                'image' => 'Voir une image',
-                'addtocart' => 'Ajouter au panier',
-            ],
-            'default' => 'disabled',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('product_zoom_label_2', LongText::class, __('Label du bouton 2'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_tooltip_2', LongText::class, __('Label de l\'infobulle 2'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_icon_2', SelectFromArray::class, __('Icône du bouton 2'), [
-            'options' => [
-                'none' => 'Aucune',
-                'nav-share' => 'Partage',
-                'icon-site' => 'Ecran',
-                'nav-download' => 'Télécharger',
-                'icon-pdf' => 'PDF',
-                'icon-video' => 'Video',
-                'icon-link' => 'Lien',
-                'icon-code' => 'Code',
-                'icon-qr' => 'QR code',
-                'icon-article' => 'Article',
-                'nav-basket' => 'Panier (sac)',
-                'nav-cart-caddie' => 'Panier (caddie)',
-                'nav-cart-wishlist' => 'Panier (wishlist)',
-                'icon-360' => '360°',
-                'icon-photo' => 'Photo',
-            ],
-            'default' => 'click',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_action_2', SelectFromArray::class, __('Action du bouton 2'), [
-            'options' => [
-                'disabled' => 'Désactiver',
-                'link' => 'Ouvrir un lien',
-                'iframe' => 'Ouvrir en iframe',
-                'copy' => 'Copier un contenu',
-                'video' => 'Web Vidéo',
-                'videofile' => 'Vidéo',
-                'videogif' => 'Vidéo (boucle, sans contrôle)',
-                'image' => 'Voir une image',
-                'addtocart' => 'Ajouter au panier',
-            ],
-            'default' => 'disabled',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('product_zoom_label_3', LongText::class, __('Label du bouton 3'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_tooltip_3', LongText::class, __('Label de l\'infobulle 3'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_icon_3', SelectFromArray::class, __('Icône du bouton 3'), [
-            'options' => [
-                'none' => 'Aucune',
-                'nav-share' => 'Partage',
-                'icon-site' => 'Ecran',
-                'nav-download' => 'Télécharger',
-                'icon-pdf' => 'PDF',
-                'icon-video' => 'Video',
-                'icon-link' => 'Lien',
-                'icon-code' => 'Code',
-                'icon-qr' => 'QR code',
-                'icon-article' => 'Article',
-                'nav-basket' => 'Panier (sac)',
-                'nav-cart-caddie' => 'Panier (caddie)',
-                'nav-cart-wishlist' => 'Panier (wishlist)',
-                'icon-360' => '360°',
-                'icon-photo' => 'Photo',
-            ],
-            'default' => 'click',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_zoom_action_3', SelectFromArray::class, __('Action du bouton 3'), [
-            'options' => [
-                'disabled' => 'Désactiver',
-                'link' => 'Ouvrir un lien',
-                'iframe' => 'Ouvrir en iframe',
-                'copy' => 'Copier un contenu',
-                'video' => 'Web Vidéo',
-                'videofile' => 'Vidéo',
-                'videogif' => 'Vidéo (boucle, sans contrôle)',
-                'image' => 'Voir une image',
-                'addtocart' => 'Ajouter au panier',
-            ],
-            'default' => 'disabled',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('product_share_enabled', Checkbox::class, __('Activer le bouton de partage'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_share_link', SelectFromArray::class, __('Lien de partage'), [
-            'options' => [
-                'product' => 'Lien du produit',
-                'page' => 'Lien vers la page du fluidbook',
-            ],
-            'default' => 'product',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_email_title', LongText::class, __('Titre de l\'email "Envoyer à un ami"'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_email_body', Textarea::class, __('Corps de l\'email "Envoyer à un ami"'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('product_tweet', Textarea::class, __('Contenu Partage court'), [
-            'hint' => __('Contenu du partagé sur les partages courts'),
-            'default' => '%short%',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_accessibility', FormSection::class, __('Accessibilité'));
-        $this->addField('audiodescriptionTexts', FilesOrURL::class, __('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.xlsx',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('audiodescriptionVoice', SelectFromArray::class, __('Voix pour l\'audiodescription'), [
-            'options' => [
-                '' => '',
-                'festival:voice_cmu_us_slt_arctic_hts' => 'Festival (en-US)',
-                'readspeaker:Sophie/en_us' => 'ReadSpeaker Sophie (en-US)',
-                'readspeaker:Marc/en_us' => 'ReadSpeaker Marc (en-US)',
-                'azuretts:fr-FR/Female/fr-FR-DeniseNeural' => 'Azure Denise (fr-FR)',
-                'azuretts:fr-FR/Male/fr-FR-MaleNeural' => 'Azure Henry (fr-FR)',
-            ],
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_splash', FormSection::class, __('Ecran de chargement'));
-        $this->addField('splashImage', FilesOrURL::class, __('Image'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.jpg',
-                1 => '*.jpeg',
-                2 => '*.png',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('splashURL', LongText::class, __('URL'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('splashTarget', SelectFromArray::class, __('Ouvrir le lien'), [
-            'options' => [
-                '_self' => 'Dans la fenêtre courrante',
-                '_blank' => 'Dans un nouvel onglet',
-            ],
-            'default' => '_self',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('splashMinimalTime', Number::class, __('Temps minimal d\'affichage'), [
-            'default' => 1,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_notes', FormSection::class, __('Notes'));
-        $this->addField('notes', Checkbox::class, __('Activer les notes'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_articles', FormSection::class, __('Articles'));
-        $this->addField('articlesFile', FilesOrURL::class, __('Articles'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.xml',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('articlesImages', FilesOrURL::class, __('Images des articles'), [
-            'hint' => __('Les noms des fichiers doivent être les même que ceux des balises <image> du XML'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('articlesShare', Checkbox::class, __('Activer le partage'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('articlesPrint', Checkbox::class, __('Activer l\'impression'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('articlesStyle', SelectFromArray::class, __('Style'), [
-            'options' => [
-                'default' => 'Défaut',
-                'atlantic' => 'Atlantic',
-                'harmonie-mutuelle' => 'Harmonie Mutuelle',
-                'business-immo' => 'Business Immo',
-            ],
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('articlesFont', SelectFromArray::class, __('Police des articles'), [
-            'options' => [
-                'OpenSans' => 'Open Sans (défaut)',
-                'Montserrat' => 'Montserrat',
-                'Arial' => 'Arial, Helvetica, sans-serif (police système)',
-                'sans-serif' => 'Police système sans-serif',
-            ],
-            'default' => 'OpenSans',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_archives', FormSection::class, __('Archives'));
-        $this->addField('externalArchives', FilesOrURL::class, __('Archives'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.jpg',
-                1 => '*.jpeg',
-                2 => '*.png',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('archivesLabel', LongText::class, __('Label'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_form', FormSection::class, __('Formulaire'));
-        $this->addField('form', SelectFromArray::class, __('Formulaire'), [
-            'options' => [
-                '' => 'Aucun',
-                'bulle' => 'Bulle Groupe',
-                'bourbon' => 'Bourbon / Suggestions',
-                'avery' => 'Avery',
-            ],
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_privacy', FormSection::class, __('Respect de la vie privée'));
-        $this->addField('cookieConsent', Checkbox::class, __('Message cookie'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('cookieConsentMessage', Textarea::class, __('Texte du consentement'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('cookieConsentAutoclose', Integer::class, __('Masquer automatiquement après x secondes'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_basket', FormSection::class, __('Panier'));
-        $this->addField('basket', Checkbox::class, __('Panier activé'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('basketManager', SelectFromArray::class, __('Manager de panier'), [
-            'options' => [
-                'com.fluidbook.player.basket.BasketManager' => 'Classic',
-                'com.fluidbook.player.basket.custom.grdf.GrdfBasketManager' => 'Grdf',
-                'com.fluidbook.player.basket.custom.grdf.grdf2013.GrdfBasketManager2013' => 'Grdf 2013',
-                'com.fluidbook.player.basket.custom.grdf.grdf2015.GrdfBasketManager2015' => 'Grdf 2015',
-                'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager' => 'Essilor',
-                'com.fluidbook.player.basket.custom.essilorrecap.EssilorRecapBasketManager' => 'Essilor Recap',
-                'com.fluidbook.player.basket.custom.wesco.WescoBasketManager' => 'Wesco Ventes',
-                'com.fluidbook.player.basket.custom.atlantic.AtlanticDownloadBasketManager' => 'Atlantic Download',
-                'Remarkable' => 'Remarkable',
-                'Mopec' => 'Mopec',
-                'Puma' => 'Puma',
-                'MIF' => 'MIF',
-                'Flexipan' => 'Flexipan',
-                'ZoomProductLink' => 'Zoom + lien produit (déprécié, utiliser la fonctionnalité "Zoom produits")',
-                'JoueclubWishlist' => 'Wishlist Jouéclub',
-                'GrandVision' => 'GrandVision',
-                'GrandPavois' => 'Grand Pavois',
-                'JoueclubWishlist2021' => 'Wishlist Jouéclub Noël 2021',
-            ],
-            'default' => 'classic',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('cartIcon', SelectFromArray::class, __('Icône'), [
-            'options' => [
-                'nav-basket' => 'Sac',
-                'nav-cart-caddie' => 'Caddie',
-                'nav-cart-wishlist' => 'Wishlist',
-            ],
-            'default' => 'nav-basket',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('cartLinkAppearance', SelectFromArray::class, __('Apparence des liens panier'), [
-            'options' => [
-                'link' => 'Lien',
-                'overlay' => 'Boutons + et - avec overlay',
-            ],
-            'default' => 'link',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('basketReferences', FilesOrURL::class, __('Références produits'), [
-            'hint' => __('Fichier contenant les références produits'),
-            'default' => '',
-            'accept' => [
-                0 => '*.xml',
-                1 => '*.xlsx',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('basketImages', FilesOrURL::class, __('Images des produits'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('cartHeaderImage', FilesOrURL::class, __('Header panier'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.jpg',
-                1 => '*.jpeg',
-                2 => '*.png',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('cartHeaderMobileImage', FilesOrURL::class, __('Header panier (mobile)'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.jpg',
-                1 => '*.jpeg',
-                2 => '*.png',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('cartExtraSettings', Textarea::class, __('Paramètres panier'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_offline', FormSection::class, __('Version offline'));
-        $this->addField('offlineTitle', LongText::class, __('Titre de l\'application'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('offlineLink', LongText::class, __('URL du Fluidbook'), [
-            'hint' => __('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'),
-            'default' => 'http://',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('offlineWindowsInstallPath', LongText::class, __('Chemin d\'installation par défaut'), [
-            'hint' => __('Par défaut: %LOCALAPPDATA%/%title%'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('offlineWindowsProfilePath', LongText::class, __('Répertoire de stockage du profile'), [
-            'hint' => __('Par défaut: %LOCALAPPDATA%/%title%'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('offlineEnableAdvancedPrinting', Checkbox::class, __('Activer le menu d\'impression avancée'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('debugConsole', Checkbox::class, __('Activer la console de débuggage'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_mobilefirst', FormSection::class, __('Mobile first'));
-        $this->addField('mobilefirstFluidbookId', LongText::class, __('Identifiant du fluidbook "Mobile first"'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('mobilefirstBreakpoint', LongText::class, __('Breakpoint du passage à la version "Mobile first" (en pixels)'), [
-            'default' => '640',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_phonegap', FormSection::class, __('Applications mobile'));
-        $this->addField('phonegapId', LongText::class, __('Identifiant de l\'identifiant'), [
-            'hint' => __('De la forme com.fluidbook.phonegap.xxxxx'),
-            'default' => 'com.fluidbook.phonegap.$id',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('phonegapVersion', LongText::class, __('Version de l\'application'), [
-            'hint' => __('De la forme 1.2.3'),
-            'default' => '1.0.0',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('phonegapPlugins', Textarea::class, __('Plugins Phonegap'), [
-            'default' => 'ChildBrowser',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('appScreenshots', Textarea::class, __('Générer les screenshots'), [
-            'hint' => __('Une ligne par vue à générer de la forme X,Y (X : P(ortrait) ou L(andscape), Y : numéro de page ou vue (1, index))'),
-            'default' => 'P,0
-L,2
-L,index',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_secure', FormSection::class, __('Sécurisation'));
-        $this->addField('secureURL', LongText::class, __('URL de sécurisation'), [
-            'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'),
-            'default' => 'http://',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('secureURLRedirect', LongText::class, __('Redirection'), [
-            'hint' => __('Si l\'authentification échoue, redirection vers cette adresse'),
-            'default' => 'http://',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('secureClientSidePassword', FilesOrURL::class, __('Sécurisation par mot de passe côté client'), [
-            'default' => '',
-            'accept' => [
-                0 => '*.html',
-            ],
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('secureClientSidePasswordCredentials', Textarea::class, __('Utilisateurs / mots de passe'), [
-            'hint' => __('Format user:password par ligne'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('preventRightClick', Checkbox::class, __('Essayer d\'empêcher le clic droit'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('restrictPrintDownload', LongText::class, __('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), [
-            'hint' => __('Ne pas indiquer le ?'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('restrictPrint', Checkbox::class, __('Restreindre l\'impression'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('restrictDownload', Checkbox::class, __('Restreindre le téléchargement du pdf'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('restrictSendBookmark', Checkbox::class, __('Restreindre l\'envoi de marques-pages'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('recaptcha', LongText::class, __('Activer reCATPCHA v3 (clé du site)'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_multibrochure', FormSection::class, __('Multibrochure'));
-        $this->addField('home', LongText::class, __('Accueil de l\'interface multibrochure'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('country', LongText::class, __('Pays de la brochure'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('multilangDisplay', SelectFromArray::class, __('Affichage'), [
-            'options' => [
-                'lang' => 'Langue',
-                'lang_country' => 'Langue (Pays)',
-                'country_lang' => 'Pays (Langue)',
-            ],
-            'default' => 'lang',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('multilang', Textarea::class, __('Langues'), [
-            'hint' => __('Code langue,Code pays,URL'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_plv', FormSection::class, __('Mode PLV'));
-        $this->addField('plv', Checkbox::class, __('Activer le mode PLV'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('plvTimer', Integer::class, __('Temps'), [
-            'min' => 1,
-            'max' => 60,
-            'default' => 5,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('plvMode', SelectFromArray::class, __('Arrivé à la dernière page'), [
-            'options' => [
-                'back' => 'Remonter vers la première page',
-                'first' => 'Recommencer à la première page',
-            ],
-            'default' => 'first',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_theme', FormSection::class, __('Options du thème'));
-        $this->addField('themeEnableAfterSearch', Checkbox::class, __('Afficher l\'image supplémentaire à droite du moteur de recherche'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_package', FormSection::class, __('Option d\'export'));
-        $this->addField('htmlExtension', LongText::class, __('Extension des fichiers html'), [
-            'hint' => __('Ex : php, htm, html, phtml, asp, aspx'),
-            'default' => 'html',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('actualHtmlExtension', LongText::class, __('Extension des fichiers html réellement appliquée au fluidbook'), [
-            'hint' => __('Ex : php, htm, html, phtml, asp'),
-            'default' => 'html',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('htmlPrepend', Textarea::class, __('Code à insérer en tête des fichiers'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('baseUrl', LongText::class, __('Base de l\'url'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('forceCompileOnDownload', Checkbox::class, __('Forcer la compilation lors du téléchargement'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('embedAllLibraries', Checkbox::class, __('Intégrer toutes les bibliothèques JS'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_demo', FormSection::class, __('Lien de démo'));
-        $this->addField('disableDemo', Checkbox::class, __('Désactiver le lien de démo'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('redirectDemo', LongText::class, __('Rediriger le lien de démo vers'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_gamify', FormSection::class, __('Gamification'));
-        $this->addField('gamify_coins_pages', Textarea::class, __('Attribuer des coins lors de la visite des pages'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_scorm', FormSection::class, __('SCORM'));
-        $this->addField('scorm_enable', Checkbox::class, __('Activer SCORM'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_version', SelectFromArray::class, __('Version du standard SCORM'), [
-            'options' => [
-                '1.2' => 'SCORM 1.2',
-                '2004.3' => 'SCORM 2004 3rd edition',
-                2004 => 'SCORM 2004 4th edition',
-            ],
-            'default' => '1.2',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_id', LongText::class, __('Identifiant SCORM'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_org', LongText::class, __('Organisation SCORM'), [
-            'default' => 'ACME-ORG-1350650111249',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_title', LongText::class, __('Titre SCORM'), [
-            'hint' => __('Laisser vide pour utiliser le titre de la publication'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_variables', Textarea::class, __('Variables SCORM'), [
-            'hint' => __('Laisser vide pour utiliser le titre de la publication'),
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('scorm_complete_on_exit', Checkbox::class, __('Marquer le cours comme "Complete" à la fermeture de la fenêtre'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_complete_on_last_page', Checkbox::class, __('Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_complete_coins', Integer::class, __('Marquer le cours comme "Complete" lorsque le visiteur accumule X coins'), [
-            'default' => 0,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('scorm_pass_on_complete', Checkbox::class, __('Marquer le cours comme Pass lorsqu\'il est terminé (SCORM 2004 seulement)'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_score100_on_complete', Checkbox::class, __('Marquer le cours comme réussi à 100% lorsqu\'il est terminé'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('scorm_quizdata', FilesOrURL::class, __('Données de quiz'), [
-            'default' => '',
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_score', Checkbox::class, __('Activer le support du score'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_score_min', Integer::class, __('Score minimal pour marquer le contenu comme réussi'), [
-            'min' => 0,
-            'max' => 100,
-            'default' => 50,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_quiz_as_questionnaire', Checkbox::class, __('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('', FormSeparator::class);
-        $this->addField('scorm_force_attempts', Checkbox::class, __('Forcer la création d\'un "attempt" à chaque ouverture'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('scorm_commit_immediately', Checkbox::class, __('Envoyer les données immédiatement au LMS (Peut provoquer des ralentissement sur certains LMS)'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('section_downloads', FormSection::class, __('Versions disponibles au téléchargement'));
-        $this->addField('download_online', Checkbox::class, __('Version online - Version par défaut'), [
-            'default' => true,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_sharepoint', Checkbox::class, __('Version Sharepoint - Version par défaut'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_scorm', Checkbox::class, __('Version SCORM - Version par défaut'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_win_inss_html', Checkbox::class, __('Version offline - Executable Windows'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_win_ins_html', Checkbox::class, __('Version offline - Installeur Auto-executable Windows'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_win_exe_html', Checkbox::class, __('Version offline - ZIP Windows'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_mac_exe_html', Checkbox::class, __('Version offline - Exécutable Mac OS X'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_win_cd_html', Checkbox::class, __('Version offline - CD-ROM / Clé USB'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_win_html', Checkbox::class, __('Version offline - HTML (Non adaptée à l\'installation sur un serveur web)'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
-        $this->addField('download_precompiled', Checkbox::class, __('Version precompilée'), [
-            'default' => false,
-            'fake' => true,
-            'store_in' => 'settings',
-            'translatable' => false,
-        ]);
 
-    }
 }
diff --git a/app/Models/Traits/PublicationSettings.php b/app/Models/Traits/PublicationSettings.php
new file mode 100644 (file)
index 0000000..669ac7b
--- /dev/null
@@ -0,0 +1,3131 @@
+<?php
+
+namespace App\Models\Traits;
+
+use App\Fields\FluidbookDevelopmentVersion;
+use App\Fields\FluidbookSignature;
+use Cubist\Backpack\Magic\Fields\Checkbox;
+use Cubist\Backpack\Magic\Fields\FilesOrURL;
+use Cubist\Backpack\Magic\Fields\FormSection;
+use Cubist\Backpack\Magic\Fields\FormSeparator;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\LongText;
+use Cubist\Backpack\Magic\Fields\Number;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Fields\Textarea;
+
+
+trait PublicationSettings
+{
+    public function setSettingsFields()
+    {
+        $this->addField('section_important', FormSection::class, __('Description de la publication'));
+        $this->addField('mobileLVersion', FluidbookDevelopmentVersion::class, __('Version logicielle'), [
+            'v2' => '{"type":"combo","default":"stable","editable":true,"label":"\\u00a7!\\u00a7Version logicielle!\\u00a7!","grade":1,"datas":{"master : git (stable)":"stable","master : local (dev)":"dev","icon-bar : git":"icon-bar|git","icon-bar : local":"icon-bar|local"}}',
+            'default' => 'stable',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobileVersion', SelectFromArray::class, __('Version mobile'), [
+            'v2' => '{"type":"combo","default":"html5-desktop","editable":true,"label":"\\u00a7!\\u00a7Version mobile!\\u00a7!","grade":3,"datas":{"\\u00a7!\\u00a7Rediriger vers le PDF!\\u00a7!":"pdf","\\u00a7!\\u00a7Version HTML5 recommand\\u00e9e (vecteurs sur desktop)!\\u00a7!":"html5-desktop","\\u00a7!\\u00a7Version HTML5 vecteurs!\\u00a7!":"html5","\\u00a7!\\u00a7Version HTML5 en images!\\u00a7!":"html5-images"}}',
+            'options' => [
+                'pdf' => __('Rediriger vers le PDF'),
+                'html5-desktop' => __('Version HTML5 recommandée (vecteurs sur desktop)'),
+                'html5' => __('Version HTML5 vecteurs'),
+                'html5-images' => __('Version HTML5 en images'),
+            ],
+            'default' => 'html5-desktop',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('title', LongText::class, __('Titre de la publication'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Titre de la publication!\\u00a7!","embed":false}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('url_link', LongText::class, __('URL du lien de retour au site'), [
+            'v2' => '{"type":"text","default":"http:\\/\\/","editable":true,"label":"\\u00a7!\\u00a7URL du lien de retour au site!\\u00a7!"}',
+            'default' => 'http://',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('signature', FluidbookSignature::class, __('Signature'), [
+            'v2' => '{"type":"combo","default":"1","editable":true,"label":"\\u00a7!\\u00a7Signature!\\u00a7!","grade":3,"datas":{"Fluidbook":"1","--":"3","W&CIE":"13","InfoStrates":"16","Mati\\u00e8re grise":"17","Analogue":"22","Wonderful":"23","Kadreo":"24","EPCOM":"26","ABW":"27","Gill & Macmillan":"28","Double-ID":"29","STUDIOFRANCE":"30","French Vision":"31","Studio LWA":"32","Graphiworks (GW)":"33","Kazoar":"34","agenceL2R.com":"35","ID:":"36","Agence L2R":"37","Agence Beaurepaire":"38","Shokola":"39","HemsleyFraser":"40","Taches d\'encre":"41","kstories":"42","L2R Diff\\u00e9rence":"43","WR2STUDIO":"44","Creads":"45","Longrine":"46","Haute mer":"47","Melting K":"48","Argo":"49","Give Me More":"50","Impact Communication":"51","ici Barb\\u00e8s":"52"}}',
+            'default' => '1',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_assets', FormSection::class, __('Assets'));
+        $this->addField('assetsDir', LongText::class, __('Utiliser le dossier d\'assets du fluidbook'), [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Utiliser le dossier d\'assets du fluidbook!\\u00a7!","default":"","editable":true,"grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linksAssets', FilesOrURL::class, __('Charger ou remplacer des fichiers de liens'), [
+            'v2' => '{"type":"freefile","label":"\\u00a7!\\u00a7Charger ou remplacer des fichiers de liens!\\u00a7!","default":"","editable":true,"grade":3,"multiple":true}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_basicStats', FormSection::class, __('Statistiques'));
+        $this->addField('stats', Checkbox::class, __('Activer les statistiques Fluidbook'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer les statistiques Fluidbook!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('googleAnalytics', LongText::class, __('Code Google Analytics'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Code Google Analytics!\\u00a7!","size":10}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('googleTagManager', LongText::class, __('Code Google Tag Manager'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Code Google Tag Manager!\\u00a7!","size":10}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_share', FormSection::class, __('Fonctions de partage'));
+        $this->addField('share', Checkbox::class, __('Activer les fonctions de partage'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer les fonctions de partage!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('email_title', LongText::class, __('Titre de l\'email') . ' "' . __('Envoyer à un ami') . '"', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Titre de l\'email!\\u00a7! \\"\\u00a7!\\u00a7Envoyer \\u00e0 un ami!\\u00a7!\\"","hint":"\\u00a7!\\u00a7Laisser vide pour utiliser la valeur par d\\u00e9faut!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('email_body', Textarea::class, __('Corps de l\'email') . ' "' . __('Envoyer à un ami') . '"', [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Corps de l\'email!\\u00a7! \\"\\u00a7!\\u00a7Envoyer \\u00e0 un ami!\\u00a7!\\"","hint":"\\u00a7!\\u00a7Laisser vide pour utiliser la valeur par d\\u00e9faut!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('email_editable', Checkbox::class, __('Permettre au lecteur de modifier le corps de l\'email'), [
+            'v2' => '{"type":"boolean","default":true,"editable":false,"label":"\\u00a7!\\u00a7Permettre au lecteur de modifier le corps de l\'email!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('askAcknowledge', Checkbox::class, __('Demander au destinataire un accusé de réception'), [
+            'v2' => '{"type":"boolean","default":false,"editable":false,"label":"\\u00a7!\\u00a7Demander au destinataire un accus\\u00e9 de r\\u00e9ception!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('sendasfluidbook', Checkbox::class, __('Envoyer le mail comme Fluidbook'), [
+            'v2' => '{"type":"boolean","default":false,"editable":false,"label":"\\u00a7!\\u00a7Envoyer le mail comme Fluidbook!\\u00a7!","grade":3,"hint":"\\u00a7!\\u00a7L\'exp\\u00e9diteur appara\\u00eetra en reply-to!\\u00a7!"}',
+            'hint' => __('L\'expéditeur apparaîtra en reply-to'),
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('email_mailto', Checkbox::class, __('Envoyer le mail via le client mail du visiteur (mailto:)'), [
+            'v2' => '{"type":"boolean","default":false,"editable":false,"label":"\\u00a7!\\u00a7Envoyer le mail via le client mail du visiteur (mailto:)!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('facebook_title', LongText::class, __('Titre du contenu partagé'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Titre du contenu partag\\u00e9!\\u00a7!","hint":"\\u00a7!\\u00a7Titre propos\\u00e9 sur les fonction de partage (par d\\u00e9faut, titre de la publication)!\\u00a7!"}',
+            'hint' => __('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('facebook_description', Textarea::class, __('Description du contenu partagé'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Description du contenu partag\\u00e9!\\u00a7!","grade":1,"hint":"\\u00a7!\\u00a7Description propos\\u00e9e sur les fonctions de partage (par d\\u00e9faut, vide)!\\u00a7!"}',
+            'hint' => __('Description proposée sur les fonctions de partage (par défaut, vide)'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('facebook_image', FilesOrURL::class, __('Miniature affichée'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Miniature affich\\u00e9e!\\u00a7!","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.jpg, *.png)","extensions":"*.jpg;*.jpeg;*.png"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('twitter_description', Textarea::class, __('Contenu Partage court'), [
+            'v2' => '{"type":"textarea","default":"%title% : %short%","editable":true,"label":"\\u00a7!\\u00a7Contenu Partage court!\\u00a7!","hint":"\\u00a7!\\u00a7Contenu du partag\\u00e9 sur les partages courts!\\u00a7!"}',
+            'hint' => __('Contenu du partagé sur les partages courts'),
+            'default' => '%title% : %short%',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('friend', Checkbox::class, __('E-mail'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7E-mail!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('facebook', Checkbox::class, __('Facebook'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Facebook!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('twitter', Checkbox::class, __('Twitter'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Twitter!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('whatsapp', Checkbox::class, __('WhatsApp'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7WhatsApp!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linkedin', Checkbox::class, __('LinkedIn'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7LinkedIn!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pinterest', Checkbox::class, __('Pinterest'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Pinterest!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('googleplus', Checkbox::class, __('Google +'), [
+            'v2' => '{"type":"boolean","default":false,"editable":false,"label":"\\u00a7!\\u00a7Google +!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('viadeo', Checkbox::class, __('Viadeo'), [
+            'v2' => '{"type":"boolean","default":false,"editable":false,"label":"\\u00a7!\\u00a7Viadeo!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('customSharer', LongText::class, __('Classe personnalisée de partage'), [
+            'v2' => '{"type":"text","default":"","editable":false,"label":"\\u00a7!\\u00a7Classe personnalis\\u00e9e de partage!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('friendWidth', Integer::class, __('Largeur du menu'), [
+            'v2' => '{"type":"integer","default":319,"editable":false,"label":"\\u00a7!\\u00a7Largeur du menu!\\u00a7!","grade":5}',
+            'default' => 319,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('friendHeight', Integer::class, __('Largeur du menu'), [
+            'v2' => '{"type":"integer","default":500,"editable":false,"label":"\\u00a7!\\u00a7Largeur du menu!\\u00a7!","grade":5}',
+            'default' => 500,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_seo', FormSection::class, __('Optimisation pour les moteurs de recherche'));
+        $this->addField('seoVersion', Checkbox::class, __('Générer une version pour les moteurs de recherche'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7G\\u00e9n\\u00e9rer une version pour les moteurs de recherche!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('seoRobots', Checkbox::class, __('Autoriser le parcours par les moteurs de recherche'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Autoriser le parcours par les moteurs de recherche!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('seoDescription', Textarea::class, __('Meta tag Description'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Meta tag Description!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('seoKeywords', Textarea::class, __('Meta tag Keywords'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Meta tag Keywords!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('seoBaseURL', LongText::class, __('URL de base'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL de base!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('seoAdvanced', FilesOrURL::class, __('Données SEO par page'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Donn\\u00e9es SEO par page!\\u00a7!","grade":5,"fileFilter":{"name":"\\u00a7!\\u00a7Fichier Excel!\\u00a7! (.xlsx)","extensions":"*.xlsx"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_3d_mode', FormSection::class, __('Options de visualisation'));
+        $this->addField('mobileNavigationType', SelectFromArray::class, __('Mode de navigation'), [
+            'v2' => '{"type":"combo","default":"book","editable":true,"label":"\\u00a7!\\u00a7Mode de navigation!\\u00a7!","grade":5,"datas":{"\\u00a7!\\u00a7Normal (automatique)!\\u00a7!":"book","\\u00a7!\\u00a7Normal (double page)!\\u00a7!":"landscape","\\u00a7!\\u00a7Normal (une page)!\\u00a7!":"portrait","\\u00a7!\\u00a7Mobile first!\\u00a7!":"mobilefirst","\\u00a7!\\u00a7Magazine tablette!\\u00a7!":"tab"}}',
+            'options' => [
+                'book' => __('Normal (automatique)'),
+                'landscape' => __('Normal (double page)'),
+                'portrait' => __('Normal (une page)'),
+                'mobilefirst' => __('Mobile first'),
+                'tab' => __('Magazine tablette'),
+            ],
+            'default' => 'book',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('mobileTransitions', SelectFromArray::class, __('Transitions entre les pages'), [
+            'v2' => '{"type":"combo","default":"flip3d","editable":true,"label":"\\u00a7!\\u00a7Transitions entre les pages!\\u00a7!","grade":3,"datas":{"\\u00a7!\\u00a7Aucune transition!\\u00a7!":"none","\\u00a7!\\u00a7Opacit\\u00e9!\\u00a7!":"fade","\\u00a7!\\u00a7Glisser!\\u00a7!":"slide","\\u00a7!\\u00a7Tourner (rigide)!\\u00a7!":"flip","\\u00a7!\\u00a7Tourner (souple)!\\u00a7!":"flip3d"}}',
+            'options' => [
+                'none' => __('Aucune transition'),
+                'fade' => __('Opacité'),
+                'slide' => __('Glisser'),
+                'flip' => __('Tourner (rigide)'),
+                'flip3d' => __('Tourner (souple)'),
+            ],
+            'default' => 'flip3d',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobileTransitionDuration', Number::class, __('Durée de la transition'), [
+            'v2' => '{"type":"float","default":0.5,"editable":true,"label":"\\u00a7!\\u00a7Dur\\u00e9e de la transition!\\u00a7!"}',
+            'default' => 0.5,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobileTransitionDurationSlide', Number::class, __('Durée de la transition (fade, slide)'), [
+            'v2' => '{"type":"float","default":0,"editable":true,"label":"\\u00a7!\\u00a7Dur\\u00e9e de la transition (fade, slide)!\\u00a7!","hint":"\\u00a7!\\u00a7Laisser \\u00e0 z\\u00e9ro pour utiliser la valeur g\\u00e9n\\u00e9rale!\\u00a7!"}',
+            'hint' => __('Laisser à zéro pour utiliser la valeur générale'),
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('forceWhiteBackground', Checkbox::class, __('Ajouter un fond blanc aux pages'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Ajouter un fond blanc aux pages!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('rasterizePages', Textarea::class, __('Ecraser les pages'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Ecraser les pages!\\u00a7!","hint":"1-3,5 = 1,2,3,5","grade":1}',
+            'hint' => '1-3,5 = 1,2,3,5',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('vectorPages', Textarea::class, __('Conserver les pages en vecteur'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Conserver les pages en vecteur!\\u00a7!","hint":"1-3,5 = 1,2,3,5","grade":1}',
+            'hint' => '1-3,5 = 1,2,3,5',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('visualisationMode', SelectFromArray::class, __('Mode de visualisation 3D'), [
+            'v2' => '{"type":"combo","default":"3","editable":false,"label":"\\u00a7!\\u00a7Mode de visualisation 3D!\\u00a7!","datas":{"\\u00a7!\\u00a7Mode 3D!\\u00a7!":"0","\\u00a7!\\u00a7Mode 2D (cam\\u00e9ra fixe et pages \\u00e0 plat)!\\u00a7!":"1","\\u00a7!\\u00a7Laisser le choix \\u00e0 l\'utilisateur (mode 3D par d\\u00e9faut)!\\u00a7!":"2","\\u00a7!\\u00a7Laisser le choix \\u00e0 l\'utilisateur (mode 2D par d\\u00e9faut)!\\u00a7!":"3"}}',
+            'options' => [
+                0 => __('Mode 3D'),
+                1 => __('Mode 2D (caméra fixe et pages à plat)'),
+                2 => __('Laisser le choix à l\'utilisateur (mode 3D par défaut)'),
+                3 => __('Laisser le choix à l\'utilisateur (mode 2D par défaut)'),
+            ],
+            'default' => '3',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('antialiasReading', Checkbox::class, __('Amélioration de la lisibilité en mode 2D'), [
+            'v2' => '{"type":"boolean","default":true,"editable":false,"label":"\\u00a7!\\u00a7Am\\u00e9lioration de la lisibilit\\u00e9 en mode 2D!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('correctCenter', Checkbox::class, __('Corriger les lignes blanches entre les pages'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Corriger les lignes blanches entre les pages!\\u00a7!","grade":2}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pagesBaseAngle', Integer::class, __('Angle de base entre les pages'), [
+            'v2' => '{"type":"integer","default":2,"editable":false,"label":"\\u00a7!\\u00a7Angle de base entre les pages!\\u00a7!","grade":3,"hint":"\\u00a7!\\u00a70 : Publication \\u00e0 plat!\\u00a7!\\n\\u00a7!\\u00a72 : Valeur par d\\u00e9faut!\\u00a7!"}',
+            'hint' => __('0 : Publication à plat') . '
+' . __('2 : Valeur par défaut'),
+            'default' => 2,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('centerBook', Checkbox::class, __('Centrer la publication sur les couvertures'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Centrer la publication sur les couvertures!\\u00a7!","grade":2}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('extraXSpace', Integer::class, __('Marge supplémentaire horizontale'), [
+            'v2' => '{"type":"integer","default":0,"editable":true,"label":"\\u00a7!\\u00a7Marge suppl\\u00e9mentaire horizontale!\\u00a7!","grade":3}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobileExtraXSpace', Integer::class, __('Marge supplémentaire horizontale'), [
+            'v2' => '{"type":"integer","default":0,"editable":true,"label":"\\u00a7!\\u00a7Marge suppl\\u00e9mentaire horizontale!\\u00a7!","grade":3}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('extraYSpace', Integer::class, __('Marge supplémentaire verticale'), [
+            'v2' => '{"type":"integer","default":0,"editable":true,"label":"\\u00a7!\\u00a7Marge suppl\\u00e9mentaire verticale!\\u00a7!","grade":3}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('viewMode', SelectFromArray::class, __('Mode de visualisation (beta)'), [
+            'v2' => '{"type":"combo","default":"0","editable":false,"label":"\\u00a7!\\u00a7Mode de visualisation (beta)!\\u00a7!","datas":{"\\u00a7!\\u00a7Classique!\\u00a7!":"0","\\u00a7!\\u00a7Diaporama!\\u00a7!":"1"},"grade":5}',
+            'options' => [
+                0 => __('Classique'),
+                1 => __('Diaporama'),
+            ],
+            'default' => '0',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('dynamicBackgroundColor', Textarea::class, 'Couleur de fond dynamique', [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"Couleur de fond dynamique","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('svgToCanvas', Checkbox::class, __('Activer le rendu svgtocanvas'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer le rendu svgtocanvas!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('svgToCanvasUpscale', Number::class, __('Upscale de la fonction svgtocanvas'), [
+            'v2' => '{"type":"float","default":1,"editable":true,"label":"\\u00a7!\\u00a7Upscale de la fonction svgtocanvas!\\u00a7!"}',
+            'default' => 1,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('svgTextMethod', SelectFromArray::class, __('Méthode d\'extraction des textes en SVG'), [
+            'v2' => '{"type":"combo","default":"pdftocairo","editable":true,"label":"\\u00a7!\\u00a7M\\u00e9thode d\'extraction des textes en SVG!\\u00a7!","datas":{"\\u00a7!\\u00a7Cairo!\\u00a7!":"pdf","\\u00a7!\\u00a7Mu!\\u00a7!":"mu"}}',
+            'options' => [
+                'pdf' => __('Cairo'),
+                'mu' => __('Mu'),
+            ],
+            'default' => 'pdftocairo',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('textsThickness', Number::class, __('Epaisseur des textes'), [
+            'v2' => '{"type":"float","default":1,"editable":true,"label":"\\u00a7!\\u00a7Epaisseur des textes!\\u00a7!"}',
+            'default' => 1,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('textsThicknessPages', LongText::class, __('Appliquer l\'épaisseur des texte sur les pages'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Appliquer l\'\\u00e9paisseur des texte sur les pages!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('imageFormat', SelectFromArray::class, __('Format des images'), [
+            'v2' => '{"type":"combo","default":"jpg","editable":true,"datas":{"JPEG":"jpg","PNG":"png"},"grade":2,"label":"\\u00a7!\\u00a7Format des images!\\u00a7!"}',
+            'options' => [
+                'jpg' => 'JPEG',
+                'png' => 'PNG',
+            ],
+            'default' => 'jpg',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('maxResolution', SelectFromArray::class, __('Résolution maximale des pages'), [
+            'v2' => '{"type":"combo","default":300,"editable":true,"datas":{"300dpi":300,"150dpi":150,"125dpi":125,"100dpi":100},"grade":2,"label":"\\u00a7!\\u00a7R\\u00e9solution maximale des pages!\\u00a7!"}',
+            'options' => [
+                300 => '300dpi',
+                150 => '150dpi',
+                125 => '125dpi',
+                100 => '100dpi',
+            ],
+            'default' => 300,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('JPEGQuality', Integer::class, __('Qualité JPEG'), [
+            'v2' => '{"type":"integer","default":85,"editable":true,"grade":2,"label":"\\u00a7!\\u00a7Qualit\\u00e9 JPEG!\\u00a7!"}',
+            'default' => 85,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_performances', FormSection::class, __('Performances'));
+        $this->addField('rasterizeOnSafari', Checkbox::class, __('Ecraser les pages pour Safari (Mac OS)'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Ecraser les pages pour Safari (Mac OS)!\\u00a7!","grade":1}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('performance3DMode', SelectFromArray::class, __('Performance de la 3D'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Tester la machine!\\u00a7!":"auto","\\u00a7!\\u00a7Haute!\\u00a7!":"highPerf","\\u00a7!\\u00a7Moyenne!\\u00a7!":"lowPerf","\\u00a7!\\u00a7Basse!\\u00a7!":"veryLowPerf"},"default":"auto","editable":true,"label":"\\u00a7!\\u00a7Performance de la 3D!\\u00a7!","grade":1}',
+            'options' => [
+                'auto' => __('Tester la machine'),
+                'highPerf' => __('Haute'),
+                'lowPerf' => __('Moyenne'),
+                'veryLowPerf' => __('Basse'),
+            ],
+            'default' => 'auto',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_general', FormSection::class, __('Fonctionnalités générales'));
+        $this->addField('tooltipTimer', Number::class, __('Temps maximum d\'apparition des infos-bulles (en secondes)'), [
+            'v2' => '{"type":"float","default":3,"editable":true,"label":"\\u00a7!\\u00a7Temps maximum d\'apparition des infos-bulles (en secondes)!\\u00a7!"}',
+            'default' => 3,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobilePlugins', Textarea::class, __('Plugin'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Plugin!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('preload', Integer::class, __('Nombre de pages à précharger'), [
+            'v2' => '{"type":"integer","default":16,"editable":false,"label":"\\u00a7!\\u00a7Nombre de pages \\u00e0 pr\\u00e9charger!\\u00a7!","grade":3}',
+            'default' => 16,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('maxPages', Integer::class, __('Nombre de pages maximal affiché à l\'ouverture du fluidbook (pas de limite = 0)'), [
+            'v2' => '{"type":"integer","default":0,"editable":true,"label":"\\u00a7!\\u00a7Nombre de pages maximal affich\\u00e9 \\u00e0 l\'ouverture du fluidbook (pas de limite = 0)!\\u00a7!","grade":3}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pages', Integer::class, __('Nombre de pages'), [
+            'v2' => '{"type":"integer","default":0,"editable":false,"label":"\\u00a7!\\u00a7Nombre de pages!\\u00a7!"}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('width', Number::class, __('Largeur'), [
+            'v2' => '{"type":"float","default":0,"editable":false,"label":"\\u00a7!\\u00a7Largeur!\\u00a7!"}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('height', Number::class, __('Hauteur'), [
+            'v2' => '{"type":"float","default":0,"editable":false,"label":"\\u00a7!\\u00a7Hauteur!\\u00a7!"}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_menu', FormSection::class, __('Menu'));
+        $this->addField('navOrder', Textarea::class, __('Ordre des icônes dans la nav'), [
+            'v2' => '{"type":"textarea","default":"index, chapters, search, print, friend, bookmark, pdf, notes, archives, basket, fullscreen, sound, 3d, extra, extra1, extra2, extra3, extra4, extra5, help, lang","editable":true,"label":"\\u00a7!\\u00a7Ordre des ic\\u00f4nes dans la nav!\\u00a7!","grade":3}',
+            'default' => 'index, chapters, search, print, friend, bookmark, pdf, notes, archives, basket, fullscreen, sound, 3d, extra, extra1, extra2, extra3, extra4, extra5, help, lang',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navOrderH', Textarea::class, __('Ordre des icônes dans la nav') . ' (' . __('Si différente') . ')', [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Ordre des ic\\u00f4nes dans la nav!\\u00a7! (\\u00a7!\\u00a7Si diff\\u00e9rente!\\u00a7!)","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('mobileNavScale', Integer::class, __('Taille du menu (en %)'), [
+            'v2' => '{"type":"integer","default":100,"editable":true,"label":"\\u00a7!\\u00a7Taille du menu (en %)!\\u00a7!","grade":3}',
+            'default' => 100,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('menuBreakpoint', LongText::class, __('Breakpoint burger menu'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Breakpoint burger menu!\\u00a7!","hint":"Par d\\u00e9faut 1023px","grade":3}',
+            'hint' => 'Par défaut 1023px',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('afterSearchDisplayForHTML', Checkbox::class, __('Afficher l\'image après le moteur de recherche sur la version HTML5'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Afficher l\'image apr\\u00e8s le moteur de recherche sur la version HTML5!\\u00a7!","grade":1}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('navExtraImage', FilesOrURL::class, __('Image pour navigation'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Image pour navigation!\\u00a7!","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraImageMobile', FilesOrURL::class, __('Image pour mobile'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Image pour mobile!\\u00a7!","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraLink', LongText::class, __('URL'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraTooltip', LongText::class, __('Infobulle ou label'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Infobulle ou label!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('navExtraIcon1', FilesOrURL::class, __('Icône supplémentaire') . ' 1', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Ic\\u00f4ne suppl\\u00e9mentaire!\\u00a7! 1","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraType1', SelectFromArray::class, __('Type'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Ic\\u00f4ne + Label!\\u00a7!":"icon","\\u00a7!\\u00a7Image!\\u00a7!":"image"},"default":"icon","editable":true,"label":"\\u00a7!\\u00a7Type!\\u00a7!"}',
+            'options' => [
+                'icon' => __('Icône + Label'),
+                'image' => __('Image'),
+            ],
+            'default' => 'icon',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraLink1', LongText::class, __('URL') . ' 1', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL!\\u00a7! 1"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraVisibility1', SelectFromArray::class, __('Visible') . ' 1', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Navigation horizontale!\\u00a7!":"horizontal","\\u00a7!\\u00a7Navigation burger!\\u00a7!":"burger","\\u00a7!\\u00a7Navigations horizontale et burger!\\u00a7!":"both"},"default":"both","editable":true,"label":"\\u00a7!\\u00a7Visible!\\u00a7! 1"}',
+            'options' => [
+                'horizontal' => __('Navigation horizontale'),
+                'burger' => __('Navigation burger'),
+                'both' => __('Navigations horizontale et burger'),
+            ],
+            'default' => 'both',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('navExtraIcon2', FilesOrURL::class, __('Icône supplémentaire') . ' 2', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Ic\\u00f4ne suppl\\u00e9mentaire!\\u00a7! 2","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraType2', SelectFromArray::class, __('Type'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Ic\\u00f4ne + Label!\\u00a7!":"icon","\\u00a7!\\u00a7Image!\\u00a7!":"image"},"default":"icon","editable":true,"label":"\\u00a7!\\u00a7Type!\\u00a7!"}',
+            'options' => [
+                'icon' => __('Icône + Label'),
+                'image' => __('Image'),
+            ],
+            'default' => 'icon',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraLink2', LongText::class, __('URL') . ' 2', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL!\\u00a7! 2"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraVisibility2', SelectFromArray::class, __('Visible') . ' 2', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Navigation horizontale!\\u00a7!":"horizontal","\\u00a7!\\u00a7Navigation burger!\\u00a7!":"burger","\\u00a7!\\u00a7Navigations horizontale et burger!\\u00a7!":"both"},"default":"both","editable":true,"label":"\\u00a7!\\u00a7Visible!\\u00a7! 2"}',
+            'options' => [
+                'horizontal' => __('Navigation horizontale'),
+                'burger' => __('Navigation burger'),
+                'both' => __('Navigations horizontale et burger'),
+            ],
+            'default' => 'both',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('navExtraIcon3', FilesOrURL::class, __('Icône supplémentaire') . ' 3', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Ic\\u00f4ne suppl\\u00e9mentaire!\\u00a7! 3","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraType3', SelectFromArray::class, __('Type'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Ic\\u00f4ne + Label!\\u00a7!":"icon","\\u00a7!\\u00a7Image!\\u00a7!":"image"},"default":"icon","editable":true,"label":"\\u00a7!\\u00a7Type!\\u00a7!"}',
+            'options' => [
+                'icon' => __('Icône + Label'),
+                'image' => __('Image'),
+            ],
+            'default' => 'icon',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraLink3', LongText::class, __('URL') . ' 3', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL!\\u00a7! 3"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraVisibility3', SelectFromArray::class, __('Visible') . ' 3', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Navigation horizontale!\\u00a7!":"horizontal","\\u00a7!\\u00a7Navigation burger!\\u00a7!":"burger","\\u00a7!\\u00a7Navigations horizontale et burger!\\u00a7!":"both"},"default":"both","editable":true,"label":"\\u00a7!\\u00a7Visible!\\u00a7! 3"}',
+            'options' => [
+                'horizontal' => __('Navigation horizontale'),
+                'burger' => __('Navigation burger'),
+                'both' => __('Navigations horizontale et burger'),
+            ],
+            'default' => 'both',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('navExtraIcon4', FilesOrURL::class, __('Icône supplémentaire') . ' 4', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Ic\\u00f4ne suppl\\u00e9mentaire!\\u00a7! 4","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraType4', SelectFromArray::class, __('Type'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Ic\\u00f4ne + Label!\\u00a7!":"icon","\\u00a7!\\u00a7Image!\\u00a7!":"image"},"default":"icon","editable":true,"label":"\\u00a7!\\u00a7Type!\\u00a7!"}',
+            'options' => [
+                'icon' => __('Icône + Label'),
+                'image' => __('Image'),
+            ],
+            'default' => 'icon',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraLink4', LongText::class, __('URL') . ' 4', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL!\\u00a7! 4"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraVisibility4', SelectFromArray::class, __('Visible') . ' 4', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Navigation horizontale!\\u00a7!":"horizontal","\\u00a7!\\u00a7Navigation burger!\\u00a7!":"burger","\\u00a7!\\u00a7Navigations horizontale et burger!\\u00a7!":"both"},"default":"both","editable":true,"label":"\\u00a7!\\u00a7Visible!\\u00a7! 4"}',
+            'options' => [
+                'horizontal' => __('Navigation horizontale'),
+                'burger' => __('Navigation burger'),
+                'both' => __('Navigations horizontale et burger'),
+            ],
+            'default' => 'both',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('navExtraIcon5', FilesOrURL::class, __('Icône supplémentaire') . ' 5', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Ic\\u00f4ne suppl\\u00e9mentaire!\\u00a7! 5","fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraType5', SelectFromArray::class, __('Type'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Ic\\u00f4ne + Label!\\u00a7!":"icon","\\u00a7!\\u00a7Image!\\u00a7!":"image"},"default":"icon","editable":true,"label":"\\u00a7!\\u00a7Type!\\u00a7!"}',
+            'options' => [
+                'icon' => __('Icône + Label'),
+                'image' => __('Image'),
+            ],
+            'default' => 'icon',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraLink5', LongText::class, __('URL') . ' 5', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL!\\u00a7! 5"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('navExtraVisibility5', SelectFromArray::class, __('Visible') . ' 5', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Navigation horizontale!\\u00a7!":"horizontal","\\u00a7!\\u00a7Navigation burger!\\u00a7!":"burger","\\u00a7!\\u00a7Navigations horizontale et burger!\\u00a7!":"both"},"default":"both","editable":true,"label":"\\u00a7!\\u00a7Visible!\\u00a7! 5"}',
+            'options' => [
+                'horizontal' => __('Navigation horizontale'),
+                'burger' => __('Navigation burger'),
+                'both' => __('Navigations horizontale et burger'),
+            ],
+            'default' => 'both',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('mobileBottomNav', LongText::class, __('Barre de boutons en bas'), [
+            'v2' => '{"type":"text","default":"","editable":"true","label":"\\u00a7!\\u00a7Barre de boutons en bas!\\u00a7!","hint":"\\u00a7!\\u00a7Identifiants des boutons s\\u00e9par\\u00e9s par des virgules!\\u00a7!"}',
+            'hint' => __('Identifiants des boutons séparés par des virgules'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_landing', FormSection::class, __('Custom Landing Page'));
+        $this->addField('landingPage', FilesOrURL::class, __('Landing Page content'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Landing Page content!\\u00a7!","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_fs', FormSection::class, __('Plein écran'));
+        $this->addField('fullscreen', Checkbox::class, __('Activer le mode plein-écran'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer le mode plein-\\u00e9cran!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('fullscreenAuto', Checkbox::class, __('Lancer la publication en mode plein écran (lorsque possible)'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Lancer la publication en mode plein \\u00e9cran (lorsque possible)!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_bookmark', FormSection::class, __('Marques-pages'));
+        $this->addField('bookmark', Checkbox::class, __('Activer les marques-pages'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer les marques-pages!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmarkView', SelectFromArray::class, __('Menu des marques-pages'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7R\\u00e9duit!\\u00a7!":"small","\\u00a7!\\u00a7Complet!\\u00a7!":"large"},"default":"small","editable":true,"label":"\\u00a7!\\u00a7Menu des marques-pages!\\u00a7!"}',
+            'options' => [
+                'small' => __('Réduit'),
+                'large' => __('Complet'),
+            ],
+            'default' => 'small',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmarkFunctionsMainMenu', Checkbox::class, __('Fonctions vers menus généraux'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Fonctions vers menus g\\u00e9n\\u00e9raux!\\u00a7!","hint":"\\u00a7!\\u00a7Les fonctions des marques pages (T\\u00e9l\\u00e9charger, Imprimer, Envoyer) dirigent vers les menus g\\u00e9n\\u00e9raux!\\u00a7!"}',
+            'hint' => __('Les fonctions des marques pages (Télécharger, Imprimer, Envoyer) dirigent vers les menus généraux'),
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmarkEmpty', Checkbox::class, __('Bouton pour effacer les marques-pages'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Bouton pour effacer les marques-pages!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('bookmarkSendEnable', Checkbox::class, __('Activer l\'envoi des marques-pages par e-mail'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer l\'envoi des marques-pages par e-mail!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmark_email_title', LongText::class, __('Titre de l\'email') . ' "' . __('Envoyer à un ami') . '"', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Titre de l\'email!\\u00a7! \\"\\u00a7!\\u00a7Envoyer \\u00e0 un ami!\\u00a7!\\"","hint":"\\u00a7!\\u00a7Laisser vide pour utiliser la valeur par d\\u00e9faut!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmark_email_body', Textarea::class, __('Corps de l\'email') . ' "' . __('Envoyer à un ami') . '"', [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Corps de l\'email!\\u00a7! \\"\\u00a7!\\u00a7Envoyer \\u00e0 un ami!\\u00a7!\\"","hint":"\\u00a7!\\u00a7Laisser vide pour utiliser la valeur par d\\u00e9faut!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('bookmarkPrint', Checkbox::class, __('Activer l\'impression des marques-pages'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Activer l\'impression des marques-pages!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('bookmarkCornerSize', Integer::class, __('Taille des marques-pages'), [
+            'v2' => '{"type":"integer","default":8,"editable":true,"label":"\\u00a7!\\u00a7Taille des marques-pages!\\u00a7!","hint":"\\u00a7!\\u00a7Taille relative \\u00e0 la largeur de la page!\\u00a7!"}',
+            'hint' => __('Taille relative à la largeur de la page'),
+            'default' => 8,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmarkOffset', Integer::class, __('Décaler de x pixels vers l\'intérieur'), [
+            'v2' => '{"type":"integer","default":0,"editable":true,"label":"\\u00a7!\\u00a7D\\u00e9caler de x pixels vers l\'int\\u00e9rieur!\\u00a7!"}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmarkPermanentIcon', Checkbox::class, __('Afficher l\'icône en permanance'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Afficher l\'ic\\u00f4ne en permanance!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmarkBlinkOnPageChange', Checkbox::class, __('Faire clignoter le marque page à l\'apparition de la page'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Faire clignoter le marque page \\u00e0 l\'apparition de la page!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('bookmarkDisablePages', LongText::class, __('Désactiver les marques-pages sur ces pages'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7D\\u00e9sactiver les marques-pages sur ces pages!\\u00a7!","hint":"1-3,5 = 1,2,3,5","grade":1}',
+            'hint' => '1-3,5 = 1,2,3,5',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('bookmarkUsePDF', SelectFromArray::class, __('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'), [
+            'v2' => '{"type":"combo","default":"pages","editable":true,"label":"\\u00a7!\\u00a7PDF \\u00e0 utiliser pour l\'envoi ou le t\\u00e9l\\u00e9chargement de pages marqu\\u00e9es!\\u00a7!","datas":{"\\u00a7!\\u00a7PDF des pages!\\u00a7!":"pages","\\u00a7!\\u00a7PDF de remplacement!\\u00a7!":"download","\\u00a7!\\u00a7PDF des miniatures!\\u00a7!":"thumbnails"}}',
+            'options' => [
+                'pages' => __('PDF des pages'),
+                'download' => __('PDF de remplacement'),
+                'thumbnails' => __('PDF des miniatures'),
+            ],
+            'default' => 'pages',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_help', FormSection::class, __('Aide'));
+        $this->addField('help', Checkbox::class, __('Activer l\'aide'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer l\'aide!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('helpStartup', Checkbox::class, __('Afficher l\'aide au démarrage'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Afficher l\'aide au d\\u00e9marrage!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('helpStartupTime', Integer::class, __('Temps d\'affichage en secondes'), [
+            'v2' => '{"type":"integer","default":15,"editable":true,"label":"\\u00a7!\\u00a7Temps d\'affichage en secondes!\\u00a7!"}',
+            'default' => 15,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('helpBookmarks', Checkbox::class, __('Améliorer l\'aide des marques-pages'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Am\\u00e9liorer l\'aide des marques-pages!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('helpArrowTooltip', LongText::class, __('Bulle affichée au niveau de la flèche de droite'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Bulle affich\\u00e9e au niveau de la fl\\u00e8che de droite!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('landscapeWarning', Textarea::class, __('Avertissement affiché sur mobile au chargement de la publication'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Avertissement affich\\u00e9 sur mobile au chargement de la publication!\\u00a7!","grade":5,"embed":false}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_index', FormSection::class, __('Vue d\'index (vignettes)'));
+        $this->addField('indexAutoScroll', Checkbox::class, __('Activer le scroll automatique'), [
+            'v2' => '{"type":"boolean","default":false,"editable":false,"label":"\\u00a7!\\u00a7Activer le scroll automatique!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pdfThumbnails', FilesOrURL::class, __('PDF utilisé pour générer les miniatures'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7PDF utilis\\u00e9 pour g\\u00e9n\\u00e9rer les miniatures!\\u00a7!","grade":1,"fileFilter":{"name":"\\u00a7!\\u00a7Document PDF!\\u00a7! (*.pdf)","extensions":"*.pdf"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('indexMessage', Textarea::class, __('Message en haut'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Message en haut!\\u00a7!","grade":1,"hint":"\\u00a7!\\u00a7Message en haut de la vue index!\\u00a7!"}',
+            'hint' => __('Message en haut de la vue index'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_print', FormSection::class, __('Impression'));
+        $this->addField('print', Checkbox::class, __('Activer l\'impression'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer l\'impression!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('printFullBrochure', Checkbox::class, __('Autoriser l\'impression de la brochure complète'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Autoriser l\'impression de la brochure compl\\u00e8te!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('printPageRange', Checkbox::class, __('Activer l\'option pour imprimer une plage de pages'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Activer l\'option pour imprimer une plage de pages!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_search', FormSection::class, __('Moteur de recherche'));
+        $this->addField('search', Checkbox::class, __('Activer le moteur de recherche'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer le moteur de recherche!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('searchFullBurger', Checkbox::class, __('Afficher le burger menu complet à l\'ouverture de la recheche'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Afficher le burger menu complet \\u00e0 l\'ouverture de la recheche!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('ignoreWordLimit', Integer::class, __('Ignorer les mots de moins de X caractères'), [
+            'v2' => '{"type":"integer","default":3,"editable":true,"label":"\\u00a7!\\u00a7Ignorer les mots de moins de X caract\\u00e8res!\\u00a7!"}',
+            'default' => 3,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('ignoreSearch', Textarea::class, __('Mots à ignorer'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Mots \\u00e0 ignorer!\\u00a7!","hint":"\\u00a7!\\u00a7Liste des mots \\u00e0 ignorer s\\u00e9par\\u00e9s par des virgules!\\u00a7!","grade":5}',
+            'hint' => __('Liste des mots à ignorer séparés par des virgules'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('ignoreSearchSeparators', LongText::class, __('Caractères à ne pas considérer comme un séparateur de mot'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Caract\\u00e8res \\u00e0 ne pas consid\\u00e9rer comme un s\\u00e9parateur de mot!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('searchWordSelectionAlgorithm', SelectFromArray::class, __('Algorithme de sélection des occurences'), [
+            'v2' => '{"type":"combo","editable":true,"default":"begins","datas":{"\\u00a7!\\u00a7mot commen\\u00e7ant par la requ\\u00eate!\\u00a7!":"begins","\\u00a7!\\u00a7mot correspondant exactement \\u00e0 la requ\\u00eate!\\u00a7!":"exact","\\u00a7!\\u00a7mot contenant la requ\\u00eate!\\u00a7!":"contains","\\u00a7!\\u00a7expression exacte!\\u00a7!":"expression"},"label":"\\u00a7!\\u00a7Algorithme de s\\u00e9lection des occurences!\\u00a7!"}',
+            'options' => [
+                'begins' => __('mot commençant par la requête'),
+                'exact' => __('mot correspondant exactement à la requête'),
+                'contains' => __('mot contenant la requête'),
+                'expression' => __('expression exacte'),
+            ],
+            'default' => 'begins',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('searchPageSelectionAlgorithm', SelectFromArray::class, __('Algorithme de sélection des résultats'), [
+            'v2' => '{"type":"combo","editable":true,"default":"AND","datas":{"\\u00a7!\\u00a7les double-pages qui contiennent tous les mots recherch\\u00e9s (ET logique)!\\u00a7!":"AND","\\u00a7!\\u00a7les double-page qui contiennent un des mots recherch\\u00e9 (OU logique)!\\u00a7!":"OR"},"label":"\\u00a7!\\u00a7Algorithme de s\\u00e9lection des r\\u00e9sultats!\\u00a7!"}',
+            'options' => [
+                'AND' => __('les double-pages qui contiennent tous les mots recherchés (ET logique)'),
+                'OR' => __('les double-page qui contiennent un des mots recherché (OU logique)'),
+            ],
+            'default' => 'AND',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('highlightResults', Checkbox::class, __('Surligner les résultats'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Surligner les r\\u00e9sultats!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('highlightAllOccurences', Checkbox::class, __('Surligner toutes les occurences'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Surligner toutes les occurences!\\u00a7!","hint":"\\u00a7!\\u00a7M\\u00eame sur les pages non consid\\u00e9r\\u00e9es comme un r\\u00e9sultat!\\u00a7!"}',
+            'hint' => __('Même sur les pages non considérées comme un résultat'),
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('searchShowNoResultsPages', Checkbox::class, __('Afficher les pages sans résultats'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Afficher les pages sans r\\u00e9sultats!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('textExtraction', SelectFromArray::class, __('Méthode d\'extraction des textes'), [
+            'v2' => '{"type":"combo","default":"pdfbox","editable":true,"label":"\\u00a7!\\u00a7M\\u00e9thode d\'extraction des textes!\\u00a7!","datas":{"\\u00a7!\\u00a7PDFBox!\\u00a7!":"pdfbox","\\u00a7!\\u00a7Poppler!\\u00a7!":"poppler","\\u00a7!\\u00a7Fluidbook (exp\\u00e9rimentation bas\\u00e9e sur PDFBox)!\\u00a7!":"fluidbook"}}',
+            'options' => [
+                'pdfbox' => __('PDFBox'),
+                'poppler' => __('Poppler'),
+                'fluidbook' => __('Fluidbook (expérimentation basée sur PDFBox)'),
+            ],
+            'default' => 'pdfbox',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_sound', FormSection::class, __('Effets sonores'));
+        $this->addField('soundTheme', SelectFromArray::class, __('Thème sonore'), [
+            'v2' => '{"type":"combo","default":"classic","editable":true,"label":"\\u00a7!\\u00a7Th\\u00e8me sonore!\\u00a7!","datas":{"\\u00a7!\\u00a7Pas de son!\\u00a7!":"","\\u00a7!\\u00a7Classique!\\u00a7!":"classic","\\u00a7!\\u00a7Papier \\u00e9pais!\\u00a7!":"heavy","\\u00a7!\\u00a7Papier fin!\\u00a7!":"light","\\u00a7!\\u00a7Silencieux!\\u00a7!":"silent","\\u00a7!\\u00a7Woosh!\\u00a7!":"woosh"}}',
+            'options' => [
+                '' => __('Pas de son'),
+                'classic' => __('Classique'),
+                'heavy' => __('Papier épais'),
+                'light' => __('Papier fin'),
+                'silent' => __('Silencieux'),
+                'woosh' => __('Woosh'),
+            ],
+            'default' => 'classic',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('soundOn', Checkbox::class, __('Activer les effets sonores à l\'ouverture'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer les effets sonores \\u00e0 l\'ouverture!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('ambientSound', FilesOrURL::class, __('Ambiance sonore'), [
+            'v2' => '{"type":"freefile","default":"","editable":false,"label":"\\u00a7!\\u00a7Ambiance sonore!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Fichier sonore!\\u00a7! (*.mp3, *.wav)","extensions":"*.mp3;*.wav"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('ambientSoundVolume', Integer::class, __('Volume de l\'ambiance sonore'), [
+            'v2' => '{"type":"integer","default":50,"editable":false,"label":"\\u00a7!\\u00a7Volume de l\'ambiance sonore!\\u00a7!","min":0,"max":100}',
+            'min' => 0,
+            'max' => 100,
+            'default' => 50,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_downloadpdf', FormSection::class, __('Fonction de téléchargement'));
+        $this->addField('pdf', Checkbox::class, __('Activer les fonctions de téléchargement'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer les fonctions de t\\u00e9l\\u00e9chargement!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pdfName', LongText::class, __('Nom du fichier PDF'), [
+            'v2' => '{"type":"text","default":"document.pdf","editable":true,"label":"\\u00a7!\\u00a7Nom du fichier PDF!\\u00a7!"}',
+            'default' => 'document.pdf',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pdfReplace', FilesOrURL::class, __('PDF de remplacement'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7PDF de remplacement!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Document PDF!\\u00a7! (*.pdf)","extensions":"*.pdf"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pdfCompress', Checkbox::class, __('Compression du fichier PDF'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Compression du fichier PDF!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('pdfComplex', Checkbox::class, __('Téchargement de PDF avancé'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7T\\u00e9chargement de PDF avanc\\u00e9!\\u00a7!","hint":"\\u00a7!\\u00a7Permet \\u00e0 l\'utilisateur de s\\u00e9lectionner les pages qu\'il souhaite t\\u00e9l\\u00e9charger!\\u00a7!","grade":3}',
+            'hint' => __('Permet à l\'utilisateur de sélectionner les pages qu\'il souhaite télécharger'),
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('pdfComplexShowCurrent', Checkbox::class, __('Afficher les pages courrantes'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Afficher les pages courrantes!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_zoom', FormSection::class, __('Zoom'));
+        $this->addField('zoomClick', Checkbox::class, __('Cliquer sur les pages pour zoomer'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Cliquer sur les pages pour zoomer!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('zoomWheel', SelectFromArray::class, __('Zoom molette'), [
+            'v2' => '{"type":"combo","default":"wheel","editable":true,"label":"\\u00a7!\\u00a7Zoom molette!\\u00a7!","datas":{"\\u00a7!\\u00a7D\\u00e9sactiv\\u00e9!\\u00a7!":"disabled","\\u00a7!\\u00a7Molette!\\u00a7!":"wheel","\\u00a7!\\u00a7Ctrl+Molette!\\u00a7!":"ctrlwheel"}}',
+            'options' => [
+                'disabled' => __('Désactivé'),
+                'wheel' => __('Molette'),
+                'ctrlwheel' => __('Ctrl+Molette'),
+            ],
+            'default' => 'wheel',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('zoom', Integer::class, __('Zoom par défaut (atteint au clic)'), [
+            'v2' => '{"type":"integer","default":200,"editable":true,"label":"\\u00a7!\\u00a7Zoom par d\\u00e9faut (atteint au clic)!\\u00a7!"}',
+            'default' => 200,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('zoomw', Integer::class, __('Zoom maximal (atteint à l\'aide de la molette)'), [
+            'v2' => '{"type":"integer","default":300,"editable":true,"label":"\\u00a7!\\u00a7Zoom maximal (atteint \\u00e0 l\'aide de la molette)!\\u00a7!"}',
+            'default' => 300,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('zoomMouseMoveMode', SelectFromArray::class, __('Mode de déplacement des pages zoomées (souris)'), [
+            'v2' => '{"type":"combo","default":"move","editable":true,"label":"\\u00a7!\\u00a7Mode de d\\u00e9placement des pages zoom\\u00e9es (souris)!\\u00a7!","datas":{"\\u00a7!\\u00a7Bouger la souris!\\u00a7!":"move","\\u00a7!\\u00a7Drag & drop!\\u00a7!":"\\u00a7!\\u00a7dragndrop!\\u00a7!"}}',
+            'options' => [
+                'move' => __('Bouger la souris'),
+                __('dragndrop') => __('Drag & drop'),
+            ],
+            'default' => 'move',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('hideHeaderOnZoom', Checkbox::class, __('Cacher le menu lors du zoom'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Cacher le menu lors du zoom!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_slider', FormSection::class, __('Slider'));
+        $this->addField('sliderImage', FilesOrURL::class, __('Image pour le slider'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Image pour le slider!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_stats', FormSection::class, __('Statistiques avancées'));
+        $this->addField('tagcommander_id', LongText::class, 'Tag commander ID', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"Tag commander ID","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tagcommander_scriptname', LongText::class, 'Nom du script Tagcommander', [
+            'v2' => '{"type":"text","default":"tc_Multisite_Head.js,tc_Multisite_Analytics.js,tc_Multisite_Medias.js","editable":true,"label":"Nom du script Tagcommander","grade":3}',
+            'default' => 'tc_Multisite_Head.js,tc_Multisite_Analytics.js,tc_Multisite_Medias.js',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tagcommander_prod', Checkbox::class, 'Production', [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"Production","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tagcommander_plan', FilesOrURL::class, 'Plan de taggage "Tag commander"', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"Plan de taggage \\"Tag commander\\"","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tagcommander_default_vars', Textarea::class, 'Variables par défaut', [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"Variables par d\\u00e9faut","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('anchorsAliases', LongText::class, __('Alias des ancres'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Alias des ancres!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('stats_score', Checkbox::class, __('Afficher les scores dans les rapports'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Afficher les scores dans les rapports!\\u00a7!","grade":5}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('stats_exclude_ip', Textarea::class, __('Exclure les IP suivantes des statistiques'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Exclure les IP suivantes des statistiques!\\u00a7!","grade":3,"hint":"\\u00a7!\\u00a7Indiquer une adresse ip de la forme www.xxx.yyy.zzz par ligne!\\u00a7!"}',
+            'hint' => __('Indiquer une adresse ip de la forme www.xxx.yyy.zzz par ligne'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('relay_url_params', LongText::class, __('Relayer les paramètres d\'url dans les liens sortants'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Relayer les param\\u00e8tres d\'url dans les liens sortants!\\u00a7!","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('gtag_additional_code', Textarea::class, __('Code additionnel Google Tag Manager'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Code additionnel Google Tag Manager!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('googleAnalyticsCustom', Textarea::class, __('Code Stats personnalisé (placé avant fermeture de head)'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Code Stats personnalis\\u00e9 (plac\\u00e9 avant fermeture de head)!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('statsCustom', Textarea::class, __('Code Stats personnalisé (placé avant fermeture du body)'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Code Stats personnalis\\u00e9 (plac\\u00e9 avant fermeture du body)!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('xiti', Textarea::class, __('Code XiTi global'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Code XiTi global!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('xiti_page', Textarea::class, __('Modèle code xiti (pour tags relatifs aux pages)'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Mod\\u00e8le code xiti (pour tags relatifs aux pages)!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_sommaire', FormSection::class, __('Sommaire'));
+        $this->addField('chaptersCaptionDisplay', Checkbox::class, __('Afficher le titre "Sommaire" dans la popup'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Afficher le titre \\"Sommaire\\" dans la popup!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersFontSize', Integer::class, __('Taille du texte des élements du sommaire'), [
+            'v2' => '{"type":"integer","default":100,"min":50,"max":120,"editable":true,"label":"\\u00a7!\\u00a7Taille du texte des \\u00e9lements du sommaire!\\u00a7!","hint":"En % par rapport \\u00e0 la taille normale","grade":3}',
+            'hint' => 'En % par rapport à la taille normale',
+            'min' => 50,
+            'max' => 120,
+            'default' => 100,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('displayChaptersIcon', Checkbox::class, __('Affiche l\'icône du sommaire'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Affiche l\'ic\\u00f4ne du sommaire!\\u00a7!","grade":1}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('displayChaptersPopup', Checkbox::class, __('Always display chapters in a popup'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Always display chapters in a popup!\\u00a7!","grade":1}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('displayChaptersAtStart', Checkbox::class, __('Afficher le sommaire au chargement de la publication'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Afficher le sommaire au chargement de la publication!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersPage', LongText::class, __('Faire pointer le sommaire sur la page'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Faire pointer le sommaire sur la page!\\u00a7!","grade":3,"hint":"\\u00a7!\\u00a7Laisser vide pour utiliser le sommaire classique!\\u00a7!","size":5}',
+            'hint' => __('Laisser vide pour utiliser le sommaire classique'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersPosition', SelectFromArray::class, __('Position du sommaire'), [
+            'v2' => '{"type":"combo","default":"center","editable":false,"label":"\\u00a7!\\u00a7Position du sommaire!\\u00a7!","datas":{"\\u00a7!\\u00a7Centr\\u00e9!\\u00a7!":"center","\\u00a7!\\u00a7Align\\u00e9 sur l\'ic\\u00f4ne!\\u00a7!":"chaptersIcon"}}',
+            'options' => [
+                'center' => __('Centré'),
+                'chaptersIcon' => __('Aligné sur l\'icône'),
+            ],
+            'default' => 'center',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersLevelLimit', Integer::class, __('Limiter à x niveaux'), [
+            'v2' => '{"type":"integer","default":5,"editable":true,"label":"\\u00a7!\\u00a7Limiter \\u00e0 x niveaux!\\u00a7!"}',
+            'default' => 5,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersCascade', Checkbox::class, __('Sommaire en cascade'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Sommaire en cascade!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersPagesNumber', SelectFromArray::class, __('Numérotation du sommaire'), [
+            'v2' => '{"type":"combo","default":"virtual","editable":true,"label":"\\u00a7!\\u00a7Num\\u00e9rotation du sommaire!\\u00a7!","datas":{"\\u00a7!\\u00a7Virtuelle!\\u00a7!":"virtual","\\u00a7!\\u00a7Physique!\\u00a7!":"physical"}}',
+            'options' => [
+                'virtual' => __('Virtuelle'),
+                'physical' => __('Physique'),
+            ],
+            'default' => 'virtual',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('chaptersColMaxWidth', Integer::class, __('Largeur max d\'une colonne'), [
+            'v2' => '{"type":"integer","default":300,"editable":true,"label":"\\u00a7!\\u00a7Largeur max d\'une colonne!\\u00a7!","grade":3}',
+            'default' => 300,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersColumns', Integer::class, __('Afficher le sommaire sur x colonne(s)'), [
+            'v2' => '{"type":"integer","default":1,"editable":true,"label":"\\u00a7!\\u00a7Afficher le sommaire sur x colonne(s)!\\u00a7!","grade":3}',
+            'default' => 1,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('displayChaptersLine', Checkbox::class, __('Affiche une ligne entre le label et le numéro de page'), [
+            'v2' => '{"type":"boolean","default":true,"editable":false,"label":"\\u00a7!\\u00a7Affiche une ligne entre le label et le num\\u00e9ro de page!\\u00a7!","grade":5}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('chaptersIndent', Checkbox::class, __('Indenter les éléments (pour les sommaires à plat)'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Indenter les \\u00e9l\\u00e9ments (pour les sommaires \\u00e0 plat)!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('externalChaptersHTML', FilesOrURL::class, __('Sommaire personnalisé'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Sommaire personnalis\\u00e9!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Archive ZIP!\\u00a7! (*.zip)","extensions":"*.zip"},"hint":"\\u00a7!\\u00a7Laisser vide pour utiliser le sommaire classique!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser le sommaire classique'),
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('mobileChaptersStyle', SelectFromArray::class, __('Style des chapitres'), [
+            'v2' => '{"type":"combo","default":"classic","editable":true,"label":"\\u00a7!\\u00a7Style des chapitres!\\u00a7!","datas":{"\\u00a7!\\u00a7Classique!\\u00a7!":"classic","\\u00a7!\\u00a7INA!\\u00a7!":"ina"}}',
+            'options' => [
+                'classic' => __('Classique'),
+                'ina' => __('INA'),
+            ],
+            'default' => 'classic',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_tabs', FormSection::class, __('Onglets'));
+        $this->addField('tabsHTML5', FilesOrURL::class, __('Fichier d\'onglets') . ' (SVG, ZIP)', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Fichier d\'onglets!\\u00a7! (SVG, ZIP)","grade":3,"hint":"\\u00a7!\\u00a7Charger un zip rendra les options ci-dessous inop\\u00e9rantes!\\u00a7!","fileFilter":{"name":"\\u00a7!\\u00a7Fichier onglets!\\u00a7! (*.svg, *.zip)","extensions":"*.svg;*.zip"}}',
+            'hint' => __('Charger un zip rendra les options ci-dessous inopérantes'),
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsPages', LongText::class, __('Pages des onglets'), [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Pages des onglets!\\u00a7!","editable":true,"default":"","grade":5,"hint":"\\u00a7!\\u00a7Num\\u00e9ros de pages s\\u00e9paras par une virgule!\\u00a7!"}',
+            'hint' => __('Numéros de pages séparas par une virgule'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsSections', LongText::class, __('Sections des onglets'), [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Sections des onglets!\\u00a7!","editable":true,"default":"","grade":5,"hint":"\\u00a7!\\u00a7Num\\u00e9ros de pages s\\u00e9par\\u00e9s par une virgule!\\u00a7!"}',
+            'hint' => __('Numéros de pages séparés par une virgule'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsPagesNumbers', SelectFromArray::class, __('Numérotation utilisée'), [
+            'v2' => '{"type":"combo","label":"\\u00a7!\\u00a7Num\\u00e9rotation utilis\\u00e9e!\\u00a7!","editable":true,"default":"virtual","grade":5,"datas":{"\\u00a7!\\u00a7Virtuelle!\\u00a7!":"virtual","\\u00a7!\\u00a7Physique!\\u00a7!":"physical"}}',
+            'options' => [
+                'virtual' => __('Virtuelle'),
+                'physical' => __('Physique'),
+            ],
+            'default' => 'virtual',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsDisabledOnPages', LongText::class, __('Onglets inactifs sur les pages'), [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Onglets inactifs sur les pages!\\u00a7!","editable":true,"default":"","grade":5,"hint":"1-3,5 = 1,2,3,5"}',
+            'hint' => '1-3,5 = 1,2,3,5',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('tabsSide', SelectFromArray::class, __('Position des onglets'), [
+            'v2' => '{"type":"combo","label":"\\u00a7!\\u00a7Position des onglets!\\u00a7!","editable":true,"default":"right","grade":5,"datas":{"\\u00a7!\\u00a7Gauche!\\u00a7!":"left","\\u00a7!\\u00a7Droite!\\u00a7!":"right"}}',
+            'options' => [
+                'left' => __('Gauche'),
+                'right' => __('Droite'),
+            ],
+            'default' => 'right',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsMargin', Number::class, __('Marge des onglets'), [
+            'v2' => '{"type":"float","label":"\\u00a7!\\u00a7Marge des onglets!\\u00a7!","editable":true,"default":-10,"grade":5,"hint":"\\u00a7!\\u00a7Une marge n\\u00e9gative = les onglets passent sous la publication!\\u00a7!"}',
+            'hint' => __('Une marge négative = les onglets passent sous la publication'),
+            'default' => -10,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('tabsHideOnPages', LongText::class, __('Cacher les onglets sur les pages'), [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Cacher les onglets sur les pages!\\u00a7!","editable":true,"default":"","grade":5,"hint":"1-3,5 = 1,2,3,5"}',
+            'hint' => '1-3,5 = 1,2,3,5',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsHideOnCover', Checkbox::class, __('Cacher les onglets sur la couverture'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Cacher les onglets sur la couverture!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsHideOnLastPage', Checkbox::class, __('Cacher les onglets sur la dernière page'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Cacher les onglets sur la derni\\u00e8re page!\\u00a7!","grade":5}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsHideEdges', SelectFromArray::class, __('Masquer les bordures du fluidbook'), [
+            'v2' => '{"type":"combo","label":"\\u00a7!\\u00a7Masquer les bordures du fluidbook!\\u00a7!","editable":true,"default":"right","grade":5,"datas":{"\\u00a7!\\u00a7Aucune!\\u00a7!":"none","\\u00a7!\\u00a7Gauche!\\u00a7!":"left","\\u00a7!\\u00a7Droite!\\u00a7!":"right","\\u00a7!\\u00a7Les deux!\\u00a7!":"both"}}',
+            'options' => [
+                'none' => __('Aucune'),
+                'left' => __('Gauche'),
+                'right' => __('Droite'),
+                'both' => __('Les deux'),
+            ],
+            'default' => 'right',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('tabsPriority', Integer::class, 'Priorité des onglets sur les contenus (%)', [
+            'v2' => '{"type":"integer","min":0,"max":100,"default":15,"editable":true,"label":"Priorit\\u00e9 des onglets sur les contenus (%)","hint":"La valeur indique la r\\u00e9duction permise de la taille de la publication."}',
+            'hint' => 'La valeur indique la réduction permise de la taille de la publication.',
+            'min' => 0,
+            'max' => 100,
+            'default' => 15,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsLinkWidth', Number::class, __('Largeur des onglets'), [
+            'v2' => '{"type":"float","label":"\\u00a7!\\u00a7Largeur des onglets!\\u00a7!","editable":true,"default":30,"grade":5,"hint":"\\u00a7!\\u00a7Largeur r\\u00e9serv\\u00e9e pour les onglets et largeur de la zone cliquable des liens!\\u00a7!"}',
+            'hint' => __('Largeur réservée pour les onglets et largeur de la zone cliquable des liens'),
+            'default' => 30,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsHideWhenOverlapingArrows', Checkbox::class, __('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Cacher les onglets lorsqu\'ils passent sous les fl\\u00e8ches de navigation!\\u00a7!","grade":5}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsHideOnPortrait', Checkbox::class, __('Cacher les onglets lorsque le fluidbook est en mode portrait'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Cacher les onglets lorsque le fluidbook est en mode portrait!\\u00a7!","grade":5}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('tabsHideOnZoom', Checkbox::class, __('Cacher les onglets lorsque le fluidbook est zoomé'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Cacher les onglets lorsque le fluidbook est zoom\\u00e9!\\u00a7!","grade":5}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_links', FormSection::class, __('Liens'));
+        $this->addField('permanentLinks', Checkbox::class, __('Liens visibles en permanence'), [
+            'v2' => '{"type":"boolean","default":false,"editable":false,"label":"\\u00a7!\\u00a7Liens visibles en permanence!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobileLinksRevealAnim', Checkbox::class, __('Animer les liens après un changement de page'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Animer les liens apr\\u00e8s un changement de page!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linkBlinkTime', Number::class, __('Temps d\'apparition du lien à l\'ouverture de la page (en secondes)'), [
+            'v2' => '{"type":"float","default":1,"editable":true,"label":"\\u00a7!\\u00a7Temps d\'apparition du lien \\u00e0 l\'ouverture de la page (en secondes)!\\u00a7!"}',
+            'default' => 1.0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linkBlinkRepetition', Integer::class, __('Nombre de clignotement lors de l\'apparition des liens'), [
+            'v2' => '{"type":"integer","default":1,"editable":true,"label":"\\u00a7!\\u00a7Nombre de clignotement lors de l\'apparition des liens!\\u00a7!"}',
+            'default' => 1,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('openLinkAtStartup', LongText::class, __('Déclencher un lien à l\'ouverture du fluidbook'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7D\\u00e9clencher un lien \\u00e0 l\'ouverture du fluidbook!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('customLinkClass', LongText::class, __('Classe pour les liens personnalisés'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Classe pour les liens personnalis\\u00e9s!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('ignoreLinksTypes', LongText::class, __('Ignorer les liens de type'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Ignorer les liens de type!\\u00a7!","hint":"\\u00a7!\\u00a7Liste des num\\u00e9ros s\\u00e9par\\u00e9s par des virgules!\\u00a7!","grade":5}',
+            'hint' => __('Liste des numéros séparés par des virgules'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobileIgnoreBackgroundLinks', Checkbox::class, __('Ignorer les liens de background'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Ignorer les liens de background!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linkTooltipManager', LongText::class, __('Gestionnaire des info-bulles'), [
+            'v2' => '{"type":"text","default":"","editable":false,"label":"\\u00a7!\\u00a7Gestionnaire des info-bulles!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linkCornerSize', Integer::class, __('Taille des liens de coins de page'), [
+            'v2' => '{"type":"integer","default":10,"editable":false,"label":"\\u00a7!\\u00a7Taille des liens de coins de page!\\u00a7!","hint":"\\u00a7!\\u00a7Pourcentage de la largeur de la page!\\u00a7!"}',
+            'hint' => __('Pourcentage de la largeur de la page'),
+            'default' => 10,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linkTooltipMaxWidth', Integer::class, __('Largeur max des infobulles des liens de type "infobulle"'), [
+            'v2' => '{"type":"integer","default":140,"editable":true,"label":"\\u00a7!\\u00a7Largeur max des infobulles des liens de type \\"infobulle\\"!\\u00a7!"}',
+            'default' => 140,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('linkTracker', LongText::class, __('Tracking des liens'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Tracking des liens!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('linkTrackerRegexp', LongText::class, __('Tracking des liens applicables aux liens du domaine'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Tracking des liens applicables aux liens du domaine!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('linkFilePrefix', LongText::class, __('Préfixer les liens de téléchargement'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Pr\\u00e9fixer les liens de t\\u00e9l\\u00e9chargement!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_multimedia', FormSection::class, __('Multimedia'));
+        $this->addField('textPopupStylesheet', FilesOrURL::class, __('Feuille de style des popups de texte'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Feuille de style des popups de texte!\\u00a7!","fileFilter":{"name":"\\u00a7!\\u00a7Feuille de style!\\u00a7! (.css)","extensions":"*.css"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('textPopupWidth', Integer::class, __('Largeur optimale des popups'), [
+            'v2' => '{"type":"integer","default":600,"editable":true,"label":"\\u00a7!\\u00a7Largeur optimale des popups!\\u00a7!"}',
+            'default' => 600,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('iframePopupMaxWidth', Integer::class, __('Largeur maximale des popups iframe'), [
+            'v2' => '{"type":"integer","default":0,"editable":true,"label":"\\u00a7!\\u00a7Largeur maximale des popups iframe!\\u00a7!"}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('OAMChromeFactor', Number::class, __('Facteur OAM Chrome'), [
+            'v2' => '{"type":"float","default":1,"editable":true,"label":"\\u00a7!\\u00a7Facteur OAM Chrome!\\u00a7!"}',
+            'default' => 1,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('OAMIEFactor', Number::class, __('Facteur OAM IE11'), [
+            'v2' => '{"type":"float","default":1,"editable":true,"label":"\\u00a7!\\u00a7Facteur OAM IE11!\\u00a7!"}',
+            'default' => 1,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_pdf', FormSection::class, 'PDF');
+        $this->addField('PDFRenderer', SelectFromArray::class, __('Rendu des PDF (téléchargement)'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Navigateur!\\u00a7!":"native","PDF.js":"pdfjs","PDF.js (legacy)":"pdfjs-legacy"},"default":"native","editable":true,"label":"\\u00a7!\\u00a7Rendu des PDF (t\\u00e9l\\u00e9chargement)!\\u00a7!"}',
+            'options' => [
+                'native' => __('Navigateur'),
+                'pdfjs' => 'PDF.js',
+                'pdfjs-legacy' => 'PDF.js (legacy)',
+            ],
+            'default' => 'native',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('PDFRendererIframe', SelectFromArray::class, __('Rendu des PDF (iframes)'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Navigateur!\\u00a7!":"native","PDF.js":"pdfjs","PDF.js (legacy)":"pdfjs-legacy","\\u00a7!\\u00a7Ecraser en SVG!\\u00a7!":"svg"},"default":"native","editable":true,"label":"\\u00a7!\\u00a7Rendu des PDF (iframes)!\\u00a7!"}',
+            'options' => [
+                'native' => __('Navigateur'),
+                'pdfjs' => 'PDF.js',
+                'pdfjs-legacy' => 'PDF.js (legacy)',
+                'svg' => __('Ecraser en SVG'),
+            ],
+            'default' => 'native',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('PDFJSCSS', Textarea::class, 'Styles PDF.js', [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"Styles PDF.js"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_slideshow', FormSection::class, __('Slideshow'));
+        $this->addField('inlineSlideshowLibrary', SelectFromArray::class, __('Librarie utilisée pour les slideshow intégrés aux pages'), [
+            'v2' => '{"type":"combo","datas":{"Simple (\\u00a7!\\u00a7d\\u00e9faut!\\u00a7!)":"dummy","Vacheron":"vacheron"},"default":"dummy","editable":true,"grade":3,"label":"\\u00a7!\\u00a7Librarie utilis\\u00e9e pour les slideshow int\\u00e9gr\\u00e9s aux pages!\\u00a7!"}',
+            'options' => [
+                'dummy' => 'Simple (' . __('défaut') . ')',
+                'vacheron' => 'Vacheron',
+            ],
+            'default' => 'dummy',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('popupSlideshowLibrary', SelectFromArray::class, __('Librarie utilisée pour les slideshow popup'), [
+            'v2' => '{"type":"combo","datas":{"Splide (\\u00a7!\\u00a7d\\u00e9faut!\\u00a7!)":"splide","Vacheron":"vacheron"},"default":"splide","editable":true,"grade":3,"label":"\\u00a7!\\u00a7Librarie utilis\\u00e9e pour les slideshow popup!\\u00a7!"}',
+            'options' => [
+                'splide' => 'Splide (' . __('défaut') . ')',
+                'vacheron' => 'Vacheron',
+            ],
+            'default' => 'splide',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('slideshowCaptionSize', LongText::class, __('Taille de police de la légende du diaporama'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Taille de police de la l\\u00e9gende du diaporama!\\u00a7!","hint":"\\u00a7!\\u00a7Laisser vide pour utiliser la valeur par d\\u00e9faut!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('inlineSlideshowTransitionDuration', Number::class, __('Durée de la transition des diaporamas intégrés aux pages(s)'), [
+            'v2' => '{"type":"float","default":0.75,"editable":true,"label":"\\u00a7!\\u00a7Dur\\u00e9e de la transition des diaporamas int\\u00e9gr\\u00e9s aux pages(s)!\\u00a7!"}',
+            'default' => 0.75,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('inlineSlideshowDuration', Number::class, __('Temps d\'attente des diaporamas intégrés aux pages (s)'), [
+            'v2' => '{"type":"float","default":7,"editable":true,"label":"\\u00a7!\\u00a7Temps d\'attente des diaporamas int\\u00e9gr\\u00e9s aux pages (s)!\\u00a7!"}',
+            'default' => 7,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_videos', FormSection::class, __('Vidéos'));
+        $this->addField('webvideoAsLocal', Checkbox::class, __('Intégrer les webvidéos en local'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Int\\u00e9grer les webvid\\u00e9os en local!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('mobileVideosPath', LongText::class, __('Chemin vers les vidéos'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Chemin vers les vid\\u00e9os!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('brightcovePlayerId', LongText::class, __('Brightcove Player Id'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Brightcove Player Id!\\u00a7!","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('brightcovePlayerSecret', LongText::class, __('Brightcove Player Secret'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Brightcove Player Secret!\\u00a7!","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('bigPlayImage', FilesOrURL::class, __('Image pour le bouton "Big Play"'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Image pour le bouton \\"Big Play\\"!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.svg, *.jpg, *.png, *.gif)","extensions":"*.svg;*.jpg;*.png;*.gif"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_audio', FormSection::class, __('Lecteur audio'));
+        $this->addField('audioPlayerTheme', SelectFromArray::class, __('Apparence du lecteur audio'), [
+            'v2' => '{"type":"combo","default":"native","editable":true,"label":"\\u00a7!\\u00a7Apparence du lecteur audio!\\u00a7!","datas":{"\\u00a7!\\u00a7Apparence native du navigateur!\\u00a7!":"native","\\u00a7!\\u00a7Zone cliquable invisible!\\u00a7!":"invisible","\\u00a7!\\u00a7Circulaire!\\u00a7!":"redbull"}}',
+            'options' => [
+                'native' => __('Apparence native du navigateur'),
+                'invisible' => __('Zone cliquable invisible'),
+                'redbull' => __('Circulaire'),
+            ],
+            'default' => 'native',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_downloadportion', FormSection::class, __('Téléchargement d\'extraits'));
+        $this->addField('downloadPortionPDF', FilesOrURL::class, 'PDF utilisé pour le téléchargement des extraits', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"PDF utilis\\u00e9 pour le t\\u00e9l\\u00e9chargement des extraits"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('downloadPortionZoom', Integer::class, __('Zoom des images extraites'), [
+            'v2' => '{"type":"integer","default":8,"editable":true,"label":"\\u00a7!\\u00a7Zoom des images extraites!\\u00a7!"}',
+            'default' => 8,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_product_zoom', FormSection::class, __('Zooms produits'));
+        $this->addField('product_zoom_references', FilesOrURL::class, __('Références produits'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7R\\u00e9f\\u00e9rences produits!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Liste de produits!\\u00a7!","extensions":" (*.xml, *.xlsx)"},"hint":"\\u00a7!\\u00a7Fichier contenant les r\\u00e9f\\u00e9rences produits!\\u00a7!","dir":"commerce"}',
+            'hint' => __('Fichier contenant les références produits'),
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('product_zoom_buttons_order', SelectFromArray::class, __('Order des boutons'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7De la droite vers la gauche!\\u00a7!":"right","\\u00a7!\\u00a7De la gauche vers la droite!\\u00a7!":"left"},"editable":true,"grade":3,"default":"right","label":"\\u00a7!\\u00a7Order des boutons!\\u00a7!"}',
+            'options' => [
+                'right' => __('De la droite vers la gauche'),
+                'left' => __('De la gauche vers la droite'),
+            ],
+            'default' => 'right',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('product_zoom_label_1', LongText::class, __('Label du bouton') . ' 1', [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Label du bouton!\\u00a7! 1","default":"","editable":true,"grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_tooltip_1', LongText::class, __('Label de l\'infobulle') . ' 1', [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Label de l\'infobulle!\\u00a7! 1","default":"","editable":true,"grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_icon_1', SelectFromArray::class, __('Icône du bouton') . ' 1', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Aucune!\\u00a7!":"none","\\u00a7!\\u00a7Partage!\\u00a7!":"nav-share","\\u00a7!\\u00a7Ecran!\\u00a7!":"icon-site","\\u00a7!\\u00a7T\\u00e9l\\u00e9charger!\\u00a7!":"nav-download","PDF":"icon-pdf","Video":"icon-video","\\u00a7!\\u00a7Lien!\\u00a7!":"icon-link","\\u00a7!\\u00a7Code!\\u00a7!":"icon-code","\\u00a7!\\u00a7QR code!\\u00a7!":"icon-qr","\\u00a7!\\u00a7Article!\\u00a7!":"icon-article","\\u00a7!\\u00a7Panier (sac)!\\u00a7!":"nav-basket","\\u00a7!\\u00a7Panier (caddie)!\\u00a7!":"nav-cart-caddie","\\u00a7!\\u00a7Panier (wishlist)!\\u00a7!":"nav-cart-wishlist","\\u00a7!\\u00a7360\\u00b0!\\u00a7!":"icon-360","\\u00a7!\\u00a7Photo!\\u00a7!":"icon-photo"},"label":"\\u00a7!\\u00a7Ic\\u00f4ne du bouton!\\u00a7! 1","default":"click","editable":true,"grade":3}',
+            'options' => [
+                'none' => __('Aucune'),
+                'nav-share' => __('Partage'),
+                'icon-site' => __('Ecran'),
+                'nav-download' => __('Télécharger'),
+                'icon-pdf' => 'PDF',
+                'icon-video' => 'Video',
+                'icon-link' => __('Lien'),
+                'icon-code' => __('Code'),
+                'icon-qr' => __('QR code'),
+                'icon-article' => __('Article'),
+                'nav-basket' => __('Panier (sac)'),
+                'nav-cart-caddie' => __('Panier (caddie)'),
+                'nav-cart-wishlist' => __('Panier (wishlist)'),
+                'icon-360' => __('360°'),
+                'icon-photo' => __('Photo'),
+            ],
+            'default' => 'click',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_action_1', SelectFromArray::class, __('Action du bouton') . ' 1', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7D\\u00e9sactiver!\\u00a7!":"disabled","\\u00a7!\\u00a7Ouvrir un lien!\\u00a7!":"link","\\u00a7!\\u00a7Ouvrir en iframe!\\u00a7!":"iframe","\\u00a7!\\u00a7Copier un contenu!\\u00a7!":"copy","\\u00a7!\\u00a7Web Vid\\u00e9o!\\u00a7!":"video","\\u00a7!\\u00a7Vid\\u00e9o!\\u00a7!":"videofile","\\u00a7!\\u00a7Vid\\u00e9o (boucle, sans contr\\u00f4le)!\\u00a7!":"videogif","\\u00a7!\\u00a7Voir une image!\\u00a7!":"image","\\u00a7!\\u00a7Ajouter au panier!\\u00a7!":"addtocart"},"label":"\\u00a7!\\u00a7Action du bouton!\\u00a7! 1","default":"disabled","editable":true,"grade":3}',
+            'options' => [
+                'disabled' => __('Désactiver'),
+                'link' => __('Ouvrir un lien'),
+                'iframe' => __('Ouvrir en iframe'),
+                'copy' => __('Copier un contenu'),
+                'video' => __('Web Vidéo'),
+                'videofile' => __('Vidéo'),
+                'videogif' => __('Vidéo (boucle, sans contrôle)'),
+                'image' => __('Voir une image'),
+                'addtocart' => __('Ajouter au panier'),
+            ],
+            'default' => 'disabled',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('product_zoom_label_2', LongText::class, __('Label du bouton') . ' 2', [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Label du bouton!\\u00a7! 2","default":"","editable":true,"grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_tooltip_2', LongText::class, __('Label de l\'infobulle') . ' 2', [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Label de l\'infobulle!\\u00a7! 2","default":"","editable":true,"grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_icon_2', SelectFromArray::class, __('Icône du bouton') . ' 2', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Aucune!\\u00a7!":"none","\\u00a7!\\u00a7Partage!\\u00a7!":"nav-share","\\u00a7!\\u00a7Ecran!\\u00a7!":"icon-site","\\u00a7!\\u00a7T\\u00e9l\\u00e9charger!\\u00a7!":"nav-download","PDF":"icon-pdf","Video":"icon-video","\\u00a7!\\u00a7Lien!\\u00a7!":"icon-link","\\u00a7!\\u00a7Code!\\u00a7!":"icon-code","\\u00a7!\\u00a7QR code!\\u00a7!":"icon-qr","\\u00a7!\\u00a7Article!\\u00a7!":"icon-article","\\u00a7!\\u00a7Panier (sac)!\\u00a7!":"nav-basket","\\u00a7!\\u00a7Panier (caddie)!\\u00a7!":"nav-cart-caddie","\\u00a7!\\u00a7Panier (wishlist)!\\u00a7!":"nav-cart-wishlist","\\u00a7!\\u00a7360\\u00b0!\\u00a7!":"icon-360","\\u00a7!\\u00a7Photo!\\u00a7!":"icon-photo"},"label":"\\u00a7!\\u00a7Ic\\u00f4ne du bouton!\\u00a7! 2","default":"click","editable":true,"grade":3}',
+            'options' => [
+                'none' => __('Aucune'),
+                'nav-share' => __('Partage'),
+                'icon-site' => __('Ecran'),
+                'nav-download' => __('Télécharger'),
+                'icon-pdf' => 'PDF',
+                'icon-video' => 'Video',
+                'icon-link' => __('Lien'),
+                'icon-code' => __('Code'),
+                'icon-qr' => __('QR code'),
+                'icon-article' => __('Article'),
+                'nav-basket' => __('Panier (sac)'),
+                'nav-cart-caddie' => __('Panier (caddie)'),
+                'nav-cart-wishlist' => __('Panier (wishlist)'),
+                'icon-360' => __('360°'),
+                'icon-photo' => __('Photo'),
+            ],
+            'default' => 'click',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_action_2', SelectFromArray::class, __('Action du bouton') . ' 2', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7D\\u00e9sactiver!\\u00a7!":"disabled","\\u00a7!\\u00a7Ouvrir un lien!\\u00a7!":"link","\\u00a7!\\u00a7Ouvrir en iframe!\\u00a7!":"iframe","\\u00a7!\\u00a7Copier un contenu!\\u00a7!":"copy","\\u00a7!\\u00a7Web Vid\\u00e9o!\\u00a7!":"video","\\u00a7!\\u00a7Vid\\u00e9o!\\u00a7!":"videofile","\\u00a7!\\u00a7Vid\\u00e9o (boucle, sans contr\\u00f4le)!\\u00a7!":"videogif","\\u00a7!\\u00a7Voir une image!\\u00a7!":"image","\\u00a7!\\u00a7Ajouter au panier!\\u00a7!":"addtocart"},"label":"\\u00a7!\\u00a7Action du bouton!\\u00a7! 2","default":"disabled","editable":true,"grade":3}',
+            'options' => [
+                'disabled' => __('Désactiver'),
+                'link' => __('Ouvrir un lien'),
+                'iframe' => __('Ouvrir en iframe'),
+                'copy' => __('Copier un contenu'),
+                'video' => __('Web Vidéo'),
+                'videofile' => __('Vidéo'),
+                'videogif' => __('Vidéo (boucle, sans contrôle)'),
+                'image' => __('Voir une image'),
+                'addtocart' => __('Ajouter au panier'),
+            ],
+            'default' => 'disabled',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('product_zoom_label_3', LongText::class, __('Label du bouton') . ' 3', [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Label du bouton!\\u00a7! 3","default":"","editable":true,"grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_tooltip_3', LongText::class, __('Label de l\'infobulle') . ' 3', [
+            'v2' => '{"type":"text","label":"\\u00a7!\\u00a7Label de l\'infobulle!\\u00a7! 3","default":"","editable":true,"grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_icon_3', SelectFromArray::class, __('Icône du bouton') . ' 3', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Aucune!\\u00a7!":"none","\\u00a7!\\u00a7Partage!\\u00a7!":"nav-share","\\u00a7!\\u00a7Ecran!\\u00a7!":"icon-site","\\u00a7!\\u00a7T\\u00e9l\\u00e9charger!\\u00a7!":"nav-download","PDF":"icon-pdf","Video":"icon-video","\\u00a7!\\u00a7Lien!\\u00a7!":"icon-link","\\u00a7!\\u00a7Code!\\u00a7!":"icon-code","\\u00a7!\\u00a7QR code!\\u00a7!":"icon-qr","\\u00a7!\\u00a7Article!\\u00a7!":"icon-article","\\u00a7!\\u00a7Panier (sac)!\\u00a7!":"nav-basket","\\u00a7!\\u00a7Panier (caddie)!\\u00a7!":"nav-cart-caddie","\\u00a7!\\u00a7Panier (wishlist)!\\u00a7!":"nav-cart-wishlist","\\u00a7!\\u00a7360\\u00b0!\\u00a7!":"icon-360","\\u00a7!\\u00a7Photo!\\u00a7!":"icon-photo"},"label":"\\u00a7!\\u00a7Ic\\u00f4ne du bouton!\\u00a7! 3","default":"click","editable":true,"grade":3}',
+            'options' => [
+                'none' => __('Aucune'),
+                'nav-share' => __('Partage'),
+                'icon-site' => __('Ecran'),
+                'nav-download' => __('Télécharger'),
+                'icon-pdf' => 'PDF',
+                'icon-video' => 'Video',
+                'icon-link' => __('Lien'),
+                'icon-code' => __('Code'),
+                'icon-qr' => __('QR code'),
+                'icon-article' => __('Article'),
+                'nav-basket' => __('Panier (sac)'),
+                'nav-cart-caddie' => __('Panier (caddie)'),
+                'nav-cart-wishlist' => __('Panier (wishlist)'),
+                'icon-360' => __('360°'),
+                'icon-photo' => __('Photo'),
+            ],
+            'default' => 'click',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_zoom_action_3', SelectFromArray::class, __('Action du bouton') . ' 3', [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7D\\u00e9sactiver!\\u00a7!":"disabled","\\u00a7!\\u00a7Ouvrir un lien!\\u00a7!":"link","\\u00a7!\\u00a7Ouvrir en iframe!\\u00a7!":"iframe","\\u00a7!\\u00a7Copier un contenu!\\u00a7!":"copy","\\u00a7!\\u00a7Web Vid\\u00e9o!\\u00a7!":"video","\\u00a7!\\u00a7Vid\\u00e9o!\\u00a7!":"videofile","\\u00a7!\\u00a7Vid\\u00e9o (boucle, sans contr\\u00f4le)!\\u00a7!":"videogif","\\u00a7!\\u00a7Voir une image!\\u00a7!":"image","\\u00a7!\\u00a7Ajouter au panier!\\u00a7!":"addtocart"},"label":"\\u00a7!\\u00a7Action du bouton!\\u00a7! 3","default":"disabled","editable":true,"grade":3}',
+            'options' => [
+                'disabled' => __('Désactiver'),
+                'link' => __('Ouvrir un lien'),
+                'iframe' => __('Ouvrir en iframe'),
+                'copy' => __('Copier un contenu'),
+                'video' => __('Web Vidéo'),
+                'videofile' => __('Vidéo'),
+                'videogif' => __('Vidéo (boucle, sans contrôle)'),
+                'image' => __('Voir une image'),
+                'addtocart' => __('Ajouter au panier'),
+            ],
+            'default' => 'disabled',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('product_share_enabled', Checkbox::class, __('Activer le bouton de partage'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"grade":"3","label":"\\u00a7!\\u00a7Activer le bouton de partage!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_share_link', SelectFromArray::class, __('Lien de partage'), [
+            'v2' => '{"type":"combo","default":"product","editable":true,"label":"\\u00a7!\\u00a7Lien de partage!\\u00a7!","datas":{"\\u00a7!\\u00a7Lien du produit!\\u00a7!":"product","\\u00a7!\\u00a7Lien vers la page du fluidbook!\\u00a7!":"page"}}',
+            'options' => [
+                'product' => __('Lien du produit'),
+                'page' => __('Lien vers la page du fluidbook'),
+            ],
+            'default' => 'product',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_email_title', LongText::class, __('Titre de l\'email') . ' "' . __('Envoyer à un ami') . '"', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Titre de l\'email!\\u00a7! \\"\\u00a7!\\u00a7Envoyer \\u00e0 un ami!\\u00a7!\\""}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_email_body', Textarea::class, __('Corps de l\'email') . ' "' . __('Envoyer à un ami') . '"', [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Corps de l\'email!\\u00a7! \\"\\u00a7!\\u00a7Envoyer \\u00e0 un ami!\\u00a7!\\""}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('product_tweet', Textarea::class, __('Contenu Partage court'), [
+            'v2' => '{"type":"textarea","default":"%short%","editable":true,"label":"\\u00a7!\\u00a7Contenu Partage court!\\u00a7!","hint":"\\u00a7!\\u00a7Contenu du partag\\u00e9 sur les partages courts!\\u00a7!"}',
+            'hint' => __('Contenu du partagé sur les partages courts'),
+            'default' => '%short%',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_accessibility', FormSection::class, __('Accessibilité'));
+        $this->addField('audiodescriptionTexts', FilesOrURL::class, __('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Contenus textuels pour l\'audiodescription ou les lecteurs d\'\\u00e9cran!\\u00a7!","fileFilter":{"name":"\\u00a7!\\u00a7Fichier Excel!\\u00a7! (.xlsx)","extensions":"*.xlsx"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('audiodescriptionVoice', SelectFromArray::class, __('Voix pour l\'audiodescription'), [
+            'v2' => '{"type":"combo","datas":{"":"","Festival (en-US)":"festival:voice_cmu_us_slt_arctic_hts","ReadSpeaker Sophie (en-US)":"readspeaker:Sophie\\/en_us","ReadSpeaker Marc (en-US)":"readspeaker:Marc\\/en_us","Azure Denise (fr-FR)":"azuretts:fr-FR\\/Female\\/fr-FR-DeniseNeural","Azure Henry (fr-FR)":"azuretts:fr-FR\\/Male\\/fr-FR-MaleNeural"},"editable":true,"default":"","label":"\\u00a7!\\u00a7Voix pour l\'audiodescription!\\u00a7!"}',
+            'options' => [
+                '' => '',
+                'festival:voice_cmu_us_slt_arctic_hts' => 'Festival (en-US)',
+                'readspeaker:Sophie/en_us' => 'ReadSpeaker Sophie (en-US)',
+                'readspeaker:Marc/en_us' => 'ReadSpeaker Marc (en-US)',
+                'azuretts:fr-FR/Female/fr-FR-DeniseNeural' => 'Azure Denise (fr-FR)',
+                'azuretts:fr-FR/Male/fr-FR-MaleNeural' => 'Azure Henry (fr-FR)',
+            ],
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_splash', FormSection::class, __('Ecran de chargement'));
+        $this->addField('splashImage', FilesOrURL::class, __('Image'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Image!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.jpg, *.png)","extensions":"*.jpg;*.jpeg;*.png"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('splashURL', LongText::class, __('URL'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7URL!\\u00a7!","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('splashTarget', SelectFromArray::class, __('Ouvrir le lien'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Dans la fen\\u00eatre courrante!\\u00a7!":"_self","\\u00a7!\\u00a7Dans un nouvel onglet!\\u00a7!":"_blank"},"default":"_self","editable":true,"label":"\\u00a7!\\u00a7Ouvrir le lien!\\u00a7!","grade":3}',
+            'options' => [
+                '_self' => __('Dans la fenêtre courrante'),
+                '_blank' => __('Dans un nouvel onglet'),
+            ],
+            'default' => '_self',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('splashMinimalTime', Number::class, __('Temps minimal d\'affichage'), [
+            'v2' => '{"type":"float","default":1,"editable":true,"label":"\\u00a7!\\u00a7Temps minimal d\'affichage!\\u00a7!","grade":3}',
+            'default' => 1,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_notes', FormSection::class, __('Notes'));
+        $this->addField('notes', Checkbox::class, 'Activer les notes', [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"Activer les notes","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_articles', FormSection::class, __('Articles'));
+        $this->addField('articlesFile', FilesOrURL::class, 'Articles', [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"Articles","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Liste d\'articles!\\u00a7! (*.xml)","extensions":"*.xml"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('articlesImages', FilesOrURL::class, __('Images des articles'), [
+            'v2' => '{"type":"freefile","label":"\\u00a7!\\u00a7Images des articles!\\u00a7!","default":"","hint":"\\u00a7!\\u00a7Les noms des fichiers doivent \\u00eatre les m\\u00eame que ceux des balises <image> du XML!\\u00a7!","editable":true,"grade":3,"dir":"articles","multiple":true}',
+            'hint' => __('Les noms des fichiers doivent être les même que ceux des balises <image> du XML'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('articlesShare', Checkbox::class, __('Activer le partage'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer le partage!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('articlesPrint', Checkbox::class, __('Activer l\'impression'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer l\'impression!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('articlesStyle', SelectFromArray::class, __('Style'), [
+            'v2' => '{"type":"combo","default":true,"editable":true,"label":"\\u00a7!\\u00a7Style!\\u00a7!","grade":3,"datas":{"D\\u00e9faut":"default","Atlantic":"atlantic","Harmonie Mutuelle":"harmonie-mutuelle","Business Immo":"business-immo"}}',
+            'options' => [
+                'default' => 'Défaut',
+                'atlantic' => 'Atlantic',
+                'harmonie-mutuelle' => 'Harmonie Mutuelle',
+                'business-immo' => 'Business Immo',
+            ],
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('articlesFont', SelectFromArray::class, __('Police des articles'), [
+            'v2' => '{"type":"combo","label":"\\u00a7!\\u00a7Police des articles!\\u00a7!","default":"OpenSans","datas":{"Open Sans (d\\u00e9faut)":"OpenSans","Montserrat":"Montserrat","Arial, Helvetica, sans-serif (police syst\\u00e8me)":"Arial","Police syst\\u00e8me sans-serif":"sans-serif"},"editable":true,"grade":3}',
+            'options' => [
+                'OpenSans' => 'Open Sans (défaut)',
+                'Montserrat' => 'Montserrat',
+                'Arial' => 'Arial, Helvetica, sans-serif (police système)',
+                'sans-serif' => 'Police système sans-serif',
+            ],
+            'default' => 'OpenSans',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_archives', FormSection::class, __('Archives'));
+        $this->addField('externalArchives', FilesOrURL::class, __('Archives'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Archives!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.jpg, *.png)","extensions":"*.jpg;*.jpeg;*.png"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('archivesLabel', LongText::class, __('Label'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Label!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_form', FormSection::class, __('Formulaire'));
+        $this->addField('form', SelectFromArray::class, __('Formulaire'), [
+            'v2' => '{"type":"combo","default":"","editable":true,"grade":5,"label":"\\u00a7!\\u00a7Formulaire!\\u00a7!","datas":{"\\u00a7!\\u00a7Aucun!\\u00a7!":"","Bulle Groupe":"bulle","Bourbon \\/ Suggestions":"bourbon","Avery":"avery"}}',
+            'options' => [
+                '' => __('Aucun'),
+                'bulle' => 'Bulle Groupe',
+                'bourbon' => 'Bourbon / Suggestions',
+                'avery' => 'Avery',
+            ],
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_privacy', FormSection::class, __('Respect de la vie privée'));
+        $this->addField('cookieConsent', Checkbox::class, __('Message cookie'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Message cookie!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('cookieConsentMessage', Textarea::class, __('Texte du consentement'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Texte du consentement!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('cookieConsentAutoclose', Integer::class, __('Masquer automatiquement après x secondes'), [
+            'v2' => '{"type":"integer","default":0,"editable":true,"label":"\\u00a7!\\u00a7Masquer automatiquement apr\\u00e8s x secondes!\\u00a7!"}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_basket', FormSection::class, __('Panier'));
+        $this->addField('basket', Checkbox::class, __('Panier activé'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Panier activ\\u00e9!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('basketManager', SelectFromArray::class, __('Manager de panier'), [
+            'v2' => '{"type":"combo","default":"classic","editable":true,"label":"\\u00a7!\\u00a7Manager de panier!\\u00a7!","datas":{"\\u00a7!\\u00a7Classic!\\u00a7!":"com.fluidbook.player.basket.BasketManager","Grdf":"com.fluidbook.player.basket.custom.grdf.GrdfBasketManager","Grdf 2013":"com.fluidbook.player.basket.custom.grdf.grdf2013.GrdfBasketManager2013","Grdf 2015":"com.fluidbook.player.basket.custom.grdf.grdf2015.GrdfBasketManager2015","Essilor":"com.fluidbook.player.basket.custom.essilor.EssilorBasketManager","Essilor Recap":"com.fluidbook.player.basket.custom.essilorrecap.EssilorRecapBasketManager","Wesco Ventes":"com.fluidbook.player.basket.custom.wesco.WescoBasketManager","Atlantic Download":"com.fluidbook.player.basket.custom.atlantic.AtlanticDownloadBasketManager","Remarkable":"Remarkable","Mopec":"Mopec","Puma":"Puma","MIF":"MIF","Flexipan":"Flexipan","Zoom + lien produit (d\\u00e9pr\\u00e9ci\\u00e9, utiliser la fonctionnalit\\u00e9 \\"Zoom produits\\")":"ZoomProductLink","Wishlist Jou\\u00e9club":"JoueclubWishlist","GrandVision":"GrandVision","Grand Pavois":"GrandPavois","Wishlist Jou\\u00e9club No\\u00ebl 2021":"JoueclubWishlist2021","Thiriet":"Thiriet"},"grade":5}',
+            'options' => [
+                'com.fluidbook.player.basket.BasketManager' => __('Classic'),
+                'com.fluidbook.player.basket.custom.grdf.GrdfBasketManager' => 'Grdf',
+                'com.fluidbook.player.basket.custom.grdf.grdf2013.GrdfBasketManager2013' => 'Grdf 2013',
+                'com.fluidbook.player.basket.custom.grdf.grdf2015.GrdfBasketManager2015' => 'Grdf 2015',
+                'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager' => 'Essilor',
+                'com.fluidbook.player.basket.custom.essilorrecap.EssilorRecapBasketManager' => 'Essilor Recap',
+                'com.fluidbook.player.basket.custom.wesco.WescoBasketManager' => 'Wesco Ventes',
+                'com.fluidbook.player.basket.custom.atlantic.AtlanticDownloadBasketManager' => 'Atlantic Download',
+                'Remarkable' => 'Remarkable',
+                'Mopec' => 'Mopec',
+                'Puma' => 'Puma',
+                'MIF' => 'MIF',
+                'Flexipan' => 'Flexipan',
+                'ZoomProductLink' => 'Zoom + lien produit (déprécié, utiliser la fonctionnalité "Zoom produits")',
+                'JoueclubWishlist' => 'Wishlist Jouéclub',
+                'GrandVision' => 'GrandVision',
+                'GrandPavois' => 'Grand Pavois',
+                'JoueclubWishlist2021' => 'Wishlist Jouéclub Noël 2021',
+                'Thiriet' => 'Thiriet',
+            ],
+            'default' => 'classic',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('cartIcon', SelectFromArray::class, __('Icône'), [
+            'v2' => '{"type":"combo","datas":{"\\u00a7!\\u00a7Sac!\\u00a7!":"nav-basket","\\u00a7!\\u00a7Caddie!\\u00a7!":"nav-cart-caddie","\\u00a7!\\u00a7Wishlist!\\u00a7!":"nav-cart-wishlist"},"default":"nav-basket","label":"\\u00a7!\\u00a7Ic\\u00f4ne!\\u00a7!","editable":true,"grade":5}',
+            'options' => [
+                'nav-basket' => __('Sac'),
+                'nav-cart-caddie' => __('Caddie'),
+                'nav-cart-wishlist' => __('Wishlist'),
+            ],
+            'default' => 'nav-basket',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('cartLinkAppearance', SelectFromArray::class, __('Apparence des liens panier'), [
+            'v2' => '{"type":"combo","default":"link","editable":true,"label":"\\u00a7!\\u00a7Apparence des liens panier!\\u00a7!","grade":3,"datas":{"\\u00a7!\\u00a7Lien!\\u00a7!":"link","\\u00a7!\\u00a7Boutons + et - avec overlay!\\u00a7!":"overlay"}}',
+            'options' => [
+                'link' => __('Lien'),
+                'overlay' => __('Boutons + et - avec overlay'),
+            ],
+            'default' => 'link',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('basketReferences', FilesOrURL::class, __('Références produits'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7R\\u00e9f\\u00e9rences produits!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Liste de produits!\\u00a7!","extensions":" (*.xml, *.xlsx)"},"hint":"\\u00a7!\\u00a7Fichier contenant les r\\u00e9f\\u00e9rences produits!\\u00a7!","dir":"commerce"}',
+            'hint' => __('Fichier contenant les références produits'),
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('basketImages', FilesOrURL::class, __('Images des produits'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Images des produits!\\u00a7!","grade":3,"multiple":true,"dir":"commerce"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('cartHeaderImage', FilesOrURL::class, __('Header panier'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Header panier!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.jpg, *.png)","extensions":"*.jpg;*.jpeg;*.png"},"dir":"commerce"}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('cartHeaderMobileImage', FilesOrURL::class, __('Header panier (mobile)'), [
+            'v2' => '{"type":"freefile","default":"","editable":true,"label":"\\u00a7!\\u00a7Header panier (mobile)!\\u00a7!","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Images!\\u00a7! (*.jpg, *.png)","extensions":"*.jpg;*.jpeg;*.png"},"dir":"commerce"}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('cartExtraSettings', Textarea::class, __('Paramètres panier'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Param\\u00e8tres panier!\\u00a7!","grade":3}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_offline', FormSection::class, __('Version offline'));
+        $this->addField('offlineTitle', LongText::class, __('Titre de l\'application'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Titre de l\'application!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('offlineLink', LongText::class, __('URL du Fluidbook'), [
+            'v2' => '{"type":"text","default":"http:\\/\\/","editable":true,"label":"\\u00a7!\\u00a7URL du Fluidbook!\\u00a7!","hint":"\\u00a7!\\u00a7URL du fluidbook utilis\\u00e9e pour la version Offline (CD-ROM, cl\\u00e9 USB, Ex\\u00e9cutables)!\\u00a7!"}',
+            'hint' => __('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'),
+            'default' => 'http://',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('offlineWindowsInstallPath', LongText::class, __('Chemin d\'installation par défaut'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Chemin d\'installation par d\\u00e9faut!\\u00a7!","hint":"\\u00a7!\\u00a7Par d\\u00e9faut!\\u00a7!: %LOCALAPPDATA%\\/%title%"}',
+            'hint' => __('Par défaut') . ': %LOCALAPPDATA%/%title%',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('offlineWindowsProfilePath', LongText::class, __('Répertoire de stockage du profile'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7R\\u00e9pertoire de stockage du profile!\\u00a7!","hint":"\\u00a7!\\u00a7Par d\\u00e9faut!\\u00a7!: %LOCALAPPDATA%\\/%title%"}',
+            'hint' => __('Par défaut') . ': %LOCALAPPDATA%/%title%',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('offlineEnableAdvancedPrinting', Checkbox::class, __('Activer le menu d\'impression avancée'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Activer le menu d\'impression avanc\\u00e9e!\\u00a7!"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('debugConsole', Checkbox::class, __('Activer la console de débuggage'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Activer la console de d\\u00e9buggage!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_mobilefirst', FormSection::class, __('Mobile first'));
+        $this->addField('mobilefirstFluidbookId', LongText::class, 'Identifiant du fluidbook "Mobile first"', [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"Identifiant du fluidbook \\"Mobile first\\"","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('mobilefirstBreakpoint', LongText::class, 'Breakpoint du passage à la version "Mobile first" (en pixels)', [
+            'v2' => '{"type":"text","default":"640","editable":true,"label":"Breakpoint du passage \\u00e0 la version \\"Mobile first\\" (en pixels)","grade":5}',
+            'default' => '640',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_phonegap', FormSection::class, __('Applications mobile'));
+        $this->addField('phonegapId', LongText::class, __('Identifiant de l\'identifiant'), [
+            'v2' => '{"type":"text","default":"com.fluidbook.phonegap.$id","editable":true,"label":"\\u00a7!\\u00a7Identifiant de l\'identifiant!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7De la forme!\\u00a7! com.fluidbook.phonegap.xxxxx"}',
+            'hint' => __('De la forme') . ' com.fluidbook.phonegap.xxxxx',
+            'default' => 'com.fluidbook.phonegap.$id',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('phonegapVersion', LongText::class, __('Version de l\'application'), [
+            'v2' => '{"type":"text","default":"1.0.0","editable":true,"label":"\\u00a7!\\u00a7Version de l\'application!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7De la forme!\\u00a7! 1.2.3"}',
+            'hint' => __('De la forme') . ' 1.2.3',
+            'default' => '1.0.0',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('phonegapPlugins', Textarea::class, __('Plugins Phonegap'), [
+            'v2' => '{"type":"textarea","default":"ChildBrowser","editable":true,"label":"\\u00a7!\\u00a7Plugins Phonegap!\\u00a7!","grade":5}',
+            'default' => 'ChildBrowser',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('appScreenshots', Textarea::class, 'Générer les screenshots', [
+            'v2' => '{"type":"textarea","default":"P,0\\nL,2\\nL,index","editable":true,"label":"G\\u00e9n\\u00e9rer les screenshots","grade":5,"hint":"\\u00a7!\\u00a7Une ligne par vue \\u00e0 g\\u00e9n\\u00e9rer de la forme X,Y (X : P(ortrait) ou L(andscape), Y : num\\u00e9ro de page ou vue (1, index))!\\u00a7!"}',
+            'hint' => __('Une ligne par vue à générer de la forme X,Y (X : P(ortrait) ou L(andscape), Y : numéro de page ou vue (1, index))'),
+            'default' => 'P,0
+L,2
+L,index',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_secure', FormSection::class, __('Sécurisation'));
+        $this->addField('secureURL', LongText::class, __('URL de sécurisation'), [
+            'v2' => '{"type":"text","default":"http:\\/\\/","editable":true,"label":"\\u00a7!\\u00a7URL de s\\u00e9curisation!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7URL int\\u00e9rrog\\u00e9 pour v\\u00e9rifier si le visiteur \\u00e0 les droits pour consulter la publication!\\u00a7!"}',
+            'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'),
+            'default' => 'http://',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('secureURLRedirect', LongText::class, __('Redirection'), [
+            'v2' => '{"type":"text","default":"http:\\/\\/","editable":true,"label":"\\u00a7!\\u00a7Redirection!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7Si l\'authentification \\u00e9choue, redirection vers cette adresse!\\u00a7!"}',
+            'hint' => __('Si l\'authentification échoue, redirection vers cette adresse'),
+            'default' => 'http://',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('secureClientSidePassword', FilesOrURL::class, 'Sécurisation par mot de passe côté client', [
+            'v2' => '{"type":"freefile","label":"S\\u00e9curisation par mot de passe c\\u00f4t\\u00e9 client","editable":true,"default":"","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Fichier HTML!\\u00a7! (*.html)","extensions":"*.html"}}',
+            'default' => '',
+            'accept' => [
+                0 => '',
+            ],
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('secureClientSidePasswordCredentials', Textarea::class, 'Utilisateurs / mots de passe', [
+            'v2' => '{"type":"textarea","label":"Utilisateurs \\/ mots de passe","editable":true,"default":"","grade":3,"hint":"Format user:password par ligne"}',
+            'hint' => 'Format user:password par ligne',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('preventRightClick', Checkbox::class, __('Essayer d\'empêcher le clic droit'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Essayer d\'emp\\u00eacher le clic droit!\\u00a7!","grade":1}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('restrictPrintDownload', LongText::class, __('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Param\\u00e8tre de l\'url permettant de d\\u00e9sactiver la restriction (non vide pour activer les restrictions)!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7Ne pas indiquer le ?!\\u00a7!"}',
+            'hint' => __('Ne pas indiquer le ?'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('restrictPrint', Checkbox::class, __('Restreindre l\'impression'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Restreindre l\'impression!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('restrictDownload', Checkbox::class, __('Restreindre le téléchargement du pdf'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Restreindre le t\\u00e9l\\u00e9chargement du pdf!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('restrictSendBookmark', Checkbox::class, __('Restreindre l\'envoi de marques-pages'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Restreindre l\'envoi de marques-pages!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('recaptcha', LongText::class, __('Activer reCATPCHA v3 (clé du site)'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Activer reCATPCHA v3 (cl\\u00e9 du site)!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_multibrochure', FormSection::class, __('Multibrochure'));
+        $this->addField('home', LongText::class, __('Accueil de l\'interface multibrochure'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Accueil de l\'interface multibrochure!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('country', LongText::class, __('Pays de la brochure'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Pays de la brochure!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('multilangDisplay', SelectFromArray::class, __('Affichage'), [
+            'v2' => '{"type":"combo","default":"lang","editable":true,"label":"\\u00a7!\\u00a7Affichage!\\u00a7!","datas":{"\\u00a7!\\u00a7Langue!\\u00a7!":"lang","\\u00a7!\\u00a7Langue!\\u00a7! (\\u00a7!\\u00a7Pays!\\u00a7!)":"lang_country","\\u00a7!\\u00a7Pays!\\u00a7! (\\u00a7!\\u00a7Langue!\\u00a7!)":"country_lang"}}',
+            'options' => [
+                'lang' => __('Langue'),
+                'lang_country' => __('Langue') . ' (' . __('Pays') . ')',
+                'country_lang' => __('Pays') . ' (' . __('Langue') . ')',
+            ],
+            'default' => 'lang',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('multilang', Textarea::class, __('Langues'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Langues!\\u00a7!","hint":"\\u00a7!\\u00a7Code langue!\\u00a7!,\\u00a7!\\u00a7Code pays!\\u00a7!,\\u00a7!\\u00a7URL!\\u00a7!"}',
+            'hint' => __('Code langue') . ',' . __('Code pays') . ',' . __('URL'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_plv', FormSection::class, __('Mode PLV'));
+        $this->addField('plv', Checkbox::class, __('Activer le mode PLV'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Activer le mode PLV!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('plvTimer', Integer::class, __('Temps'), [
+            'v2' => '{"type":"integer","min":1,"max":60,"default":5,"editable":true,"label":"\\u00a7!\\u00a7Temps!\\u00a7!","grade":3}',
+            'min' => 1,
+            'max' => 60,
+            'default' => 5,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('plvMode', SelectFromArray::class, __('Arrivé à la dernière page'), [
+            'v2' => '{"type":"combo","default":"first","editable":true,"label":"\\u00a7!\\u00a7Arriv\\u00e9 \\u00e0 la derni\\u00e8re page!\\u00a7!","grade":3,"datas":{"\\u00a7!\\u00a7Remonter vers la premi\\u00e8re page!\\u00a7!":"back","\\u00a7!\\u00a7Recommencer \\u00e0 la premi\\u00e8re page!\\u00a7!":"first"}}',
+            'options' => [
+                'back' => __('Remonter vers la première page'),
+                'first' => __('Recommencer à la première page'),
+            ],
+            'default' => 'first',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_theme', FormSection::class, __('Options du thème'));
+        $this->addField('themeEnableAfterSearch', Checkbox::class, __('Afficher l\'image supplémentaire à droite du moteur de recherche'), [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Afficher l\'image suppl\\u00e9mentaire \\u00e0 droite du moteur de recherche!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_package', FormSection::class, __('Option d\'export'));
+        $this->addField('htmlExtension', LongText::class, __('Extension des fichiers html'), [
+            'v2' => '{"type":"text","default":"html","editable":true,"label":"\\u00a7!\\u00a7Extension des fichiers html!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7Ex : php, htm, html, phtml, asp, aspx!\\u00a7!"}',
+            'hint' => __('Ex : php, htm, html, phtml, asp, aspx'),
+            'default' => 'html',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('actualHtmlExtension', LongText::class, __('Extension des fichiers html réellement appliquée au fluidbook'), [
+            'v2' => '{"type":"text","default":"html","editable":false,"label":"\\u00a7!\\u00a7Extension des fichiers html r\\u00e9ellement appliqu\\u00e9e au fluidbook!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7Ex : php, htm, html, phtml, asp!\\u00a7!"}',
+            'hint' => __('Ex : php, htm, html, phtml, asp'),
+            'default' => 'html',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('htmlPrepend', Textarea::class, __('Code à insérer en tête des fichiers'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Code \\u00e0 ins\\u00e9rer en t\\u00eate des fichiers!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('baseUrl', LongText::class, __('Base de l\'url'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Base de l\'url!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('forceCompileOnDownload', Checkbox::class, __('Forcer la compilation lors du téléchargement'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Forcer la compilation lors du t\\u00e9l\\u00e9chargement!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('embedAllLibraries', Checkbox::class, __('Intégrer toutes les bibliothèques JS'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Int\\u00e9grer toutes les biblioth\\u00e8ques JS!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_demo', FormSection::class, __('Lien de démo'));
+        $this->addField('disableDemo', Checkbox::class, __('Désactiver le lien de démo'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7D\\u00e9sactiver le lien de d\\u00e9mo!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('redirectDemo', LongText::class, __('Rediriger le lien de démo vers'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Rediriger le lien de d\\u00e9mo vers!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_gamify', FormSection::class, __('Gamification'));
+        $this->addField('gamify_coins_pages', Textarea::class, __('Attribuer des coins lors de la visite des pages'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Attribuer des coins lors de la visite des pages!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_scorm', FormSection::class, __('SCORM'));
+        $this->addField('scorm_enable', Checkbox::class, __('Activer SCORM'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Activer SCORM!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_version', SelectFromArray::class, __('Version du standard SCORM'), [
+            'v2' => '{"type":"combo","default":"1.2","editable":true,"label":"\\u00a7!\\u00a7Version du standard SCORM!\\u00a7!","grade":5,"datas":{"\\u00a7!\\u00a7SCORM 1.2!\\u00a7!":"1.2","\\u00a7!\\u00a7SCORM 2004 3rd edition!\\u00a7!":"2004.3","\\u00a7!\\u00a7SCORM 2004 4th edition!\\u00a7!":"2004"}}',
+            'options' => [
+                '1.2' => __('SCORM 1.2'),
+                '2004.3' => __('SCORM 2004 3rd edition'),
+                2004 => __('SCORM 2004 4th edition'),
+            ],
+            'default' => '1.2',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_id', LongText::class, __('Identifiant SCORM'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Identifiant SCORM!\\u00a7!","grade":5}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_org', LongText::class, __('Organisation SCORM'), [
+            'v2' => '{"type":"text","default":"ACME-ORG-1350650111249","editable":true,"label":"\\u00a7!\\u00a7Organisation SCORM!\\u00a7!","grade":5}',
+            'default' => 'ACME-ORG-1350650111249',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_title', LongText::class, __('Titre SCORM'), [
+            'v2' => '{"type":"text","default":"","editable":true,"label":"\\u00a7!\\u00a7Titre SCORM!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7Laisser vide pour utiliser le titre de la publication!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser le titre de la publication'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_variables', Textarea::class, __('Variables SCORM'), [
+            'v2' => '{"type":"textarea","default":"","editable":true,"label":"\\u00a7!\\u00a7Variables SCORM!\\u00a7!","grade":5,"hint":"\\u00a7!\\u00a7Laisser vide pour utiliser le titre de la publication!\\u00a7!"}',
+            'hint' => __('Laisser vide pour utiliser le titre de la publication'),
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('scorm_complete_on_exit', Checkbox::class, 'Marquer le cours comme "Complete" à la fermeture de la fenêtre', [
+            'v2' => '{"type":"boolean","default":false,"label":"Marquer le cours comme \\"Complete\\" \\u00e0 la fermeture de la fen\\u00eatre","editable":true}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_complete_on_last_page', Checkbox::class, 'Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page', [
+            'v2' => '{"type":"boolean","default":false,"label":"Marquer le cours comme \\"Complete\\" lorsque le visiteur atteint la derni\\u00e8re page","editable":true}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_complete_coins', Integer::class, 'Marquer le cours comme "Complete" lorsque le visiteur accumule X coins', [
+            'v2' => '{"type":"integer","default":0,"label":"Marquer le cours comme \\"Complete\\" lorsque le visiteur accumule X coins","editable":true}',
+            'default' => 0,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('scorm_pass_on_complete', Checkbox::class, __('Marquer le cours comme Pass lorsqu\'il est terminé') . ' (' . __('SCORM 2004 seulement') . ')', [
+            'v2' => '{"type":"boolean","default":true,"editable":true,"label":"\\u00a7!\\u00a7Marquer le cours comme Pass lorsqu\'il est termin\\u00e9!\\u00a7! (\\u00a7!\\u00a7SCORM 2004 seulement!\\u00a7!)"}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_score100_on_complete', Checkbox::class, __('Marquer le cours comme réussi à 100% lorsqu\'il est terminé'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Marquer le cours comme r\\u00e9ussi \\u00e0 100% lorsqu\'il est termin\\u00e9!\\u00a7!"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('scorm_quizdata', FilesOrURL::class, __('Données de quiz'), [
+            'v2' => '{"type":"freefile","editable":true,"default":"","label":"\\u00a7!\\u00a7Donn\\u00e9es de quiz!\\u00a7!"}',
+            'default' => '',
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_score', Checkbox::class, __('Activer le support du score'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Activer le support du score!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_score_min', Integer::class, __('Score minimal pour marquer le contenu comme réussi'), [
+            'v2' => '{"type":"integer","min":0,"max":100,"default":50,"editable":true,"label":"\\u00a7!\\u00a7Score minimal pour marquer le contenu comme r\\u00e9ussi!\\u00a7!","grade":5}',
+            'min' => 0,
+            'max' => 100,
+            'default' => 50,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_quiz_as_questionnaire', Checkbox::class, __('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Traiter les quiz comme des questionnaires (toutes les r\\u00e9ponses sont consid\\u00e9r\\u00e9es comme correctes)!\\u00a7!","grade":5}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('', FormSeparator::class);
+        $this->addField('scorm_force_attempts', Checkbox::class, __('Forcer la création d\'un "attempt" à chaque ouverture'), [
+            'v2' => '{"type":"boolean","default":false,"label":"\\u00a7!\\u00a7Forcer la cr\\u00e9ation d\'un \\"attempt\\" \\u00e0 chaque ouverture!\\u00a7!","editable":true}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('scorm_commit_immediately', Checkbox::class, __('Envoyer les données immédiatement au LMS') . ' (' . __('Peut provoquer des ralentissement sur certains LMS') . ')', [
+            'v2' => '{"type":"boolean","default":false,"editable":true,"label":"\\u00a7!\\u00a7Envoyer les donn\\u00e9es imm\\u00e9diatement au LMS!\\u00a7! (\\u00a7!\\u00a7Peut provoquer des ralentissement sur certains LMS!\\u00a7!)"}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('section_downloads', FormSection::class, __('Versions disponibles au téléchargement'));
+        $this->addField('download_online', Checkbox::class, __('Version online - Version par défaut'), [
+            'v2' => '{"type":"boolean","editable":true,"default":true,"label":"\\u00a7!\\u00a7Version online - Version par d\\u00e9faut!\\u00a7!","grade":3}',
+            'default' => true,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_sharepoint', Checkbox::class, __('Version Sharepoint - Version par défaut'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version Sharepoint - Version par d\\u00e9faut!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_scorm', Checkbox::class, __('Version SCORM - Version par défaut'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version SCORM - Version par d\\u00e9faut!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_win_inss_html', Checkbox::class, __('Version offline - Executable Windows'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version offline - Executable Windows!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_win_ins_html', Checkbox::class, __('Version offline - Installeur Auto-executable Windows'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version offline - Installeur Auto-executable Windows!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_win_exe_html', Checkbox::class, __('Version offline - ZIP Windows'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version offline - ZIP Windows!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_mac_exe_html', Checkbox::class, __('Version offline - Exécutable Mac OS X'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version offline - Ex\\u00e9cutable Mac OS X!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_win_cd_html', Checkbox::class, __('Version offline - CD-ROM / Clé USB'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version offline - CD-ROM \\/ Cl\\u00e9 USB!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_win_html', Checkbox::class, __('Version offline - HTML (Non adaptée à l\'installation sur un serveur web)'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version offline - HTML (Non adapt\\u00e9e \\u00e0 l\'installation sur un serveur web)!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+        $this->addField('download_precompiled', Checkbox::class, __('Version precompilée'), [
+            'v2' => '{"type":"boolean","editable":true,"default":false,"label":"\\u00a7!\\u00a7Version precompil\\u00e9e!\\u00a7!","grade":3}',
+            'default' => false,
+            'fake' => true,
+            'store_in' => 'settings',
+            'translatable' => false,
+        ]);
+
+    }
+
+}