]> _ Git - cubeextranet.git/commitdiff
wip #4211 @1
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 17 May 2022 18:37:07 +0000 (18:37 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 17 May 2022 18:37:07 +0000 (18:37 +0000)
inc/ws/Metier/_class.ws.book.parametres.php
inc/ws/Metier/class.ws.book.parametres.php
inc/ws/Metier/class.ws.parametres.php

index 4c68b4e986993cee6e9a8c27d88b278b251974ed..2b75ee04ce0cbf4e31bdccc4df838f45b8751a96 100644 (file)
@@ -18,25 +18,25 @@ class wsBookParametres extends wsParametres
         //             }
 
         // .
-        $swfFilter = ['name' => __('Animation SWF') . ' (*.swf)', 'extensions' => '*.swf'];
-        $multimediaFilter = ['name' => __('Archive ZIP') . ' (*.zip)', 'extensions' => '*.zip'];
-        $pdfFilter = ['name' => __('Document PDF') . ' (*.pdf)', 'extensions' => '*.pdf'];
-
-        $basketFilter = ['name' => __('Liste de produits'), 'extensions' => ' (*.xml, *.xlsx)'];
-        $articlesFilter = ['name' => __('Liste d\'articles') . ' (*.xml)', 'extensions' => '*.xml'];
-        $htmlFilter = ['name' => __('Fichier HTML') . ' (*.html)', 'extensions' => '*.html'];
-        $imageFilter = ['name' => __('Images') . ' (*.jpg, *.png)', 'extensions' => '*.jpg;*.jpeg;*.png'];
-        $epsFilter = ['name' => __('Fichier vectoriel') . ' (*.ai, *.eps)', 'extensions' => '*.ai;*.eps'];
-        $svgFilter = ['name' => __('Fichier SVG') . ' (*.svg)', 'extensions' => '*.svg'];
-        $tabsFilter = ['name' => __('Fichier onglets') . ' (*.svg, *.zip)', 'extensions' => '*.svg;*.zip'];
-        $imageExtraFilter = ['name' => __('Images') . ' (*.svg, *.jpg, *.png, *.gif)', 'extensions' => '*.svg;*.jpg;*.png;*.gif'];
-        $soundFilter = ['name' => __('Fichier sonore') . ' (*.mp3, *.wav)', 'extensions' => '*.mp3;*.wav'];
-        $seoFilter = ['name' => __('Fichier Excel') . ' (.xlsx)', 'extensions' => '*.xlsx'];
-        $cssFilter = ['name' => __('Feuille de style') . ' (.css)', 'extensions' => '*.css'];
-
-
-        $target = [__("Dans la fenêtre courrante") => '_self',
-            __('Dans un nouvel onglet') => '_blank'];
+        $swfFilter = ['name' => $this->__('Animation SWF') . ' (*.swf)', 'extensions' => '*.swf'];
+        $multimediaFilter = ['name' => $this->__('Archive ZIP') . ' (*.zip)', 'extensions' => '*.zip'];
+        $pdfFilter = ['name' => $this->__('Document PDF') . ' (*.pdf)', 'extensions' => '*.pdf'];
+
+        $basketFilter = ['name' => $this->__('Liste de produits'), 'extensions' => ' (*.xml, *.xlsx)'];
+        $articlesFilter = ['name' => $this->__('Liste d\'articles') . ' (*.xml)', 'extensions' => '*.xml'];
+        $htmlFilter = ['name' => $this->__('Fichier HTML') . ' (*.html)', 'extensions' => '*.html'];
+        $imageFilter = ['name' => $this->__('Images') . ' (*.jpg, *.png)', 'extensions' => '*.jpg;*.jpeg;*.png'];
+        $epsFilter = ['name' => $this->__('Fichier vectoriel') . ' (*.ai, *.eps)', 'extensions' => '*.ai;*.eps'];
+        $svgFilter = ['name' => $this->__('Fichier SVG') . ' (*.svg)', 'extensions' => '*.svg'];
+        $tabsFilter = ['name' => $this->__('Fichier onglets') . ' (*.svg, *.zip)', 'extensions' => '*.svg;*.zip'];
+        $imageExtraFilter = ['name' => $this->__('Images') . ' (*.svg, *.jpg, *.png, *.gif)', 'extensions' => '*.svg;*.jpg;*.png;*.gif'];
+        $soundFilter = ['name' => $this->__('Fichier sonore') . ' (*.mp3, *.wav)', 'extensions' => '*.mp3;*.wav'];
+        $seoFilter = ['name' => $this->__('Fichier Excel') . ' (.xlsx)', 'extensions' => '*.xlsx'];
+        $cssFilter = ['name' => $this->__('Feuille de style') . ' (.css)', 'extensions' => '*.css'];
+
+
+        $target = [$this->__("Dans la fenêtre courrante") => '_self',
+            $this->__('Dans un nouvel onglet') => '_blank'];
 
         $branches = array('master : git (stable)' => 'stable',
             'master : local (dev)' => 'dev');
@@ -49,586 +49,586 @@ class wsBookParametres extends wsParametres
             $branches[$b . ' : local'] = $b . '|local';
         }
         $extraVisibility = [
-            __('Navigation horizontale') => 'horizontal',
-            __('Navigation burger') => 'burger',
-            __('Navigations horizontale et burger') => 'both'];
+            $this->__('Navigation horizontale') => 'horizontal',
+            $this->__('Navigation burger') => 'burger',
+            $this->__('Navigations horizontale et burger') => 'both'];
 
         $extraType = [
-            __('Icône + Label') => 'icon',
-            __('Image') => 'image'];
+            $this->__('Icône + Label') => 'icon',
+            $this->__('Image') => 'image'];
 
-        $pagesNumbers = array(__('Virtuelle') => 'virtual',
-            __('Physique') => 'physical');
+        $pagesNumbers = array($this->__('Virtuelle') => 'virtual',
+            $this->__('Physique') => 'physical');
 
         $this->fields['mobileLVersion'] = array('type' => 'combo', 'default' => 'stable', 'editable' => true,
-            'label' => __('Version logicielle'), 'grade' => 1,
+            'label' => $this->__('Version logicielle'), 'grade' => 1,
             'datas' => $branches
         );
-        $this->fields['mobileVersion'] = array('type' => 'combo', 'default' => 'html5-desktop', 'editable' => true, 'label' => __('Version mobile'), 'grade' => 3,
-            'datas' => array(__('Rediriger vers le PDF') => 'pdf',
-                __('Version HTML5 recommandée (vecteurs sur desktop)') => 'html5-desktop',
-                __('Version HTML5 vecteurs') => 'html5',
-                __("Version HTML5 en images") => 'html5-images')
+        $this->fields['mobileVersion'] = array('type' => 'combo', 'default' => 'html5-desktop', 'editable' => true, 'label' => $this->__('Version mobile'), 'grade' => 3,
+            'datas' => array($this->__('Rediriger vers le PDF') => 'pdf',
+                $this->__('Version HTML5 recommandée (vecteurs sur desktop)') => 'html5-desktop',
+                $this->__('Version HTML5 vecteurs') => 'html5',
+                $this->__("Version HTML5 en images") => 'html5-images')
         );
 
         // Deprecated
-        $this->fields['version'] = array('type' => 'combo', 'default' => '2', 'editable' => true, 'label' => __('Version'), 'datas' => array('1' => '1', '2' => '2'), 'grade' => 3);
-        $this->fields['email_editable'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __("Permettre au lecteur de modifier le corps de l'email"));
-        $this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __("Demander au destinataire un accusé de réception"), 'grade' => 3);
-        $this->fields['sendasfluidbook'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __("Envoyer le mail comme Fluidbook"), 'grade' => 3, 'hint' => __("L'expéditeur apparaîtra en reply-to"));
-        $this->fields['email_mailto'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __("Envoyer le mail via le client mail du visiteur (mailto:)"), 'grade' => 3);
-        $this->fields['googleplus'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Google +'));
-        $this->fields['viadeo'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Viadeo'));
-        $this->fields['customSharer'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __("Classe personnalisée de partage"), 'grade' => 5);
-        $this->fields['friendWidth'] = array('type' => 'integer', 'default' => 319, 'editable' => false, 'label' => __('Largeur du menu'), 'grade' => 5);
-        $this->fields['friendHeight'] = array('type' => 'integer', 'default' => 500, 'editable' => false, 'label' => __('Largeur du menu'), 'grade' => 5);
-        $this->fields['visualisationMode'] = array('type' => 'combo', 'default' => '3', 'editable' => false, 'label' => __("Mode de visualisation 3D"),
-            'datas' => array(__('Mode 3D') => '0',
-                __('Mode 2D (caméra fixe et pages à plat)') => '1',
-                __("Laisser le choix à l'utilisateur (mode 3D par défaut)") => '2',
-                __("Laisser le choix à l'utilisateur (mode 2D par défaut)") => '3'));
-        $this->fields['antialiasReading'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __("Amélioration de la lisibilité en mode 2D"));
-        $this->fields['pagesBaseAngle'] = array('type' => 'integer', 'default' => 2, 'editable' => false, 'label' => __('Angle de base entre les pages'), 'grade' => 3,
-            'hint' => __("0 : Publication à plat") . "\n" . __('2 : Valeur par défaut'));
-        $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => false, 'label' => __('Nombre de pages à précharger'), 'grade' => 3);
-        $this->fields['tooltipTimer'] = array('type' => 'float', 'default' => 3, "editable" => true, 'label' => __("Temps maximum d'apparition des infos-bulles (en secondes)"));
-        $this->fields['indexAutoScroll'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Activer le scroll automatique'));
-        $this->fields['printCoverWithMarks'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __("Imprimer les couvertures avec les pages marquées"), 'grade' => 3);
+        $this->fields['version'] = array('type' => 'combo', 'default' => '2', 'editable' => true, 'label' => $this->__('Version'), 'datas' => array('1' => '1', '2' => '2'), 'grade' => 3);
+        $this->fields['email_editable'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Permettre au lecteur de modifier le corps de l'email"));
+        $this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Demander au destinataire un accusé de réception"), 'grade' => 3);
+        $this->fields['sendasfluidbook'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Envoyer le mail comme Fluidbook"), 'grade' => 3, 'hint' => $this->__("L'expéditeur apparaîtra en reply-to"));
+        $this->fields['email_mailto'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Envoyer le mail via le client mail du visiteur (mailto:)"), 'grade' => 3);
+        $this->fields['googleplus'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Google +'));
+        $this->fields['viadeo'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Viadeo'));
+        $this->fields['customSharer'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => $this->__("Classe personnalisée de partage"), 'grade' => 5);
+        $this->fields['friendWidth'] = array('type' => 'integer', 'default' => 319, 'editable' => false, 'label' => $this->__('Largeur du menu'), 'grade' => 5);
+        $this->fields['friendHeight'] = array('type' => 'integer', 'default' => 500, 'editable' => false, 'label' => $this->__('Largeur du menu'), 'grade' => 5);
+        $this->fields['visualisationMode'] = array('type' => 'combo', 'default' => '3', 'editable' => false, 'label' => $this->__("Mode de visualisation 3D"),
+            'datas' => array($this->__('Mode 3D') => '0',
+                $this->__('Mode 2D (caméra fixe et pages à plat)') => '1',
+                $this->__("Laisser le choix à l'utilisateur (mode 3D par défaut)") => '2',
+                $this->__("Laisser le choix à l'utilisateur (mode 2D par défaut)") => '3'));
+        $this->fields['antialiasReading'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Amélioration de la lisibilité en mode 2D"));
+        $this->fields['pagesBaseAngle'] = array('type' => 'integer', 'default' => 2, 'editable' => false, 'label' => $this->__('Angle de base entre les pages'), 'grade' => 3,
+            'hint' => $this->__("0 : Publication à plat") . "\n" . $this->__('2 : Valeur par défaut'));
+        $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => false, 'label' => $this->__('Nombre de pages à précharger'), 'grade' => 3);
+        $this->fields['tooltipTimer'] = array('type' => 'float', 'default' => 3, "editable" => true, 'label' => $this->__("Temps maximum d'apparition des infos-bulles (en secondes)"));
+        $this->fields['indexAutoScroll'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Activer le scroll automatique'));
+        $this->fields['printCoverWithMarks'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Imprimer les couvertures avec les pages marquées"), 'grade' => 3);
         $this->fields['ambientSound'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => __('Ambiance sonore'), 'grade' => 3, 'fileFilter' => $soundFilter);
+            'label' => $this->__('Ambiance sonore'), 'grade' => 3, 'fileFilter' => $soundFilter);
         $this->fields['ambientSoundVolume'] = array('type' => 'integer', 'default' => 50, 'editable' => false,
-            'label' => __("Volume de l'ambiance sonore"),
+            'label' => $this->__("Volume de l'ambiance sonore"),
             'min' => 0, 'max' => 100);
-        $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Téléchargement des versions offline'), "hint" => __('Valable si le téléchargement avancé est activé'), 'grade' => 3);
-        $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => false, 'label' => __("Mode de zoom"), 'grade' => 3,
-            'datas' => array(__('Normal') => '0',
-                __('Une page') => '1',
-                __('Zoom désactivé') => '2'));
-        $this->fields['displayChaptersLine'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __("Affiche une ligne entre le label et le numéro de page"), 'grade' => 5);
-        $this->fields['fullExternalChapters'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __("Sommaire totalement personnalisé"), 'grade' => 3, 'hint' => __('Supprime la flèche de fermeture, titre prédéfini et couleur de fond'));
+        $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Téléchargement des versions offline'), "hint" => $this->__('Valable si le téléchargement avancé est activé'), 'grade' => 3);
+        $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => false, 'label' => $this->__("Mode de zoom"), 'grade' => 3,
+            'datas' => array($this->__('Normal') => '0',
+                $this->__('Une page') => '1',
+                $this->__('Zoom désactivé') => '2'));
+        $this->fields['displayChaptersLine'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Affiche une ligne entre le label et le numéro de page"), 'grade' => 5);
+        $this->fields['fullExternalChapters'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Sommaire totalement personnalisé"), 'grade' => 3, 'hint' => $this->__('Supprime la flèche de fermeture, titre prédéfini et couleur de fond'));
         $this->fields['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));
-        $this->fields['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => false, 'label' => __("Position du sommaire"),
-            'datas' => array(__('Centré') => 'center',
-                __("Aligné sur l'icône") => 'chaptersIcon'));
-        $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Liens visibles en permanence'), 'grade' => 3);
-        $this->fields['linkTooltipManager'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __("Gestionnaire des info-bulles"), 'grade' => 5);
-        $this->fields['linkMultimediaPerformanceMode'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Mode perfomance pour les liens multimédia'), 'grade' => 5);
-        $this->fields['linkMultimediaQuality'] = array('type' => 'float', 'default' => 1.0, 'editable' => false, 'label' => __('Qualité de rendu des animations'), 'grade' => 5);
-        $this->fields['linkCornerSize'] = array('type' => 'integer', 'default' => 10, 'editable' => false, 'label' => __('Taille des liens de coins de page'), 'hint' => __("Pourcentage de la largeur de la page"));
-        $this->fields['videoReset'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Réinitialiser les vidéos après la lecture'), 'grade' => 3);
-        $this->fields['videoBigPlay'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __('Afficher le gros bouton Play'), 'grade' => 3);
-        $this->fields['alwaysHTML5'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __('Toujours utiliser la version HTML5'), 'grade' => 1);
-        $this->fields['html5priority'] = array('type' => 'combo', 'default' => 'true', 'editable' => false, 'label' => __("Rediriger vers la version HTML5"), 'grade' => 1,
-            'datas' => array(__('Si l\'utilisateur a un appareil tactile') => 'false',
-                __('Si flash n\'est pas installé') => 'notinstalled',
-                __("Si flash n'est pas pas installé ou bloqué") => 'true'));
-        $this->fields['flashBlockedWait'] = array('type' => 'float', 'default' => 1.5, 'editable' => false, 'label' => __("Temps d'attente avant de considérer flash comme bloqué"));
-        $this->fields['widget'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Générer le widget'), 'grade' => 3);
-        $this->fields['widgetCover'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __('Afficher la couverture') . ')', 'grade' => 3);
-        $this->fields['widgetSize'] = array('type' => 'integer', 'default' => 200, 'editable' => false, 'label' => __('Optimiser pour une hauteur de (en pixels)'), 'grade' => 3);
-        $this->fields['widgetQuality'] = array('type' => 'integer', 'default' => 85, 'min' => 0, 'max' => 100, 'editable' => false, 'label' => __('Qualité JPEG'), 'grade' => 3);
-        $this->fields['widgetStart'] = array('type' => 'integer', 'default' => 1, 'editable' => false, 'label' => __('Page de début'), 'grade' => 3);
-        $this->fields['widgetEnd'] = array('type' => 'integer', 'default' => 8, 'editable' => false, 'label' => __('Page de fin'), 'grade' => 3);
-//        $this->forms['widget'] = array('label' => __('Widget') . ' (' . __('Mini Fluidbook') . ')',
+            'label' => $this->__('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'));
+        $this->fields['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => false, 'label' => $this->__("Position du sommaire"),
+            'datas' => array($this->__('Centré') => 'center',
+                $this->__("Aligné sur l'icône") => 'chaptersIcon'));
+        $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Liens visibles en permanence'), 'grade' => 3);
+        $this->fields['linkTooltipManager'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => $this->__("Gestionnaire des info-bulles"), 'grade' => 5);
+        $this->fields['linkMultimediaPerformanceMode'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Mode perfomance pour les liens multimédia'), 'grade' => 5);
+        $this->fields['linkMultimediaQuality'] = array('type' => 'float', 'default' => 1.0, 'editable' => false, 'label' => $this->__('Qualité de rendu des animations'), 'grade' => 5);
+        $this->fields['linkCornerSize'] = array('type' => 'integer', 'default' => 10, 'editable' => false, 'label' => $this->__('Taille des liens de coins de page'), 'hint' => $this->__("Pourcentage de la largeur de la page"));
+        $this->fields['videoReset'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Réinitialiser les vidéos après la lecture'), 'grade' => 3);
+        $this->fields['videoBigPlay'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Afficher le gros bouton Play'), 'grade' => 3);
+        $this->fields['alwaysHTML5'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Toujours utiliser la version HTML5'), 'grade' => 1);
+        $this->fields['html5priority'] = array('type' => 'combo', 'default' => 'true', 'editable' => false, 'label' => $this->__("Rediriger vers la version HTML5"), 'grade' => 1,
+            'datas' => array($this->__('Si l\'utilisateur a un appareil tactile') => 'false',
+                $this->__('Si flash n\'est pas installé') => 'notinstalled',
+                $this->__("Si flash n'est pas pas installé ou bloqué") => 'true'));
+        $this->fields['flashBlockedWait'] = array('type' => 'float', 'default' => 1.5, 'editable' => false, 'label' => $this->__("Temps d'attente avant de considérer flash comme bloqué"));
+        $this->fields['widget'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Générer le widget'), 'grade' => 3);
+        $this->fields['widgetCover'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Afficher la couverture') . ')', 'grade' => 3);
+        $this->fields['widgetSize'] = array('type' => 'integer', 'default' => 200, 'editable' => false, 'label' => $this->__('Optimiser pour une hauteur de (en pixels)'), 'grade' => 3);
+        $this->fields['widgetQuality'] = array('type' => 'integer', 'default' => 85, 'min' => 0, 'max' => 100, 'editable' => false, 'label' => $this->__('Qualité JPEG'), 'grade' => 3);
+        $this->fields['widgetStart'] = array('type' => 'integer', 'default' => 1, 'editable' => false, 'label' => $this->__('Page de début'), 'grade' => 3);
+        $this->fields['widgetEnd'] = array('type' => 'integer', 'default' => 8, 'editable' => false, 'label' => $this->__('Page de fin'), 'grade' => 3);
+//        $this->forms['widget'] = array('label' => $this->__('Widget') . ' (' . $this->__('Mini Fluidbook') . ')',
 //            'fieldsnames' => array('widget', 'widgetCover', 'widgetSize', 'widgetQuality', 'widgetStart', 'widgetEnd'));
-        $this->fields['extras'] = array('type' => 'textarea', 'default' => '', 'editable' => false, 'label' => __('Extras'), 'grade' => 3);
+        $this->fields['extras'] = array('type' => 'textarea', 'default' => '', 'editable' => false, 'label' => $this->__('Extras'), 'grade' => 3);
         $this->fields['v1SWF'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => __('Index.swf spécifique'), 'grade' => 5, 'fileFilter' => $swfFilter);
-//        $this->forms['v1'] = array('label' => __('Options spécifiques au fluidbook version 1'),
+            'label' => $this->__('Index.swf spécifique'), 'grade' => 5, 'fileFilter' => $swfFilter);
+//        $this->forms['v1'] = array('label' => $this->__('Options spécifiques au fluidbook version 1'),
 //            'fieldsnames' => array('extras', 'v1SWF'));
-        $this->fields['ongletsXML'] = array('type' => 'textarea', 'default' => '', 'editable' => false, 'label' => __('XML de configuration des onglets'), 'grade' => 5);
+        $this->fields['ongletsXML'] = array('type' => 'textarea', 'default' => '', 'editable' => false, 'label' => $this->__('XML de configuration des onglets'), 'grade' => 5);
         $this->fields['ongletsSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => __('SWF pour onglets personnalisés'), 'grade' => 3, 'fileFilter' => $swfFilter);
+            'label' => $this->__('SWF pour onglets personnalisés'), 'grade' => 3, 'fileFilter' => $swfFilter);
         $this->fields['tabs2DSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => __('SWF pour onglets 2D'), 'grade' => 3, 'fileFilter' => $swfFilter);
+            'label' => $this->__('SWF pour onglets 2D'), 'grade' => 3, 'fileFilter' => $swfFilter);
         $this->fields['flatTabsAbsolute'] = array('type' => 'boolean', 'default' => false, "editable" => true,
-            'label' => __("Positionnement relatif à l'interface"), 'grade' => 5);
-//        $this->forms['flashtabs'] = array('label' => __('Onglets Flash'),
+            'label' => $this->__("Positionnement relatif à l'interface"), 'grade' => 5);
+//        $this->forms['flashtabs'] = array('label' => $this->__('Onglets Flash'),
 //            'fieldsnames' => array('ongletsSWF', 'ongletsXML', '|', 'tabs2DSWF', 'flatTabsAbsolute'));
-        $this->fields['viewMode'] = array('type' => 'combo', 'default' => '0', 'editable' => false, 'label' => __("Mode de visualisation (beta)"),
-            'datas' => array(__('Classique') => '0',
-                __("Diaporama") => '1',
+        $this->fields['viewMode'] = array('type' => 'combo', 'default' => '0', 'editable' => false, 'label' => $this->__("Mode de visualisation (beta)"),
+            'datas' => array($this->__('Classique') => '0',
+                $this->__("Diaporama") => '1',
             ),
             'grade' => 5);
-        $this->fields['mobileServerConfig'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => __('Inclure les fichiers de configuration serveur'), 'grade' => 3);
-        $this->fields['mobileIconVector'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => __('Utiliser les icônes vectorielles'));
-//        $this->forms['mobile'] = array('label' => __('Version HTML5'),
+        $this->fields['mobileServerConfig'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Inclure les fichiers de configuration serveur'), 'grade' => 3);
+        $this->fields['mobileIconVector'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Utiliser les icônes vectorielles'));
+//        $this->forms['mobile'] = array('label' => $this->__('Version HTML5'),
 //            'fieldsnames' => array('alwaysHTML5', 'html5priority', 'flashBlockedWait', 'mobileIconVector', 'mobileServerConfig'));
         $this->fields['externalArchivesBack'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Image de fond'), 'grade' => 3, 'fileFilter' => $imageFilter);
-        $this->fields['archivesLink'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Lien'), 'grade' => 5);
-        $this->fields['printMode'] = array('type' => 'combo', 'default' => 'vector', 'editable' => true, 'label' => __("Mode d'impression"),
-            'datas' => array(__('Bitmap') => 'bitmap',
-                __('Vectoriel') => 'vector',
-                __('PDF') => 'pdf'));
+            'label' => $this->__('Image de fond'), 'grade' => 3, 'fileFilter' => $imageFilter);
+        $this->fields['archivesLink'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Lien'), 'grade' => 5);
+        $this->fields['printMode'] = array('type' => 'combo', 'default' => 'vector', 'editable' => true, 'label' => $this->__("Mode d'impression"),
+            'datas' => array($this->__('Bitmap') => 'bitmap',
+                $this->__('Vectoriel') => 'vector',
+                $this->__('PDF') => 'pdf'));
         /** **/
 
 
-        $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication"), 'embed' => false);
-        $this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du lien de retour au site"));
-        $this->fields['signature'] = array('type' => 'combo', 'default' => '1', 'editable' => true, 'label' => __('Signature'), 'grade' => 3, 'datas' => wsDroits::getSignatures());
-        $this->forms['important'] = array('label' => __('Description de la publication'),
+        $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de la publication"), 'embed' => false);
+        $this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__("URL du lien de retour au site"));
+        $this->fields['signature'] = array('type' => 'combo', 'default' => '1', 'editable' => true, 'label' => $this->__('Signature'), 'grade' => 3,'datasFunc'=>'wsDroits::getSignatures()', 'datas' => wsDroits::getSignatures());
+        $this->forms['important'] = array('label' => $this->__('Description de la publication'),
             'fieldsnames' => array('mobileLVersion', 'mobileVersion', 'title', 'url_link', 'signature'));
         // .
         // .
 
-        $this->fields['assetsDir'] = ['type' => 'text', 'label' => __('Utiliser le dossier d\'assets du fluidbook'), 'default' => '', 'editable' => true, 'grade' => 5];
-        $this->fields['linksAssets'] = ['type' => 'freefile', 'label' => __('Charger ou remplacer des fichiers de liens'), 'default' => '', 'editable' => true, 'grade' => 3, 'multiple' => true];
+        $this->fields['assetsDir'] = ['type' => 'text', 'label' => $this->__('Utiliser le dossier d\'assets du fluidbook'), 'default' => '', 'editable' => true, 'grade' => 5];
+        $this->fields['linksAssets'] = ['type' => 'freefile', 'label' => $this->__('Charger ou remplacer des fichiers de liens'), 'default' => '', 'editable' => true, 'grade' => 3, 'multiple' => true];
 
         $this->forms['assets'] = [
-            'label' => __('Assets'),
+            'label' => $this->__('Assets'),
             'fieldsnames' => ['assetsDir', 'linksAssets']
         ];
         /** * */
-        $this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les statistiques Fluidbook'), 'grade' => 3);
-        $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10);
-        $this->fields['googleTagManager'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Tag Manager'), 'size' => 10);
+        $this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer les statistiques Fluidbook'), 'grade' => 3);
+        $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Code Google Analytics'), 'size' => 10);
+        $this->fields['googleTagManager'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Code Google Tag Manager'), 'size' => 10);
         $this->forms['basicStats'] = [
-            'label' => __('Statistiques'),
+            'label' => $this->__('Statistiques'),
             'fieldsnames' => ['stats', 'googleAnalytics', 'googleTagManager'],
         ];
 
-        $this->fields['email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
+        $this->fields['email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
+        $this->fields['email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Corps de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
 
-        $this->fields['facebook_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre du contenu partagé"), 'hint' => __('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'));
-        $this->fields['facebook_description'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Description du contenu partagé"), 'grade' => 1, 'hint' => __('Description proposée sur les fonctions de partage (par défaut, vide)'));
-        $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => __("Contenu Partage court"), 'hint' => __('Contenu du partagé sur les partages courts'));
+        $this->fields['facebook_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre du contenu partagé"), 'hint' => $this->__('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'));
+        $this->fields['facebook_description'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Description du contenu partagé"), 'grade' => 1, 'hint' => $this->__('Description proposée sur les fonctions de partage (par défaut, vide)'));
+        $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => $this->__("Contenu Partage court"), 'hint' => $this->__('Contenu du partagé sur les partages courts'));
         $this->fields['facebook_image'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Miniature affichée'), 'fileFilter' => $imageFilter);
+            'label' => $this->__('Miniature affichée'), 'fileFilter' => $imageFilter);
 
-        $this->fields['share'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les fonctions de partage'));
-        $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('E-mail'));
-        $this->fields['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Facebook'));
-        $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Twitter'));
-        $this->fields['whatsapp'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('WhatsApp'));
-        $this->fields['linkedin'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('LinkedIn'));
-        $this->fields['pinterest'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Pinterest'));
+        $this->fields['share'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer les fonctions de partage'));
+        $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('E-mail'));
+        $this->fields['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Facebook'));
+        $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Twitter'));
+        $this->fields['whatsapp'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('WhatsApp'));
+        $this->fields['linkedin'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('LinkedIn'));
+        $this->fields['pinterest'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Pinterest'));
 
-        $this->forms['share'] = array('label' => __('Fonctions de partage'),
+        $this->forms['share'] = array('label' => $this->__('Fonctions de partage'),
             'fieldsnames' => array('share', '|', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', 'sendasfluidbook', 'email_mailto', '|',
                 'facebook_title', 'facebook_description', 'facebook_image', 'twitter_description', '|',
                 'friend', 'facebook', 'twitter', 'whatsapp', 'linkedin', 'pinterest', '|', 'googleplus', 'viadeo', '|', 'customSharer', '|', 'friendWidth', 'friendHeight'));
 //.
-        $this->fields['seoVersion'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Générer une version pour les moteurs de recherche'));
-        $this->fields['seoRobots'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Autoriser le parcours par les moteurs de recherche'));
-        $this->fields['seoDescription'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Meta tag Description'));
-        $this->fields['seoKeywords'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Meta tag Keywords'));
-        $this->fields['seoAdvanced'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Données SEO par page'), 'grade' => 5, 'fileFilter' => $seoFilter];
-        $this->fields['seoBaseURL'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('URL de base'), 'grade' => 5);
-
-        $this->forms['seo'] = array('label' => __('Optimisation pour les moteurs de recherche'),
+        $this->fields['seoVersion'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Générer une version pour les moteurs de recherche'));
+        $this->fields['seoRobots'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Autoriser le parcours par les moteurs de recherche'));
+        $this->fields['seoDescription'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Meta tag Description'));
+        $this->fields['seoKeywords'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Meta tag Keywords'));
+        $this->fields['seoAdvanced'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Données SEO par page'), 'grade' => 5, 'fileFilter' => $seoFilter];
+        $this->fields['seoBaseURL'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('URL de base'), 'grade' => 5);
+
+        $this->forms['seo'] = array('label' => $this->__('Optimisation pour les moteurs de recherche'),
             'fieldsnames' => array('seoVersion', 'seoRobots', 'seoDescription', "seoKeywords", '|', 'seoBaseURL', 'seoAdvanced'));
 
         // .
-        $this->fields['pages'] = array('type' => 'integer', 'default' => 0, 'editable' => false, 'label' => __('Nombre de pages'));
-        $this->fields['width'] = array('type' => 'float', 'default' => 0, 'editable' => false, 'label' => __('Largeur'));
-        $this->fields['height'] = array('type' => 'float', 'default' => 0, 'editable' => false, 'label' => __('Hauteur'));
+        $this->fields['pages'] = array('type' => 'integer', 'default' => 0, 'editable' => false, 'label' => $this->__('Nombre de pages'));
+        $this->fields['width'] = array('type' => 'float', 'default' => 0, 'editable' => false, 'label' => $this->__('Largeur'));
+        $this->fields['height'] = array('type' => 'float', 'default' => 0, 'editable' => false, 'label' => $this->__('Hauteur'));
         // .
 
-        $this->fields['mobileTransitions'] = array('type' => 'combo', 'default' => 'flip3d', 'editable' => true, 'label' => __('Transitions entre les pages'), 'grade' => 3,
-            'datas' => array(__('Aucune transition') => 'none',
-                __('Opacité') => 'fade',
-                __('Glisser') => 'slide',
-                __('Tourner (rigide)') => 'flip',
-                __('Tourner (souple)') => 'flip3d')
+        $this->fields['mobileTransitions'] = array('type' => 'combo', 'default' => 'flip3d', 'editable' => true, 'label' => $this->__('Transitions entre les pages'), 'grade' => 3,
+            'datas' => array($this->__('Aucune transition') => 'none',
+                $this->__('Opacité') => 'fade',
+                $this->__('Glisser') => 'slide',
+                $this->__('Tourner (rigide)') => 'flip',
+                $this->__('Tourner (souple)') => 'flip3d')
         );
-        $this->fields['mobileTransitionDuration'] = array('type' => 'float', 'default' => 0.5, 'editable' => true, 'label' => __('Durée de la transition'));
-        $this->fields['mobileTransitionDurationSlide'] = array('type' => 'float', 'default' => 0, 'editable' => true, 'label' => __('Durée de la transition (fade, slide)'), 'hint' => __('Laisser à zéro pour utiliser la valeur générale'));
-        $this->fields['mobileNavigationType'] = array('type' => 'combo', 'default' => 'book', 'editable' => true, 'label' => __('Mode de navigation'), 'grade' => 5,
-            'datas' => array(__('Normal (automatique)') => 'book',
-                __('Normal (double page)') => 'landscape',
-                __('Normal (une page)') => 'portrait',
-                __('Mobile first') => 'mobilefirst',
-                __('Magazine tablette') => 'tab')
+        $this->fields['mobileTransitionDuration'] = array('type' => 'float', 'default' => 0.5, 'editable' => true, 'label' => $this->__('Durée de la transition'));
+        $this->fields['mobileTransitionDurationSlide'] = array('type' => 'float', 'default' => 0, 'editable' => true, 'label' => $this->__('Durée de la transition (fade, slide)'), 'hint' => $this->__('Laisser à zéro pour utiliser la valeur générale'));
+        $this->fields['mobileNavigationType'] = array('type' => 'combo', 'default' => 'book', 'editable' => true, 'label' => $this->__('Mode de navigation'), 'grade' => 5,
+            'datas' => array($this->__('Normal (automatique)') => 'book',
+                $this->__('Normal (double page)') => 'landscape',
+                $this->__('Normal (une page)') => 'portrait',
+                $this->__('Mobile first') => 'mobilefirst',
+                $this->__('Magazine tablette') => 'tab')
         );
-        $this->fields['forceWhiteBackground'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Ajouter un fond blanc aux pages')];
-        $this->fields['rasterizePages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Ecraser les pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
-
-        $this->fields['vectorPages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Conserver les pages en vecteur'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
-        $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);
-        $this->fields['mobileExtraXSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);
-        $this->fields['extraYSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __('Marge supplémentaire verticale'), 'grade' => 3);
-        $this->fields['centerBook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Centrer la publication sur les couvertures'), 'grade' => 2);
-        $this->fields['correctCenter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Corriger les lignes blanches entre les pages'), 'grade' => 2);
-        $this->fields['maxResolution'] = array('type' => 'combo', 'default' => 300, 'editable' => true, 'datas' => array('300dpi' => 300, '150dpi' => 150, '125dpi' => 125, '100dpi' => 100), 'grade' => 2, 'label' => __('Résolution maximale des pages'));
-        $this->fields['JPEGQuality'] = array('type' => 'integer', 'default' => 85, 'editable' => true, 'grade' => 2, 'label' => __('Qualité JPEG'));
-        $this->fields['imageFormat'] = array('type' => 'combo', 'default' => 'jpg', 'editable' => true, 'datas' => array(/*__('Le plus léger') => 'best', */
-            'JPEG' => 'jpg', 'PNG' => 'png'), 'grade' => 2, 'label' => __('Format des images'));
-        $this->fields['svgToCanvas'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le rendu svgtocanvas')];
-        $this->fields['svgToCanvasUpscale'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => __('Upscale de la fonction svgtocanvas')];
-        $this->fields['svgTextMethod'] = ['type' => 'combo', 'default' => 'pdftocairo', 'editable' => true, 'label' => __('Méthode d\'extraction des textes en SVG'), 'datas' => [__('Cairo') => 'pdf', __('Mu') => 'mu']];
-        $this->fields['textsThickness'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => __('Epaisseur des textes')];
-        $this->fields['textsThicknessPages'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Appliquer l\'épaisseur des texte sur les pages')];
+        $this->fields['forceWhiteBackground'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Ajouter un fond blanc aux pages')];
+        $this->fields['rasterizePages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Ecraser les pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
+
+        $this->fields['vectorPages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Conserver les pages en vecteur'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
+        $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Marge supplémentaire horizontale'), 'grade' => 3);
+        $this->fields['mobileExtraXSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Marge supplémentaire horizontale'), 'grade' => 3);
+        $this->fields['extraYSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Marge supplémentaire verticale'), 'grade' => 3);
+        $this->fields['centerBook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Centrer la publication sur les couvertures'), 'grade' => 2);
+        $this->fields['correctCenter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Corriger les lignes blanches entre les pages'), 'grade' => 2);
+        $this->fields['maxResolution'] = array('type' => 'combo', 'default' => 300, 'editable' => true, 'datas' => array('300dpi' => 300, '150dpi' => 150, '125dpi' => 125, '100dpi' => 100), 'grade' => 2, 'label' => $this->__('Résolution maximale des pages'));
+        $this->fields['JPEGQuality'] = array('type' => 'integer', 'default' => 85, 'editable' => true, 'grade' => 2, 'label' => $this->__('Qualité JPEG'));
+        $this->fields['imageFormat'] = array('type' => 'combo', 'default' => 'jpg', 'editable' => true, 'datas' => array(/*$this->__('Le plus léger') => 'best', */
+            'JPEG' => 'jpg', 'PNG' => 'png'), 'grade' => 2, 'label' => $this->__('Format des images'));
+        $this->fields['svgToCanvas'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le rendu svgtocanvas')];
+        $this->fields['svgToCanvasUpscale'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Upscale de la fonction svgtocanvas')];
+        $this->fields['svgTextMethod'] = ['type' => 'combo', 'default' => 'pdftocairo', 'editable' => true, 'label' => $this->__('Méthode d\'extraction des textes en SVG'), 'datas' => [$this->__('Cairo') => 'pdf', $this->__('Mu') => 'mu']];
+        $this->fields['textsThickness'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Epaisseur des textes')];
+        $this->fields['textsThicknessPages'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Appliquer l\'épaisseur des texte sur les pages')];
         $this->fields['dynamicBackgroundColor'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => 'Couleur de fond dynamique', 'grade' => 3];
 
 
-        $this->forms['3d_mode'] = array('label' => __('Options de visualisation'),
+        $this->forms['3d_mode'] = array('label' => $this->__('Options de visualisation'),
             'fieldsnames' => array('mobileNavigationType', '|', 'mobileTransitions', 'mobileTransitionDuration', 'mobileTransitionDurationSlide', '|', 'forceWhiteBackground', 'rasterizePages', 'vectorPages', 'visualisationMode', 'antialiasReading', 'correctCenter', 'pagesBaseAngle', 'centerBook', '|', 'extraXSpace', 'mobileExtraXSpace', 'extraYSpace', '|', 'viewMode', '|', 'dynamicBackgroundColor', '|', 'svgToCanvas', 'svgToCanvasUpscale', 'svgTextMethod', 'textsThickness', 'textsThicknessPages', '|', 'imageFormat', 'maxResolution', 'JPEGQuality'));
 
-        $this->fields['rasterizeOnSafari'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Ecraser les pages pour Safari (Mac OS)'), 'grade' => 1);
-        $this->fields['performance3DMode'] = array('type' => 'combo', 'datas' => [__('Tester la machine') => 'auto',
-            __('Haute') => 'highPerf',
-            __('Moyenne') => 'lowPerf',
-            __('Basse') => 'veryLowPerf'], 'default' => 'auto', 'editable' => true, 'label' => __('Performance de la 3D'), 'grade' => 1);
-        $this->forms['performances'] = ['label' => __('Performances'),
+        $this->fields['rasterizeOnSafari'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Ecraser les pages pour Safari (Mac OS)'), 'grade' => 1);
+        $this->fields['performance3DMode'] = array('type' => 'combo', 'datas' => [$this->__('Tester la machine') => 'auto',
+            $this->__('Haute') => 'highPerf',
+            $this->__('Moyenne') => 'lowPerf',
+            $this->__('Basse') => 'veryLowPerf'], 'default' => 'auto', 'editable' => true, 'label' => $this->__('Performance de la 3D'), 'grade' => 1);
+        $this->forms['performances'] = ['label' => $this->__('Performances'),
             'fieldsnames' => ['rasterizeOnSafari', 'performance3DMode']];
 
-        $this->fields['maxPages'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __("Nombre de pages maximal affiché à l'ouverture du fluidbook (pas de limite = 0)"), 'grade' => 3);
+        $this->fields['maxPages'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__("Nombre de pages maximal affiché à l'ouverture du fluidbook (pas de limite = 0)"), 'grade' => 3);
 
-        $this->fields['mobilePlugins'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Plugin'), 'grade' => 5);
-        $this->forms['general'] = array('label' => __('Fonctionnalités générales'),
+        $this->fields['mobilePlugins'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Plugin'), 'grade' => 5);
+        $this->forms['general'] = array('label' => $this->__('Fonctionnalités générales'),
             'fieldsnames' => array('tooltipTimer', 'mobilePlugins', 'preload', 'maxPages', 'pages', 'width', 'height'));
         //.
         //
-        $this->fields['navOrder'] = array('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' => __('Ordre des icônes dans la nav'), 'grade' => 3);
-        $this->fields['navOrderH'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Ordre des icônes dans la nav') . ' (' . __('Si différente') . ')', 'grade' => 3);
-        $this->fields['menuBreakpoint'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Breakpoint burger menu'), 'hint' => 'Par défaut 1023px', 'grade' => 3);
-        $this->fields['mobileNavScale'] = array('type' => 'integer', 'default' => 100, 'editable' => true, 'label' => __('Taille du menu (en %)'), 'grade' => 3);
-        $this->forms['menu'] = array('label' => __('Menu'), 'fieldsnames' => ['navOrder', 'navOrderH', '|', 'mobileNavScale', 'menuBreakpoint', '|', 'afterSearchDisplayForHTML', '|']);
+        $this->fields['navOrder'] = array('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' => $this->__('Ordre des icônes dans la nav'), 'grade' => 3);
+        $this->fields['navOrderH'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Ordre des icônes dans la nav') . ' (' . $this->__('Si différente') . ')', 'grade' => 3);
+        $this->fields['menuBreakpoint'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Breakpoint burger menu'), 'hint' => 'Par défaut 1023px', 'grade' => 3);
+        $this->fields['mobileNavScale'] = array('type' => 'integer', 'default' => 100, 'editable' => true, 'label' => $this->__('Taille du menu (en %)'), 'grade' => 3);
+        $this->forms['menu'] = array('label' => $this->__('Menu'), 'fieldsnames' => ['navOrder', 'navOrderH', '|', 'mobileNavScale', 'menuBreakpoint', '|', 'afterSearchDisplayForHTML', '|']);
 
-        $this->fields['afterSearchDisplayForHTML'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher l\'image après le moteur de recherche sur la version HTML5'), 'grade' => 1);
+        $this->fields['afterSearchDisplayForHTML'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher l\'image après le moteur de recherche sur la version HTML5'), 'grade' => 1);
         $extraNum = 5;
         for ($i = 0; $i <= $extraNum; $i++) {
             if ($i > 0) {
                 $j = $i;
-                $this->fields['navExtraIcon' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Icône supplémentaire') . ' ' . $j, 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraType' . $j] = array('type' => 'combo', 'datas' => $extraType, 'default' => 'icon', 'editable' => true, 'label' => __('Type'));
-                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("URL") . ' ' . $j);
-                $this->fields['navExtraVisibility' . $j] = array('type' => 'combo', 'datas' => $extraVisibility, 'default' => 'both', 'editable' => true, 'label' => __("Visible") . ' ' . $j);
+                $this->fields['navExtraIcon' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Icône supplémentaire') . ' ' . $j, 'fileFilter' => $imageExtraFilter);
+                $this->fields['navExtraType' . $j] = array('type' => 'combo', 'datas' => $extraType, 'default' => 'icon', 'editable' => true, 'label' => $this->__('Type'));
+                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("URL") . ' ' . $j);
+                $this->fields['navExtraVisibility' . $j] = array('type' => 'combo', 'datas' => $extraVisibility, 'default' => 'both', 'editable' => true, 'label' => $this->__("Visible") . ' ' . $j);
                 $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraIcon' . $j, 'navExtraType' . $j, 'navExtraLink' . $j, 'navExtraVisibility' . $j, '|']);
             } else {
                 $j = '';
-                $this->fields['navExtraImage' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image pour navigation'), 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraImageMobile' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image pour mobile'), 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("URL"));
-                $this->fields['navExtraTooltip' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Infobulle ou label"));
+                $this->fields['navExtraImage' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image pour navigation'), 'fileFilter' => $imageExtraFilter);
+                $this->fields['navExtraImageMobile' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image pour mobile'), 'fileFilter' => $imageExtraFilter);
+                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("URL"));
+                $this->fields['navExtraTooltip' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Infobulle ou label"));
                 $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraImage' . $j, 'navExtraImageMobile' . $j, 'navExtraLink' . $j, 'navExtraTooltip' . $j, '|']);
             }
         }
-        $this->fields['mobileBottomNav'] = ['type' => 'text', 'default' => '', 'editable' => 'true', 'label' => __('Barre de boutons en bas'), 'hint' => __('Identifiants des boutons séparés par des virgules')];
+        $this->fields['mobileBottomNav'] = ['type' => 'text', 'default' => '', 'editable' => 'true', 'label' => $this->__('Barre de boutons en bas'), 'hint' => $this->__('Identifiants des boutons séparés par des virgules')];
         $this->forms['menu']['fieldsnames'][] = 'mobileBottomNav';
 
-        $this->fields['landingPage'] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Landing Page content'), 'grade' => 3);
-        $this->forms['landing'] = array('label' => __('Custom Landing Page'), 'fieldsnames' => array('landingPage'));
+        $this->fields['landingPage'] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Landing Page content'), 'grade' => 3);
+        $this->forms['landing'] = array('label' => $this->__('Custom Landing Page'), 'fieldsnames' => array('landingPage'));
 
-        $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le mode plein-écran'));
-        $this->fields['fullscreenAuto'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Lancer la publication en mode plein écran (lorsque possible)'));
-        $this->forms['fs'] = array('label' => __('Plein écran'),
+        $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le mode plein-écran'));
+        $this->fields['fullscreenAuto'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Lancer la publication en mode plein écran (lorsque possible)'));
+        $this->forms['fs'] = array('label' => $this->__('Plein écran'),
             'fieldsnames' => array('fullscreen', 'fullscreenAuto'));
 
-        $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages'));
-        $this->fields['bookmarkView'] = array('type' => 'combo', 'datas' => [__('Réduit') => 'small', __('Complet') => 'large'], 'default' => 'small', 'editable' => true, 'label' => __('Menu des marques-pages'));
-        $this->fields['bookmarkEmpty'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Bouton pour effacer les marques-pages"));
-        $this->fields['bookmarkFunctionsMainMenu'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Fonctions vers menus généraux'), 'hint' => __('Les fonctions des marques pages (Télécharger, Imprimer, Envoyer) dirigent vers les menus généraux'));
-        $this->fields['bookmarkDisablePages'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Désactiver les marques-pages sur ces pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1];
-        $this->fields['bookmarkSendEnable'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'envoi des marques-pages par e-mail"));
-        $this->fields['bookmarkPrint'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Activer l'impression des marques-pages"));
-        $this->fields['bookmark_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['bookmark_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['bookmarkCornerSize'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => __("Taille des marques-pages"), 'hint' => __('Taille relative à la largeur de la page'));
-        $this->fields['bookmarkOffset'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __("Décaler de x pixels vers l'intérieur"));
-        $this->fields['bookmarkBlinkOnPageChange'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Faire clignoter le marque page à l\'apparition de la page'));
-        $this->fields['bookmarkPermanentIcon'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Afficher l\'icône en permanance')];
-        $this->fields['bookmarkUsePDF'] = array('type' => 'combo', 'default' => 'pages', 'editable' => true, 'label' => __('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'),
-            'datas' => [__('PDF des pages') => 'pages',
-                __('PDF de remplacement') => 'download',
-                __('PDF des miniatures') => 'thumbnails']);
-        $this->forms['bookmark'] = array('label' => __('Marques-pages'),
+        $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer les marques-pages'));
+        $this->fields['bookmarkView'] = array('type' => 'combo', 'datas' => [$this->__('Réduit') => 'small', $this->__('Complet') => 'large'], 'default' => 'small', 'editable' => true, 'label' => $this->__('Menu des marques-pages'));
+        $this->fields['bookmarkEmpty'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Bouton pour effacer les marques-pages"));
+        $this->fields['bookmarkFunctionsMainMenu'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Fonctions vers menus généraux'), 'hint' => $this->__('Les fonctions des marques pages (Télécharger, Imprimer, Envoyer) dirigent vers les menus généraux'));
+        $this->fields['bookmarkDisablePages'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Désactiver les marques-pages sur ces pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1];
+        $this->fields['bookmarkSendEnable'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer l'envoi des marques-pages par e-mail"));
+        $this->fields['bookmarkPrint'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Activer l'impression des marques-pages"));
+        $this->fields['bookmark_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
+        $this->fields['bookmark_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Corps de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
+        $this->fields['bookmarkCornerSize'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => $this->__("Taille des marques-pages"), 'hint' => $this->__('Taille relative à la largeur de la page'));
+        $this->fields['bookmarkOffset'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__("Décaler de x pixels vers l'intérieur"));
+        $this->fields['bookmarkBlinkOnPageChange'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Faire clignoter le marque page à l\'apparition de la page'));
+        $this->fields['bookmarkPermanentIcon'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Afficher l\'icône en permanance')];
+        $this->fields['bookmarkUsePDF'] = array('type' => 'combo', 'default' => 'pages', 'editable' => true, 'label' => $this->__('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'),
+            'datas' => [$this->__('PDF des pages') => 'pages',
+                $this->__('PDF de remplacement') => 'download',
+                $this->__('PDF des miniatures') => 'thumbnails']);
+        $this->forms['bookmark'] = array('label' => $this->__('Marques-pages'),
             'fieldsnames' => array('bookmark', 'bookmarkView', 'bookmarkFunctionsMainMenu', 'bookmarkEmpty', '|', 'bookmarkSendEnable', 'bookmark_email_title', 'bookmark_email_body', '|', 'bookmarkPrint', '|', 'bookmarkCornerSize', 'bookmarkOffset', 'bookmarkPermanentIcon', 'bookmarkBlinkOnPageChange', '|', 'bookmarkDisablePages', 'bookmarkUsePDF'));
 
-        $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'aide"));
-        $this->fields['helpBookmarks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Améliorer l'aide des marques-pages"));
-        $this->fields['helpStartup'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher l'aide au démarrage"));
-        $this->fields['helpStartupTime'] = array('type' => 'integer', 'default' => 15, 'editable' => true, 'label' => __("Temps d'affichage en secondes"));
-        $this->fields['helpArrowTooltip'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Bulle affichée au niveau de la flèche de droite'), 'grade' => 5);
-        $this->fields['landscapeWarning'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Avertissement affiché sur mobile au chargement de la publication'), 'grade' => 5, 'embed' => false];
-        $this->forms['help'] = array('label' => __('Aide'),
+        $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer l'aide"));
+        $this->fields['helpBookmarks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Améliorer l'aide des marques-pages"));
+        $this->fields['helpStartup'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Afficher l'aide au démarrage"));
+        $this->fields['helpStartupTime'] = array('type' => 'integer', 'default' => 15, 'editable' => true, 'label' => $this->__("Temps d'affichage en secondes"));
+        $this->fields['helpArrowTooltip'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Bulle affichée au niveau de la flèche de droite'), 'grade' => 5);
+        $this->fields['landscapeWarning'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Avertissement affiché sur mobile au chargement de la publication'), 'grade' => 5, 'embed' => false];
+        $this->forms['help'] = array('label' => $this->__('Aide'),
             'fieldsnames' => array('help', '|', 'helpStartup', 'helpStartupTime', '|', 'helpBookmarks', '|', 'helpArrowTooltip', '|', 'landscapeWarning'));
         // .
         //
         $this->fields['pdfThumbnails'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('PDF utilisé pour générer les miniatures'), 'grade' => 1, 'fileFilter' => $pdfFilter);
-        $this->fields['indexMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Message en haut"), 'grade' => 1, 'hint' => __('Message en haut de la vue index'));
+            'label' => $this->__('PDF utilisé pour générer les miniatures'), 'grade' => 1, 'fileFilter' => $pdfFilter);
+        $this->fields['indexMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Message en haut"), 'grade' => 1, 'hint' => $this->__('Message en haut de la vue index'));
 
-        $this->forms['index'] = array('label' => __('Vue d\'index (vignettes)'), 'fieldsnames' => array('indexAutoScroll', 'pdfThumbnails', 'indexMessage'));
+        $this->forms['index'] = array('label' => $this->__('Vue d\'index (vignettes)'), 'fieldsnames' => array('indexAutoScroll', 'pdfThumbnails', 'indexMessage'));
 
         // .
         //
-        $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression"));
-        $this->fields['printFullBrochure'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Autoriser l'impression de la brochure complète"));
-        $this->fields['printPageRange'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Activer l'option pour imprimer une plage de pages"));
+        $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer l'impression"));
+        $this->fields['printFullBrochure'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Autoriser l'impression de la brochure complète"));
+        $this->fields['printPageRange'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Activer l'option pour imprimer une plage de pages"));
 
-        $this->forms['print'] = array('label' => __('Impression'),
+        $this->forms['print'] = array('label' => $this->__('Impression'),
             'fieldsnames' => array('print', 'printFullBrochure', 'printPageRange'));
 
 
-        $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le moteur de recherche'));
-        $this->fields['searchFullBurger'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Afficher le burger menu complet à l\'ouverture de la recheche'));
-        $this->fields['highlightResults'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Surligner les résultats'));
-        $this->fields['highlightAllOccurences'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Surligner toutes les occurences'), 'hint' => __('Même sur les pages non considérées comme un résultat'));
-        $this->fields['ignoreSearch'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Mots à ignorer'),
-            'hint' => __('Liste des mots à ignorer séparés par des virgules'), 'grade' => 5);
-        $this->fields['ignoreSearchSeparators'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Caractères à ne pas considérer comme un séparateur de mot'));
-        $this->fields['ignoreWordLimit'] = ['type' => 'integer', 'default' => 3, 'editable' => true, 'label' => __('Ignorer les mots de moins de X caractères')];
-        $this->fields['textExtraction'] = array('type' => 'combo', 'default' => 'pdfbox', 'editable' => true, 'label' => __("Méthode d'extraction des textes"),
-            'datas' => array(__('PDFBox') => 'pdfbox',
-                __('Poppler') => 'poppler',
-                __('Fluidbook (expérimentation basée sur PDFBox)') => 'fluidbook'));
-        $this->fields['searchShowNoResultsPages'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher les pages sans résultats"));
+        $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le moteur de recherche'));
+        $this->fields['searchFullBurger'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Afficher le burger menu complet à l\'ouverture de la recheche'));
+        $this->fields['highlightResults'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Surligner les résultats'));
+        $this->fields['highlightAllOccurences'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Surligner toutes les occurences'), 'hint' => $this->__('Même sur les pages non considérées comme un résultat'));
+        $this->fields['ignoreSearch'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Mots à ignorer'),
+            'hint' => $this->__('Liste des mots à ignorer séparés par des virgules'), 'grade' => 5);
+        $this->fields['ignoreSearchSeparators'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Caractères à ne pas considérer comme un séparateur de mot'));
+        $this->fields['ignoreWordLimit'] = ['type' => 'integer', 'default' => 3, 'editable' => true, 'label' => $this->__('Ignorer les mots de moins de X caractères')];
+        $this->fields['textExtraction'] = array('type' => 'combo', 'default' => 'pdfbox', 'editable' => true, 'label' => $this->__("Méthode d'extraction des textes"),
+            'datas' => array($this->__('PDFBox') => 'pdfbox',
+                $this->__('Poppler') => 'poppler',
+                $this->__('Fluidbook (expérimentation basée sur PDFBox)') => 'fluidbook'));
+        $this->fields['searchShowNoResultsPages'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Afficher les pages sans résultats"));
         $this->fields['searchPageSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'AND',
-            'datas' => [__('les double-pages qui contiennent tous les mots recherchés (ET logique)') => 'AND', __('les double-page qui contiennent un des mots recherché (OU logique)') => 'OR'], 'label' => __('Algorithme de sélection des résultats'));
+            'datas' => [$this->__('les double-pages qui contiennent tous les mots recherchés (ET logique)') => 'AND', $this->__('les double-page qui contiennent un des mots recherché (OU logique)') => 'OR'], 'label' => $this->__('Algorithme de sélection des résultats'));
         $this->fields['searchWordSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'begins',
-            'datas' => [__('mot commençant par la requête') => 'begins', __('mot correspondant exactement à la requête') => 'exact', __('mot contenant la requête') => 'contains', __('expression exacte') => 'expression'],
-            'label' => __('Algorithme de sélection des occurences'));
+            'datas' => [$this->__('mot commençant par la requête') => 'begins', $this->__('mot correspondant exactement à la requête') => 'exact', $this->__('mot contenant la requête') => 'contains', $this->__('expression exacte') => 'expression'],
+            'label' => $this->__('Algorithme de sélection des occurences'));
 
-        $this->forms['search'] = array('label' => __('Moteur de recherche'),
+        $this->forms['search'] = array('label' => $this->__('Moteur de recherche'),
             'fieldsnames' => array('search', '|', 'searchFullBurger', '|', 'ignoreWordLimit', 'ignoreSearch', 'ignoreSearchSeparators',
                 '|', 'searchWordSelectionAlgorithm', 'searchPageSelectionAlgorithm',
                 '|', 'highlightResults', 'highlightAllOccurences',
                 '|', 'searchShowNoResultsPages',
                 '|', 'textExtraction'));
 
-        $this->fields['soundTheme'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Thème sonore"),
-            'datas' => array(__('Pas de son') => '',
-                __('Classique') => 'classic',
-                __("Papier épais") => 'heavy',
-                __("Papier fin") => 'light',
-                __("Silencieux") => 'silent',
-                __('Woosh') => 'woosh'));
-        $this->fields['soundOn'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les effets sonores à l'ouverture"));
-        $this->forms['sound'] = array('label' => __('Effets sonores'),
+        $this->fields['soundTheme'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => $this->__("Thème sonore"),
+            'datas' => array($this->__('Pas de son') => '',
+                $this->__('Classique') => 'classic',
+                $this->__("Papier épais") => 'heavy',
+                $this->__("Papier fin") => 'light',
+                $this->__("Silencieux") => 'silent',
+                $this->__('Woosh') => 'woosh'));
+        $this->fields['soundOn'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer les effets sonores à l'ouverture"));
+        $this->forms['sound'] = array('label' => $this->__('Effets sonores'),
             'fieldsnames' => array('soundTheme', 'soundOn', '|', 'ambientSound', 'ambientSoundVolume'));
         // .
-        $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les fonctions de téléchargement"));
-        $this->fields['pdfName'] = array('type' => 'text', 'default' => 'document.pdf', 'editable' => true, 'label' => __("Nom du fichier PDF"));
-        $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téchargement de PDF avancé'), "hint" => __("Permet à l'utilisateur de sélectionner les pages qu'il souhaite télécharger"), 'grade' => 3);
-        $this->fields['pdfComplexShowCurrent'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher les pages courrantes'), 'grade' => 3);
-        $this->fields['pdfCompress'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Compression du fichier PDF'));
+        $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer les fonctions de téléchargement"));
+        $this->fields['pdfName'] = array('type' => 'text', 'default' => 'document.pdf', 'editable' => true, 'label' => $this->__("Nom du fichier PDF"));
+        $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Téchargement de PDF avancé'), "hint" => $this->__("Permet à l'utilisateur de sélectionner les pages qu'il souhaite télécharger"), 'grade' => 3);
+        $this->fields['pdfComplexShowCurrent'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher les pages courrantes'), 'grade' => 3);
+        $this->fields['pdfCompress'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Compression du fichier PDF'));
         $this->fields['pdfReplace'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('PDF de remplacement'), 'grade' => 3, 'fileFilter' => $pdfFilter);
-        $this->forms['downloadpdf'] = array('label' => __('Fonction de téléchargement'),
+            'label' => $this->__('PDF de remplacement'), 'grade' => 3, 'fileFilter' => $pdfFilter);
+        $this->forms['downloadpdf'] = array('label' => $this->__('Fonction de téléchargement'),
             'fieldsnames' => array('pdf', 'pdfName', 'pdfReplace', 'pdfCompress', '|', 'pdfComplex', 'pdfComplexShowCurrent'));
         // .
 
-        $this->fields['zoom'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Zoom par défaut (atteint au clic)'));
-        $this->fields['zoomw'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Zoom maximal (atteint à l'aide de la molette)"));
-        $this->fields['hideHeaderOnZoom'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Cacher le menu lors du zoom')];
-        $this->fields['zoomMouseMoveMode'] = ['type' => 'combo', 'default' => 'move', 'editable' => true, 'label' => __('Mode de déplacement des pages zoomées (souris)'),
-            'datas' => [__('Bouger la souris') => 'move', __('Drag & drop') => __('dragndrop')]];
-        $this->fields['zoomWheel'] = ['type' => 'combo', 'default' => 'wheel', 'editable' => true, 'label' => __('Zoom molette'), 'datas' => [
-            __('Désactivé') => 'disabled',
-            __('Molette') => 'wheel',
-            __('Ctrl+Molette') => 'ctrlwheel',
+        $this->fields['zoom'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => $this->__('Zoom par défaut (atteint au clic)'));
+        $this->fields['zoomw'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => $this->__("Zoom maximal (atteint à l'aide de la molette)"));
+        $this->fields['hideHeaderOnZoom'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher le menu lors du zoom')];
+        $this->fields['zoomMouseMoveMode'] = ['type' => 'combo', 'default' => 'move', 'editable' => true, 'label' => $this->__('Mode de déplacement des pages zoomées (souris)'),
+            'datas' => [$this->__('Bouger la souris') => 'move', $this->__('Drag & drop') => $this->__('dragndrop')]];
+        $this->fields['zoomWheel'] = ['type' => 'combo', 'default' => 'wheel', 'editable' => true, 'label' => $this->__('Zoom molette'), 'datas' => [
+            $this->__('Désactivé') => 'disabled',
+            $this->__('Molette') => 'wheel',
+            $this->__('Ctrl+Molette') => 'ctrlwheel',
         ]];
-        $this->fields['zoomClick'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Cliquer sur les pages pour zoomer')];
-        $this->forms['zoom'] = array('label' => __('Zoom'),
+        $this->fields['zoomClick'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cliquer sur les pages pour zoomer')];
+        $this->forms['zoom'] = array('label' => $this->__('Zoom'),
             'fieldsnames' => array('zoomClick', 'zoomWheel', '|', 'zoom', 'zoomw', '|', 'zoomMouseMoveMode', 'hideHeaderOnZoom'));
         // .
 
         $this->fields['sliderImage'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Image pour le slider'), 'grade' => 3, 'fileFilter' => $imageExtraFilter);
+            'label' => $this->__('Image pour le slider'), 'grade' => 3, 'fileFilter' => $imageExtraFilter);
 
-        $this->forms['slider'] = ['label' => __('Slider'),
+        $this->forms['slider'] = ['label' => $this->__('Slider'),
             'fieldsnames' => ['sliderImage'],
         ];
 
-        $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher les scores dans les rapports'), 'grade' => 5);
-        $this->fields['stats_exclude_ip'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Exclure les IP suivantes des statistiques'), 'grade' => 3, 'hint' => sprintf(__('Indiquer une adresse ip de la forme %s par ligne'), 'www.xxx.yyy.zzz'));
-        $this->fields['relay_url_params'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Relayer les paramètres d\'url dans les liens sortants'), 'grade' => 3];
-        $this->fields['gtag_additional_code'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code additionnel Google Tag Manager'));
-        $this->fields['googleAnalyticsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code Stats personnalisé (placé avant fermeture de head)'));
-        $this->fields['statsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code Stats personnalisé (placé avant fermeture du body)'));
-        $this->fields['xiti'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code XiTi global'));
-        $this->fields['xiti_page'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Modèle code xiti (pour tags relatifs aux pages)'));
+        $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher les scores dans les rapports'), 'grade' => 5);
+        $this->fields['stats_exclude_ip'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Exclure les IP suivantes des statistiques'), 'grade' => 3, 'hint' => sprintf($this->__('Indiquer une adresse ip de la forme %s par ligne'), 'www.xxx.yyy.zzz'));
+        $this->fields['relay_url_params'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Relayer les paramètres d\'url dans les liens sortants'), 'grade' => 3];
+        $this->fields['gtag_additional_code'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code additionnel Google Tag Manager'));
+        $this->fields['googleAnalyticsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code Stats personnalisé (placé avant fermeture de head)'));
+        $this->fields['statsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code Stats personnalisé (placé avant fermeture du body)'));
+        $this->fields['xiti'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code XiTi global'));
+        $this->fields['xiti_page'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Modèle code xiti (pour tags relatifs aux pages)'));
         $this->fields['tagcommander_id'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => 'Tag commander ID', 'grade' => 3];
         $this->fields['tagcommander_scriptname'] = ['type' => 'text', 'default' => 'tc_Multisite_Head.js,tc_Multisite_Analytics.js,tc_Multisite_Medias.js', 'editable' => true, 'label' => 'Nom du script Tagcommander', 'grade' => 3];
         $this->fields['tagcommander_prod'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => 'Production', 'grade' => 3];
         $this->fields['tagcommander_plan'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => 'Plan de taggage "Tag commander"', 'grade' => 3];
         $this->fields['tagcommander_default_vars'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => 'Variables par défaut', 'grade' => 3];
-        $this->fields['anchorsAliases'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Alias des ancres')];
-        $this->forms['stats'] = array('label' => __('Statistiques avancées'),
+        $this->fields['anchorsAliases'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Alias des ancres')];
+        $this->forms['stats'] = array('label' => $this->__('Statistiques avancées'),
             'fieldsnames' => array('tagcommander_id', 'tagcommander_scriptname', 'tagcommander_prod', 'tagcommander_plan', 'tagcommander_default_vars', 'anchorsAliases', '|', 'stats_score', 'stats_exclude_ip', '|', 'relay_url_params', '|', 'gtag_additional_code', '|', 'googleAnalyticsCustom', 'statsCustom', '|', 'xiti', 'xiti_page'));
 
-        $this->fields['displayChaptersPopup'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Always display chapters in a popup'), 'grade' => 1);
-        $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche l'icône du sommaire"), 'grade' => 1);
-        $this->fields['chaptersCaptionDisplay'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher le titre "Sommaire" dans la popup'), 'grade' => 3];
-        $this->fields['chaptersFontSize'] = ['type' => 'integer', 'default' => 100, 'min' => 50, 'max' => 120, 'editable' => true, 'label' => __('Taille du texte des élements du sommaire'), 'hint' => 'En % par rapport à la taille normale', 'grade' => 3];
-        $this->fields['chaptersPage'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Faire pointer le sommaire sur la page'), 'grade' => 3, 'hint' => __('Laisser vide pour utiliser le sommaire classique'), 'size' => 5);
-        $this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher le sommaire au chargement de la publication"), 'grade' => 3);
-        $this->fields['chaptersColumns'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Afficher le sommaire sur x colonne(s)'), 'grade' => 3);
-        $this->fields['chaptersColMaxWidth'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Largeur max d'une colonne"), 'grade' => 3);
-        $this->fields['chaptersLevelLimit'] = array('type' => 'integer', 'default' => 5, 'editable' => true, 'label' => __('Limiter à x niveaux'));
-        $this->fields['chaptersIndent'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Indenter les éléments (pour les sommaires à plat)')];
+        $this->fields['displayChaptersPopup'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Always display chapters in a popup'), 'grade' => 1);
+        $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Affiche l'icône du sommaire"), 'grade' => 1);
+        $this->fields['chaptersCaptionDisplay'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher le titre "Sommaire" dans la popup'), 'grade' => 3];
+        $this->fields['chaptersFontSize'] = ['type' => 'integer', 'default' => 100, 'min' => 50, 'max' => 120, 'editable' => true, 'label' => $this->__('Taille du texte des élements du sommaire'), 'hint' => 'En % par rapport à la taille normale', 'grade' => 3];
+        $this->fields['chaptersPage'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Faire pointer le sommaire sur la page'), 'grade' => 3, 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'), 'size' => 5);
+        $this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Afficher le sommaire au chargement de la publication"), 'grade' => 3);
+        $this->fields['chaptersColumns'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => $this->__('Afficher le sommaire sur x colonne(s)'), 'grade' => 3);
+        $this->fields['chaptersColMaxWidth'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => $this->__("Largeur max d'une colonne"), 'grade' => 3);
+        $this->fields['chaptersLevelLimit'] = array('type' => 'integer', 'default' => 5, 'editable' => true, 'label' => $this->__('Limiter à x niveaux'));
+        $this->fields['chaptersIndent'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Indenter les éléments (pour les sommaires à plat)')];
 
         $this->fields['externalChaptersHTML'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $multimediaFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));
-        $this->fields['mobileChaptersStyle'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __('Style des chapitres')
-        , 'datas' => array(__('Classique') => 'classic',
-                __('INA') => 'ina'));
-        $this->fields['chaptersPagesNumber'] = array('type' => 'combo', 'default' => 'virtual', 'editable' => true, 'label' => __('Numérotation du sommaire'), 'datas' => $pagesNumbers);
-        $this->fields['chaptersCascade'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Sommaire en cascade"), 'grade' => 3);
-
-        $this->forms['sommaire'] = array('label' => __('Sommaire'),
+            'label' => $this->__('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $multimediaFilter, 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'));
+        $this->fields['mobileChaptersStyle'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => $this->__('Style des chapitres')
+        , 'datas' => array($this->__('Classique') => 'classic',
+                $this->__('INA') => 'ina'));
+        $this->fields['chaptersPagesNumber'] = array('type' => 'combo', 'default' => 'virtual', 'editable' => true, 'label' => $this->__('Numérotation du sommaire'), 'datas' => $pagesNumbers);
+        $this->fields['chaptersCascade'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Sommaire en cascade"), 'grade' => 3);
+
+        $this->forms['sommaire'] = array('label' => $this->__('Sommaire'),
             'fieldsnames' => array('chaptersCaptionDisplay', 'chaptersFontSize', '|', 'displayChaptersIcon', 'displayChaptersPopup', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', 'chaptersLevelLimit', 'chaptersCascade', 'chaptersPagesNumber', '|', 'chaptersColMaxWidth', 'chaptersColumns', 'displayChaptersLine', 'chaptersIndent', '|', 'externalChaptersHTML', '|', 'mobileChaptersStyle'));
         // .
         $this->fields['tabsHTML5'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Fichier d\'onglets') . ' (SVG, ZIP)', 'grade' => 3, 'hint' => __('Charger un zip rendra les options ci-dessous inopérantes'), 'fileFilter' => $tabsFilter);
-        $this->fields['tabsSide'] = ['type' => 'combo', 'label' => __('Position des onglets'), 'editable' => true, 'default' => 'right', 'grade' => 5,
+            'label' => $this->__('Fichier d\'onglets') . ' (SVG, ZIP)', 'grade' => 3, 'hint' => $this->__('Charger un zip rendra les options ci-dessous inopérantes'), 'fileFilter' => $tabsFilter);
+        $this->fields['tabsSide'] = ['type' => 'combo', 'label' => $this->__('Position des onglets'), 'editable' => true, 'default' => 'right', 'grade' => 5,
             'datas' => [
-                __('Gauche') => 'left',
-                __('Droite') => 'right',
+                $this->__('Gauche') => 'left',
+                $this->__('Droite') => 'right',
             ]
         ];
         $this->fields['tabsPriority'] = ['type' => 'integer', 'min' => 0, 'max' => 100, 'default' => 15, 'editable' => true, 'label' => 'Priorité des onglets sur les contenus (%)', 'hint' => 'La valeur indique la réduction permise de la taille de la publication.'];
-        $this->fields['tabsPages'] = ['type' => 'text', 'label' => __('Pages des onglets'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => __('Numéros de pages séparas par une virgule')];
-        $this->fields['tabsSections'] = ['type' => 'text', 'label' => __('Sections des onglets'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => __('Numéros de pages séparés par une virgule')];
-        $this->fields['tabsPagesNumbers'] = ['type' => 'combo', 'label' => __('Numérotation utilisée'), 'editable' => true, 'default' => 'virtual', 'grade' => 5, 'datas' => $pagesNumbers];
-        $this->fields['tabsHideOnPages'] = ['type' => 'text', 'label' => __('Cacher les onglets sur les pages'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => '1-3,5 = 1,2,3,5'];
-        $this->fields['tabsDisabledOnPages'] = ['type' => 'text', 'label' => __('Onglets inactifs sur les pages'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => '1-3,5 = 1,2,3,5'];
-        $this->fields['tabsHideOnCover'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Cacher les onglets sur la couverture'), 'grade' => 5];
-        $this->fields['tabsHideOnLastPage'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Cacher les onglets sur la dernière page'), 'grade' => 5];
-        $this->fields['tabsHideOnPortrait'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Cacher les onglets lorsque le fluidbook est en mode portrait'), 'grade' => 5];
-        $this->fields['tabsHideOnZoom'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Cacher les onglets lorsque le fluidbook est zoomé'), 'grade' => 5];
-        $this->fields['tabsHideWhenOverlapingArrows'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), 'grade' => 5];
-        $this->fields['tabsHideEdges'] = ['type' => 'combo', 'label' => __('Masquer les bordures du fluidbook'), 'editable' => true, 'default' => 'right', 'grade' => 5,
+        $this->fields['tabsPages'] = ['type' => 'text', 'label' => $this->__('Pages des onglets'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => $this->__('Numéros de pages séparas par une virgule')];
+        $this->fields['tabsSections'] = ['type' => 'text', 'label' => $this->__('Sections des onglets'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => $this->__('Numéros de pages séparés par une virgule')];
+        $this->fields['tabsPagesNumbers'] = ['type' => 'combo', 'label' => $this->__('Numérotation utilisée'), 'editable' => true, 'default' => 'virtual', 'grade' => 5, 'datas' => $pagesNumbers];
+        $this->fields['tabsHideOnPages'] = ['type' => 'text', 'label' => $this->__('Cacher les onglets sur les pages'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => '1-3,5 = 1,2,3,5'];
+        $this->fields['tabsDisabledOnPages'] = ['type' => 'text', 'label' => $this->__('Onglets inactifs sur les pages'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => '1-3,5 = 1,2,3,5'];
+        $this->fields['tabsHideOnCover'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Cacher les onglets sur la couverture'), 'grade' => 5];
+        $this->fields['tabsHideOnLastPage'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets sur la dernière page'), 'grade' => 5];
+        $this->fields['tabsHideOnPortrait'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets lorsque le fluidbook est en mode portrait'), 'grade' => 5];
+        $this->fields['tabsHideOnZoom'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets lorsque le fluidbook est zoomé'), 'grade' => 5];
+        $this->fields['tabsHideWhenOverlapingArrows'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), 'grade' => 5];
+        $this->fields['tabsHideEdges'] = ['type' => 'combo', 'label' => $this->__('Masquer les bordures du fluidbook'), 'editable' => true, 'default' => 'right', 'grade' => 5,
             'datas' => [
-                __('Aucune') => 'none',
-                __('Gauche') => 'left',
-                __('Droite') => 'right',
-                __('Les deux') => 'both',
+                $this->__('Aucune') => 'none',
+                $this->__('Gauche') => 'left',
+                $this->__('Droite') => 'right',
+                $this->__('Les deux') => 'both',
             ]
         ];
-        $this->fields['tabsMargin'] = ['type' => 'float', 'label' => __('Marge des onglets'), 'editable' => true, 'default' => -10, 'grade' => 5, 'hint' => __('Une marge négative = les onglets passent sous la publication')];
-        $this->fields['tabsLinkWidth'] = ['type' => 'float', 'label' => __('Largeur des onglets'), 'editable' => true, 'default' => 30, 'grade' => 5, 'hint' => __('Largeur réservée pour les onglets et largeur de la zone cliquable des liens')];
-        $this->forms['tabs'] = ['label' => __('Onglets'),
+        $this->fields['tabsMargin'] = ['type' => 'float', 'label' => $this->__('Marge des onglets'), 'editable' => true, 'default' => -10, 'grade' => 5, 'hint' => $this->__('Une marge négative = les onglets passent sous la publication')];
+        $this->fields['tabsLinkWidth'] = ['type' => 'float', 'label' => $this->__('Largeur des onglets'), 'editable' => true, 'default' => 30, 'grade' => 5, 'hint' => $this->__('Largeur réservée pour les onglets et largeur de la zone cliquable des liens')];
+        $this->forms['tabs'] = ['label' => $this->__('Onglets'),
             'fieldsnames' => ['tabsHTML5', 'tabsPages', 'tabsSections', 'tabsPagesNumbers', 'tabsDisabledOnPages', '|', 'tabsSide', 'tabsMargin', '|', 'tabsHideOnPages', 'tabsHideOnCover', 'tabsHideOnLastPage', 'tabsHideEdges', '|', 'tabsPriority', 'tabsLinkWidth', 'tabsHideWhenOverlapingArrows', 'tabsHideOnPortrait', 'tabsHideOnZoom']];
 
         /*** **/
 
-        $this->fields['customLinkClass'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Classe pour les liens personnalisés'), 'grade' => 5);
-        $this->fields['ignoreLinksTypes'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Ignorer les liens de type'), 'hint' => __('Liste des numéros séparés par des virgules'), 'grade' => 5);
-        $this->fields['mobileLinksRevealAnim'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Animer les liens après un changement de page"), 'grade' => 3);
-        $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __("Temps d'apparition du lien à l'ouverture de la page (en secondes)"));
-        $this->fields['linkBlinkRepetition'] = ['type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Nombre de clignotement lors de l\'apparition des liens')];
-        $this->fields['linkTracker'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Tracking des liens'), 'grade' => 5);
-        $this->fields['linkTrackerRegexp'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Tracking des liens applicables aux liens du domaine'), 'grade' => 5);
-        $this->fields['linkFilePrefix'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Préfixer les liens de téléchargement'));
-        $this->fields['linkTooltipMaxWidth'] = array('type' => 'integer', 'default' => 140, 'editable' => true, 'label' => __('Largeur max des infobulles des liens de type "infobulle"'));
-        $this->fields['openLinkAtStartup'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Déclencher un lien à l\'ouverture du fluidbook')];
-
-        $this->fields['mobileIgnoreBackgroundLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Ignorer les liens de background'));
-        $this->forms['links'] = array('label' => __('Liens'),
+        $this->fields['customLinkClass'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Classe pour les liens personnalisés'), 'grade' => 5);
+        $this->fields['ignoreLinksTypes'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Ignorer les liens de type'), 'hint' => $this->__('Liste des numéros séparés par des virgules'), 'grade' => 5);
+        $this->fields['mobileLinksRevealAnim'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Animer les liens après un changement de page"), 'grade' => 3);
+        $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => $this->__("Temps d'apparition du lien à l'ouverture de la page (en secondes)"));
+        $this->fields['linkBlinkRepetition'] = ['type' => 'integer', 'default' => 1, 'editable' => true, 'label' => $this->__('Nombre de clignotement lors de l\'apparition des liens')];
+        $this->fields['linkTracker'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Tracking des liens'), 'grade' => 5);
+        $this->fields['linkTrackerRegexp'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Tracking des liens applicables aux liens du domaine'), 'grade' => 5);
+        $this->fields['linkFilePrefix'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Préfixer les liens de téléchargement'));
+        $this->fields['linkTooltipMaxWidth'] = array('type' => 'integer', 'default' => 140, 'editable' => true, 'label' => $this->__('Largeur max des infobulles des liens de type "infobulle"'));
+        $this->fields['openLinkAtStartup'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Déclencher un lien à l\'ouverture du fluidbook')];
+
+        $this->fields['mobileIgnoreBackgroundLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Ignorer les liens de background'));
+        $this->forms['links'] = array('label' => $this->__('Liens'),
             'fieldsnames' => array('permanentLinks', 'mobileLinksRevealAnim', 'linkBlinkTime', 'linkBlinkRepetition', '|', 'openLinkAtStartup', '|', 'customLinkClass', 'ignoreLinksTypes', 'mobileIgnoreBackgroundLinks', 'linkTooltipManager', 'linkCornerSize', 'linkTooltipMaxWidth', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkFilePrefix'));
         //.
 
-        $this->fields['textPopupStylesheet'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Feuille de style des popups de texte'), 'fileFilter' => $cssFilter];
-        $this->fields['textPopupWidth'] = ['type' => 'integer', 'default' => 600, 'editable' => true, 'label' => __('Largeur optimale des popups')];
-        $this->fields['iframePopupMaxWidth'] = ['type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __('Largeur maximale des popups iframe')];
-        $this->fields['OAMChromeFactor'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => __('Facteur OAM Chrome')];
-        $this->fields['OAMIEFactor'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => __('Facteur OAM IE11')];
+        $this->fields['textPopupStylesheet'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Feuille de style des popups de texte'), 'fileFilter' => $cssFilter];
+        $this->fields['textPopupWidth'] = ['type' => 'integer', 'default' => 600, 'editable' => true, 'label' => $this->__('Largeur optimale des popups')];
+        $this->fields['iframePopupMaxWidth'] = ['type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Largeur maximale des popups iframe')];
+        $this->fields['OAMChromeFactor'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Facteur OAM Chrome')];
+        $this->fields['OAMIEFactor'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Facteur OAM IE11')];
 
-        $this->forms['multimedia'] = ['label' => __('Multimedia'),
+        $this->forms['multimedia'] = ['label' => $this->__('Multimedia'),
             'fieldsnames' => ['textPopupStylesheet', 'textPopupWidth', '|', 'iframePopupMaxWidth', '|', 'OAMChromeFactor', 'OAMIEFactor']];
 
-        $pdfRendererOptions = [__('Navigateur') => 'native', 'PDF.js' => 'pdfjs', 'PDF.js (legacy)' => 'pdfjs-legacy'];
-        $pdfRenderOptionsIframe = array_merge($pdfRendererOptions, [__('Ecraser en SVG') => 'svg']);
+        $pdfRendererOptions = [$this->__('Navigateur') => 'native', 'PDF.js' => 'pdfjs', 'PDF.js (legacy)' => 'pdfjs-legacy'];
+        $pdfRenderOptionsIframe = array_merge($pdfRendererOptions, [$this->__('Ecraser en SVG') => 'svg']);
 
-        $this->fields['PDFRenderer'] = ['type' => 'combo', 'datas' => $pdfRendererOptions, 'default' => 'native', 'editable' => true, 'label' => __('Rendu des PDF (téléchargement)')];
-        $this->fields['PDFRendererIframe'] = ['type' => 'combo', 'datas' => $pdfRenderOptionsIframe, 'default' => 'native', 'editable' => true, 'label' => __('Rendu des PDF (iframes)')];
+        $this->fields['PDFRenderer'] = ['type' => 'combo', 'datas' => $pdfRendererOptions, 'default' => 'native', 'editable' => true, 'label' => $this->__('Rendu des PDF (téléchargement)')];
+        $this->fields['PDFRendererIframe'] = ['type' => 'combo', 'datas' => $pdfRenderOptionsIframe, 'default' => 'native', 'editable' => true, 'label' => $this->__('Rendu des PDF (iframes)')];
         $this->fields['PDFJSCSS'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => 'Styles PDF.js'];
 
         $this->forms['pdf'] = ['label' => 'PDF',
             'fieldsnames' => ['PDFRenderer', 'PDFRendererIframe', '|', 'PDFJSCSS']];
 
         $slideshowPopupLibraries = [
-            'Splide (' . __('défaut') . ')' => 'splide',
+            'Splide (' . $this->__('défaut') . ')' => 'splide',
             'Vacheron' => 'vacheron'];
 
         $slideshowInlineLibraries = [
-            'Simple (' . __('défaut') . ')' => 'dummy',
+            'Simple (' . $this->__('défaut') . ')' => 'dummy',
             'Vacheron' => 'vacheron'];
 
-        $this->fields['slideshowCaptionSize'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Taille de police de la légende du diaporama'), 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['inlineSlideshowTransitionDuration'] = array('type' => 'float', 'default' => 0.75, 'editable' => true, 'label' => __('Durée de la transition des diaporamas intégrés aux pages(s)'));
-        $this->fields['inlineSlideshowDuration'] = array('type' => 'float', 'default' => 7, 'editable' => true, 'label' => __('Temps d\'attente des diaporamas intégrés aux pages (s)'));
-        $this->fields['inlineSlideshowLibrary'] = ['type' => 'combo', 'datas' => $slideshowInlineLibraries, 'default' => 'dummy', 'editable' => true, 'grade' => 3, 'label' => __('Librarie utilisée pour les slideshow intégrés aux pages')];
-        $this->fields['popupSlideshowLibrary'] = ['type' => 'combo', 'datas' => $slideshowPopupLibraries, 'default' => 'splide', 'editable' => true, 'grade' => 3, 'label' => __('Librarie utilisée pour les slideshow popup')];
+        $this->fields['slideshowCaptionSize'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Taille de police de la légende du diaporama'), 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
+        $this->fields['inlineSlideshowTransitionDuration'] = array('type' => 'float', 'default' => 0.75, 'editable' => true, 'label' => $this->__('Durée de la transition des diaporamas intégrés aux pages(s)'));
+        $this->fields['inlineSlideshowDuration'] = array('type' => 'float', 'default' => 7, 'editable' => true, 'label' => $this->__('Temps d\'attente des diaporamas intégrés aux pages (s)'));
+        $this->fields['inlineSlideshowLibrary'] = ['type' => 'combo', 'datas' => $slideshowInlineLibraries, 'default' => 'dummy', 'editable' => true, 'grade' => 3, 'label' => $this->__('Librarie utilisée pour les slideshow intégrés aux pages')];
+        $this->fields['popupSlideshowLibrary'] = ['type' => 'combo', 'datas' => $slideshowPopupLibraries, 'default' => 'splide', 'editable' => true, 'grade' => 3, 'label' => $this->__('Librarie utilisée pour les slideshow popup')];
 
-        $this->forms['slideshow'] = ['label' => __('Slideshow'),
+        $this->forms['slideshow'] = ['label' => $this->__('Slideshow'),
             'fieldsnames' => ['inlineSlideshowLibrary', 'popupSlideshowLibrary', '|', 'slideshowCaptionSize', '|', 'inlineSlideshowTransitionDuration', 'inlineSlideshowDuration']];
 
-        $this->fields['webvideoAsLocal'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Intégrer les webvidéos en local')];
-        $this->fields['mobileVideosPath'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Chemin vers les vidéos'), 'grade' => 5);
-        $this->fields['brightcovePlayerId'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Brightcove Player Id'), 'grade' => 3);
-        $this->fields['brightcovePlayerSecret'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Brightcove Player Secret'), 'grade' => 3);
-        $this->fields['bigPlayImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image pour le bouton "Big Play"'), 'grade' => 3, 'fileFilter' => $imageExtraFilter];
-        $this->forms['videos'] = array('label' => __('Vidéos'),
+        $this->fields['webvideoAsLocal'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Intégrer les webvidéos en local')];
+        $this->fields['mobileVideosPath'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Chemin vers les vidéos'), 'grade' => 5);
+        $this->fields['brightcovePlayerId'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Brightcove Player Id'), 'grade' => 3);
+        $this->fields['brightcovePlayerSecret'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Brightcove Player Secret'), 'grade' => 3);
+        $this->fields['bigPlayImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image pour le bouton "Big Play"'), 'grade' => 3, 'fileFilter' => $imageExtraFilter];
+        $this->forms['videos'] = array('label' => $this->__('Vidéos'),
             'fieldsnames' => array('webvideoAsLocal', '|', 'mobileVideosPath', '|', 'brightcovePlayerId', 'brightcovePlayerSecret', '|', 'bigPlayImage'));
         //.
-        $this->fields['audioPlayerTheme'] = ['type' => 'combo', 'default' => 'native', 'editable' => true, 'label' => __('Apparence du lecteur audio'), 'datas' => [__('Apparence native du navigateur') => 'native', __('Zone cliquable invisible') => 'invisible', __('Circulaire') => 'redbull']];
-        $this->forms['audio'] = ['label' => __('Lecteur audio'),
+        $this->fields['audioPlayerTheme'] = ['type' => 'combo', 'default' => 'native', 'editable' => true, 'label' => $this->__('Apparence du lecteur audio'), 'datas' => [$this->__('Apparence native du navigateur') => 'native', $this->__('Zone cliquable invisible') => 'invisible', $this->__('Circulaire') => 'redbull']];
+        $this->forms['audio'] = ['label' => $this->__('Lecteur audio'),
             'fieldsnames' => ['audioPlayerTheme']];
         //.
         $this->fields['downloadPortionPDF'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => 'PDF utilisé pour le téléchargement des extraits'];
-        $this->fields['downloadPortionZoom'] = ['type' => 'integer', 'default' => 8, 'editable' => false, 'editable' => true, 'label' => __('Zoom des images extraites')];
-        $this->forms['downloadportion'] = array('label' => __('Téléchargement d\'extraits'),
+        $this->fields['downloadPortionZoom'] = ['type' => 'integer', 'default' => 8, 'editable' => false, 'editable' => true, 'label' => $this->__('Zoom des images extraites')];
+        $this->forms['downloadportion'] = array('label' => $this->__('Téléchargement d\'extraits'),
             'fieldsnames' => ['downloadPortionPDF', 'downloadPortionZoom']);
 
 
         $this->fields['product_zoom_references'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => __('Fichier contenant les références produits'), 'dir' => 'commerce');
-        $this->fields['product_zoom_buttons_order'] = ['type' => 'combo', 'datas' => [__('De la droite vers la gauche') => 'right', __('De la gauche vers la droite') => 'left'], 'editable' => true, 'grade' => 3, 'default' => 'right', 'label' => __('Order des boutons')];
+            'label' => $this->__('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => $this->__('Fichier contenant les références produits'), 'dir' => 'commerce');
+        $this->fields['product_zoom_buttons_order'] = ['type' => 'combo', 'datas' => [$this->__('De la droite vers la gauche') => 'right', $this->__('De la gauche vers la droite') => 'left'], 'editable' => true, 'grade' => 3, 'default' => 'right', 'label' => $this->__('Order des boutons')];
         $icons = [
-            __('Aucune') => 'none',
-            __('Partage') => 'nav-share',
-            __('Ecran') => 'icon-site',
-            __('Télécharger') => 'nav-download',
+            $this->__('Aucune') => 'none',
+            $this->__('Partage') => 'nav-share',
+            $this->__('Ecran') => 'icon-site',
+            $this->__('Télécharger') => 'nav-download',
             'PDF' => 'icon-pdf',
             'Video' => 'icon-video',
-            __('Lien') => 'icon-link',
-            __('Code') => 'icon-code',
-            __('QR code') => 'icon-qr',
-            __('Article') => 'icon-article',
-            __('Panier (sac)') => 'nav-basket',
-            __('Panier (caddie)') => 'nav-cart-caddie',
-            __('Panier (wishlist)') => 'nav-cart-wishlist',
-            __('360°') => 'icon-360',
-            __('Photo') => 'icon-photo'];
+            $this->__('Lien') => 'icon-link',
+            $this->__('Code') => 'icon-code',
+            $this->__('QR code') => 'icon-qr',
+            $this->__('Article') => 'icon-article',
+            $this->__('Panier (sac)') => 'nav-basket',
+            $this->__('Panier (caddie)') => 'nav-cart-caddie',
+            $this->__('Panier (wishlist)') => 'nav-cart-wishlist',
+            $this->__('360°') => 'icon-360',
+            $this->__('Photo') => 'icon-photo'];
         $actions = [
-            __('Désactiver') => 'disabled',
-            __('Ouvrir un lien') => 'link',
-            __('Ouvrir en iframe') => 'iframe',
-            __('Copier un contenu') => 'copy',
-            __('Web Vidéo') => 'video',
-            __('Vidéo') => 'videofile',
-            __('Vidéo (boucle, sans contrôle)') => 'videogif',
-            __('Voir une image') => 'image',
-            __('Ajouter au panier') => 'addtocart'
+            $this->__('Désactiver') => 'disabled',
+            $this->__('Ouvrir un lien') => 'link',
+            $this->__('Ouvrir en iframe') => 'iframe',
+            $this->__('Copier un contenu') => 'copy',
+            $this->__('Web Vidéo') => 'video',
+            $this->__('Vidéo') => 'videofile',
+            $this->__('Vidéo (boucle, sans contrôle)') => 'videogif',
+            $this->__('Voir une image') => 'image',
+            $this->__('Ajouter au panier') => 'addtocart'
         ];
         $f = [];
         for ($i = 1; $i <= 3; $i++) {
-            $this->fields['product_zoom_label_' . $i] = ['type' => 'text', 'label' => __('Label du bouton') . ' ' . $i, 'default' => '', 'editable' => true, 'grade' => 3];
-            $this->fields['product_zoom_tooltip_' . $i] = ['type' => 'text', 'label' => __('Label de l\'infobulle') . ' ' . $i, 'default' => '', 'editable' => true, 'grade' => 3];
-            $this->fields['product_zoom_icon_' . $i] = ['type' => 'combo', 'datas' => $icons, 'label' => __('Icône du bouton') . ' ' . $i, 'default' => 'click', 'editable' => true, 'grade' => 3];
-            $this->fields['product_zoom_action_' . $i] = ['type' => 'combo', 'datas' => $actions, 'label' => __('Action du bouton') . ' ' . $i, 'default' => 'disabled', 'editable' => true, 'grade' => 3];
+            $this->fields['product_zoom_label_' . $i] = ['type' => 'text', 'label' => $this->__('Label du bouton') . ' ' . $i, 'default' => '', 'editable' => true, 'grade' => 3];
+            $this->fields['product_zoom_tooltip_' . $i] = ['type' => 'text', 'label' => $this->__('Label de l\'infobulle') . ' ' . $i, 'default' => '', 'editable' => true, 'grade' => 3];
+            $this->fields['product_zoom_icon_' . $i] = ['type' => 'combo', 'datas' => $icons, 'label' => $this->__('Icône du bouton') . ' ' . $i, 'default' => 'click', 'editable' => true, 'grade' => 3];
+            $this->fields['product_zoom_action_' . $i] = ['type' => 'combo', 'datas' => $actions, 'label' => $this->__('Action du bouton') . ' ' . $i, 'default' => 'disabled', 'editable' => true, 'grade' => 3];
             $f[] = '|';
             $f[] = 'product_zoom_label_' . $i;
             $f[] = 'product_zoom_tooltip_' . $i;
             $f[] = 'product_zoom_icon_' . $i;
             $f[] = 'product_zoom_action_' . $i;
         }
-        $this->fields['product_share_enabled'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'grade' => '3', 'label' => __('Activer le bouton de partage')];
-        $this->fields['product_share_link'] = ['type' => 'combo', 'default' => 'product', 'editable' => true, 'label' => __('Lien de partage'), 'datas' => [__('Lien du produit') => 'product', __('Lien vers la page du fluidbook') => 'page']];
-        $this->fields['product_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"');
-        $this->fields['product_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"');
-        $this->fields['product_tweet'] = array('type' => 'textarea', 'default' => '%short%', 'editable' => true, 'label' => __("Contenu Partage court"), 'hint' => __('Contenu du partagé sur les partages courts'));
-        $this->forms['product_zoom'] = ['label' => __('Zooms produits'), 'fieldsnames' => array_merge(["product_zoom_references", '|', 'product_zoom_buttons_order'], $f, ['|', 'product_share_enabled', 'product_share_link', 'product_email_title', 'product_email_body', 'product_tweet'])];
-
-        $this->fields['audiodescriptionTexts'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), 'fileFilter' => $seoFilter];
-        $this->fields['audiodescriptionVoice'] = ['type' => 'combo', 'datas' => wsDroits::getTTSVoices(), 'editable' => true, 'default' => '', 'label' => __('Voix pour l\'audiodescription')];
-        $this->forms['accessibility'] = ['label' => __('Accessibilité'),
+        $this->fields['product_share_enabled'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'grade' => '3', 'label' => $this->__('Activer le bouton de partage')];
+        $this->fields['product_share_link'] = ['type' => 'combo', 'default' => 'product', 'editable' => true, 'label' => $this->__('Lien de partage'), 'datas' => [$this->__('Lien du produit') => 'product', $this->__('Lien vers la page du fluidbook') => 'page']];
+        $this->fields['product_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'email") . ' "' . $this->__('Envoyer à un ami') . '"');
+        $this->fields['product_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Corps de l'email") . ' "' . $this->__('Envoyer à un ami') . '"');
+        $this->fields['product_tweet'] = array('type' => 'textarea', 'default' => '%short%', 'editable' => true, 'label' => $this->__("Contenu Partage court"), 'hint' => $this->__('Contenu du partagé sur les partages courts'));
+        $this->forms['product_zoom'] = ['label' => $this->__('Zooms produits'), 'fieldsnames' => array_merge(["product_zoom_references", '|', 'product_zoom_buttons_order'], $f, ['|', 'product_share_enabled', 'product_share_link', 'product_email_title', 'product_email_body', 'product_tweet'])];
+
+        $this->fields['audiodescriptionTexts'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), 'fileFilter' => $seoFilter];
+        $this->fields['audiodescriptionVoice'] = ['type' => 'combo','datasFunc'=>'wsDroits::getTTSVoices()', 'datas' => wsDroits::getTTSVoices(), 'editable' => true, 'default' => '', 'label' => $this->__('Voix pour l\'audiodescription')];
+        $this->forms['accessibility'] = ['label' => $this->__('Accessibilité'),
             'fieldsnames' => ['audiodescriptionTexts', 'audiodescriptionVoice']
         ];
 
@@ -637,58 +637,58 @@ class wsBookParametres extends wsParametres
 
         // Splashscreen
 
-        $this->fields['splashImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image'), 'grade' => 3, 'fileFilter' => $imageFilter];
-        $this->fields['splashURL'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('URL'), 'grade' => 3];
-        $this->fields['splashTarget'] = ['type' => 'combo', 'datas' => $target, 'default' => '_self', 'editable' => true, 'label' => __('Ouvrir le lien'), 'grade' => 3];
-        $this->fields['splashMinimalTime'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => __('Temps minimal d\'affichage'), 'grade' => 3];
+        $this->fields['splashImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image'), 'grade' => 3, 'fileFilter' => $imageFilter];
+        $this->fields['splashURL'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('URL'), 'grade' => 3];
+        $this->fields['splashTarget'] = ['type' => 'combo', 'datas' => $target, 'default' => '_self', 'editable' => true, 'label' => $this->__('Ouvrir le lien'), 'grade' => 3];
+        $this->fields['splashMinimalTime'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Temps minimal d\'affichage'), 'grade' => 3];
 
-        $this->forms['splash'] = ['label' => __('Ecran de chargement'), 'fieldsnames' => ['splashImage', 'splashURL', 'splashTarget', 'splashMinimalTime']];
+        $this->forms['splash'] = ['label' => $this->__('Ecran de chargement'), 'fieldsnames' => ['splashImage', 'splashURL', 'splashTarget', 'splashMinimalTime']];
 
         // Notes
         $this->fields['notes'] = ['type' => 'boolean', 'default' => false, 'editable' => true,
             'label' => 'Activer les notes', 'grade' => 3];
-        $this->forms['notes'] = ['label' => __('Notes'), 'fieldsnames' => ['notes']];
+        $this->forms['notes'] = ['label' => $this->__('Notes'), 'fieldsnames' => ['notes']];
 
         // Articles
         $this->fields['articlesFile'] = ['type' => 'freefile', 'default' => '', 'editable' => true,
             'label' => 'Articles', 'grade' => 3, 'fileFilter' => $articlesFilter];
-        $this->fields['articlesFormat'] = ['type' => 'combo', 'default' => 'fluidbook', 'editable' => true, 'label' => 'Format', 'grade' => 3, 'datas' => [__('Fluidbook') => 'fluidbook', 'Business Immo' => 'business-immo']];
-        $this->fields['articlesFont'] = ['type' => 'combo', 'label' => __('Police des articles'), 'default' => 'OpenSans', 'datas' => self::$fonts, 'editable' => true, 'grade' => 3];
-        $this->fields['articlesImages'] = ['type' => 'freefile', 'label' => __('Images des articles'), 'default' => '', 'hint' => __('Les noms des fichiers doivent être les même que ceux des balises <image> du XML'), 'editable' => true, 'grade' => 3, 'dir' => 'articles', 'multiple' => true];
-        $this->fields['articlesShare'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le partage'), 'grade' => 3];
-        $this->fields['articlesPrint'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer l\'impression'), 'grade' => 3];
-        $this->fields['articlesStyle'] = ['type' => 'combo', 'default' => true, 'editable' => true, 'label' => __('Style'), 'grade' => 3, 'datas' => ['Défaut' => 'default', 'Atlantic' => 'atlantic', 'Harmonie Mutuelle' => 'harmonie-mutuelle', 'Business Immo' => 'business-immo']];
+        $this->fields['articlesFormat'] = ['type' => 'combo', 'default' => 'fluidbook', 'editable' => true, 'label' => 'Format', 'grade' => 3, 'datas' => [$this->__('Fluidbook') => 'fluidbook', 'Business Immo' => 'business-immo']];
+        $this->fields['articlesFont'] = ['type' => 'combo', 'label' => $this->__('Police des articles'), 'default' => 'OpenSans', 'datas' => self::$fonts, 'editable' => true, 'grade' => 3];
+        $this->fields['articlesImages'] = ['type' => 'freefile', 'label' => $this->__('Images des articles'), 'default' => '', 'hint' => $this->__('Les noms des fichiers doivent être les même que ceux des balises <image> du XML'), 'editable' => true, 'grade' => 3, 'dir' => 'articles', 'multiple' => true];
+        $this->fields['articlesShare'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le partage'), 'grade' => 3];
+        $this->fields['articlesPrint'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer l\'impression'), 'grade' => 3];
+        $this->fields['articlesStyle'] = ['type' => 'combo', 'default' => true, 'editable' => true, 'label' => $this->__('Style'), 'grade' => 3, 'datas' => ['Défaut' => 'default', 'Atlantic' => 'atlantic', 'Harmonie Mutuelle' => 'harmonie-mutuelle', 'Business Immo' => 'business-immo']];
 
-        $this->forms['articles'] = ['label' => __('Articles'), 'fieldsnames' => ['articlesFile', 'articlesImages', '|', 'articlesShare', 'articlesPrint', '|', 'articlesStyle', 'articlesFont']];
+        $this->forms['articles'] = ['label' => $this->__('Articles'), 'fieldsnames' => ['articlesFile', 'articlesImages', '|', 'articlesShare', 'articlesPrint', '|', 'articlesStyle', 'articlesFont']];
 
         //.
         $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $imageFilter);
-        $this->fields['archivesLabel'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Label'), 'grade' => 5);
-        $this->forms['archives'] = array('label' => __('Archives'),
+            'label' => $this->__('Archives'), 'grade' => 3, 'fileFilter' => $imageFilter);
+        $this->fields['archivesLabel'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Label'), 'grade' => 5);
+        $this->forms['archives'] = array('label' => $this->__('Archives'),
             'fieldsnames' => array('externalArchives', 'archivesLabel'));
         // .
-        $this->fields['form'] = array('type' => 'combo', 'default' => '', 'editable' => true, 'grade' => 5, 'label' => __('Formulaire'), 'datas' =>
-            array(__('Aucun') => '',
+        $this->fields['form'] = array('type' => 'combo', 'default' => '', 'editable' => true, 'grade' => 5, 'label' => $this->__('Formulaire'), 'datas' =>
+            array($this->__('Aucun') => '',
                 'Bulle Groupe' => 'bulle',
                 'Bourbon / Suggestions' => 'bourbon',
                 'Avery' => 'avery',
             ),
         );
-        $this->forms['form'] = array('label' => __('Formulaire'),
+        $this->forms['form'] = array('label' => $this->__('Formulaire'),
             'fieldsnames' => array('form'));
 
-        $this->fields['cookieConsent'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Message cookie'));
-        $this->fields['cookieConsentMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Texte du consentement'));
-        $this->fields['cookieConsentAutoclose'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __('Masquer automatiquement après x secondes'));
-        $this->forms['privacy'] = array('label' => __('Respect de la vie privée'),
+        $this->fields['cookieConsent'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Message cookie'));
+        $this->fields['cookieConsentMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Texte du consentement'));
+        $this->fields['cookieConsentAutoclose'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Masquer automatiquement après x secondes'));
+        $this->forms['privacy'] = array('label' => $this->__('Respect de la vie privée'),
             'fieldsnames' => array('cookieConsent', 'cookieConsentMessage', 'cookieConsentAutoclose'));
 
         //.
-        $this->fields['basket'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Panier activé'), 'grade' => 5);
-        $this->fields['cartIcon'] = ['type' => 'combo', 'datas' => [__('Sac') => 'nav-basket', __('Caddie') => 'nav-cart-caddie', __('Wishlist') => 'nav-cart-wishlist'], 'default' => 'nav-basket', 'label' => __('Icône'), 'editable' => true, 'grade' => 5];
-        $this->fields['basketManager'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Manager de panier"),
-            'datas' => array(__('Classic') => 'com.fluidbook.player.basket.BasketManager',
+        $this->fields['basket'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Panier activé'), 'grade' => 5);
+        $this->fields['cartIcon'] = ['type' => 'combo', 'datas' => [$this->__('Sac') => 'nav-basket', $this->__('Caddie') => 'nav-cart-caddie', $this->__('Wishlist') => 'nav-cart-wishlist'], 'default' => 'nav-basket', 'label' => $this->__('Icône'), 'editable' => true, 'grade' => 5];
+        $this->fields['basketManager'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => $this->__("Manager de panier"),
+            'datas' => array($this->__('Classic') => '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',
@@ -709,131 +709,131 @@ class wsBookParametres extends wsParametres
                 'Thiriet' => 'Thiriet',
             ), 'grade' => 5);
 
-        $this->fields['cartLinkAppearance'] = ['type' => 'combo', 'default' => 'link', 'editable' => true, 'label' => __('Apparence des liens panier'), 'grade' => 3, 'datas' => [__('Lien') => 'link', __('Boutons + et - avec overlay') => 'overlay']];
+        $this->fields['cartLinkAppearance'] = ['type' => 'combo', 'default' => 'link', 'editable' => true, 'label' => $this->__('Apparence des liens panier'), 'grade' => 3, 'datas' => [$this->__('Lien') => 'link', $this->__('Boutons + et - avec overlay') => 'overlay']];
         $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => __('Fichier contenant les références produits'), 'dir' => 'commerce');
+            'label' => $this->__('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => $this->__('Fichier contenant les références produits'), 'dir' => 'commerce');
         $this->fields['basketImages'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Images des produits'), 'grade' => 3,
+            'label' => $this->__('Images des produits'), 'grade' => 3,
             'multiple' => true, 'dir' => 'commerce');
         $this->fields['basketPDFBackground'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Fond du PDF (bon de commande)'), 'grade' => 5, 'fileFilter' => $epsFilter, 'hint' => __('Fond du bon de commande'), 'dir' => 'commerce');
+            'label' => $this->__('Fond du PDF (bon de commande)'), 'grade' => 5, 'fileFilter' => $epsFilter, 'hint' => $this->__('Fond du bon de commande'), 'dir' => 'commerce');
         $this->fields['cartHeaderImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Header panier'), 'grade' => 3, 'fileFilter' => $imageFilter, 'dir' => 'commerce'];
+            'label' => $this->__('Header panier'), 'grade' => 3, 'fileFilter' => $imageFilter, 'dir' => 'commerce'];
         $this->fields['cartHeaderMobileImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Header panier (mobile)'), 'grade' => 3, 'fileFilter' => $imageFilter, 'dir' => 'commerce'];
+            'label' => $this->__('Header panier (mobile)'), 'grade' => 3, 'fileFilter' => $imageFilter, 'dir' => 'commerce'];
         $this->fields['cartExtraSettings'] = ['type' => 'textarea', 'default' => '', 'editable' => true,
-            'label' => __('Paramètres panier'), 'grade' => 3];
+            'label' => $this->__('Paramètres panier'), 'grade' => 3];
 
 
-        $this->forms['basket'] = array('label' => __('Panier'),
+        $this->forms['basket'] = array('label' => $this->__('Panier'),
             'fieldsnames' => array('basket', 'basketManager', '|', 'cartIcon', 'cartLinkAppearance', '|', 'basketReferences', 'basketImages', '|', 'cartHeaderImage', 'cartHeaderMobileImage', 'cartExtraSettings'));
         // .
-        $this->fields['offlineLink'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du Fluidbook"), 'hint' => __('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'));
-        $this->fields['offlineTitle'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'application"));
-        $this->fields['offlineWindowsInstallPath'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Chemin d\'installation par défaut'), 'hint' => __('Par défaut') . ': %LOCALAPPDATA%/%title%'];
-        $this->fields['offlineWindowsProfilePath'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Répertoire de stockage du profile'), 'hint' => __('Par défaut') . ': %LOCALAPPDATA%/%title%'];
-        $this->fields['offlineEnableAdvancedPrinting'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le menu d\'impression avancée')];
-        $this->fields['debugConsole'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer la console de débuggage')];
-        $this->forms['offline'] = array('label' => __('Version offline'),
+        $this->fields['offlineLink'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__("URL du Fluidbook"), 'hint' => $this->__('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'));
+        $this->fields['offlineTitle'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'application"));
+        $this->fields['offlineWindowsInstallPath'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Chemin d\'installation par défaut'), 'hint' => $this->__('Par défaut') . ': %LOCALAPPDATA%/%title%'];
+        $this->fields['offlineWindowsProfilePath'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Répertoire de stockage du profile'), 'hint' => $this->__('Par défaut') . ': %LOCALAPPDATA%/%title%'];
+        $this->fields['offlineEnableAdvancedPrinting'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le menu d\'impression avancée')];
+        $this->fields['debugConsole'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer la console de débuggage')];
+        $this->forms['offline'] = array('label' => $this->__('Version offline'),
             'fieldsnames' => array('offlineTitle', 'offlineLink', '|', 'offlineWindowsInstallPath', 'offlineWindowsProfilePath', '|', 'offlineEnableAdvancedPrinting', '|', 'debugConsole'));
 
         $this->fields['mobilefirstFluidbookId'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => 'Identifiant du fluidbook "Mobile first"', 'grade' => 5];
         $this->fields['mobilefirstBreakpoint'] = ['type' => 'text', 'default' => '640', 'editable' => true, 'label' => 'Breakpoint du passage à la version "Mobile first" (en pixels)', 'grade' => 5];
-        $this->forms['mobilefirst'] = ['label' => __('Mobile first'),
+        $this->forms['mobilefirst'] = ['label' => $this->__('Mobile first'),
             'fieldsnames' => ['mobilefirstFluidbookId', 'mobilefirstBreakpoint']];
 
 
-        $this->fields['phonegapId'] = array('type' => 'text', 'default' => 'com.fluidbook.phonegap.$id', 'editable' => true, 'label' => __("Identifiant de l'identifiant"), 'grade' => 5, 'hint' => __('De la forme') . ' com.fluidbook.phonegap.xxxxx');
-        $this->fields['phonegapVersion'] = array('type' => 'text', 'default' => '1.0.0', 'editable' => true, 'label' => __("Version de l'application"), 'grade' => 5, 'hint' => __('De la forme') . ' 1.2.3');
-        $this->fields['phonegapPlugins'] = array('type' => 'textarea', 'default' => 'ChildBrowser', 'editable' => true, 'label' => __('Plugins Phonegap'), 'grade' => 5);
+        $this->fields['phonegapId'] = array('type' => 'text', 'default' => 'com.fluidbook.phonegap.$id', 'editable' => true, 'label' => $this->__("Identifiant de l'identifiant"), 'grade' => 5, 'hint' => $this->__('De la forme') . ' com.fluidbook.phonegap.xxxxx');
+        $this->fields['phonegapVersion'] = array('type' => 'text', 'default' => '1.0.0', 'editable' => true, 'label' => $this->__("Version de l'application"), 'grade' => 5, 'hint' => $this->__('De la forme') . ' 1.2.3');
+        $this->fields['phonegapPlugins'] = array('type' => 'textarea', 'default' => 'ChildBrowser', 'editable' => true, 'label' => $this->__('Plugins Phonegap'), 'grade' => 5);
         $defaultScreenshots = "P,0\nL,2\nL,index";
-        $this->fields['appScreenshots'] = array('type' => 'textarea', 'default' => $defaultScreenshots, 'editable' => true, 'label' => 'Générer les screenshots', 'grade' => 5, '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))'));
+        $this->fields['appScreenshots'] = array('type' => 'textarea', 'default' => $defaultScreenshots, 'editable' => true, 'label' => 'Générer les screenshots', 'grade' => 5, 'hint' => $this->__('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))'));
 
-        $this->forms['phonegap'] = array('label' => __('Applications mobile'),
+        $this->forms['phonegap'] = array('label' => $this->__('Applications mobile'),
             'fieldsnames' => array('phonegapId', 'phonegapVersion', 'phonegapPlugins', 'appScreenshots'));
 
-        $this->fields['secureURL'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('URL de sécurisation'), 'grade' => 5, 'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'));
-        $this->fields['secureURLRedirect'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('Redirection'), 'grade' => 5, 'hint' => __("Si l'authentification échoue, redirection vers cette adresse"));
+        $this->fields['secureURL'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__('URL de sécurisation'), 'grade' => 5, 'hint' => $this->__('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'));
+        $this->fields['secureURLRedirect'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__('Redirection'), 'grade' => 5, 'hint' => $this->__("Si l'authentification échoue, redirection vers cette adresse"));
         $this->fields['secureClientSidePassword'] = ['type' => 'freefile', 'label' => 'Sécurisation par mot de passe côté client', 'editable' => true, 'default' => '', 'grade' => 3, 'fileFilter' => $htmlFilter];
         $this->fields['secureClientSidePasswordCredentials'] = ['type' => 'textarea', 'label' => 'Utilisateurs / mots de passe', 'editable' => true, 'default' => '', 'grade' => 3, 'hint' => 'Format user:password par ligne'];
-        $this->fields['preventRightClick'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Essayer d'empêcher le clic droit"), 'grade' => 1);
-        $this->fields['restrictPrint'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Restreindre l'impression"), 'grade' => 5);
-        $this->fields['restrictDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Restreindre le téléchargement du pdf"), 'grade' => 5);
-        $this->fields['restrictSendBookmark'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Restreindre l'envoi de marques-pages"), 'grade' => 5);
-        $this->fields['restrictPrintDownload'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), 'grade' => 5, 'hint' => __("Ne pas indiquer le ?")];
-        $this->fields['recaptcha'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Activer reCATPCHA v3 (clé du site)')];
-        $this->forms['secure'] = array('label' => __('Sécurisation'),
+        $this->fields['preventRightClick'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Essayer d'empêcher le clic droit"), 'grade' => 1);
+        $this->fields['restrictPrint'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Restreindre l'impression"), 'grade' => 5);
+        $this->fields['restrictDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Restreindre le téléchargement du pdf"), 'grade' => 5);
+        $this->fields['restrictSendBookmark'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Restreindre l'envoi de marques-pages"), 'grade' => 5);
+        $this->fields['restrictPrintDownload'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), 'grade' => 5, 'hint' => $this->__("Ne pas indiquer le ?")];
+        $this->fields['recaptcha'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Activer reCATPCHA v3 (clé du site)')];
+        $this->forms['secure'] = array('label' => $this->__('Sécurisation'),
             'fieldsnames' => array('secureURL', 'secureURLRedirect', '|', 'secureClientSidePassword', 'secureClientSidePasswordCredentials', '|', 'preventRightClick', '|', 'restrictPrintDownload', 'restrictPrint', 'restrictDownload', 'restrictSendBookmark', '|', 'recaptcha'));
 
-        $this->fields['home'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Accueil de l'interface multibrochure"), 'grade' => 5);
-        $this->fields['multilang'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Langues'), 'hint' => __('Code langue') . ',' . __('Code pays') . ',' . __('URL'));
-        $this->fields['country'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Pays de la brochure'));
-        $this->fields['multilangDisplay'] = array('type' => 'combo', 'default' => 'lang', 'editable' => true, 'label' => __('Affichage'),
-            'datas' => array(__('Langue') => 'lang',
-                __('Langue') . ' (' . __('Pays') . ')' => 'lang_country',
-                __('Pays') . ' (' . __('Langue') . ')' => 'country_lang'));
-        $this->forms['multibrochure'] = array('label' => __('Multibrochure'),
+        $this->fields['home'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Accueil de l'interface multibrochure"), 'grade' => 5);
+        $this->fields['multilang'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Langues'), 'hint' => $this->__('Code langue') . ',' . $this->__('Code pays') . ',' . $this->__('URL'));
+        $this->fields['country'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Pays de la brochure'));
+        $this->fields['multilangDisplay'] = array('type' => 'combo', 'default' => 'lang', 'editable' => true, 'label' => $this->__('Affichage'),
+            'datas' => array($this->__('Langue') => 'lang',
+                $this->__('Langue') . ' (' . $this->__('Pays') . ')' => 'lang_country',
+                $this->__('Pays') . ' (' . $this->__('Langue') . ')' => 'country_lang'));
+        $this->forms['multibrochure'] = array('label' => $this->__('Multibrochure'),
             'fieldsnames' => array('home', 'country', 'multilangDisplay', 'multilang'));
 
-        $this->fields['plv'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer le mode PLV'), 'grade' => 3);
-        $this->fields['plvTimer'] = array('type' => 'integer', 'min' => 1, 'max' => 60, 'default' => 5, 'editable' => true, 'label' => __('Temps'), 'grade' => 3);
-        $this->fields['plvMode'] = array('type' => 'combo', 'default' => 'first', 'editable' => true, 'label' => __('Arrivé à la dernière page'), 'grade' => 3,
-            'datas' => array(__('Remonter vers la première page') => 'back',
-                __('Recommencer à la première page') => 'first'));
-        $this->forms['plv'] = array('label' => __('Mode PLV'),
+        $this->fields['plv'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer le mode PLV'), 'grade' => 3);
+        $this->fields['plvTimer'] = array('type' => 'integer', 'min' => 1, 'max' => 60, 'default' => 5, 'editable' => true, 'label' => $this->__('Temps'), 'grade' => 3);
+        $this->fields['plvMode'] = array('type' => 'combo', 'default' => 'first', 'editable' => true, 'label' => $this->__('Arrivé à la dernière page'), 'grade' => 3,
+            'datas' => array($this->__('Remonter vers la première page') => 'back',
+                $this->__('Recommencer à la première page') => 'first'));
+        $this->forms['plv'] = array('label' => $this->__('Mode PLV'),
             'fieldsnames' => array('plv', 'plvTimer', 'plvMode'));
 
 
-        $this->fields['themeEnableAfterSearch'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Afficher l'image supplémentaire à droite du moteur de recherche"), 'grade' => 3);
-        $this->forms['theme'] = array('label' => __('Options du thème'),
+        $this->fields['themeEnableAfterSearch'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Afficher l'image supplémentaire à droite du moteur de recherche"), 'grade' => 3);
+        $this->forms['theme'] = array('label' => $this->__('Options du thème'),
             'fieldsnames' => array('themeEnableAfterSearch'));
 
-        $this->fields['forceCompileOnDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Forcer la compilation lors du téléchargement'), 'grade' => 3);
-        $this->fields['embedAllLibraries'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Intégrer toutes les bibliothèques JS'), 'grade' => 3);
-        $this->fields['htmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => true, 'label' => __('Extension des fichiers html'), 'grade' => 5, 'hint' => __('Ex : php, htm, html, phtml, asp, aspx'), 'grade' => 5);
-        $this->fields['actualHtmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => false, 'label' => __('Extension des fichiers html réellement appliquée au fluidbook'), 'grade' => 5, 'hint' => __('Ex : php, htm, html, phtml, asp'), 'grade' => 5);
-        $this->fields['htmlPrepend'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code à insérer en tête des fichiers'), 'grade' => 5);
-        $this->fields['baseUrl'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Base de l\'url'), 'grade' => 5,);
+        $this->fields['forceCompileOnDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Forcer la compilation lors du téléchargement'), 'grade' => 3);
+        $this->fields['embedAllLibraries'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Intégrer toutes les bibliothèques JS'), 'grade' => 3);
+        $this->fields['htmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => true, 'label' => $this->__('Extension des fichiers html'), 'grade' => 5, 'hint' => $this->__('Ex : php, htm, html, phtml, asp, aspx'), 'grade' => 5);
+        $this->fields['actualHtmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => false, 'label' => $this->__('Extension des fichiers html réellement appliquée au fluidbook'), 'grade' => 5, 'hint' => $this->__('Ex : php, htm, html, phtml, asp'), 'grade' => 5);
+        $this->fields['htmlPrepend'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code à insérer en tête des fichiers'), 'grade' => 5);
+        $this->fields['baseUrl'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Base de l\'url'), 'grade' => 5,);
 
-        $this->forms['package'] = array('label' => __('Option d\'export'),
+        $this->forms['package'] = array('label' => $this->__('Option d\'export'),
             'fieldsnames' => array('htmlExtension', "actualHtmlExtension", 'htmlPrepend', 'baseUrl', 'forceCompileOnDownload', 'embedAllLibraries'));
 
-        $this->fields['disableDemo'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Désactiver le lien de démo'), 'grade' => 5);
-        $this->fields['redirectDemo'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Rediriger le lien de démo vers'), 'grade' => 5);
-        $this->forms['demo'] = array('label' => __('Lien de démo'),
+        $this->fields['disableDemo'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Désactiver le lien de démo'), 'grade' => 5);
+        $this->fields['redirectDemo'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Rediriger le lien de démo vers'), 'grade' => 5);
+        $this->forms['demo'] = array('label' => $this->__('Lien de démo'),
             'fieldsnames' => array('disableDemo', 'redirectDemo'));
 
 
-        $this->fields['gamify_coins_pages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Attribuer des coins lors de la visite des pages'));
-        $this->forms['gamify'] = ['label' => __('Gamification'),
+        $this->fields['gamify_coins_pages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Attribuer des coins lors de la visite des pages'));
+        $this->forms['gamify'] = ['label' => $this->__('Gamification'),
             'fieldsnames' => ['gamify_coins_pages']];
 
 
-        $this->fields['scorm_enable'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer SCORM'), 'grade' => 5);
-        $this->fields['scorm_version'] = array('type' => 'combo', 'default' => '1.2', 'editable' => true, 'label' => __('Version du standard SCORM'), 'grade' => 5,
+        $this->fields['scorm_enable'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer SCORM'), 'grade' => 5);
+        $this->fields['scorm_version'] = array('type' => 'combo', 'default' => '1.2', 'editable' => true, 'label' => $this->__('Version du standard SCORM'), 'grade' => 5,
             'datas' => array(
-                __('SCORM 1.2') => '1.2',
-                __('SCORM 2004 3rd edition') => '2004.3',
-                __('SCORM 2004 4th edition') => '2004',
+                $this->__('SCORM 1.2') => '1.2',
+                $this->__('SCORM 2004 3rd edition') => '2004.3',
+                $this->__('SCORM 2004 4th edition') => '2004',
             )
         );
-        $this->fields['scorm_id'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Identifiant SCORM'), 'grade' => 5);
-        $this->fields['scorm_org'] = array('type' => 'text', 'default' => 'ACME-ORG-1350650111249', 'editable' => true, 'label' => __('Organisation SCORM'), 'grade' => 5);
-        $this->fields['scorm_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Titre SCORM'), 'grade' => 5, 'hint' => __('Laisser vide pour utiliser le titre de la publication'));
-        $this->fields['scorm_variables'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Variables SCORM'), 'grade' => 5, 'hint' => __('Laisser vide pour utiliser le titre de la publication'));
-        $this->fields['scorm_score'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer le support du score'), 'grade' => 5);
-        $this->fields['scorm_score_min'] = array('type' => 'integer', 'min' => 0, 'max' => 100, 'default' => 50, 'editable' => true, 'label' => __('Score minimal pour marquer le contenu comme réussi'), 'grade' => 5);
-        $this->fields['scorm_quiz_as_questionnaire'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), 'grade' => 5);
-        $this->fields['scorm_quizdata'] = array('type' => 'freefile', 'editable' => true, 'default' => '', 'label' => __('Données de quiz'));
+        $this->fields['scorm_id'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Identifiant SCORM'), 'grade' => 5);
+        $this->fields['scorm_org'] = array('type' => 'text', 'default' => 'ACME-ORG-1350650111249', 'editable' => true, 'label' => $this->__('Organisation SCORM'), 'grade' => 5);
+        $this->fields['scorm_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Titre SCORM'), 'grade' => 5, 'hint' => $this->__('Laisser vide pour utiliser le titre de la publication'));
+        $this->fields['scorm_variables'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Variables SCORM'), 'grade' => 5, 'hint' => $this->__('Laisser vide pour utiliser le titre de la publication'));
+        $this->fields['scorm_score'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer le support du score'), 'grade' => 5);
+        $this->fields['scorm_score_min'] = array('type' => 'integer', 'min' => 0, 'max' => 100, 'default' => 50, 'editable' => true, 'label' => $this->__('Score minimal pour marquer le contenu comme réussi'), 'grade' => 5);
+        $this->fields['scorm_quiz_as_questionnaire'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), 'grade' => 5);
+        $this->fields['scorm_quizdata'] = array('type' => 'freefile', 'editable' => true, 'default' => '', 'label' => $this->__('Données de quiz'));
         $this->fields['scorm_complete_coins'] = ['type' => 'integer', 'default' => 0, 'label' => 'Marquer le cours comme "Complete" lorsque le visiteur accumule X coins', 'editable' => true];
         $this->fields['scorm_complete_on_exit'] = ['type' => 'boolean', 'default' => false, 'label' => 'Marquer le cours comme "Complete" à la fermeture de la fenêtre', 'editable' => true];
         $this->fields['scorm_complete_on_last_page'] = ['type' => 'boolean', 'default' => false, 'label' => 'Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page', 'editable' => true];
-        $this->fields['scorm_force_attempts'] = ['type' => 'boolean', 'default' => false, 'label' => __('Forcer la création d\'un "attempt" à chaque ouverture'), 'editable' => true];
-        $this->fields['scorm_pass_on_complete'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Marquer le cours comme Pass lorsqu'il est terminé") . ' (' . __('SCORM 2004 seulement') . ')'];
-        $this->fields['scorm_score100_on_complete'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Marquer le cours comme réussi à 100% lorsqu'il est terminé")];
-        $this->fields['scorm_commit_immediately'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Envoyer les données immédiatement au LMS") . ' (' . __('Peut provoquer des ralentissement sur certains LMS') . ')'];
+        $this->fields['scorm_force_attempts'] = ['type' => 'boolean', 'default' => false, 'label' => $this->__('Forcer la création d\'un "attempt" à chaque ouverture'), 'editable' => true];
+        $this->fields['scorm_pass_on_complete'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Marquer le cours comme Pass lorsqu'il est terminé") . ' (' . $this->__('SCORM 2004 seulement') . ')'];
+        $this->fields['scorm_score100_on_complete'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Marquer le cours comme réussi à 100% lorsqu'il est terminé")];
+        $this->fields['scorm_commit_immediately'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Envoyer les données immédiatement au LMS") . ' (' . $this->__('Peut provoquer des ralentissement sur certains LMS') . ')'];
 
-        $this->forms['scorm'] = array('label' => __('SCORM'),
+        $this->forms['scorm'] = array('label' => $this->__('SCORM'),
             'fieldsnames' => array('scorm_enable', 'scorm_version', 'scorm_id', 'scorm_org', 'scorm_title', 'scorm_variables', '|', 'scorm_complete_on_exit', 'scorm_complete_on_last_page', 'scorm_complete_coins', '|', 'scorm_pass_on_complete', 'scorm_score100_on_complete', '|', 'scorm_quizdata', 'scorm_score', 'scorm_score_min', 'scorm_quiz_as_questionnaire', '|', 'scorm_force_attempts', 'scorm_commit_immediately'));
 
         $versions = wsUrl::getFluidbookVersions(false);
@@ -843,12 +843,12 @@ class wsBookParametres extends wsParametres
             if (in_array($k, $ignore)) {
                 continue;
             }
-            $this->fields['download_' . $k] = ['type' => 'boolean', 'editable' => true, 'default' => false, 'label' => $version['title'], 'grade' => 3];
+            $this->fields['download_' . $k] = ['type' => 'boolean', 'editable' => true, 'default' => false, 'label' => $this->__($version['title']), 'grade' => 3];
             $fields[] = 'download_' . $k;
         }
         $this->fields['download_online']['default'] = true;
 
-        $this->forms['downloads'] = array('label' => __('Versions disponibles au téléchargement'),
+        $this->forms['downloads'] = array('label' => $this->__('Versions disponibles au téléchargement'),
             'fieldsnames' => $fields);
     }
 }
index bb76de7df4851bbf175af8ad1f70ce39e1ad35f5..adab4fa146911dbac374df7caf78fa39edd0553d 100644 (file)
 <?php
 
+### THIS FILE IS GENERATED BY THE FLUIDBOOK TOOLBOX ###
+### Any manual change could be overriden
+### Any change has to be done on the file app/Models/Traits/PublicationSettings.php (in Fluidbook Toolbox)
+
 class wsBookParametres extends wsParametres
 {
-    public static $fonts = [
-        'Open Sans (défaut)' => 'OpenSans', 'Montserrat' => 'Montserrat', 'Arial, Helvetica, sans-serif (police système)' => 'Arial', 'Police système sans-serif' => 'sans-serif'];
 
-    /**
-     * wsBookParametres::initFields()
-     *
-     * @return
-     */
     protected function initFields()
     {
         parent::initFields();
-        //             if (is_null($this->parent)) {
-        //                     return;
-        //             }
-
-        // .
-        $swfFilter = ['name' => $this->__('Animation SWF') . ' (*.swf)', 'extensions' => '*.swf'];
-        $multimediaFilter = ['name' => $this->__('Archive ZIP') . ' (*.zip)', 'extensions' => '*.zip'];
-        $pdfFilter = ['name' => $this->__('Document PDF') . ' (*.pdf)', 'extensions' => '*.pdf'];
-
-        $basketFilter = ['name' => $this->__('Liste de produits'), 'extensions' => ' (*.xml, *.xlsx)'];
-        $articlesFilter = ['name' => $this->__('Liste d\'articles') . ' (*.xml)', 'extensions' => '*.xml'];
-        $htmlFilter = ['name' => $this->__('Fichier HTML') . ' (*.html)', 'extensions' => '*.html'];
-        $imageFilter = ['name' => $this->__('Images') . ' (*.jpg, *.png)', 'extensions' => '*.jpg;*.jpeg;*.png'];
-        $epsFilter = ['name' => $this->__('Fichier vectoriel') . ' (*.ai, *.eps)', 'extensions' => '*.ai;*.eps'];
-        $svgFilter = ['name' => $this->__('Fichier SVG') . ' (*.svg)', 'extensions' => '*.svg'];
-        $tabsFilter = ['name' => $this->__('Fichier onglets') . ' (*.svg, *.zip)', 'extensions' => '*.svg;*.zip'];
-        $imageExtraFilter = ['name' => $this->__('Images') . ' (*.svg, *.jpg, *.png, *.gif)', 'extensions' => '*.svg;*.jpg;*.png;*.gif'];
-        $soundFilter = ['name' => $this->__('Fichier sonore') . ' (*.mp3, *.wav)', 'extensions' => '*.mp3;*.wav'];
-        $seoFilter = ['name' => $this->__('Fichier Excel') . ' (.xlsx)', 'extensions' => '*.xlsx'];
-        $cssFilter = ['name' => $this->__('Feuille de style') . ' (.css)', 'extensions' => '*.css'];
-
-
-        $target = [$this->__("Dans la fenêtre courrante") => '_self',
-            $this->__('Dans un nouvel onglet') => '_blank'];
-
-        $branches = array('master : git (stable)' => 'stable',
-            'master : local (dev)' => 'dev');
-        $gitbranches = json_decode(file_get_contents(WS_CACHE . '/activebranches'));
-        foreach ($gitbranches as $b) {
-            if ($b == 'master') {
-                continue;
-            }
-            $branches[$b . ' : git'] = $b . '|git';
-            $branches[$b . ' : local'] = $b . '|local';
-        }
-        $extraVisibility = [
-            $this->__('Navigation horizontale') => 'horizontal',
-            $this->__('Navigation burger') => 'burger',
-            $this->__('Navigations horizontale et burger') => 'both'];
-
-        $extraType = [
-            $this->__('Icône + Label') => 'icon',
-            $this->__('Image') => 'image'];
-
-        $pagesNumbers = array($this->__('Virtuelle') => 'virtual',
-            $this->__('Physique') => 'physical');
-
-        $this->fields['mobileLVersion'] = array('type' => 'combo', 'default' => 'stable', 'editable' => true,
-            'label' => $this->__('Version logicielle'), 'grade' => 1,
-            'datas' => $branches
-        );
-        $this->fields['mobileVersion'] = array('type' => 'combo', 'default' => 'html5-desktop', 'editable' => true, 'label' => $this->__('Version mobile'), 'grade' => 3,
-            'datas' => array($this->__('Rediriger vers le PDF') => 'pdf',
-                $this->__('Version HTML5 recommandée (vecteurs sur desktop)') => 'html5-desktop',
-                $this->__('Version HTML5 vecteurs') => 'html5',
-                $this->__("Version HTML5 en images") => 'html5-images')
-        );
-
-        // Deprecated
-        $this->fields['version'] = array('type' => 'combo', 'default' => '2', 'editable' => true, 'label' => $this->__('Version'), 'datas' => array('1' => '1', '2' => '2'), 'grade' => 3);
-        $this->fields['email_editable'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Permettre au lecteur de modifier le corps de l'email"));
-        $this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Demander au destinataire un accusé de réception"), 'grade' => 3);
-        $this->fields['sendasfluidbook'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Envoyer le mail comme Fluidbook"), 'grade' => 3, 'hint' => $this->__("L'expéditeur apparaîtra en reply-to"));
-        $this->fields['email_mailto'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Envoyer le mail via le client mail du visiteur (mailto:)"), 'grade' => 3);
-        $this->fields['googleplus'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Google +'));
-        $this->fields['viadeo'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Viadeo'));
-        $this->fields['customSharer'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => $this->__("Classe personnalisée de partage"), 'grade' => 5);
-        $this->fields['friendWidth'] = array('type' => 'integer', 'default' => 319, 'editable' => false, 'label' => $this->__('Largeur du menu'), 'grade' => 5);
-        $this->fields['friendHeight'] = array('type' => 'integer', 'default' => 500, 'editable' => false, 'label' => $this->__('Largeur du menu'), 'grade' => 5);
-        $this->fields['visualisationMode'] = array('type' => 'combo', 'default' => '3', 'editable' => false, 'label' => $this->__("Mode de visualisation 3D"),
-            'datas' => array($this->__('Mode 3D') => '0',
-                $this->__('Mode 2D (caméra fixe et pages à plat)') => '1',
-                $this->__("Laisser le choix à l'utilisateur (mode 3D par défaut)") => '2',
-                $this->__("Laisser le choix à l'utilisateur (mode 2D par défaut)") => '3'));
-        $this->fields['antialiasReading'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Amélioration de la lisibilité en mode 2D"));
-        $this->fields['pagesBaseAngle'] = array('type' => 'integer', 'default' => 2, 'editable' => false, 'label' => $this->__('Angle de base entre les pages'), 'grade' => 3,
-            'hint' => $this->__("0 : Publication à plat") . "\n" . $this->__('2 : Valeur par défaut'));
-        $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => false, 'label' => $this->__('Nombre de pages à précharger'), 'grade' => 3);
-        $this->fields['tooltipTimer'] = array('type' => 'float', 'default' => 3, "editable" => true, 'label' => $this->__("Temps maximum d'apparition des infos-bulles (en secondes)"));
-        $this->fields['indexAutoScroll'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Activer le scroll automatique'));
-        $this->fields['printCoverWithMarks'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Imprimer les couvertures avec les pages marquées"), 'grade' => 3);
-        $this->fields['ambientSound'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => $this->__('Ambiance sonore'), 'grade' => 3, 'fileFilter' => $soundFilter);
-        $this->fields['ambientSoundVolume'] = array('type' => 'integer', 'default' => 50, 'editable' => false,
-            'label' => $this->__("Volume de l'ambiance sonore"),
-            'min' => 0, 'max' => 100);
-        $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Téléchargement des versions offline'), "hint" => $this->__('Valable si le téléchargement avancé est activé'), 'grade' => 3);
-        $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => false, 'label' => $this->__("Mode de zoom"), 'grade' => 3,
-            'datas' => array($this->__('Normal') => '0',
-                $this->__('Une page') => '1',
-                $this->__('Zoom désactivé') => '2'));
-        $this->fields['displayChaptersLine'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__("Affiche une ligne entre le label et le numéro de page"), 'grade' => 5);
-        $this->fields['fullExternalChapters'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__("Sommaire totalement personnalisé"), 'grade' => 3, 'hint' => $this->__('Supprime la flèche de fermeture, titre prédéfini et couleur de fond'));
-        $this->fields['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'));
-        $this->fields['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => false, 'label' => $this->__("Position du sommaire"),
-            'datas' => array($this->__('Centré') => 'center',
-                $this->__("Aligné sur l'icône") => 'chaptersIcon'));
-        $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Liens visibles en permanence'), 'grade' => 3);
-        $this->fields['linkTooltipManager'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => $this->__("Gestionnaire des info-bulles"), 'grade' => 5);
-        $this->fields['linkMultimediaPerformanceMode'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Mode perfomance pour les liens multimédia'), 'grade' => 5);
-        $this->fields['linkMultimediaQuality'] = array('type' => 'float', 'default' => 1.0, 'editable' => false, 'label' => $this->__('Qualité de rendu des animations'), 'grade' => 5);
-        $this->fields['linkCornerSize'] = array('type' => 'integer', 'default' => 10, 'editable' => false, 'label' => $this->__('Taille des liens de coins de page'), 'hint' => $this->__("Pourcentage de la largeur de la page"));
-        $this->fields['videoReset'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Réinitialiser les vidéos après la lecture'), 'grade' => 3);
-        $this->fields['videoBigPlay'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Afficher le gros bouton Play'), 'grade' => 3);
-        $this->fields['alwaysHTML5'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Toujours utiliser la version HTML5'), 'grade' => 1);
-        $this->fields['html5priority'] = array('type' => 'combo', 'default' => 'true', 'editable' => false, 'label' => $this->__("Rediriger vers la version HTML5"), 'grade' => 1,
-            'datas' => array($this->__('Si l\'utilisateur a un appareil tactile') => 'false',
-                $this->__('Si flash n\'est pas installé') => 'notinstalled',
-                $this->__("Si flash n'est pas pas installé ou bloqué") => 'true'));
-        $this->fields['flashBlockedWait'] = array('type' => 'float', 'default' => 1.5, 'editable' => false, 'label' => $this->__("Temps d'attente avant de considérer flash comme bloqué"));
-        $this->fields['widget'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Générer le widget'), 'grade' => 3);
-        $this->fields['widgetCover'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Afficher la couverture') . ')', 'grade' => 3);
-        $this->fields['widgetSize'] = array('type' => 'integer', 'default' => 200, 'editable' => false, 'label' => $this->__('Optimiser pour une hauteur de (en pixels)'), 'grade' => 3);
-        $this->fields['widgetQuality'] = array('type' => 'integer', 'default' => 85, 'min' => 0, 'max' => 100, 'editable' => false, 'label' => $this->__('Qualité JPEG'), 'grade' => 3);
-        $this->fields['widgetStart'] = array('type' => 'integer', 'default' => 1, 'editable' => false, 'label' => $this->__('Page de début'), 'grade' => 3);
-        $this->fields['widgetEnd'] = array('type' => 'integer', 'default' => 8, 'editable' => false, 'label' => $this->__('Page de fin'), 'grade' => 3);
-//        $this->forms['widget'] = array('label' => $this->__('Widget') . ' (' . $this->__('Mini Fluidbook') . ')',
-//            'fieldsnames' => array('widget', 'widgetCover', 'widgetSize', 'widgetQuality', 'widgetStart', 'widgetEnd'));
-        $this->fields['extras'] = array('type' => 'textarea', 'default' => '', 'editable' => false, 'label' => $this->__('Extras'), 'grade' => 3);
-        $this->fields['v1SWF'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => $this->__('Index.swf spécifique'), 'grade' => 5, 'fileFilter' => $swfFilter);
-//        $this->forms['v1'] = array('label' => $this->__('Options spécifiques au fluidbook version 1'),
-//            'fieldsnames' => array('extras', 'v1SWF'));
-        $this->fields['ongletsXML'] = array('type' => 'textarea', 'default' => '', 'editable' => false, 'label' => $this->__('XML de configuration des onglets'), 'grade' => 5);
-        $this->fields['ongletsSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => $this->__('SWF pour onglets personnalisés'), 'grade' => 3, 'fileFilter' => $swfFilter);
-        $this->fields['tabs2DSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => false,
-            'label' => $this->__('SWF pour onglets 2D'), 'grade' => 3, 'fileFilter' => $swfFilter);
-        $this->fields['flatTabsAbsolute'] = array('type' => 'boolean', 'default' => false, "editable" => true,
-            'label' => $this->__("Positionnement relatif à l'interface"), 'grade' => 5);
-//        $this->forms['flashtabs'] = array('label' => $this->__('Onglets Flash'),
-//            'fieldsnames' => array('ongletsSWF', 'ongletsXML', '|', 'tabs2DSWF', 'flatTabsAbsolute'));
-        $this->fields['viewMode'] = array('type' => 'combo', 'default' => '0', 'editable' => false, 'label' => $this->__("Mode de visualisation (beta)"),
-            'datas' => array($this->__('Classique') => '0',
-                $this->__("Diaporama") => '1',
-            ),
-            'grade' => 5);
-        $this->fields['mobileServerConfig'] = array('type' => 'boolean', 'default' => false, 'editable' => false, 'label' => $this->__('Inclure les fichiers de configuration serveur'), 'grade' => 3);
-        $this->fields['mobileIconVector'] = array('type' => 'boolean', 'default' => true, 'editable' => false, 'label' => $this->__('Utiliser les icônes vectorielles'));
-//        $this->forms['mobile'] = array('label' => $this->__('Version HTML5'),
-//            'fieldsnames' => array('alwaysHTML5', 'html5priority', 'flashBlockedWait', 'mobileIconVector', 'mobileServerConfig'));
-        $this->fields['externalArchivesBack'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Image de fond'), 'grade' => 3, 'fileFilter' => $imageFilter);
-        $this->fields['archivesLink'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Lien'), 'grade' => 5);
-        $this->fields['printMode'] = array('type' => 'combo', 'default' => 'vector', 'editable' => true, 'label' => $this->__("Mode d'impression"),
-            'datas' => array($this->__('Bitmap') => 'bitmap',
-                $this->__('Vectoriel') => 'vector',
-                $this->__('PDF') => 'pdf'));
-        /** **/
-
-
-        $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de la publication"), 'embed' => false);
-        $this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__("URL du lien de retour au site"));
-        $this->fields['signature'] = array('type' => 'combo', 'default' => '1', 'editable' => true, 'label' => $this->__('Signature'), 'grade' => 3, 'datas' => wsDroits::getSignatures());
-        $this->forms['important'] = array('label' => $this->__('Description de la publication'),
-            'fieldsnames' => array('mobileLVersion', 'mobileVersion', 'title', 'url_link', 'signature'));
-        // .
-        // .
-
-        $this->fields['assetsDir'] = ['type' => 'text', 'label' => $this->__('Utiliser le dossier d\'assets du fluidbook'), 'default' => '', 'editable' => true, 'grade' => 5];
-        $this->fields['linksAssets'] = ['type' => 'freefile', 'label' => $this->__('Charger ou remplacer des fichiers de liens'), 'default' => '', 'editable' => true, 'grade' => 3, 'multiple' => true];
-
-        $this->forms['assets'] = [
-            'label' => $this->__('Assets'),
-            'fieldsnames' => ['assetsDir', 'linksAssets']
-        ];
-        /** * */
-        $this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer les statistiques Fluidbook'), 'grade' => 3);
-        $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Code Google Analytics'), 'size' => 10);
-        $this->fields['googleTagManager'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Code Google Tag Manager'), 'size' => 10);
-        $this->forms['basicStats'] = [
-            'label' => $this->__('Statistiques'),
-            'fieldsnames' => ['stats', 'googleAnalytics', 'googleTagManager'],
-        ];
-
-        $this->fields['email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Corps de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
-
-        $this->fields['facebook_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre du contenu partagé"), 'hint' => $this->__('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'));
-        $this->fields['facebook_description'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Description du contenu partagé"), 'grade' => 1, 'hint' => $this->__('Description proposée sur les fonctions de partage (par défaut, vide)'));
-        $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => $this->__("Contenu Partage court"), 'hint' => $this->__('Contenu du partagé sur les partages courts'));
-        $this->fields['facebook_image'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Miniature affichée'), 'fileFilter' => $imageFilter);
-
-        $this->fields['share'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer les fonctions de partage'));
-        $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('E-mail'));
-        $this->fields['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Facebook'));
-        $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Twitter'));
-        $this->fields['whatsapp'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('WhatsApp'));
-        $this->fields['linkedin'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('LinkedIn'));
-        $this->fields['pinterest'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Pinterest'));
-
-        $this->forms['share'] = array('label' => $this->__('Fonctions de partage'),
-            'fieldsnames' => array('share', '|', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', 'sendasfluidbook', 'email_mailto', '|',
-                'facebook_title', 'facebook_description', 'facebook_image', 'twitter_description', '|',
-                'friend', 'facebook', 'twitter', 'whatsapp', 'linkedin', 'pinterest', '|', 'googleplus', 'viadeo', '|', 'customSharer', '|', 'friendWidth', 'friendHeight'));
-//.
-        $this->fields['seoVersion'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Générer une version pour les moteurs de recherche'));
-        $this->fields['seoRobots'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Autoriser le parcours par les moteurs de recherche'));
-        $this->fields['seoDescription'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Meta tag Description'));
-        $this->fields['seoKeywords'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Meta tag Keywords'));
-        $this->fields['seoAdvanced'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Données SEO par page'), 'grade' => 5, 'fileFilter' => $seoFilter];
-        $this->fields['seoBaseURL'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('URL de base'), 'grade' => 5);
-
-        $this->forms['seo'] = array('label' => $this->__('Optimisation pour les moteurs de recherche'),
-            'fieldsnames' => array('seoVersion', 'seoRobots', 'seoDescription', "seoKeywords", '|', 'seoBaseURL', 'seoAdvanced'));
-
-        // .
-        $this->fields['pages'] = array('type' => 'integer', 'default' => 0, 'editable' => false, 'label' => $this->__('Nombre de pages'));
-        $this->fields['width'] = array('type' => 'float', 'default' => 0, 'editable' => false, 'label' => $this->__('Largeur'));
-        $this->fields['height'] = array('type' => 'float', 'default' => 0, 'editable' => false, 'label' => $this->__('Hauteur'));
-        // .
-
-        $this->fields['mobileTransitions'] = array('type' => 'combo', 'default' => 'flip3d', 'editable' => true, 'label' => $this->__('Transitions entre les pages'), 'grade' => 3,
-            'datas' => array($this->__('Aucune transition') => 'none',
-                $this->__('Opacité') => 'fade',
-                $this->__('Glisser') => 'slide',
-                $this->__('Tourner (rigide)') => 'flip',
-                $this->__('Tourner (souple)') => 'flip3d')
-        );
-        $this->fields['mobileTransitionDuration'] = array('type' => 'float', 'default' => 0.5, 'editable' => true, 'label' => $this->__('Durée de la transition'));
-        $this->fields['mobileTransitionDurationSlide'] = array('type' => 'float', 'default' => 0, 'editable' => true, 'label' => $this->__('Durée de la transition (fade, slide)'), 'hint' => $this->__('Laisser à zéro pour utiliser la valeur générale'));
-        $this->fields['mobileNavigationType'] = array('type' => 'combo', 'default' => 'book', 'editable' => true, 'label' => $this->__('Mode de navigation'), 'grade' => 5,
-            'datas' => array($this->__('Normal (automatique)') => 'book',
-                $this->__('Normal (double page)') => 'landscape',
-                $this->__('Normal (une page)') => 'portrait',
-                $this->__('Mobile first') => 'mobilefirst',
-                $this->__('Magazine tablette') => 'tab')
-        );
-        $this->fields['forceWhiteBackground'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Ajouter un fond blanc aux pages')];
-        $this->fields['rasterizePages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Ecraser les pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
-
-        $this->fields['vectorPages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Conserver les pages en vecteur'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
-        $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Marge supplémentaire horizontale'), 'grade' => 3);
-        $this->fields['mobileExtraXSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Marge supplémentaire horizontale'), 'grade' => 3);
-        $this->fields['extraYSpace'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Marge supplémentaire verticale'), 'grade' => 3);
-        $this->fields['centerBook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Centrer la publication sur les couvertures'), 'grade' => 2);
-        $this->fields['correctCenter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Corriger les lignes blanches entre les pages'), 'grade' => 2);
-        $this->fields['maxResolution'] = array('type' => 'combo', 'default' => 300, 'editable' => true, 'datas' => array('300dpi' => 300, '150dpi' => 150, '125dpi' => 125, '100dpi' => 100), 'grade' => 2, 'label' => $this->__('Résolution maximale des pages'));
-        $this->fields['JPEGQuality'] = array('type' => 'integer', 'default' => 85, 'editable' => true, 'grade' => 2, 'label' => $this->__('Qualité JPEG'));
-        $this->fields['imageFormat'] = array('type' => 'combo', 'default' => 'jpg', 'editable' => true, 'datas' => array(/*$this->__('Le plus léger') => 'best', */
-            'JPEG' => 'jpg', 'PNG' => 'png'), 'grade' => 2, 'label' => $this->__('Format des images'));
-        $this->fields['svgToCanvas'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le rendu svgtocanvas')];
-        $this->fields['svgToCanvasUpscale'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Upscale de la fonction svgtocanvas')];
-        $this->fields['svgTextMethod'] = ['type' => 'combo', 'default' => 'pdftocairo', 'editable' => true, 'label' => $this->__('Méthode d\'extraction des textes en SVG'), 'datas' => [$this->__('Cairo') => 'pdf', $this->__('Mu') => 'mu']];
-        $this->fields['textsThickness'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Epaisseur des textes')];
-        $this->fields['textsThicknessPages'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Appliquer l\'épaisseur des texte sur les pages')];
-        $this->fields['dynamicBackgroundColor'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => 'Couleur de fond dynamique', 'grade' => 3];
-
-
-        $this->forms['3d_mode'] = array('label' => $this->__('Options de visualisation'),
-            'fieldsnames' => array('mobileNavigationType', '|', 'mobileTransitions', 'mobileTransitionDuration', 'mobileTransitionDurationSlide', '|', 'forceWhiteBackground', 'rasterizePages', 'vectorPages', 'visualisationMode', 'antialiasReading', 'correctCenter', 'pagesBaseAngle', 'centerBook', '|', 'extraXSpace', 'mobileExtraXSpace', 'extraYSpace', '|', 'viewMode', '|', 'dynamicBackgroundColor', '|', 'svgToCanvas', 'svgToCanvasUpscale', 'svgTextMethod', 'textsThickness', 'textsThicknessPages', '|', 'imageFormat', 'maxResolution', 'JPEGQuality'));
-
-        $this->fields['rasterizeOnSafari'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Ecraser les pages pour Safari (Mac OS)'), 'grade' => 1);
-        $this->fields['performance3DMode'] = array('type' => 'combo', 'datas' => [$this->__('Tester la machine') => 'auto',
-            $this->__('Haute') => 'highPerf',
-            $this->__('Moyenne') => 'lowPerf',
-            $this->__('Basse') => 'veryLowPerf'], 'default' => 'auto', 'editable' => true, 'label' => $this->__('Performance de la 3D'), 'grade' => 1);
-        $this->forms['performances'] = ['label' => $this->__('Performances'),
-            'fieldsnames' => ['rasterizeOnSafari', 'performance3DMode']];
-
-        $this->fields['maxPages'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__("Nombre de pages maximal affiché à l'ouverture du fluidbook (pas de limite = 0)"), 'grade' => 3);
-
-        $this->fields['mobilePlugins'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Plugin'), 'grade' => 5);
-        $this->forms['general'] = array('label' => $this->__('Fonctionnalités générales'),
-            'fieldsnames' => array('tooltipTimer', 'mobilePlugins', 'preload', 'maxPages', 'pages', 'width', 'height'));
-        //.
-        //
-        $this->fields['navOrder'] = array('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' => $this->__('Ordre des icônes dans la nav'), 'grade' => 3);
-        $this->fields['navOrderH'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Ordre des icônes dans la nav') . ' (' . $this->__('Si différente') . ')', 'grade' => 3);
-        $this->fields['menuBreakpoint'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Breakpoint burger menu'), 'hint' => 'Par défaut 1023px', 'grade' => 3);
-        $this->fields['mobileNavScale'] = array('type' => 'integer', 'default' => 100, 'editable' => true, 'label' => $this->__('Taille du menu (en %)'), 'grade' => 3);
-        $this->forms['menu'] = array('label' => $this->__('Menu'), 'fieldsnames' => ['navOrder', 'navOrderH', '|', 'mobileNavScale', 'menuBreakpoint', '|', 'afterSearchDisplayForHTML', '|']);
-
-        $this->fields['afterSearchDisplayForHTML'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher l\'image après le moteur de recherche sur la version HTML5'), 'grade' => 1);
-        $extraNum = 5;
-        for ($i = 0; $i <= $extraNum; $i++) {
-            if ($i > 0) {
-                $j = $i;
-                $this->fields['navExtraIcon' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Icône supplémentaire') . ' ' . $j, 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraType' . $j] = array('type' => 'combo', 'datas' => $extraType, 'default' => 'icon', 'editable' => true, 'label' => $this->__('Type'));
-                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("URL") . ' ' . $j);
-                $this->fields['navExtraVisibility' . $j] = array('type' => 'combo', 'datas' => $extraVisibility, 'default' => 'both', 'editable' => true, 'label' => $this->__("Visible") . ' ' . $j);
-                $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraIcon' . $j, 'navExtraType' . $j, 'navExtraLink' . $j, 'navExtraVisibility' . $j, '|']);
-            } else {
-                $j = '';
-                $this->fields['navExtraImage' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image pour navigation'), 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraImageMobile' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image pour mobile'), 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("URL"));
-                $this->fields['navExtraTooltip' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Infobulle ou label"));
-                $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraImage' . $j, 'navExtraImageMobile' . $j, 'navExtraLink' . $j, 'navExtraTooltip' . $j, '|']);
-            }
-        }
-        $this->fields['mobileBottomNav'] = ['type' => 'text', 'default' => '', 'editable' => 'true', 'label' => $this->__('Barre de boutons en bas'), 'hint' => $this->__('Identifiants des boutons séparés par des virgules')];
-        $this->forms['menu']['fieldsnames'][] = 'mobileBottomNav';
-
-        $this->fields['landingPage'] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Landing Page content'), 'grade' => 3);
-        $this->forms['landing'] = array('label' => $this->__('Custom Landing Page'), 'fieldsnames' => array('landingPage'));
-
-        $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le mode plein-écran'));
-        $this->fields['fullscreenAuto'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Lancer la publication en mode plein écran (lorsque possible)'));
-        $this->forms['fs'] = array('label' => $this->__('Plein écran'),
-            'fieldsnames' => array('fullscreen', 'fullscreenAuto'));
-
-        $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer les marques-pages'));
-        $this->fields['bookmarkView'] = array('type' => 'combo', 'datas' => [$this->__('Réduit') => 'small', $this->__('Complet') => 'large'], 'default' => 'small', 'editable' => true, 'label' => $this->__('Menu des marques-pages'));
-        $this->fields['bookmarkEmpty'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Bouton pour effacer les marques-pages"));
-        $this->fields['bookmarkFunctionsMainMenu'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Fonctions vers menus généraux'), 'hint' => $this->__('Les fonctions des marques pages (Télécharger, Imprimer, Envoyer) dirigent vers les menus généraux'));
-        $this->fields['bookmarkDisablePages'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Désactiver les marques-pages sur ces pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1];
-        $this->fields['bookmarkSendEnable'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer l'envoi des marques-pages par e-mail"));
-        $this->fields['bookmarkPrint'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Activer l'impression des marques-pages"));
-        $this->fields['bookmark_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['bookmark_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Corps de l'email") . ' "' . $this->__('Envoyer à un ami') . '"', 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['bookmarkCornerSize'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => $this->__("Taille des marques-pages"), 'hint' => $this->__('Taille relative à la largeur de la page'));
-        $this->fields['bookmarkOffset'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__("Décaler de x pixels vers l'intérieur"));
-        $this->fields['bookmarkBlinkOnPageChange'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Faire clignoter le marque page à l\'apparition de la page'));
-        $this->fields['bookmarkPermanentIcon'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Afficher l\'icône en permanance')];
-        $this->fields['bookmarkUsePDF'] = array('type' => 'combo', 'default' => 'pages', 'editable' => true, 'label' => $this->__('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'),
-            'datas' => [$this->__('PDF des pages') => 'pages',
-                $this->__('PDF de remplacement') => 'download',
-                $this->__('PDF des miniatures') => 'thumbnails']);
-        $this->forms['bookmark'] = array('label' => $this->__('Marques-pages'),
-            'fieldsnames' => array('bookmark', 'bookmarkView', 'bookmarkFunctionsMainMenu', 'bookmarkEmpty', '|', 'bookmarkSendEnable', 'bookmark_email_title', 'bookmark_email_body', '|', 'bookmarkPrint', '|', 'bookmarkCornerSize', 'bookmarkOffset', 'bookmarkPermanentIcon', 'bookmarkBlinkOnPageChange', '|', 'bookmarkDisablePages', 'bookmarkUsePDF'));
-
-        $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer l'aide"));
-        $this->fields['helpBookmarks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Améliorer l'aide des marques-pages"));
-        $this->fields['helpStartup'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Afficher l'aide au démarrage"));
-        $this->fields['helpStartupTime'] = array('type' => 'integer', 'default' => 15, 'editable' => true, 'label' => $this->__("Temps d'affichage en secondes"));
-        $this->fields['helpArrowTooltip'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Bulle affichée au niveau de la flèche de droite'), 'grade' => 5);
-        $this->fields['landscapeWarning'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Avertissement affiché sur mobile au chargement de la publication'), 'grade' => 5, 'embed' => false];
-        $this->forms['help'] = array('label' => $this->__('Aide'),
-            'fieldsnames' => array('help', '|', 'helpStartup', 'helpStartupTime', '|', 'helpBookmarks', '|', 'helpArrowTooltip', '|', 'landscapeWarning'));
-        // .
-        //
-        $this->fields['pdfThumbnails'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('PDF utilisé pour générer les miniatures'), 'grade' => 1, 'fileFilter' => $pdfFilter);
-        $this->fields['indexMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Message en haut"), 'grade' => 1, 'hint' => $this->__('Message en haut de la vue index'));
-
-        $this->forms['index'] = array('label' => $this->__('Vue d\'index (vignettes)'), 'fieldsnames' => array('indexAutoScroll', 'pdfThumbnails', 'indexMessage'));
-
-        // .
-        //
-        $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer l'impression"));
-        $this->fields['printFullBrochure'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Autoriser l'impression de la brochure complète"));
-        $this->fields['printPageRange'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Activer l'option pour imprimer une plage de pages"));
-
-        $this->forms['print'] = array('label' => $this->__('Impression'),
-            'fieldsnames' => array('print', 'printFullBrochure', 'printPageRange'));
-
-
-        $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le moteur de recherche'));
-        $this->fields['searchFullBurger'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Afficher le burger menu complet à l\'ouverture de la recheche'));
-        $this->fields['highlightResults'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Surligner les résultats'));
-        $this->fields['highlightAllOccurences'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Surligner toutes les occurences'), 'hint' => $this->__('Même sur les pages non considérées comme un résultat'));
-        $this->fields['ignoreSearch'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Mots à ignorer'),
-            'hint' => $this->__('Liste des mots à ignorer séparés par des virgules'), 'grade' => 5);
-        $this->fields['ignoreSearchSeparators'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Caractères à ne pas considérer comme un séparateur de mot'));
-        $this->fields['ignoreWordLimit'] = ['type' => 'integer', 'default' => 3, 'editable' => true, 'label' => $this->__('Ignorer les mots de moins de X caractères')];
-        $this->fields['textExtraction'] = array('type' => 'combo', 'default' => 'pdfbox', 'editable' => true, 'label' => $this->__("Méthode d'extraction des textes"),
-            'datas' => array($this->__('PDFBox') => 'pdfbox',
-                $this->__('Poppler') => 'poppler',
-                $this->__('Fluidbook (expérimentation basée sur PDFBox)') => 'fluidbook'));
-        $this->fields['searchShowNoResultsPages'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Afficher les pages sans résultats"));
-        $this->fields['searchPageSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'AND',
-            'datas' => [$this->__('les double-pages qui contiennent tous les mots recherchés (ET logique)') => 'AND', $this->__('les double-page qui contiennent un des mots recherché (OU logique)') => 'OR'], 'label' => $this->__('Algorithme de sélection des résultats'));
-        $this->fields['searchWordSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'begins',
-            'datas' => [$this->__('mot commençant par la requête') => 'begins', $this->__('mot correspondant exactement à la requête') => 'exact', $this->__('mot contenant la requête') => 'contains', $this->__('expression exacte') => 'expression'],
-            'label' => $this->__('Algorithme de sélection des occurences'));
-
-        $this->forms['search'] = array('label' => $this->__('Moteur de recherche'),
-            'fieldsnames' => array('search', '|', 'searchFullBurger', '|', 'ignoreWordLimit', 'ignoreSearch', 'ignoreSearchSeparators',
-                '|', 'searchWordSelectionAlgorithm', 'searchPageSelectionAlgorithm',
-                '|', 'highlightResults', 'highlightAllOccurences',
-                '|', 'searchShowNoResultsPages',
-                '|', 'textExtraction'));
-
-        $this->fields['soundTheme'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => $this->__("Thème sonore"),
-            'datas' => array($this->__('Pas de son') => '',
-                $this->__('Classique') => 'classic',
-                $this->__("Papier épais") => 'heavy',
-                $this->__("Papier fin") => 'light',
-                $this->__("Silencieux") => 'silent',
-                $this->__('Woosh') => 'woosh'));
-        $this->fields['soundOn'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer les effets sonores à l'ouverture"));
-        $this->forms['sound'] = array('label' => $this->__('Effets sonores'),
-            'fieldsnames' => array('soundTheme', 'soundOn', '|', 'ambientSound', 'ambientSoundVolume'));
-        // .
-        $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Activer les fonctions de téléchargement"));
-        $this->fields['pdfName'] = array('type' => 'text', 'default' => 'document.pdf', 'editable' => true, 'label' => $this->__("Nom du fichier PDF"));
-        $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Téchargement de PDF avancé'), "hint" => $this->__("Permet à l'utilisateur de sélectionner les pages qu'il souhaite télécharger"), 'grade' => 3);
-        $this->fields['pdfComplexShowCurrent'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher les pages courrantes'), 'grade' => 3);
-        $this->fields['pdfCompress'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Compression du fichier PDF'));
-        $this->fields['pdfReplace'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('PDF de remplacement'), 'grade' => 3, 'fileFilter' => $pdfFilter);
-        $this->forms['downloadpdf'] = array('label' => $this->__('Fonction de téléchargement'),
-            'fieldsnames' => array('pdf', 'pdfName', 'pdfReplace', 'pdfCompress', '|', 'pdfComplex', 'pdfComplexShowCurrent'));
-        // .
-
-        $this->fields['zoom'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => $this->__('Zoom par défaut (atteint au clic)'));
-        $this->fields['zoomw'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => $this->__("Zoom maximal (atteint à l'aide de la molette)"));
-        $this->fields['hideHeaderOnZoom'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher le menu lors du zoom')];
-        $this->fields['zoomMouseMoveMode'] = ['type' => 'combo', 'default' => 'move', 'editable' => true, 'label' => $this->__('Mode de déplacement des pages zoomées (souris)'),
-            'datas' => [$this->__('Bouger la souris') => 'move', $this->__('Drag & drop') => $this->__('dragndrop')]];
-        $this->fields['zoomWheel'] = ['type' => 'combo', 'default' => 'wheel', 'editable' => true, 'label' => $this->__('Zoom molette'), 'datas' => [
-            $this->__('Désactivé') => 'disabled',
-            $this->__('Molette') => 'wheel',
-            $this->__('Ctrl+Molette') => 'ctrlwheel',
-        ]];
-        $this->fields['zoomClick'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cliquer sur les pages pour zoomer')];
-        $this->forms['zoom'] = array('label' => $this->__('Zoom'),
-            'fieldsnames' => array('zoomClick', 'zoomWheel', '|', 'zoom', 'zoomw', '|', 'zoomMouseMoveMode', 'hideHeaderOnZoom'));
-        // .
-
-        $this->fields['sliderImage'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Image pour le slider'), 'grade' => 3, 'fileFilter' => $imageExtraFilter);
-
-        $this->forms['slider'] = ['label' => $this->__('Slider'),
-            'fieldsnames' => ['sliderImage'],
-        ];
-
-        $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher les scores dans les rapports'), 'grade' => 5);
-        $this->fields['stats_exclude_ip'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Exclure les IP suivantes des statistiques'), 'grade' => 3, 'hint' => sprintf($this->__('Indiquer une adresse ip de la forme %s par ligne'), 'www.xxx.yyy.zzz'));
-        $this->fields['relay_url_params'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Relayer les paramètres d\'url dans les liens sortants'), 'grade' => 3];
-        $this->fields['gtag_additional_code'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code additionnel Google Tag Manager'));
-        $this->fields['googleAnalyticsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code Stats personnalisé (placé avant fermeture de head)'));
-        $this->fields['statsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code Stats personnalisé (placé avant fermeture du body)'));
-        $this->fields['xiti'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code XiTi global'));
-        $this->fields['xiti_page'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Modèle code xiti (pour tags relatifs aux pages)'));
-        $this->fields['tagcommander_id'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => 'Tag commander ID', 'grade' => 3];
-        $this->fields['tagcommander_scriptname'] = ['type' => 'text', 'default' => 'tc_Multisite_Head.js,tc_Multisite_Analytics.js,tc_Multisite_Medias.js', 'editable' => true, 'label' => 'Nom du script Tagcommander', 'grade' => 3];
-        $this->fields['tagcommander_prod'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => 'Production', 'grade' => 3];
-        $this->fields['tagcommander_plan'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => 'Plan de taggage "Tag commander"', 'grade' => 3];
-        $this->fields['tagcommander_default_vars'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => 'Variables par défaut', 'grade' => 3];
-        $this->fields['anchorsAliases'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Alias des ancres')];
-        $this->forms['stats'] = array('label' => $this->__('Statistiques avancées'),
-            'fieldsnames' => array('tagcommander_id', 'tagcommander_scriptname', 'tagcommander_prod', 'tagcommander_plan', 'tagcommander_default_vars', 'anchorsAliases', '|', 'stats_score', 'stats_exclude_ip', '|', 'relay_url_params', '|', 'gtag_additional_code', '|', 'googleAnalyticsCustom', 'statsCustom', '|', 'xiti', 'xiti_page'));
-
-        $this->fields['displayChaptersPopup'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Always display chapters in a popup'), 'grade' => 1);
-        $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Affiche l'icône du sommaire"), 'grade' => 1);
-        $this->fields['chaptersCaptionDisplay'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Afficher le titre "Sommaire" dans la popup'), 'grade' => 3];
-        $this->fields['chaptersFontSize'] = ['type' => 'integer', 'default' => 100, 'min' => 50, 'max' => 120, 'editable' => true, 'label' => $this->__('Taille du texte des élements du sommaire'), 'hint' => 'En % par rapport à la taille normale', 'grade' => 3];
-        $this->fields['chaptersPage'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Faire pointer le sommaire sur la page'), 'grade' => 3, 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'), 'size' => 5);
-        $this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Afficher le sommaire au chargement de la publication"), 'grade' => 3);
-        $this->fields['chaptersColumns'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => $this->__('Afficher le sommaire sur x colonne(s)'), 'grade' => 3);
-        $this->fields['chaptersColMaxWidth'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => $this->__("Largeur max d'une colonne"), 'grade' => 3);
-        $this->fields['chaptersLevelLimit'] = array('type' => 'integer', 'default' => 5, 'editable' => true, 'label' => $this->__('Limiter à x niveaux'));
-        $this->fields['chaptersIndent'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Indenter les éléments (pour les sommaires à plat)')];
-
-        $this->fields['externalChaptersHTML'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $multimediaFilter, 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'));
-        $this->fields['mobileChaptersStyle'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => $this->__('Style des chapitres')
-        , 'datas' => array($this->__('Classique') => 'classic',
-                $this->__('INA') => 'ina'));
-        $this->fields['chaptersPagesNumber'] = array('type' => 'combo', 'default' => 'virtual', 'editable' => true, 'label' => $this->__('Numérotation du sommaire'), 'datas' => $pagesNumbers);
-        $this->fields['chaptersCascade'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Sommaire en cascade"), 'grade' => 3);
-
-        $this->forms['sommaire'] = array('label' => $this->__('Sommaire'),
-            'fieldsnames' => array('chaptersCaptionDisplay', 'chaptersFontSize', '|', 'displayChaptersIcon', 'displayChaptersPopup', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', 'chaptersLevelLimit', 'chaptersCascade', 'chaptersPagesNumber', '|', 'chaptersColMaxWidth', 'chaptersColumns', 'displayChaptersLine', 'chaptersIndent', '|', 'externalChaptersHTML', '|', 'mobileChaptersStyle'));
-        // .
-        $this->fields['tabsHTML5'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Fichier d\'onglets') . ' (SVG, ZIP)', 'grade' => 3, 'hint' => $this->__('Charger un zip rendra les options ci-dessous inopérantes'), 'fileFilter' => $tabsFilter);
-        $this->fields['tabsSide'] = ['type' => 'combo', 'label' => $this->__('Position des onglets'), 'editable' => true, 'default' => 'right', 'grade' => 5,
-            'datas' => [
-                $this->__('Gauche') => 'left',
-                $this->__('Droite') => 'right',
-            ]
-        ];
-        $this->fields['tabsPriority'] = ['type' => 'integer', 'min' => 0, 'max' => 100, 'default' => 15, 'editable' => true, 'label' => 'Priorité des onglets sur les contenus (%)', 'hint' => 'La valeur indique la réduction permise de la taille de la publication.'];
-        $this->fields['tabsPages'] = ['type' => 'text', 'label' => $this->__('Pages des onglets'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => $this->__('Numéros de pages séparas par une virgule')];
-        $this->fields['tabsSections'] = ['type' => 'text', 'label' => $this->__('Sections des onglets'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => $this->__('Numéros de pages séparés par une virgule')];
-        $this->fields['tabsPagesNumbers'] = ['type' => 'combo', 'label' => $this->__('Numérotation utilisée'), 'editable' => true, 'default' => 'virtual', 'grade' => 5, 'datas' => $pagesNumbers];
-        $this->fields['tabsHideOnPages'] = ['type' => 'text', 'label' => $this->__('Cacher les onglets sur les pages'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => '1-3,5 = 1,2,3,5'];
-        $this->fields['tabsDisabledOnPages'] = ['type' => 'text', 'label' => $this->__('Onglets inactifs sur les pages'), 'editable' => true, 'default' => '', 'grade' => 5, 'hint' => '1-3,5 = 1,2,3,5'];
-        $this->fields['tabsHideOnCover'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Cacher les onglets sur la couverture'), 'grade' => 5];
-        $this->fields['tabsHideOnLastPage'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets sur la dernière page'), 'grade' => 5];
-        $this->fields['tabsHideOnPortrait'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets lorsque le fluidbook est en mode portrait'), 'grade' => 5];
-        $this->fields['tabsHideOnZoom'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets lorsque le fluidbook est zoomé'), 'grade' => 5];
-        $this->fields['tabsHideWhenOverlapingArrows'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), 'grade' => 5];
-        $this->fields['tabsHideEdges'] = ['type' => 'combo', 'label' => $this->__('Masquer les bordures du fluidbook'), 'editable' => true, 'default' => 'right', 'grade' => 5,
-            'datas' => [
-                $this->__('Aucune') => 'none',
-                $this->__('Gauche') => 'left',
-                $this->__('Droite') => 'right',
-                $this->__('Les deux') => 'both',
-            ]
-        ];
-        $this->fields['tabsMargin'] = ['type' => 'float', 'label' => $this->__('Marge des onglets'), 'editable' => true, 'default' => -10, 'grade' => 5, 'hint' => $this->__('Une marge négative = les onglets passent sous la publication')];
-        $this->fields['tabsLinkWidth'] = ['type' => 'float', 'label' => $this->__('Largeur des onglets'), 'editable' => true, 'default' => 30, 'grade' => 5, 'hint' => $this->__('Largeur réservée pour les onglets et largeur de la zone cliquable des liens')];
-        $this->forms['tabs'] = ['label' => $this->__('Onglets'),
-            'fieldsnames' => ['tabsHTML5', 'tabsPages', 'tabsSections', 'tabsPagesNumbers', 'tabsDisabledOnPages', '|', 'tabsSide', 'tabsMargin', '|', 'tabsHideOnPages', 'tabsHideOnCover', 'tabsHideOnLastPage', 'tabsHideEdges', '|', 'tabsPriority', 'tabsLinkWidth', 'tabsHideWhenOverlapingArrows', 'tabsHideOnPortrait', 'tabsHideOnZoom']];
-
-        /*** **/
-
-        $this->fields['customLinkClass'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Classe pour les liens personnalisés'), 'grade' => 5);
-        $this->fields['ignoreLinksTypes'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Ignorer les liens de type'), 'hint' => $this->__('Liste des numéros séparés par des virgules'), 'grade' => 5);
-        $this->fields['mobileLinksRevealAnim'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Animer les liens après un changement de page"), 'grade' => 3);
-        $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => $this->__("Temps d'apparition du lien à l'ouverture de la page (en secondes)"));
-        $this->fields['linkBlinkRepetition'] = ['type' => 'integer', 'default' => 1, 'editable' => true, 'label' => $this->__('Nombre de clignotement lors de l\'apparition des liens')];
-        $this->fields['linkTracker'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Tracking des liens'), 'grade' => 5);
-        $this->fields['linkTrackerRegexp'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Tracking des liens applicables aux liens du domaine'), 'grade' => 5);
-        $this->fields['linkFilePrefix'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Préfixer les liens de téléchargement'));
-        $this->fields['linkTooltipMaxWidth'] = array('type' => 'integer', 'default' => 140, 'editable' => true, 'label' => $this->__('Largeur max des infobulles des liens de type "infobulle"'));
-        $this->fields['openLinkAtStartup'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Déclencher un lien à l\'ouverture du fluidbook')];
-
-        $this->fields['mobileIgnoreBackgroundLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Ignorer les liens de background'));
-        $this->forms['links'] = array('label' => $this->__('Liens'),
-            'fieldsnames' => array('permanentLinks', 'mobileLinksRevealAnim', 'linkBlinkTime', 'linkBlinkRepetition', '|', 'openLinkAtStartup', '|', 'customLinkClass', 'ignoreLinksTypes', 'mobileIgnoreBackgroundLinks', 'linkTooltipManager', 'linkCornerSize', 'linkTooltipMaxWidth', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkFilePrefix'));
-        //.
-
-        $this->fields['textPopupStylesheet'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Feuille de style des popups de texte'), 'fileFilter' => $cssFilter];
-        $this->fields['textPopupWidth'] = ['type' => 'integer', 'default' => 600, 'editable' => true, 'label' => $this->__('Largeur optimale des popups')];
-        $this->fields['iframePopupMaxWidth'] = ['type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Largeur maximale des popups iframe')];
-        $this->fields['OAMChromeFactor'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Facteur OAM Chrome')];
-        $this->fields['OAMIEFactor'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Facteur OAM IE11')];
-
-        $this->forms['multimedia'] = ['label' => $this->__('Multimedia'),
-            'fieldsnames' => ['textPopupStylesheet', 'textPopupWidth', '|', 'iframePopupMaxWidth', '|', 'OAMChromeFactor', 'OAMIEFactor']];
-
-        $pdfRendererOptions = [$this->__('Navigateur') => 'native', 'PDF.js' => 'pdfjs', 'PDF.js (legacy)' => 'pdfjs-legacy'];
-        $pdfRenderOptionsIframe = array_merge($pdfRendererOptions, [$this->__('Ecraser en SVG') => 'svg']);
-
-        $this->fields['PDFRenderer'] = ['type' => 'combo', 'datas' => $pdfRendererOptions, 'default' => 'native', 'editable' => true, 'label' => $this->__('Rendu des PDF (téléchargement)')];
-        $this->fields['PDFRendererIframe'] = ['type' => 'combo', 'datas' => $pdfRenderOptionsIframe, 'default' => 'native', 'editable' => true, 'label' => $this->__('Rendu des PDF (iframes)')];
-        $this->fields['PDFJSCSS'] = ['type' => 'textarea', 'default' => '', 'editable' => true, 'label' => 'Styles PDF.js'];
-
-        $this->forms['pdf'] = ['label' => 'PDF',
-            'fieldsnames' => ['PDFRenderer', 'PDFRendererIframe', '|', 'PDFJSCSS']];
-
-        $slideshowPopupLibraries = [
-            'Splide (' . $this->__('défaut') . ')' => 'splide',
-            'Vacheron' => 'vacheron'];
-
-        $slideshowInlineLibraries = [
-            'Simple (' . $this->__('défaut') . ')' => 'dummy',
-            'Vacheron' => 'vacheron'];
-
-        $this->fields['slideshowCaptionSize'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Taille de police de la légende du diaporama'), 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['inlineSlideshowTransitionDuration'] = array('type' => 'float', 'default' => 0.75, 'editable' => true, 'label' => $this->__('Durée de la transition des diaporamas intégrés aux pages(s)'));
-        $this->fields['inlineSlideshowDuration'] = array('type' => 'float', 'default' => 7, 'editable' => true, 'label' => $this->__('Temps d\'attente des diaporamas intégrés aux pages (s)'));
-        $this->fields['inlineSlideshowLibrary'] = ['type' => 'combo', 'datas' => $slideshowInlineLibraries, 'default' => 'dummy', 'editable' => true, 'grade' => 3, 'label' => $this->__('Librarie utilisée pour les slideshow intégrés aux pages')];
-        $this->fields['popupSlideshowLibrary'] = ['type' => 'combo', 'datas' => $slideshowPopupLibraries, 'default' => 'splide', 'editable' => true, 'grade' => 3, 'label' => $this->__('Librarie utilisée pour les slideshow popup')];
-
-        $this->forms['slideshow'] = ['label' => $this->__('Slideshow'),
-            'fieldsnames' => ['inlineSlideshowLibrary', 'popupSlideshowLibrary', '|', 'slideshowCaptionSize', '|', 'inlineSlideshowTransitionDuration', 'inlineSlideshowDuration']];
-
-        $this->fields['webvideoAsLocal'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Intégrer les webvidéos en local')];
-        $this->fields['mobileVideosPath'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Chemin vers les vidéos'), 'grade' => 5);
-        $this->fields['brightcovePlayerId'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Brightcove Player Id'), 'grade' => 3);
-        $this->fields['brightcovePlayerSecret'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Brightcove Player Secret'), 'grade' => 3);
-        $this->fields['bigPlayImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image pour le bouton "Big Play"'), 'grade' => 3, 'fileFilter' => $imageExtraFilter];
-        $this->forms['videos'] = array('label' => $this->__('Vidéos'),
-            'fieldsnames' => array('webvideoAsLocal', '|', 'mobileVideosPath', '|', 'brightcovePlayerId', 'brightcovePlayerSecret', '|', 'bigPlayImage'));
-        //.
-        $this->fields['audioPlayerTheme'] = ['type' => 'combo', 'default' => 'native', 'editable' => true, 'label' => $this->__('Apparence du lecteur audio'), 'datas' => [$this->__('Apparence native du navigateur') => 'native', $this->__('Zone cliquable invisible') => 'invisible', $this->__('Circulaire') => 'redbull']];
-        $this->forms['audio'] = ['label' => $this->__('Lecteur audio'),
-            'fieldsnames' => ['audioPlayerTheme']];
-        //.
-        $this->fields['downloadPortionPDF'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => 'PDF utilisé pour le téléchargement des extraits'];
-        $this->fields['downloadPortionZoom'] = ['type' => 'integer', 'default' => 8, 'editable' => false, 'editable' => true, 'label' => $this->__('Zoom des images extraites')];
-        $this->forms['downloadportion'] = array('label' => $this->__('Téléchargement d\'extraits'),
-            'fieldsnames' => ['downloadPortionPDF', 'downloadPortionZoom']);
-
-
-        $this->fields['product_zoom_references'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => $this->__('Fichier contenant les références produits'), 'dir' => 'commerce');
-        $this->fields['product_zoom_buttons_order'] = ['type' => 'combo', 'datas' => [$this->__('De la droite vers la gauche') => 'right', $this->__('De la gauche vers la droite') => 'left'], 'editable' => true, 'grade' => 3, 'default' => 'right', 'label' => $this->__('Order des boutons')];
-        $icons = [
-            $this->__('Aucune') => 'none',
-            $this->__('Partage') => 'nav-share',
-            $this->__('Ecran') => 'icon-site',
-            $this->__('Télécharger') => 'nav-download',
-            'PDF' => 'icon-pdf',
-            'Video' => 'icon-video',
-            $this->__('Lien') => 'icon-link',
-            $this->__('Code') => 'icon-code',
-            $this->__('QR code') => 'icon-qr',
-            $this->__('Article') => 'icon-article',
-            $this->__('Panier (sac)') => 'nav-basket',
-            $this->__('Panier (caddie)') => 'nav-cart-caddie',
-            $this->__('Panier (wishlist)') => 'nav-cart-wishlist',
-            $this->__('360°') => 'icon-360',
-            $this->__('Photo') => 'icon-photo'];
-        $actions = [
-            $this->__('Désactiver') => 'disabled',
-            $this->__('Ouvrir un lien') => 'link',
-            $this->__('Ouvrir en iframe') => 'iframe',
-            $this->__('Copier un contenu') => 'copy',
-            $this->__('Web Vidéo') => 'video',
-            $this->__('Vidéo') => 'videofile',
-            $this->__('Vidéo (boucle, sans contrôle)') => 'videogif',
-            $this->__('Voir une image') => 'image',
-            $this->__('Ajouter au panier') => 'addtocart'
-        ];
-        $f = [];
-        for ($i = 1; $i <= 3; $i++) {
-            $this->fields['product_zoom_label_' . $i] = ['type' => 'text', 'label' => $this->__('Label du bouton') . ' ' . $i, 'default' => '', 'editable' => true, 'grade' => 3];
-            $this->fields['product_zoom_tooltip_' . $i] = ['type' => 'text', 'label' => $this->__('Label de l\'infobulle') . ' ' . $i, 'default' => '', 'editable' => true, 'grade' => 3];
-            $this->fields['product_zoom_icon_' . $i] = ['type' => 'combo', 'datas' => $icons, 'label' => $this->__('Icône du bouton') . ' ' . $i, 'default' => 'click', 'editable' => true, 'grade' => 3];
-            $this->fields['product_zoom_action_' . $i] = ['type' => 'combo', 'datas' => $actions, 'label' => $this->__('Action du bouton') . ' ' . $i, 'default' => 'disabled', 'editable' => true, 'grade' => 3];
-            $f[] = '|';
-            $f[] = 'product_zoom_label_' . $i;
-            $f[] = 'product_zoom_tooltip_' . $i;
-            $f[] = 'product_zoom_icon_' . $i;
-            $f[] = 'product_zoom_action_' . $i;
-        }
-        $this->fields['product_share_enabled'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'grade' => '3', 'label' => $this->__('Activer le bouton de partage')];
-        $this->fields['product_share_link'] = ['type' => 'combo', 'default' => 'product', 'editable' => true, 'label' => $this->__('Lien de partage'), 'datas' => [$this->__('Lien du produit') => 'product', $this->__('Lien vers la page du fluidbook') => 'page']];
-        $this->fields['product_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'email") . ' "' . $this->__('Envoyer à un ami') . '"');
-        $this->fields['product_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__("Corps de l'email") . ' "' . $this->__('Envoyer à un ami') . '"');
-        $this->fields['product_tweet'] = array('type' => 'textarea', 'default' => '%short%', 'editable' => true, 'label' => $this->__("Contenu Partage court"), 'hint' => $this->__('Contenu du partagé sur les partages courts'));
-        $this->forms['product_zoom'] = ['label' => $this->__('Zooms produits'), 'fieldsnames' => array_merge(["product_zoom_references", '|', 'product_zoom_buttons_order'], $f, ['|', 'product_share_enabled', 'product_share_link', 'product_email_title', 'product_email_body', 'product_tweet'])];
-
-        $this->fields['audiodescriptionTexts'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), 'fileFilter' => $seoFilter];
-        $this->fields['audiodescriptionVoice'] = ['type' => 'combo', 'datas' => wsDroits::getTTSVoices(), 'editable' => true, 'default' => '', 'label' => $this->__('Voix pour l\'audiodescription')];
-        $this->forms['accessibility'] = ['label' => $this->__('Accessibilité'),
-            'fieldsnames' => ['audiodescriptionTexts', 'audiodescriptionVoice']
-        ];
-
-        // Tooltip
-
-
-        // Splashscreen
-
-        $this->fields['splashImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true, 'label' => $this->__('Image'), 'grade' => 3, 'fileFilter' => $imageFilter];
-        $this->fields['splashURL'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('URL'), 'grade' => 3];
-        $this->fields['splashTarget'] = ['type' => 'combo', 'datas' => $target, 'default' => '_self', 'editable' => true, 'label' => $this->__('Ouvrir le lien'), 'grade' => 3];
-        $this->fields['splashMinimalTime'] = ['type' => 'float', 'default' => 1, 'editable' => true, 'label' => $this->__('Temps minimal d\'affichage'), 'grade' => 3];
-
-        $this->forms['splash'] = ['label' => $this->__('Ecran de chargement'), 'fieldsnames' => ['splashImage', 'splashURL', 'splashTarget', 'splashMinimalTime']];
-
-        // Notes
-        $this->fields['notes'] = ['type' => 'boolean', 'default' => false, 'editable' => true,
-            'label' => 'Activer les notes', 'grade' => 3];
-        $this->forms['notes'] = ['label' => $this->__('Notes'), 'fieldsnames' => ['notes']];
-
-        // Articles
-        $this->fields['articlesFile'] = ['type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => 'Articles', 'grade' => 3, 'fileFilter' => $articlesFilter];
-        $this->fields['articlesFormat'] = ['type' => 'combo', 'default' => 'fluidbook', 'editable' => true, 'label' => 'Format', 'grade' => 3, 'datas' => [$this->__('Fluidbook') => 'fluidbook', 'Business Immo' => 'business-immo']];
-        $this->fields['articlesFont'] = ['type' => 'combo', 'label' => $this->__('Police des articles'), 'default' => 'OpenSans', 'datas' => self::$fonts, 'editable' => true, 'grade' => 3];
-        $this->fields['articlesImages'] = ['type' => 'freefile', 'label' => $this->__('Images des articles'), 'default' => '', 'hint' => $this->__('Les noms des fichiers doivent être les même que ceux des balises <image> du XML'), 'editable' => true, 'grade' => 3, 'dir' => 'articles', 'multiple' => true];
-        $this->fields['articlesShare'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le partage'), 'grade' => 3];
-        $this->fields['articlesPrint'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer l\'impression'), 'grade' => 3];
-        $this->fields['articlesStyle'] = ['type' => 'combo', 'default' => true, 'editable' => true, 'label' => $this->__('Style'), 'grade' => 3, 'datas' => ['Défaut' => 'default', 'Atlantic' => 'atlantic', 'Harmonie Mutuelle' => 'harmonie-mutuelle', 'Business Immo' => 'business-immo']];
-
-        $this->forms['articles'] = ['label' => $this->__('Articles'), 'fieldsnames' => ['articlesFile', 'articlesImages', '|', 'articlesShare', 'articlesPrint', '|', 'articlesStyle', 'articlesFont']];
-
-        //.
-        $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Archives'), 'grade' => 3, 'fileFilter' => $imageFilter);
-        $this->fields['archivesLabel'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Label'), 'grade' => 5);
-        $this->forms['archives'] = array('label' => $this->__('Archives'),
-            'fieldsnames' => array('externalArchives', 'archivesLabel'));
-        // .
-        $this->fields['form'] = array('type' => 'combo', 'default' => '', 'editable' => true, 'grade' => 5, 'label' => $this->__('Formulaire'), 'datas' =>
-            array($this->__('Aucun') => '',
-                'Bulle Groupe' => 'bulle',
-                'Bourbon / Suggestions' => 'bourbon',
-                'Avery' => 'avery',
-            ),
-        );
-        $this->forms['form'] = array('label' => $this->__('Formulaire'),
-            'fieldsnames' => array('form'));
-
-        $this->fields['cookieConsent'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Message cookie'));
-        $this->fields['cookieConsentMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Texte du consentement'));
-        $this->fields['cookieConsentAutoclose'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => $this->__('Masquer automatiquement après x secondes'));
-        $this->forms['privacy'] = array('label' => $this->__('Respect de la vie privée'),
-            'fieldsnames' => array('cookieConsent', 'cookieConsentMessage', 'cookieConsentAutoclose'));
-
-        //.
-        $this->fields['basket'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Panier activé'), 'grade' => 5);
-        $this->fields['cartIcon'] = ['type' => 'combo', 'datas' => [$this->__('Sac') => 'nav-basket', $this->__('Caddie') => 'nav-cart-caddie', $this->__('Wishlist') => 'nav-cart-wishlist'], 'default' => 'nav-basket', 'label' => $this->__('Icône'), 'editable' => true, 'grade' => 5];
-        $this->fields['basketManager'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => $this->__("Manager de panier"),
-            'datas' => array($this->__('Classic') => '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éprécié, utiliser la fonctionnalité "Zoom produits")' => 'ZoomProductLink',
-                'Wishlist Jouéclub' => 'JoueclubWishlist',
-                'GrandVision' => 'GrandVision',
-                'Grand Pavois' => 'GrandPavois',
-                'Wishlist Jouéclub Noël 2021' => 'JoueclubWishlist2021',
-                'Thiriet' => 'Thiriet',
-            ), 'grade' => 5);
-
-        $this->fields['cartLinkAppearance'] = ['type' => 'combo', 'default' => 'link', 'editable' => true, 'label' => $this->__('Apparence des liens panier'), 'grade' => 3, 'datas' => [$this->__('Lien') => 'link', $this->__('Boutons + et - avec overlay') => 'overlay']];
-        $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => $this->__('Fichier contenant les références produits'), 'dir' => 'commerce');
-        $this->fields['basketImages'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Images des produits'), 'grade' => 3,
-            'multiple' => true, 'dir' => 'commerce');
-        $this->fields['basketPDFBackground'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Fond du PDF (bon de commande)'), 'grade' => 5, 'fileFilter' => $epsFilter, 'hint' => $this->__('Fond du bon de commande'), 'dir' => 'commerce');
-        $this->fields['cartHeaderImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Header panier'), 'grade' => 3, 'fileFilter' => $imageFilter, 'dir' => 'commerce'];
-        $this->fields['cartHeaderMobileImage'] = ['type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => $this->__('Header panier (mobile)'), 'grade' => 3, 'fileFilter' => $imageFilter, 'dir' => 'commerce'];
-        $this->fields['cartExtraSettings'] = ['type' => 'textarea', 'default' => '', 'editable' => true,
-            'label' => $this->__('Paramètres panier'), 'grade' => 3];
-
-
-        $this->forms['basket'] = array('label' => $this->__('Panier'),
-            'fieldsnames' => array('basket', 'basketManager', '|', 'cartIcon', 'cartLinkAppearance', '|', 'basketReferences', 'basketImages', '|', 'cartHeaderImage', 'cartHeaderMobileImage', 'cartExtraSettings'));
-        // .
-        $this->fields['offlineLink'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__("URL du Fluidbook"), 'hint' => $this->__('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'));
-        $this->fields['offlineTitle'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Titre de l'application"));
-        $this->fields['offlineWindowsInstallPath'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Chemin d\'installation par défaut'), 'hint' => $this->__('Par défaut') . ': %LOCALAPPDATA%/%title%'];
-        $this->fields['offlineWindowsProfilePath'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Répertoire de stockage du profile'), 'hint' => $this->__('Par défaut') . ': %LOCALAPPDATA%/%title%'];
-        $this->fields['offlineEnableAdvancedPrinting'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__('Activer le menu d\'impression avancée')];
-        $this->fields['debugConsole'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer la console de débuggage')];
-        $this->forms['offline'] = array('label' => $this->__('Version offline'),
-            'fieldsnames' => array('offlineTitle', 'offlineLink', '|', 'offlineWindowsInstallPath', 'offlineWindowsProfilePath', '|', 'offlineEnableAdvancedPrinting', '|', 'debugConsole'));
-
-        $this->fields['mobilefirstFluidbookId'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => 'Identifiant du fluidbook "Mobile first"', 'grade' => 5];
-        $this->fields['mobilefirstBreakpoint'] = ['type' => 'text', 'default' => '640', 'editable' => true, 'label' => 'Breakpoint du passage à la version "Mobile first" (en pixels)', 'grade' => 5];
-        $this->forms['mobilefirst'] = ['label' => $this->__('Mobile first'),
-            'fieldsnames' => ['mobilefirstFluidbookId', 'mobilefirstBreakpoint']];
-
-
-        $this->fields['phonegapId'] = array('type' => 'text', 'default' => 'com.fluidbook.phonegap.$id', 'editable' => true, 'label' => $this->__("Identifiant de l'identifiant"), 'grade' => 5, 'hint' => $this->__('De la forme') . ' com.fluidbook.phonegap.xxxxx');
-        $this->fields['phonegapVersion'] = array('type' => 'text', 'default' => '1.0.0', 'editable' => true, 'label' => $this->__("Version de l'application"), 'grade' => 5, 'hint' => $this->__('De la forme') . ' 1.2.3');
-        $this->fields['phonegapPlugins'] = array('type' => 'textarea', 'default' => 'ChildBrowser', 'editable' => true, 'label' => $this->__('Plugins Phonegap'), 'grade' => 5);
-        $defaultScreenshots = "P,0\nL,2\nL,index";
-        $this->fields['appScreenshots'] = array('type' => 'textarea', 'default' => $defaultScreenshots, 'editable' => true, 'label' => 'Générer les screenshots', 'grade' => 5, 'hint' => $this->__('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))'));
-
-        $this->forms['phonegap'] = array('label' => $this->__('Applications mobile'),
-            'fieldsnames' => array('phonegapId', 'phonegapVersion', 'phonegapPlugins', 'appScreenshots'));
-
-        $this->fields['secureURL'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__('URL de sécurisation'), 'grade' => 5, 'hint' => $this->__('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'));
-        $this->fields['secureURLRedirect'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => $this->__('Redirection'), 'grade' => 5, 'hint' => $this->__("Si l'authentification échoue, redirection vers cette adresse"));
-        $this->fields['secureClientSidePassword'] = ['type' => 'freefile', 'label' => 'Sécurisation par mot de passe côté client', 'editable' => true, 'default' => '', 'grade' => 3, 'fileFilter' => $htmlFilter];
-        $this->fields['secureClientSidePasswordCredentials'] = ['type' => 'textarea', 'label' => 'Utilisateurs / mots de passe', 'editable' => true, 'default' => '', 'grade' => 3, 'hint' => 'Format user:password par ligne'];
-        $this->fields['preventRightClick'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Essayer d'empêcher le clic droit"), 'grade' => 1);
-        $this->fields['restrictPrint'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Restreindre l'impression"), 'grade' => 5);
-        $this->fields['restrictDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Restreindre le téléchargement du pdf"), 'grade' => 5);
-        $this->fields['restrictSendBookmark'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Restreindre l'envoi de marques-pages"), 'grade' => 5);
-        $this->fields['restrictPrintDownload'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), 'grade' => 5, 'hint' => $this->__("Ne pas indiquer le ?")];
-        $this->fields['recaptcha'] = ['type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Activer reCATPCHA v3 (clé du site)')];
-        $this->forms['secure'] = array('label' => $this->__('Sécurisation'),
-            'fieldsnames' => array('secureURL', 'secureURLRedirect', '|', 'secureClientSidePassword', 'secureClientSidePasswordCredentials', '|', 'preventRightClick', '|', 'restrictPrintDownload', 'restrictPrint', 'restrictDownload', 'restrictSendBookmark', '|', 'recaptcha'));
-
-        $this->fields['home'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__("Accueil de l'interface multibrochure"), 'grade' => 5);
-        $this->fields['multilang'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Langues'), 'hint' => $this->__('Code langue') . ',' . $this->__('Code pays') . ',' . $this->__('URL'));
-        $this->fields['country'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Pays de la brochure'));
-        $this->fields['multilangDisplay'] = array('type' => 'combo', 'default' => 'lang', 'editable' => true, 'label' => $this->__('Affichage'),
-            'datas' => array($this->__('Langue') => 'lang',
-                $this->__('Langue') . ' (' . $this->__('Pays') . ')' => 'lang_country',
-                $this->__('Pays') . ' (' . $this->__('Langue') . ')' => 'country_lang'));
-        $this->forms['multibrochure'] = array('label' => $this->__('Multibrochure'),
-            'fieldsnames' => array('home', 'country', 'multilangDisplay', 'multilang'));
-
-        $this->fields['plv'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer le mode PLV'), 'grade' => 3);
-        $this->fields['plvTimer'] = array('type' => 'integer', 'min' => 1, 'max' => 60, 'default' => 5, 'editable' => true, 'label' => $this->__('Temps'), 'grade' => 3);
-        $this->fields['plvMode'] = array('type' => 'combo', 'default' => 'first', 'editable' => true, 'label' => $this->__('Arrivé à la dernière page'), 'grade' => 3,
-            'datas' => array($this->__('Remonter vers la première page') => 'back',
-                $this->__('Recommencer à la première page') => 'first'));
-        $this->forms['plv'] = array('label' => $this->__('Mode PLV'),
-            'fieldsnames' => array('plv', 'plvTimer', 'plvMode'));
-
-
-        $this->fields['themeEnableAfterSearch'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Afficher l'image supplémentaire à droite du moteur de recherche"), 'grade' => 3);
-        $this->forms['theme'] = array('label' => $this->__('Options du thème'),
-            'fieldsnames' => array('themeEnableAfterSearch'));
-
-        $this->fields['forceCompileOnDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Forcer la compilation lors du téléchargement'), 'grade' => 3);
-        $this->fields['embedAllLibraries'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Intégrer toutes les bibliothèques JS'), 'grade' => 3);
-        $this->fields['htmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => true, 'label' => $this->__('Extension des fichiers html'), 'grade' => 5, 'hint' => $this->__('Ex : php, htm, html, phtml, asp, aspx'), 'grade' => 5);
-        $this->fields['actualHtmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => false, 'label' => $this->__('Extension des fichiers html réellement appliquée au fluidbook'), 'grade' => 5, 'hint' => $this->__('Ex : php, htm, html, phtml, asp'), 'grade' => 5);
-        $this->fields['htmlPrepend'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Code à insérer en tête des fichiers'), 'grade' => 5);
-        $this->fields['baseUrl'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Base de l\'url'), 'grade' => 5,);
-
-        $this->forms['package'] = array('label' => $this->__('Option d\'export'),
-            'fieldsnames' => array('htmlExtension', "actualHtmlExtension", 'htmlPrepend', 'baseUrl', 'forceCompileOnDownload', 'embedAllLibraries'));
-
-        $this->fields['disableDemo'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Désactiver le lien de démo'), 'grade' => 5);
-        $this->fields['redirectDemo'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Rediriger le lien de démo vers'), 'grade' => 5);
-        $this->forms['demo'] = array('label' => $this->__('Lien de démo'),
-            'fieldsnames' => array('disableDemo', 'redirectDemo'));
-
-
-        $this->fields['gamify_coins_pages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Attribuer des coins lors de la visite des pages'));
-        $this->forms['gamify'] = ['label' => $this->__('Gamification'),
-            'fieldsnames' => ['gamify_coins_pages']];
-
-
-        $this->fields['scorm_enable'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer SCORM'), 'grade' => 5);
-        $this->fields['scorm_version'] = array('type' => 'combo', 'default' => '1.2', 'editable' => true, 'label' => $this->__('Version du standard SCORM'), 'grade' => 5,
-            'datas' => array(
-                $this->__('SCORM 1.2') => '1.2',
-                $this->__('SCORM 2004 3rd edition') => '2004.3',
-                $this->__('SCORM 2004 4th edition') => '2004',
-            )
-        );
-        $this->fields['scorm_id'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Identifiant SCORM'), 'grade' => 5);
-        $this->fields['scorm_org'] = array('type' => 'text', 'default' => 'ACME-ORG-1350650111249', 'editable' => true, 'label' => $this->__('Organisation SCORM'), 'grade' => 5);
-        $this->fields['scorm_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => $this->__('Titre SCORM'), 'grade' => 5, 'hint' => $this->__('Laisser vide pour utiliser le titre de la publication'));
-        $this->fields['scorm_variables'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => $this->__('Variables SCORM'), 'grade' => 5, 'hint' => $this->__('Laisser vide pour utiliser le titre de la publication'));
-        $this->fields['scorm_score'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Activer le support du score'), 'grade' => 5);
-        $this->fields['scorm_score_min'] = array('type' => 'integer', 'min' => 0, 'max' => 100, 'default' => 50, 'editable' => true, 'label' => $this->__('Score minimal pour marquer le contenu comme réussi'), 'grade' => 5);
-        $this->fields['scorm_quiz_as_questionnaire'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), 'grade' => 5);
-        $this->fields['scorm_quizdata'] = array('type' => 'freefile', 'editable' => true, 'default' => '', 'label' => $this->__('Données de quiz'));
-        $this->fields['scorm_complete_coins'] = ['type' => 'integer', 'default' => 0, 'label' => 'Marquer le cours comme "Complete" lorsque le visiteur accumule X coins', 'editable' => true];
-        $this->fields['scorm_complete_on_exit'] = ['type' => 'boolean', 'default' => false, 'label' => 'Marquer le cours comme "Complete" à la fermeture de la fenêtre', 'editable' => true];
-        $this->fields['scorm_complete_on_last_page'] = ['type' => 'boolean', 'default' => false, 'label' => 'Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page', 'editable' => true];
-        $this->fields['scorm_force_attempts'] = ['type' => 'boolean', 'default' => false, 'label' => $this->__('Forcer la création d\'un "attempt" à chaque ouverture'), 'editable' => true];
-        $this->fields['scorm_pass_on_complete'] = ['type' => 'boolean', 'default' => true, 'editable' => true, 'label' => $this->__("Marquer le cours comme Pass lorsqu'il est terminé") . ' (' . $this->__('SCORM 2004 seulement') . ')'];
-        $this->fields['scorm_score100_on_complete'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Marquer le cours comme réussi à 100% lorsqu'il est terminé")];
-        $this->fields['scorm_commit_immediately'] = ['type' => 'boolean', 'default' => false, 'editable' => true, 'label' => $this->__("Envoyer les données immédiatement au LMS") . ' (' . $this->__('Peut provoquer des ralentissement sur certains LMS') . ')'];
-
-        $this->forms['scorm'] = array('label' => $this->__('SCORM'),
-            'fieldsnames' => array('scorm_enable', 'scorm_version', 'scorm_id', 'scorm_org', 'scorm_title', 'scorm_variables', '|', 'scorm_complete_on_exit', 'scorm_complete_on_last_page', 'scorm_complete_coins', '|', 'scorm_pass_on_complete', 'scorm_score100_on_complete', '|', 'scorm_quizdata', 'scorm_score', 'scorm_score_min', 'scorm_quiz_as_questionnaire', '|', 'scorm_force_attempts', 'scorm_commit_immediately'));
-
-        $versions = wsUrl::getFluidbookVersions(false);
-        $ignore = ['v1', 'v2', 'phonegap'];
-        $fields = [];
-        foreach ($versions as $k => $version) {
-            if (in_array($k, $ignore)) {
-                continue;
-            }
-            $this->fields['download_' . $k] = ['type' => 'boolean', 'editable' => true, 'default' => false, 'label' => $this->__($version['title']), 'grade' => 3];
-            $fields[] = 'download_' . $k;
-        }
-        $this->fields['download_online']['default'] = true;
 
-        $this->forms['downloads'] = array('label' => $this->__('Versions disponibles au téléchargement'),
-            'fieldsnames' => $fields);
+        $this->fields=[
+    'mobileLVersion' => [
+        'type' => 'combo',
+        'default' => 'stable',
+        'editable' => true,
+        'label' => __('Version logicielle'),
+        'grade' => 1,
+        'datas' => [
+            'stable' => 'master : git (stable)',
+            'dev' => 'master : local (dev)',
+            'icon-bar|git' => 'icon-bar : git',
+            'icon-bar|local' => 'icon-bar : local',
+        ],
+    ],
+    'mobileVersion' => [
+        'type' => 'combo',
+        'default' => 'html5-desktop',
+        'editable' => true,
+        'label' => __('Version mobile'),
+        'grade' => 3,
+        'datas' => [
+            'pdf' => __('Rediriger vers le PDF'),
+            'html5-desktop' => __('Version HTML5 recommandée (vecteurs sur desktop)'),
+            'html5' => __('Version HTML5 vecteurs'),
+            'html5-images' => __('Version HTML5 en images'),
+        ],
+    ],
+    'title' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Titre de la publication'),
+        'embed' => false,
+    ],
+    'url_link' => [
+        'type' => 'text',
+        'default' => 'http://',
+        'editable' => true,
+        'label' => __('URL du lien de retour au site'),
+    ],
+    'signature' => [
+        'type' => 'combo',
+        'default' => '1',
+        'editable' => true,
+        'label' => __('Signature'),
+        'grade' => 3,
+        'datasFunc' => 'wsDroits::getSignatures()',
+        'datas' => wsDroits::getSignatures(),
+    ],
+    'assetsDir' => [
+        'type' => 'text',
+        'label' => __('Utiliser le dossier d\'assets du fluidbook'),
+        'default' => '',
+        'editable' => true,
+        'grade' => 5,
+    ],
+    'linksAssets' => [
+        'type' => 'freefile',
+        'label' => __('Charger ou remplacer des fichiers de liens'),
+        'default' => '',
+        'editable' => true,
+        'grade' => 3,
+        'multiple' => true,
+    ],
+    'stats' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer les statistiques Fluidbook'),
+        'grade' => 3,
+    ],
+    'googleAnalytics' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Code Google Analytics'),
+        'size' => 10,
+    ],
+    'googleTagManager' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Code Google Tag Manager'),
+        'size' => 10,
+    ],
+    'share' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer les fonctions de partage'),
+    ],
+    'email_title' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Titre de l\'email').' "'.__('Envoyer à un ami').'"',
+        'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+    ],
+    'email_body' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Corps de l\'email').' "'.__('Envoyer à un ami').'"',
+        'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+    ],
+    'email_editable' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => false,
+        'label' => __('Permettre au lecteur de modifier le corps de l\'email'),
+    ],
+    'askAcknowledge' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => false,
+        'label' => __('Demander au destinataire un accusé de réception'),
+        'grade' => 3,
+    ],
+    'sendasfluidbook' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => false,
+        'label' => __('Envoyer le mail comme Fluidbook'),
+        'grade' => 3,
+        'hint' => __('L\'expéditeur apparaîtra en reply-to'),
+    ],
+    'email_mailto' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => false,
+        'label' => __('Envoyer le mail via le client mail du visiteur (mailto:)'),
+        'grade' => 3,
+    ],
+    'facebook_title' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Titre du contenu partagé'),
+        'hint' => __('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'),
+    ],
+    'facebook_description' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Description du contenu partagé'),
+        'grade' => 1,
+        'hint' => __('Description proposée sur les fonctions de partage (par défaut, vide)'),
+    ],
+    'facebook_image' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Miniature affichée'),
+        'fileFilter' => [
+            'name' => __('Images').' (*.jpg, *.png)',
+            'extensions' => '*.jpg;*.jpeg;*.png',
+        ],
+    ],
+    'twitter_description' => [
+        'type' => 'textarea',
+        'default' => '%title% : %short%',
+        'editable' => true,
+        'label' => __('Contenu Partage court'),
+        'hint' => __('Contenu du partagé sur les partages courts'),
+    ],
+    'friend' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('E-mail'),
+    ],
+    'facebook' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Facebook'),
+    ],
+    'twitter' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Twitter'),
+    ],
+    'whatsapp' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('WhatsApp'),
+    ],
+    'linkedin' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('LinkedIn'),
+    ],
+    'pinterest' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Pinterest'),
+    ],
+    'googleplus' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => false,
+        'label' => __('Google +'),
+    ],
+    'viadeo' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => false,
+        'label' => __('Viadeo'),
+    ],
+    'customSharer' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => false,
+        'label' => __('Classe personnalisée de partage'),
+        'grade' => 5,
+    ],
+    'friendWidth' => [
+        'type' => 'integer',
+        'default' => 319,
+        'editable' => false,
+        'label' => __('Largeur du menu'),
+        'grade' => 5,
+    ],
+    'friendHeight' => [
+        'type' => 'integer',
+        'default' => 500,
+        'editable' => false,
+        'label' => __('Largeur du menu'),
+        'grade' => 5,
+    ],
+    'seoVersion' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Générer une version pour les moteurs de recherche'),
+    ],
+    'seoRobots' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Autoriser le parcours par les moteurs de recherche'),
+    ],
+    'seoDescription' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Meta tag Description'),
+    ],
+    'seoKeywords' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Meta tag Keywords'),
+    ],
+    'seoBaseURL' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL de base'),
+        'grade' => 5,
+    ],
+    'seoAdvanced' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Données SEO par page'),
+        'grade' => 5,
+        'fileFilter' => [
+            'name' => __('Fichier Excel').' (.xlsx)',
+            'extensions' => '*.xlsx',
+        ],
+    ],
+    'mobileNavigationType' => [
+        'type' => 'combo',
+        'default' => 'book',
+        'editable' => true,
+        'label' => __('Mode de navigation'),
+        'grade' => 5,
+        'datas' => [
+            'book' => __('Normal (automatique)'),
+            'landscape' => __('Normal (double page)'),
+            'portrait' => __('Normal (une page)'),
+            'mobilefirst' => __('Mobile first'),
+            'tab' => __('Magazine tablette'),
+        ],
+    ],
+    'mobileTransitions' => [
+        'type' => 'combo',
+        'default' => 'flip3d',
+        'editable' => true,
+        'label' => __('Transitions entre les pages'),
+        'grade' => 3,
+        'datas' => [
+            'none' => __('Aucune transition'),
+            'fade' => __('Opacité'),
+            'slide' => __('Glisser'),
+            'flip' => __('Tourner (rigide)'),
+            'flip3d' => __('Tourner (souple)'),
+        ],
+    ],
+    'mobileTransitionDuration' => [
+        'type' => 'float',
+        'default' => 0.5,
+        'editable' => true,
+        'label' => __('Durée de la transition'),
+    ],
+    'mobileTransitionDurationSlide' => [
+        'type' => 'float',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Durée de la transition (fade, slide)'),
+        'hint' => __('Laisser à zéro pour utiliser la valeur générale'),
+    ],
+    'forceWhiteBackground' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Ajouter un fond blanc aux pages'),
+    ],
+    'rasterizePages' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Ecraser les pages'),
+        'hint' => '1-3,5 = 1,2,3,5',
+        'grade' => 1,
+    ],
+    'vectorPages' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Conserver les pages en vecteur'),
+        'hint' => '1-3,5 = 1,2,3,5',
+        'grade' => 1,
+    ],
+    'visualisationMode' => [
+        'type' => 'combo',
+        'default' => '3',
+        'editable' => false,
+        'label' => __('Mode de visualisation 3D'),
+        'datas' => [
+            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)'),
+        ],
+    ],
+    'antialiasReading' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => false,
+        'label' => __('Amélioration de la lisibilité en mode 2D'),
+    ],
+    'correctCenter' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Corriger les lignes blanches entre les pages'),
+        'grade' => 2,
+    ],
+    'pagesBaseAngle' => [
+        'type' => 'integer',
+        'default' => 2,
+        'editable' => false,
+        'label' => __('Angle de base entre les pages'),
+        'grade' => 3,
+        'hint' => __('0 : Publication à plat').'
+'.__('2 : Valeur par défaut'),
+    ],
+    'centerBook' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Centrer la publication sur les couvertures'),
+        'grade' => 2,
+    ],
+    'extraXSpace' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Marge supplémentaire horizontale'),
+        'grade' => 3,
+    ],
+    'mobileExtraXSpace' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Marge supplémentaire horizontale'),
+        'grade' => 3,
+    ],
+    'extraYSpace' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Marge supplémentaire verticale'),
+        'grade' => 3,
+    ],
+    'viewMode' => [
+        'type' => 'combo',
+        'default' => '0',
+        'editable' => false,
+        'label' => __('Mode de visualisation (beta)'),
+        'datas' => [
+            0 => __('Classique'),
+            1 => __('Diaporama'),
+        ],
+        'grade' => 5,
+    ],
+    'dynamicBackgroundColor' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => 'Couleur de fond dynamique',
+        'grade' => 3,
+    ],
+    'svgToCanvas' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer le rendu svgtocanvas'),
+    ],
+    'svgToCanvasUpscale' => [
+        'type' => 'float',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Upscale de la fonction svgtocanvas'),
+    ],
+    'svgTextMethod' => [
+        'type' => 'combo',
+        'default' => 'pdftocairo',
+        'editable' => true,
+        'label' => __('Méthode d\'extraction des textes en SVG'),
+        'datas' => [
+            'pdf' => __('Cairo'),
+            'mu' => __('Mu'),
+        ],
+    ],
+    'textsThickness' => [
+        'type' => 'float',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Epaisseur des textes'),
+    ],
+    'textsThicknessPages' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Appliquer l\'épaisseur des texte sur les pages'),
+    ],
+    'imageFormat' => [
+        'type' => 'combo',
+        'default' => 'jpg',
+        'editable' => true,
+        'datas' => [
+            'jpg' => 'JPEG',
+            'png' => 'PNG',
+        ],
+        'grade' => 2,
+        'label' => __('Format des images'),
+    ],
+    'maxResolution' => [
+        'type' => 'combo',
+        'default' => 300,
+        'editable' => true,
+        'datas' => [
+            300 => '300dpi',
+            150 => '150dpi',
+            125 => '125dpi',
+            100 => '100dpi',
+        ],
+        'grade' => 2,
+        'label' => __('Résolution maximale des pages'),
+    ],
+    'JPEGQuality' => [
+        'type' => 'integer',
+        'default' => 85,
+        'editable' => true,
+        'grade' => 2,
+        'label' => __('Qualité JPEG'),
+    ],
+    'rasterizeOnSafari' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Ecraser les pages pour Safari (Mac OS)'),
+        'grade' => 1,
+    ],
+    'performance3DMode' => [
+        'type' => 'combo',
+        'datas' => [
+            'auto' => __('Tester la machine'),
+            'highPerf' => __('Haute'),
+            'lowPerf' => __('Moyenne'),
+            'veryLowPerf' => __('Basse'),
+        ],
+        'default' => 'auto',
+        'editable' => true,
+        'label' => __('Performance de la 3D'),
+        'grade' => 1,
+    ],
+    'tooltipTimer' => [
+        'type' => 'float',
+        'default' => 3,
+        'editable' => true,
+        'label' => __('Temps maximum d\'apparition des infos-bulles (en secondes)'),
+    ],
+    'mobilePlugins' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Plugin'),
+        'grade' => 5,
+    ],
+    'preload' => [
+        'type' => 'integer',
+        'default' => 16,
+        'editable' => false,
+        'label' => __('Nombre de pages à précharger'),
+        'grade' => 3,
+    ],
+    'maxPages' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Nombre de pages maximal affiché à l\'ouverture du fluidbook (pas de limite = 0)'),
+        'grade' => 3,
+    ],
+    'pages' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => false,
+        'label' => __('Nombre de pages'),
+    ],
+    'width' => [
+        'type' => 'float',
+        'default' => 0,
+        'editable' => false,
+        'label' => __('Largeur'),
+    ],
+    'height' => [
+        'type' => 'float',
+        'default' => 0,
+        'editable' => false,
+        'label' => __('Hauteur'),
+    ],
+    'navOrder' => [
+        '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' => __('Ordre des icônes dans la nav'),
+        'grade' => 3,
+    ],
+    'navOrderH' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Ordre des icônes dans la nav').' ('.__('Si différente').')',
+        'grade' => 3,
+    ],
+    'mobileNavScale' => [
+        'type' => 'integer',
+        'default' => 100,
+        'editable' => true,
+        'label' => __('Taille du menu (en %)'),
+        'grade' => 3,
+    ],
+    'menuBreakpoint' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Breakpoint burger menu'),
+        'hint' => 'Par défaut 1023px',
+        'grade' => 3,
+    ],
+    'afterSearchDisplayForHTML' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Afficher l\'image après le moteur de recherche sur la version HTML5'),
+        'grade' => 1,
+    ],
+    'navExtraImage' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Image pour navigation'),
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'navExtraImageMobile' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Image pour mobile'),
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'navExtraLink' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL'),
+    ],
+    'navExtraTooltip' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Infobulle ou label'),
+    ],
+    'navExtraIcon1' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Icône supplémentaire').' 1',
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'navExtraType1' => [
+        'type' => 'combo',
+        'datas' => [
+            'icon' => __('Icône + Label'),
+            'image' => __('Image'),
+        ],
+        'default' => 'icon',
+        'editable' => true,
+        'label' => __('Type'),
+    ],
+    'navExtraLink1' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL').' 1',
+    ],
+    'navExtraVisibility1' => [
+        'type' => 'combo',
+        'datas' => [
+            'horizontal' => __('Navigation horizontale'),
+            'burger' => __('Navigation burger'),
+            'both' => __('Navigations horizontale et burger'),
+        ],
+        'default' => 'both',
+        'editable' => true,
+        'label' => __('Visible').' 1',
+    ],
+    'navExtraIcon2' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Icône supplémentaire').' 2',
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'navExtraType2' => [
+        'type' => 'combo',
+        'datas' => [
+            'icon' => __('Icône + Label'),
+            'image' => __('Image'),
+        ],
+        'default' => 'icon',
+        'editable' => true,
+        'label' => __('Type'),
+    ],
+    'navExtraLink2' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL').' 2',
+    ],
+    'navExtraVisibility2' => [
+        'type' => 'combo',
+        'datas' => [
+            'horizontal' => __('Navigation horizontale'),
+            'burger' => __('Navigation burger'),
+            'both' => __('Navigations horizontale et burger'),
+        ],
+        'default' => 'both',
+        'editable' => true,
+        'label' => __('Visible').' 2',
+    ],
+    'navExtraIcon3' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Icône supplémentaire').' 3',
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'navExtraType3' => [
+        'type' => 'combo',
+        'datas' => [
+            'icon' => __('Icône + Label'),
+            'image' => __('Image'),
+        ],
+        'default' => 'icon',
+        'editable' => true,
+        'label' => __('Type'),
+    ],
+    'navExtraLink3' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL').' 3',
+    ],
+    'navExtraVisibility3' => [
+        'type' => 'combo',
+        'datas' => [
+            'horizontal' => __('Navigation horizontale'),
+            'burger' => __('Navigation burger'),
+            'both' => __('Navigations horizontale et burger'),
+        ],
+        'default' => 'both',
+        'editable' => true,
+        'label' => __('Visible').' 3',
+    ],
+    'navExtraIcon4' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Icône supplémentaire').' 4',
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'navExtraType4' => [
+        'type' => 'combo',
+        'datas' => [
+            'icon' => __('Icône + Label'),
+            'image' => __('Image'),
+        ],
+        'default' => 'icon',
+        'editable' => true,
+        'label' => __('Type'),
+    ],
+    'navExtraLink4' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL').' 4',
+    ],
+    'navExtraVisibility4' => [
+        'type' => 'combo',
+        'datas' => [
+            'horizontal' => __('Navigation horizontale'),
+            'burger' => __('Navigation burger'),
+            'both' => __('Navigations horizontale et burger'),
+        ],
+        'default' => 'both',
+        'editable' => true,
+        'label' => __('Visible').' 4',
+    ],
+    'navExtraIcon5' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Icône supplémentaire').' 5',
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'navExtraType5' => [
+        'type' => 'combo',
+        'datas' => [
+            'icon' => __('Icône + Label'),
+            'image' => __('Image'),
+        ],
+        'default' => 'icon',
+        'editable' => true,
+        'label' => __('Type'),
+    ],
+    'navExtraLink5' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL').' 5',
+    ],
+    'navExtraVisibility5' => [
+        'type' => 'combo',
+        'datas' => [
+            'horizontal' => __('Navigation horizontale'),
+            'burger' => __('Navigation burger'),
+            'both' => __('Navigations horizontale et burger'),
+        ],
+        'default' => 'both',
+        'editable' => true,
+        'label' => __('Visible').' 5',
+    ],
+    'mobileBottomNav' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => 'true',
+        'label' => __('Barre de boutons en bas'),
+        'hint' => __('Identifiants des boutons séparés par des virgules'),
+    ],
+    'landingPage' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Landing Page content'),
+        'grade' => 3,
+    ],
+    'fullscreen' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer le mode plein-écran'),
+    ],
+    'fullscreenAuto' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Lancer la publication en mode plein écran (lorsque possible)'),
+    ],
+    'bookmark' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer les marques-pages'),
+    ],
+    'bookmarkView' => [
+        'type' => 'combo',
+        'datas' => [
+            'small' => __('Réduit'),
+            'large' => __('Complet'),
+        ],
+        'default' => 'small',
+        'editable' => true,
+        'label' => __('Menu des marques-pages'),
+    ],
+    'bookmarkFunctionsMainMenu' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Fonctions vers menus généraux'),
+        'hint' => __('Les fonctions des marques pages (Télécharger, Imprimer, Envoyer) dirigent vers les menus généraux'),
+    ],
+    'bookmarkEmpty' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Bouton pour effacer les marques-pages'),
+    ],
+    'bookmarkSendEnable' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer l\'envoi des marques-pages par e-mail'),
+    ],
+    'bookmark_email_title' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Titre de l\'email').' "'.__('Envoyer à un ami').'"',
+        'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+    ],
+    'bookmark_email_body' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Corps de l\'email').' "'.__('Envoyer à un ami').'"',
+        'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+    ],
+    'bookmarkPrint' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Activer l\'impression des marques-pages'),
+    ],
+    'bookmarkCornerSize' => [
+        'type' => 'integer',
+        'default' => 8,
+        'editable' => true,
+        'label' => __('Taille des marques-pages'),
+        'hint' => __('Taille relative à la largeur de la page'),
+    ],
+    'bookmarkOffset' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Décaler de x pixels vers l\'intérieur'),
+    ],
+    'bookmarkPermanentIcon' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Afficher l\'icône en permanance'),
+    ],
+    'bookmarkBlinkOnPageChange' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Faire clignoter le marque page à l\'apparition de la page'),
+    ],
+    'bookmarkDisablePages' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Désactiver les marques-pages sur ces pages'),
+        'hint' => '1-3,5 = 1,2,3,5',
+        'grade' => 1,
+    ],
+    'bookmarkUsePDF' => [
+        'type' => 'combo',
+        'default' => 'pages',
+        'editable' => true,
+        'label' => __('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'),
+        'datas' => [
+            'pages' => __('PDF des pages'),
+            'download' => __('PDF de remplacement'),
+            'thumbnails' => __('PDF des miniatures'),
+        ],
+    ],
+    'help' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer l\'aide'),
+    ],
+    'helpStartup' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Afficher l\'aide au démarrage'),
+    ],
+    'helpStartupTime' => [
+        'type' => 'integer',
+        'default' => 15,
+        'editable' => true,
+        'label' => __('Temps d\'affichage en secondes'),
+    ],
+    'helpBookmarks' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Améliorer l\'aide des marques-pages'),
+    ],
+    'helpArrowTooltip' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Bulle affichée au niveau de la flèche de droite'),
+        'grade' => 5,
+    ],
+    'landscapeWarning' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Avertissement affiché sur mobile au chargement de la publication'),
+        'grade' => 5,
+        'embed' => false,
+    ],
+    'indexAutoScroll' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => false,
+        'label' => __('Activer le scroll automatique'),
+    ],
+    'pdfThumbnails' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('PDF utilisé pour générer les miniatures'),
+        'grade' => 1,
+        'fileFilter' => [
+            'name' => __('Document PDF').' (*.pdf)',
+            'extensions' => '*.pdf',
+        ],
+    ],
+    'indexMessage' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Message en haut'),
+        'grade' => 1,
+        'hint' => __('Message en haut de la vue index'),
+    ],
+    'print' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer l\'impression'),
+    ],
+    'printFullBrochure' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Autoriser l\'impression de la brochure complète'),
+    ],
+    'printPageRange' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Activer l\'option pour imprimer une plage de pages'),
+    ],
+    'search' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer le moteur de recherche'),
+    ],
+    'searchFullBurger' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Afficher le burger menu complet à l\'ouverture de la recheche'),
+    ],
+    'ignoreWordLimit' => [
+        'type' => 'integer',
+        'default' => 3,
+        'editable' => true,
+        'label' => __('Ignorer les mots de moins de X caractères'),
+    ],
+    'ignoreSearch' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Mots à ignorer'),
+        'hint' => __('Liste des mots à ignorer séparés par des virgules'),
+        'grade' => 5,
+    ],
+    'ignoreSearchSeparators' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Caractères à ne pas considérer comme un séparateur de mot'),
+    ],
+    'searchWordSelectionAlgorithm' => [
+        'type' => 'combo',
+        'editable' => true,
+        'default' => 'begins',
+        'datas' => [
+            'begins' => __('mot commençant par la requête'),
+            'exact' => __('mot correspondant exactement à la requête'),
+            'contains' => __('mot contenant la requête'),
+            'expression' => __('expression exacte'),
+        ],
+        'label' => __('Algorithme de sélection des occurences'),
+    ],
+    'searchPageSelectionAlgorithm' => [
+        'type' => 'combo',
+        'editable' => true,
+        'default' => 'AND',
+        'datas' => [
+            '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)'),
+        ],
+        'label' => __('Algorithme de sélection des résultats'),
+    ],
+    'highlightResults' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Surligner les résultats'),
+    ],
+    'highlightAllOccurences' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Surligner toutes les occurences'),
+        'hint' => __('Même sur les pages non considérées comme un résultat'),
+    ],
+    'searchShowNoResultsPages' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Afficher les pages sans résultats'),
+    ],
+    'textExtraction' => [
+        'type' => 'combo',
+        'default' => 'pdfbox',
+        'editable' => true,
+        'label' => __('Méthode d\'extraction des textes'),
+        'datas' => [
+            'pdfbox' => __('PDFBox'),
+            'poppler' => __('Poppler'),
+            'fluidbook' => __('Fluidbook (expérimentation basée sur PDFBox)'),
+        ],
+    ],
+    'soundTheme' => [
+        'type' => 'combo',
+        'default' => 'classic',
+        'editable' => true,
+        'label' => __('Thème sonore'),
+        'datas' => [
+            '' => __('Pas de son'),
+            'classic' => __('Classique'),
+            'heavy' => __('Papier épais'),
+            'light' => __('Papier fin'),
+            'silent' => __('Silencieux'),
+            'woosh' => __('Woosh'),
+        ],
+    ],
+    'soundOn' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer les effets sonores à l\'ouverture'),
+    ],
+    'ambientSound' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => false,
+        'label' => __('Ambiance sonore'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Fichier sonore').' (*.mp3, *.wav)',
+            'extensions' => '*.mp3;*.wav',
+        ],
+    ],
+    'ambientSoundVolume' => [
+        'type' => 'integer',
+        'default' => 50,
+        'editable' => false,
+        'label' => __('Volume de l\'ambiance sonore'),
+        'min' => 0,
+        'max' => 100,
+    ],
+    'pdf' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer les fonctions de téléchargement'),
+    ],
+    'pdfName' => [
+        'type' => 'text',
+        'default' => 'document.pdf',
+        'editable' => true,
+        'label' => __('Nom du fichier PDF'),
+    ],
+    'pdfReplace' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('PDF de remplacement'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Document PDF').' (*.pdf)',
+            'extensions' => '*.pdf',
+        ],
+    ],
+    'pdfCompress' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Compression du fichier PDF'),
+    ],
+    'pdfComplex' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Téchargement de PDF avancé'),
+        'hint' => __('Permet à l\'utilisateur de sélectionner les pages qu\'il souhaite télécharger'),
+        'grade' => 3,
+    ],
+    'pdfComplexShowCurrent' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Afficher les pages courrantes'),
+        'grade' => 3,
+    ],
+    'zoomClick' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Cliquer sur les pages pour zoomer'),
+    ],
+    'zoomWheel' => [
+        'type' => 'combo',
+        'default' => 'wheel',
+        'editable' => true,
+        'label' => __('Zoom molette'),
+        'datas' => [
+            'disabled' => __('Désactivé'),
+            'wheel' => __('Molette'),
+            'ctrlwheel' => __('Ctrl+Molette'),
+        ],
+    ],
+    'zoom' => [
+        'type' => 'integer',
+        'default' => 200,
+        'editable' => true,
+        'label' => __('Zoom par défaut (atteint au clic)'),
+    ],
+    'zoomw' => [
+        'type' => 'integer',
+        'default' => 300,
+        'editable' => true,
+        'label' => __('Zoom maximal (atteint à l\'aide de la molette)'),
+    ],
+    'zoomMouseMoveMode' => [
+        'type' => 'combo',
+        'default' => 'move',
+        'editable' => true,
+        'label' => __('Mode de déplacement des pages zoomées (souris)'),
+        'datas' => [
+            'move' => __('Bouger la souris'),
+            __('dragndrop') => __('Drag & drop'),
+        ],
+    ],
+    'hideHeaderOnZoom' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Cacher le menu lors du zoom'),
+    ],
+    'sliderImage' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Image pour le slider'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'tagcommander_id' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => 'Tag commander ID',
+        'grade' => 3,
+    ],
+    'tagcommander_scriptname' => [
+        'type' => 'text',
+        'default' => 'tc_Multisite_Head.js,tc_Multisite_Analytics.js,tc_Multisite_Medias.js',
+        'editable' => true,
+        'label' => 'Nom du script Tagcommander',
+        'grade' => 3,
+    ],
+    'tagcommander_prod' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => 'Production',
+        'grade' => 3,
+    ],
+    'tagcommander_plan' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => 'Plan de taggage "Tag commander"',
+        'grade' => 3,
+    ],
+    'tagcommander_default_vars' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => 'Variables par défaut',
+        'grade' => 3,
+    ],
+    'anchorsAliases' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Alias des ancres'),
+    ],
+    'stats_score' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Afficher les scores dans les rapports'),
+        'grade' => 5,
+    ],
+    'stats_exclude_ip' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Exclure les IP suivantes des statistiques'),
+        'grade' => 3,
+        'hint' => __('Indiquer une adresse ip de la forme www.xxx.yyy.zzz par ligne'),
+    ],
+    'relay_url_params' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Relayer les paramètres d\'url dans les liens sortants'),
+        'grade' => 3,
+    ],
+    'gtag_additional_code' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Code additionnel Google Tag Manager'),
+    ],
+    'googleAnalyticsCustom' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Code Stats personnalisé (placé avant fermeture de head)'),
+    ],
+    'statsCustom' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Code Stats personnalisé (placé avant fermeture du body)'),
+    ],
+    'xiti' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Code XiTi global'),
+    ],
+    'xiti_page' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Modèle code xiti (pour tags relatifs aux pages)'),
+    ],
+    'chaptersCaptionDisplay' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Afficher le titre "Sommaire" dans la popup'),
+        'grade' => 3,
+    ],
+    'chaptersFontSize' => [
+        'type' => 'integer',
+        'default' => 100,
+        'min' => 50,
+        'max' => 120,
+        'editable' => true,
+        'label' => __('Taille du texte des élements du sommaire'),
+        'hint' => 'En % par rapport à la taille normale',
+        'grade' => 3,
+    ],
+    'displayChaptersIcon' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Affiche l\'icône du sommaire'),
+        'grade' => 1,
+    ],
+    'displayChaptersPopup' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Always display chapters in a popup'),
+        'grade' => 1,
+    ],
+    'displayChaptersAtStart' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Afficher le sommaire au chargement de la publication'),
+        'grade' => 3,
+    ],
+    'chaptersPage' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Faire pointer le sommaire sur la page'),
+        'grade' => 3,
+        'hint' => __('Laisser vide pour utiliser le sommaire classique'),
+        'size' => 5,
+    ],
+    'chaptersPosition' => [
+        'type' => 'combo',
+        'default' => 'center',
+        'editable' => false,
+        'label' => __('Position du sommaire'),
+        'datas' => [
+            'center' => __('Centré'),
+            'chaptersIcon' => __('Aligné sur l\'icône'),
+        ],
+    ],
+    'chaptersLevelLimit' => [
+        'type' => 'integer',
+        'default' => 5,
+        'editable' => true,
+        'label' => __('Limiter à x niveaux'),
+    ],
+    'chaptersCascade' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Sommaire en cascade'),
+        'grade' => 3,
+    ],
+    'chaptersPagesNumber' => [
+        'type' => 'combo',
+        'default' => 'virtual',
+        'editable' => true,
+        'label' => __('Numérotation du sommaire'),
+        'datas' => [
+            'virtual' => __('Virtuelle'),
+            'physical' => __('Physique'),
+        ],
+    ],
+    'chaptersColMaxWidth' => [
+        'type' => 'integer',
+        'default' => 300,
+        'editable' => true,
+        'label' => __('Largeur max d\'une colonne'),
+        'grade' => 3,
+    ],
+    'chaptersColumns' => [
+        'type' => 'integer',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Afficher le sommaire sur x colonne(s)'),
+        'grade' => 3,
+    ],
+    'displayChaptersLine' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => false,
+        'label' => __('Affiche une ligne entre le label et le numéro de page'),
+        'grade' => 5,
+    ],
+    'chaptersIndent' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Indenter les éléments (pour les sommaires à plat)'),
+    ],
+    'externalChaptersHTML' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Sommaire personnalisé'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Archive ZIP').' (*.zip)',
+            'extensions' => '*.zip',
+        ],
+        'hint' => __('Laisser vide pour utiliser le sommaire classique'),
+    ],
+    'mobileChaptersStyle' => [
+        'type' => 'combo',
+        'default' => 'classic',
+        'editable' => true,
+        'label' => __('Style des chapitres'),
+        'datas' => [
+            'classic' => __('Classique'),
+            'ina' => __('INA'),
+        ],
+    ],
+    'tabsHTML5' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Fichier d\'onglets').' (SVG, ZIP)',
+        'grade' => 3,
+        'hint' => __('Charger un zip rendra les options ci-dessous inopérantes'),
+        'fileFilter' => [
+            'name' => __('Fichier onglets').' (*.svg, *.zip)',
+            'extensions' => '*.svg;*.zip',
+        ],
+    ],
+    'tabsPages' => [
+        'type' => 'text',
+        'label' => __('Pages des onglets'),
+        'editable' => true,
+        'default' => '',
+        'grade' => 5,
+        'hint' => __('Numéros de pages séparas par une virgule'),
+    ],
+    'tabsSections' => [
+        'type' => 'text',
+        'label' => __('Sections des onglets'),
+        'editable' => true,
+        'default' => '',
+        'grade' => 5,
+        'hint' => __('Numéros de pages séparés par une virgule'),
+    ],
+    'tabsPagesNumbers' => [
+        'type' => 'combo',
+        'label' => __('Numérotation utilisée'),
+        'editable' => true,
+        'default' => 'virtual',
+        'grade' => 5,
+        'datas' => [
+            'virtual' => __('Virtuelle'),
+            'physical' => __('Physique'),
+        ],
+    ],
+    'tabsDisabledOnPages' => [
+        'type' => 'text',
+        'label' => __('Onglets inactifs sur les pages'),
+        'editable' => true,
+        'default' => '',
+        'grade' => 5,
+        'hint' => '1-3,5 = 1,2,3,5',
+    ],
+    'tabsSide' => [
+        'type' => 'combo',
+        'label' => __('Position des onglets'),
+        'editable' => true,
+        'default' => 'right',
+        'grade' => 5,
+        'datas' => [
+            'left' => __('Gauche'),
+            'right' => __('Droite'),
+        ],
+    ],
+    'tabsMargin' => [
+        'type' => 'float',
+        'label' => __('Marge des onglets'),
+        'editable' => true,
+        'default' => -10,
+        'grade' => 5,
+        'hint' => __('Une marge négative = les onglets passent sous la publication'),
+    ],
+    'tabsHideOnPages' => [
+        'type' => 'text',
+        'label' => __('Cacher les onglets sur les pages'),
+        'editable' => true,
+        'default' => '',
+        'grade' => 5,
+        'hint' => '1-3,5 = 1,2,3,5',
+    ],
+    'tabsHideOnCover' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Cacher les onglets sur la couverture'),
+        'grade' => 5,
+    ],
+    'tabsHideOnLastPage' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Cacher les onglets sur la dernière page'),
+        'grade' => 5,
+    ],
+    'tabsHideEdges' => [
+        'type' => 'combo',
+        'label' => __('Masquer les bordures du fluidbook'),
+        'editable' => true,
+        'default' => 'right',
+        'grade' => 5,
+        'datas' => [
+            'none' => __('Aucune'),
+            'left' => __('Gauche'),
+            'right' => __('Droite'),
+            'both' => __('Les deux'),
+        ],
+    ],
+    'tabsPriority' => [
+        'type' => 'integer',
+        'min' => 0,
+        'max' => 100,
+        'default' => 15,
+        'editable' => true,
+        'label' => 'Priorité des onglets sur les contenus (%)',
+        'hint' => 'La valeur indique la réduction permise de la taille de la publication.',
+    ],
+    'tabsLinkWidth' => [
+        'type' => 'float',
+        'label' => __('Largeur des onglets'),
+        'editable' => true,
+        'default' => 30,
+        'grade' => 5,
+        'hint' => __('Largeur réservée pour les onglets et largeur de la zone cliquable des liens'),
+    ],
+    'tabsHideWhenOverlapingArrows' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'),
+        'grade' => 5,
+    ],
+    'tabsHideOnPortrait' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Cacher les onglets lorsque le fluidbook est en mode portrait'),
+        'grade' => 5,
+    ],
+    'tabsHideOnZoom' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Cacher les onglets lorsque le fluidbook est zoomé'),
+        'grade' => 5,
+    ],
+    'permanentLinks' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => false,
+        'label' => __('Liens visibles en permanence'),
+        'grade' => 3,
+    ],
+    'mobileLinksRevealAnim' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Animer les liens après un changement de page'),
+        'grade' => 3,
+    ],
+    'linkBlinkTime' => [
+        'type' => 'float',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Temps d\'apparition du lien à l\'ouverture de la page (en secondes)'),
+    ],
+    'linkBlinkRepetition' => [
+        'type' => 'integer',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Nombre de clignotement lors de l\'apparition des liens'),
+    ],
+    'openLinkAtStartup' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Déclencher un lien à l\'ouverture du fluidbook'),
+    ],
+    'customLinkClass' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Classe pour les liens personnalisés'),
+        'grade' => 5,
+    ],
+    'ignoreLinksTypes' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Ignorer les liens de type'),
+        'hint' => __('Liste des numéros séparés par des virgules'),
+        'grade' => 5,
+    ],
+    'mobileIgnoreBackgroundLinks' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Ignorer les liens de background'),
+    ],
+    'linkTooltipManager' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => false,
+        'label' => __('Gestionnaire des info-bulles'),
+        'grade' => 5,
+    ],
+    'linkCornerSize' => [
+        'type' => 'integer',
+        'default' => 10,
+        'editable' => false,
+        'label' => __('Taille des liens de coins de page'),
+        'hint' => __('Pourcentage de la largeur de la page'),
+    ],
+    'linkTooltipMaxWidth' => [
+        'type' => 'integer',
+        'default' => 140,
+        'editable' => true,
+        'label' => __('Largeur max des infobulles des liens de type "infobulle"'),
+    ],
+    'linkTracker' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Tracking des liens'),
+        'grade' => 5,
+    ],
+    'linkTrackerRegexp' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Tracking des liens applicables aux liens du domaine'),
+        'grade' => 5,
+    ],
+    'linkFilePrefix' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Préfixer les liens de téléchargement'),
+    ],
+    'textPopupStylesheet' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Feuille de style des popups de texte'),
+        'fileFilter' => [
+            'name' => __('Feuille de style').' (.css)',
+            'extensions' => '*.css',
+        ],
+    ],
+    'textPopupWidth' => [
+        'type' => 'integer',
+        'default' => 600,
+        'editable' => true,
+        'label' => __('Largeur optimale des popups'),
+    ],
+    'iframePopupMaxWidth' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Largeur maximale des popups iframe'),
+    ],
+    'OAMChromeFactor' => [
+        'type' => 'float',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Facteur OAM Chrome'),
+    ],
+    'OAMIEFactor' => [
+        'type' => 'float',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Facteur OAM IE11'),
+    ],
+    'PDFRenderer' => [
+        'type' => 'combo',
+        'datas' => [
+            'native' => __('Navigateur'),
+            'pdfjs' => 'PDF.js',
+            'pdfjs-legacy' => 'PDF.js (legacy)',
+        ],
+        'default' => 'native',
+        'editable' => true,
+        'label' => __('Rendu des PDF (téléchargement)'),
+    ],
+    'PDFRendererIframe' => [
+        'type' => 'combo',
+        'datas' => [
+            'native' => __('Navigateur'),
+            'pdfjs' => 'PDF.js',
+            'pdfjs-legacy' => 'PDF.js (legacy)',
+            'svg' => __('Ecraser en SVG'),
+        ],
+        'default' => 'native',
+        'editable' => true,
+        'label' => __('Rendu des PDF (iframes)'),
+    ],
+    'PDFJSCSS' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => 'Styles PDF.js',
+    ],
+    'inlineSlideshowLibrary' => [
+        'type' => 'combo',
+        'datas' => [
+            'dummy' => 'Simple ('.__('défaut').')',
+            'vacheron' => 'Vacheron',
+        ],
+        'default' => 'dummy',
+        'editable' => true,
+        'grade' => 3,
+        'label' => __('Librarie utilisée pour les slideshow intégrés aux pages'),
+    ],
+    'popupSlideshowLibrary' => [
+        'type' => 'combo',
+        'datas' => [
+            'splide' => 'Splide ('.__('défaut').')',
+            'vacheron' => 'Vacheron',
+        ],
+        'default' => 'splide',
+        'editable' => true,
+        'grade' => 3,
+        'label' => __('Librarie utilisée pour les slideshow popup'),
+    ],
+    'slideshowCaptionSize' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Taille de police de la légende du diaporama'),
+        'hint' => __('Laisser vide pour utiliser la valeur par défaut'),
+    ],
+    'inlineSlideshowTransitionDuration' => [
+        'type' => 'float',
+        'default' => 0.75,
+        'editable' => true,
+        'label' => __('Durée de la transition des diaporamas intégrés aux pages(s)'),
+    ],
+    'inlineSlideshowDuration' => [
+        'type' => 'float',
+        'default' => 7,
+        'editable' => true,
+        'label' => __('Temps d\'attente des diaporamas intégrés aux pages (s)'),
+    ],
+    'webvideoAsLocal' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Intégrer les webvidéos en local'),
+    ],
+    'mobileVideosPath' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Chemin vers les vidéos'),
+        'grade' => 5,
+    ],
+    'brightcovePlayerId' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Brightcove Player Id'),
+        'grade' => 3,
+    ],
+    'brightcovePlayerSecret' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Brightcove Player Secret'),
+        'grade' => 3,
+    ],
+    'bigPlayImage' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Image pour le bouton "Big Play"'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Images').' (*.svg, *.jpg, *.png, *.gif)',
+            'extensions' => '*.svg;*.jpg;*.png;*.gif',
+        ],
+    ],
+    'audioPlayerTheme' => [
+        'type' => 'combo',
+        'default' => 'native',
+        'editable' => true,
+        'label' => __('Apparence du lecteur audio'),
+        'datas' => [
+            'native' => __('Apparence native du navigateur'),
+            'invisible' => __('Zone cliquable invisible'),
+            'redbull' => __('Circulaire'),
+        ],
+    ],
+    'downloadPortionPDF' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => 'PDF utilisé pour le téléchargement des extraits',
+    ],
+    'downloadPortionZoom' => [
+        'type' => 'integer',
+        'default' => 8,
+        'editable' => true,
+        'label' => __('Zoom des images extraites'),
+    ],
+    'product_zoom_references' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Références produits'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Liste de produits'),
+            'extensions' => ' (*.xml, *.xlsx)',
+        ],
+        'hint' => __('Fichier contenant les références produits'),
+        'dir' => 'commerce',
+    ],
+    'product_zoom_buttons_order' => [
+        'type' => 'combo',
+        'datas' => [
+            'right' => __('De la droite vers la gauche'),
+            'left' => __('De la gauche vers la droite'),
+        ],
+        'editable' => true,
+        'grade' => 3,
+        'default' => 'right',
+        'label' => __('Order des boutons'),
+    ],
+    'product_zoom_label_1' => [
+        'type' => 'text',
+        'label' => __('Label du bouton').' 1',
+        'default' => '',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_tooltip_1' => [
+        'type' => 'text',
+        'label' => __('Label de l\'infobulle').' 1',
+        'default' => '',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_icon_1' => [
+        'type' => 'combo',
+        'datas' => [
+            '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'),
+        ],
+        'label' => __('Icône du bouton').' 1',
+        'default' => 'click',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_action_1' => [
+        'type' => 'combo',
+        'datas' => [
+            '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'),
+        ],
+        'label' => __('Action du bouton').' 1',
+        'default' => 'disabled',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_label_2' => [
+        'type' => 'text',
+        'label' => __('Label du bouton').' 2',
+        'default' => '',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_tooltip_2' => [
+        'type' => 'text',
+        'label' => __('Label de l\'infobulle').' 2',
+        'default' => '',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_icon_2' => [
+        'type' => 'combo',
+        'datas' => [
+            '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'),
+        ],
+        'label' => __('Icône du bouton').' 2',
+        'default' => 'click',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_action_2' => [
+        'type' => 'combo',
+        'datas' => [
+            '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'),
+        ],
+        'label' => __('Action du bouton').' 2',
+        'default' => 'disabled',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_label_3' => [
+        'type' => 'text',
+        'label' => __('Label du bouton').' 3',
+        'default' => '',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_tooltip_3' => [
+        'type' => 'text',
+        'label' => __('Label de l\'infobulle').' 3',
+        'default' => '',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_icon_3' => [
+        'type' => 'combo',
+        'datas' => [
+            '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'),
+        ],
+        'label' => __('Icône du bouton').' 3',
+        'default' => 'click',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_zoom_action_3' => [
+        'type' => 'combo',
+        'datas' => [
+            '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'),
+        ],
+        'label' => __('Action du bouton').' 3',
+        'default' => 'disabled',
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'product_share_enabled' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'grade' => '3',
+        'label' => __('Activer le bouton de partage'),
+    ],
+    'product_share_link' => [
+        'type' => 'combo',
+        'default' => 'product',
+        'editable' => true,
+        'label' => __('Lien de partage'),
+        'datas' => [
+            'product' => __('Lien du produit'),
+            'page' => __('Lien vers la page du fluidbook'),
+        ],
+    ],
+    'product_email_title' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Titre de l\'email').' "'.__('Envoyer à un ami').'"',
+    ],
+    'product_email_body' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Corps de l\'email').' "'.__('Envoyer à un ami').'"',
+    ],
+    'product_tweet' => [
+        'type' => 'textarea',
+        'default' => '%short%',
+        'editable' => true,
+        'label' => __('Contenu Partage court'),
+        'hint' => __('Contenu du partagé sur les partages courts'),
+    ],
+    'audiodescriptionTexts' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'),
+        'fileFilter' => [
+            'name' => __('Fichier Excel').' (.xlsx)',
+            'extensions' => '*.xlsx',
+        ],
+    ],
+    'audiodescriptionVoice' => [
+        'type' => 'combo',
+        'datasFunc' => 'wsDroits::getTTSVoices()',
+        'datas' => wsDroits::getTTSVoices(),
+        'editable' => true,
+        'default' => '',
+        'label' => __('Voix pour l\'audiodescription'),
+    ],
+    'splashImage' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Image'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Images').' (*.jpg, *.png)',
+            'extensions' => '*.jpg;*.jpeg;*.png',
+        ],
+    ],
+    'splashURL' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('URL'),
+        'grade' => 3,
+    ],
+    'splashTarget' => [
+        'type' => 'combo',
+        'datas' => [
+            '_self' => __('Dans la fenêtre courrante'),
+            '_blank' => __('Dans un nouvel onglet'),
+        ],
+        'default' => '_self',
+        'editable' => true,
+        'label' => __('Ouvrir le lien'),
+        'grade' => 3,
+    ],
+    'splashMinimalTime' => [
+        'type' => 'float',
+        'default' => 1,
+        'editable' => true,
+        'label' => __('Temps minimal d\'affichage'),
+        'grade' => 3,
+    ],
+    'notes' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => 'Activer les notes',
+        'grade' => 3,
+    ],
+    'articlesFile' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => 'Articles',
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Liste d\'articles').' (*.xml)',
+            'extensions' => '*.xml',
+        ],
+    ],
+    'articlesImages' => [
+        'type' => 'freefile',
+        'label' => __('Images des articles'),
+        'default' => '',
+        'hint' => __('Les noms des fichiers doivent être les même que ceux des balises <image> du XML'),
+        'editable' => true,
+        'grade' => 3,
+        'dir' => 'articles',
+        'multiple' => true,
+    ],
+    'articlesShare' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer le partage'),
+        'grade' => 3,
+    ],
+    'articlesPrint' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer l\'impression'),
+        'grade' => 3,
+    ],
+    'articlesStyle' => [
+        'type' => 'combo',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Style'),
+        'grade' => 3,
+        'datas' => [
+            'default' => 'Défaut',
+            'atlantic' => 'Atlantic',
+            'harmonie-mutuelle' => 'Harmonie Mutuelle',
+            'business-immo' => 'Business Immo',
+        ],
+    ],
+    'articlesFont' => [
+        'type' => 'combo',
+        'label' => __('Police des articles'),
+        'default' => 'OpenSans',
+        'datas' => [
+            'OpenSans' => 'Open Sans (défaut)',
+            'Montserrat' => 'Montserrat',
+            'Arial' => 'Arial, Helvetica, sans-serif (police système)',
+            'sans-serif' => 'Police système sans-serif',
+        ],
+        'editable' => true,
+        'grade' => 3,
+    ],
+    'externalArchives' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Archives'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Images').' (*.jpg, *.png)',
+            'extensions' => '*.jpg;*.jpeg;*.png',
+        ],
+    ],
+    'archivesLabel' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Label'),
+        'grade' => 5,
+    ],
+    'form' => [
+        'type' => 'combo',
+        'default' => '',
+        'editable' => true,
+        'grade' => 5,
+        'label' => __('Formulaire'),
+        'datas' => [
+            '' => __('Aucun'),
+            'bulle' => 'Bulle Groupe',
+            'bourbon' => 'Bourbon / Suggestions',
+            'avery' => 'Avery',
+        ],
+    ],
+    'cookieConsent' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Message cookie'),
+    ],
+    'cookieConsentMessage' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Texte du consentement'),
+    ],
+    'cookieConsentAutoclose' => [
+        'type' => 'integer',
+        'default' => 0,
+        'editable' => true,
+        'label' => __('Masquer automatiquement après x secondes'),
+    ],
+    'basket' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Panier activé'),
+        'grade' => 5,
+    ],
+    'basketManager' => [
+        'type' => 'combo',
+        'default' => 'classic',
+        'editable' => true,
+        'label' => __('Manager de panier'),
+        'datas' => [
+            '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',
+        ],
+        'grade' => 5,
+    ],
+    'cartIcon' => [
+        'type' => 'combo',
+        'datas' => [
+            'nav-basket' => __('Sac'),
+            'nav-cart-caddie' => __('Caddie'),
+            'nav-cart-wishlist' => __('Wishlist'),
+        ],
+        'default' => 'nav-basket',
+        'label' => __('Icône'),
+        'editable' => true,
+        'grade' => 5,
+    ],
+    'cartLinkAppearance' => [
+        'type' => 'combo',
+        'default' => 'link',
+        'editable' => true,
+        'label' => __('Apparence des liens panier'),
+        'grade' => 3,
+        'datas' => [
+            'link' => __('Lien'),
+            'overlay' => __('Boutons + et - avec overlay'),
+        ],
+    ],
+    'basketReferences' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Références produits'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Liste de produits'),
+            'extensions' => ' (*.xml, *.xlsx)',
+        ],
+        'hint' => __('Fichier contenant les références produits'),
+        'dir' => 'commerce',
+    ],
+    'basketImages' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Images des produits'),
+        'grade' => 3,
+        'multiple' => true,
+        'dir' => 'commerce',
+    ],
+    'cartHeaderImage' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Header panier'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Images').' (*.jpg, *.png)',
+            'extensions' => '*.jpg;*.jpeg;*.png',
+        ],
+        'dir' => 'commerce',
+    ],
+    'cartHeaderMobileImage' => [
+        'type' => 'freefile',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Header panier (mobile)'),
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Images').' (*.jpg, *.png)',
+            'extensions' => '*.jpg;*.jpeg;*.png',
+        ],
+        'dir' => 'commerce',
+    ],
+    'cartExtraSettings' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Paramètres panier'),
+        'grade' => 3,
+    ],
+    'offlineTitle' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Titre de l\'application'),
+    ],
+    'offlineLink' => [
+        'type' => 'text',
+        'default' => 'http://',
+        'editable' => true,
+        'label' => __('URL du Fluidbook'),
+        'hint' => __('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'),
+    ],
+    'offlineWindowsInstallPath' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Chemin d\'installation par défaut'),
+        'hint' => __('Par défaut').': %LOCALAPPDATA%/%title%',
+    ],
+    'offlineWindowsProfilePath' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Répertoire de stockage du profile'),
+        'hint' => __('Par défaut').': %LOCALAPPDATA%/%title%',
+    ],
+    'offlineEnableAdvancedPrinting' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Activer le menu d\'impression avancée'),
+    ],
+    'debugConsole' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Activer la console de débuggage'),
+    ],
+    'mobilefirstFluidbookId' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => 'Identifiant du fluidbook "Mobile first"',
+        'grade' => 5,
+    ],
+    'mobilefirstBreakpoint' => [
+        'type' => 'text',
+        'default' => '640',
+        'editable' => true,
+        'label' => 'Breakpoint du passage à la version "Mobile first" (en pixels)',
+        'grade' => 5,
+    ],
+    'phonegapId' => [
+        'type' => 'text',
+        'default' => 'com.fluidbook.phonegap.$id',
+        'editable' => true,
+        'label' => __('Identifiant de l\'identifiant'),
+        'grade' => 5,
+        'hint' => __('De la forme').' com.fluidbook.phonegap.xxxxx',
+    ],
+    'phonegapVersion' => [
+        'type' => 'text',
+        'default' => '1.0.0',
+        'editable' => true,
+        'label' => __('Version de l\'application'),
+        'grade' => 5,
+        'hint' => __('De la forme').' 1.2.3',
+    ],
+    'phonegapPlugins' => [
+        'type' => 'textarea',
+        'default' => 'ChildBrowser',
+        'editable' => true,
+        'label' => __('Plugins Phonegap'),
+        'grade' => 5,
+    ],
+    'appScreenshots' => [
+        'type' => 'textarea',
+        'default' => 'P,0
+L,2
+L,index',
+        'editable' => true,
+        'label' => 'Générer les screenshots',
+        'grade' => 5,
+        '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))'),
+    ],
+    'secureURL' => [
+        'type' => 'text',
+        'default' => 'http://',
+        'editable' => true,
+        'label' => __('URL de sécurisation'),
+        'grade' => 5,
+        'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'),
+    ],
+    'secureURLRedirect' => [
+        'type' => 'text',
+        'default' => 'http://',
+        'editable' => true,
+        'label' => __('Redirection'),
+        'grade' => 5,
+        'hint' => __('Si l\'authentification échoue, redirection vers cette adresse'),
+    ],
+    'secureClientSidePassword' => [
+        'type' => 'freefile',
+        'label' => 'Sécurisation par mot de passe côté client',
+        'editable' => true,
+        'default' => '',
+        'grade' => 3,
+        'fileFilter' => [
+            'name' => __('Fichier HTML').' (*.html)',
+            'extensions' => '*.html',
+        ],
+    ],
+    'secureClientSidePasswordCredentials' => [
+        'type' => 'textarea',
+        'label' => 'Utilisateurs / mots de passe',
+        'editable' => true,
+        'default' => '',
+        'grade' => 3,
+        'hint' => 'Format user:password par ligne',
+    ],
+    'preventRightClick' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Essayer d\'empêcher le clic droit'),
+        'grade' => 1,
+    ],
+    'restrictPrintDownload' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'),
+        'grade' => 5,
+        'hint' => __('Ne pas indiquer le ?'),
+    ],
+    'restrictPrint' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Restreindre l\'impression'),
+        'grade' => 5,
+    ],
+    'restrictDownload' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Restreindre le téléchargement du pdf'),
+        'grade' => 5,
+    ],
+    'restrictSendBookmark' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Restreindre l\'envoi de marques-pages'),
+        'grade' => 5,
+    ],
+    'recaptcha' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Activer reCATPCHA v3 (clé du site)'),
+    ],
+    'home' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Accueil de l\'interface multibrochure'),
+        'grade' => 5,
+    ],
+    'country' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Pays de la brochure'),
+    ],
+    'multilangDisplay' => [
+        'type' => 'combo',
+        'default' => 'lang',
+        'editable' => true,
+        'label' => __('Affichage'),
+        'datas' => [
+            'lang' => __('Langue'),
+            'lang_country' => __('Langue').' ('.__('Pays').')',
+            'country_lang' => __('Pays').' ('.__('Langue').')',
+        ],
+    ],
+    'multilang' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Langues'),
+        'hint' => __('Code langue').','.__('Code pays').','.__('URL'),
+    ],
+    'plv' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Activer le mode PLV'),
+        'grade' => 3,
+    ],
+    'plvTimer' => [
+        'type' => 'integer',
+        'min' => 1,
+        'max' => 60,
+        'default' => 5,
+        'editable' => true,
+        'label' => __('Temps'),
+        'grade' => 3,
+    ],
+    'plvMode' => [
+        'type' => 'combo',
+        'default' => 'first',
+        'editable' => true,
+        'label' => __('Arrivé à la dernière page'),
+        'grade' => 3,
+        'datas' => [
+            'back' => __('Remonter vers la première page'),
+            'first' => __('Recommencer à la première page'),
+        ],
+    ],
+    'themeEnableAfterSearch' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Afficher l\'image supplémentaire à droite du moteur de recherche'),
+        'grade' => 3,
+    ],
+    'htmlExtension' => [
+        'type' => 'text',
+        'default' => 'html',
+        'editable' => true,
+        'label' => __('Extension des fichiers html'),
+        'grade' => 5,
+        'hint' => __('Ex : php, htm, html, phtml, asp, aspx'),
+    ],
+    'actualHtmlExtension' => [
+        'type' => 'text',
+        'default' => 'html',
+        'editable' => false,
+        'label' => __('Extension des fichiers html réellement appliquée au fluidbook'),
+        'grade' => 5,
+        'hint' => __('Ex : php, htm, html, phtml, asp'),
+    ],
+    'htmlPrepend' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Code à insérer en tête des fichiers'),
+        'grade' => 5,
+    ],
+    'baseUrl' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Base de l\'url'),
+        'grade' => 5,
+    ],
+    'forceCompileOnDownload' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Forcer la compilation lors du téléchargement'),
+        'grade' => 3,
+    ],
+    'embedAllLibraries' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Intégrer toutes les bibliothèques JS'),
+        'grade' => 3,
+    ],
+    'disableDemo' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Désactiver le lien de démo'),
+        'grade' => 5,
+    ],
+    'redirectDemo' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Rediriger le lien de démo vers'),
+        'grade' => 5,
+    ],
+    'gamify_coins_pages' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Attribuer des coins lors de la visite des pages'),
+    ],
+    'scorm_enable' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Activer SCORM'),
+        'grade' => 5,
+    ],
+    'scorm_version' => [
+        'type' => 'combo',
+        'default' => '1.2',
+        'editable' => true,
+        'label' => __('Version du standard SCORM'),
+        'grade' => 5,
+        'datas' => [
+            '1.2' => __('SCORM 1.2'),
+            '2004.3' => __('SCORM 2004 3rd edition'),
+            2004 => __('SCORM 2004 4th edition'),
+        ],
+    ],
+    'scorm_id' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Identifiant SCORM'),
+        'grade' => 5,
+    ],
+    'scorm_org' => [
+        'type' => 'text',
+        'default' => 'ACME-ORG-1350650111249',
+        'editable' => true,
+        'label' => __('Organisation SCORM'),
+        'grade' => 5,
+    ],
+    'scorm_title' => [
+        'type' => 'text',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Titre SCORM'),
+        'grade' => 5,
+        'hint' => __('Laisser vide pour utiliser le titre de la publication'),
+    ],
+    'scorm_variables' => [
+        'type' => 'textarea',
+        'default' => '',
+        'editable' => true,
+        'label' => __('Variables SCORM'),
+        'grade' => 5,
+        'hint' => __('Laisser vide pour utiliser le titre de la publication'),
+    ],
+    'scorm_complete_on_exit' => [
+        'type' => 'boolean',
+        'default' => false,
+        'label' => 'Marquer le cours comme "Complete" à la fermeture de la fenêtre',
+        'editable' => true,
+    ],
+    'scorm_complete_on_last_page' => [
+        'type' => 'boolean',
+        'default' => false,
+        'label' => 'Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page',
+        'editable' => true,
+    ],
+    'scorm_complete_coins' => [
+        'type' => 'integer',
+        'default' => 0,
+        'label' => 'Marquer le cours comme "Complete" lorsque le visiteur accumule X coins',
+        'editable' => true,
+    ],
+    'scorm_pass_on_complete' => [
+        'type' => 'boolean',
+        'default' => true,
+        'editable' => true,
+        'label' => __('Marquer le cours comme Pass lorsqu\'il est terminé').' ('.__('SCORM 2004 seulement').')',
+    ],
+    'scorm_score100_on_complete' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Marquer le cours comme réussi à 100% lorsqu\'il est terminé'),
+    ],
+    'scorm_quizdata' => [
+        'type' => 'freefile',
+        'editable' => true,
+        'default' => '',
+        'label' => __('Données de quiz'),
+    ],
+    'scorm_score' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Activer le support du score'),
+        'grade' => 5,
+    ],
+    'scorm_score_min' => [
+        'type' => 'integer',
+        'min' => 0,
+        'max' => 100,
+        'default' => 50,
+        'editable' => true,
+        'label' => __('Score minimal pour marquer le contenu comme réussi'),
+        'grade' => 5,
+    ],
+    'scorm_quiz_as_questionnaire' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'),
+        'grade' => 5,
+    ],
+    'scorm_force_attempts' => [
+        'type' => 'boolean',
+        'default' => false,
+        'label' => __('Forcer la création d\'un "attempt" à chaque ouverture'),
+        'editable' => true,
+    ],
+    'scorm_commit_immediately' => [
+        'type' => 'boolean',
+        'default' => false,
+        'editable' => true,
+        'label' => __('Envoyer les données immédiatement au LMS').' ('.__('Peut provoquer des ralentissement sur certains LMS').')',
+    ],
+    'download_online' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => true,
+        'label' => __('Version online - Version par défaut'),
+        'grade' => 3,
+    ],
+    'download_sharepoint' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version Sharepoint - Version par défaut'),
+        'grade' => 3,
+    ],
+    'download_scorm' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version SCORM - Version par défaut'),
+        'grade' => 3,
+    ],
+    'download_win_inss_html' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version offline - Executable Windows'),
+        'grade' => 3,
+    ],
+    'download_win_ins_html' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version offline - Installeur Auto-executable Windows'),
+        'grade' => 3,
+    ],
+    'download_win_exe_html' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version offline - ZIP Windows'),
+        'grade' => 3,
+    ],
+    'download_mac_exe_html' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version offline - Exécutable Mac OS X'),
+        'grade' => 3,
+    ],
+    'download_win_cd_html' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version offline - CD-ROM / Clé USB'),
+        'grade' => 3,
+    ],
+    'download_win_html' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version offline - HTML (Non adaptée à l\'installation sur un serveur web)'),
+        'grade' => 3,
+    ],
+    'download_precompiled' => [
+        'type' => 'boolean',
+        'editable' => true,
+        'default' => false,
+        'label' => __('Version precompilée'),
+        'grade' => 3,
+    ],
+];
+        $this->forms=[
+    'important' => [
+        'label' => __('Description de la publication'),
+        'fieldsnames' => [
+            0 => 'mobileLVersion',
+            1 => 'mobileVersion',
+            2 => 'title',
+            3 => 'url_link',
+            4 => 'signature',
+        ],
+    ],
+    'assets' => [
+        'label' => __('Assets'),
+        'fieldsnames' => [
+            0 => 'assetsDir',
+            1 => 'linksAssets',
+        ],
+    ],
+    'basicStats' => [
+        'label' => __('Statistiques'),
+        'fieldsnames' => [
+            0 => 'stats',
+            1 => 'googleAnalytics',
+            2 => 'googleTagManager',
+        ],
+    ],
+    'share' => [
+        'label' => __('Fonctions de partage'),
+        'fieldsnames' => [
+            0 => 'share',
+            1 => '|',
+            2 => 'email_title',
+            3 => 'email_body',
+            4 => 'email_editable',
+            5 => 'askAcknowledge',
+            6 => 'sendasfluidbook',
+            7 => 'email_mailto',
+            8 => '|',
+            9 => 'facebook_title',
+            10 => 'facebook_description',
+            11 => 'facebook_image',
+            12 => 'twitter_description',
+            13 => 'friend',
+            14 => 'facebook',
+            15 => 'twitter',
+            16 => 'whatsapp',
+            17 => 'linkedin',
+            18 => 'pinterest',
+            19 => 'googleplus',
+            20 => 'viadeo',
+            21 => 'customSharer',
+            22 => 'friendWidth',
+            23 => 'friendHeight',
+        ],
+    ],
+    'seo' => [
+        'label' => __('Optimisation pour les moteurs de recherche'),
+        'fieldsnames' => [
+            0 => 'seoVersion',
+            1 => 'seoRobots',
+            2 => 'seoDescription',
+            3 => 'seoKeywords',
+            4 => 'seoBaseURL',
+            5 => 'seoAdvanced',
+        ],
+    ],
+    '3d_mode' => [
+        'label' => __('Options de visualisation'),
+        'fieldsnames' => [
+            0 => 'mobileNavigationType',
+            1 => 'mobileTransitions',
+            2 => 'mobileTransitionDuration',
+            3 => 'mobileTransitionDurationSlide',
+            4 => 'forceWhiteBackground',
+            5 => 'rasterizePages',
+            6 => 'vectorPages',
+            7 => 'visualisationMode',
+            8 => 'antialiasReading',
+            9 => 'correctCenter',
+            10 => 'pagesBaseAngle',
+            11 => 'centerBook',
+            12 => 'extraXSpace',
+            13 => 'mobileExtraXSpace',
+            14 => 'extraYSpace',
+            15 => 'viewMode',
+            16 => 'dynamicBackgroundColor',
+            17 => 'svgToCanvas',
+            18 => 'svgToCanvasUpscale',
+            19 => 'svgTextMethod',
+            20 => 'textsThickness',
+            21 => 'textsThicknessPages',
+            22 => 'imageFormat',
+            23 => 'maxResolution',
+            24 => 'JPEGQuality',
+        ],
+    ],
+    'performances' => [
+        'label' => __('Performances'),
+        'fieldsnames' => [
+            0 => 'rasterizeOnSafari',
+            1 => 'performance3DMode',
+        ],
+    ],
+    'general' => [
+        'label' => __('Fonctionnalités générales'),
+        'fieldsnames' => [
+            0 => 'tooltipTimer',
+            1 => 'mobilePlugins',
+            2 => 'preload',
+            3 => 'maxPages',
+            4 => 'pages',
+            5 => 'width',
+            6 => 'height',
+        ],
+    ],
+    'menu' => [
+        'label' => __('Menu'),
+        'fieldsnames' => [
+            0 => 'navOrder',
+            1 => 'navOrderH',
+            2 => 'mobileNavScale',
+            3 => 'menuBreakpoint',
+            4 => 'afterSearchDisplayForHTML',
+            5 => 'navExtraImage',
+            6 => 'navExtraImageMobile',
+            7 => 'navExtraLink',
+            8 => 'navExtraTooltip',
+            9 => 'navExtraIcon1',
+            10 => 'navExtraType1',
+            11 => 'navExtraLink1',
+            12 => 'navExtraVisibility1',
+            13 => 'navExtraIcon2',
+            14 => 'navExtraType2',
+            15 => 'navExtraLink2',
+            16 => 'navExtraVisibility2',
+            17 => 'navExtraIcon3',
+            18 => 'navExtraType3',
+            19 => 'navExtraLink3',
+            20 => 'navExtraVisibility3',
+            21 => 'navExtraIcon4',
+            22 => 'navExtraType4',
+            23 => 'navExtraLink4',
+            24 => 'navExtraVisibility4',
+            25 => 'navExtraIcon5',
+            26 => 'navExtraType5',
+            27 => 'navExtraLink5',
+            28 => 'navExtraVisibility5',
+            29 => 'mobileBottomNav',
+        ],
+    ],
+    'landing' => [
+        'label' => __('Custom Landing Page'),
+        'fieldsnames' => [
+            0 => 'landingPage',
+        ],
+    ],
+    'fs' => [
+        'label' => __('Plein écran'),
+        'fieldsnames' => [
+            0 => 'fullscreen',
+            1 => 'fullscreenAuto',
+        ],
+    ],
+    'bookmark' => [
+        'label' => __('Marques-pages'),
+        'fieldsnames' => [
+            0 => 'bookmark',
+            1 => 'bookmarkView',
+            2 => 'bookmarkFunctionsMainMenu',
+            3 => 'bookmarkEmpty',
+            4 => 'bookmarkSendEnable',
+            5 => 'bookmark_email_title',
+            6 => 'bookmark_email_body',
+            7 => 'bookmarkPrint',
+            8 => 'bookmarkCornerSize',
+            9 => 'bookmarkOffset',
+            10 => 'bookmarkPermanentIcon',
+            11 => 'bookmarkBlinkOnPageChange',
+            12 => 'bookmarkDisablePages',
+            13 => 'bookmarkUsePDF',
+        ],
+    ],
+    'help' => [
+        'label' => __('Aide'),
+        'fieldsnames' => [
+            0 => 'help',
+            1 => 'helpStartup',
+            2 => 'helpStartupTime',
+            3 => 'helpBookmarks',
+            4 => 'helpArrowTooltip',
+            5 => 'landscapeWarning',
+        ],
+    ],
+    'index' => [
+        'label' => __('Vue d\'index (vignettes)'),
+        'fieldsnames' => [
+            0 => 'indexAutoScroll',
+            1 => 'pdfThumbnails',
+            2 => 'indexMessage',
+        ],
+    ],
+    'print' => [
+        'label' => __('Impression'),
+        'fieldsnames' => [
+            0 => 'print',
+            1 => 'printFullBrochure',
+            2 => 'printPageRange',
+        ],
+    ],
+    'search' => [
+        'label' => __('Moteur de recherche'),
+        'fieldsnames' => [
+            0 => 'search',
+            1 => 'searchFullBurger',
+            2 => 'ignoreWordLimit',
+            3 => 'ignoreSearch',
+            4 => 'ignoreSearchSeparators',
+            5 => 'searchWordSelectionAlgorithm',
+            6 => 'searchPageSelectionAlgorithm',
+            7 => 'highlightResults',
+            8 => 'highlightAllOccurences',
+            9 => 'searchShowNoResultsPages',
+            10 => 'textExtraction',
+        ],
+    ],
+    'sound' => [
+        'label' => __('Effets sonores'),
+        'fieldsnames' => [
+            0 => 'soundTheme',
+            1 => 'soundOn',
+            2 => 'ambientSound',
+            3 => 'ambientSoundVolume',
+        ],
+    ],
+    'downloadpdf' => [
+        'label' => __('Fonction de téléchargement'),
+        'fieldsnames' => [
+            0 => 'pdf',
+            1 => 'pdfName',
+            2 => 'pdfReplace',
+            3 => 'pdfCompress',
+            4 => 'pdfComplex',
+            5 => 'pdfComplexShowCurrent',
+        ],
+    ],
+    'zoom' => [
+        'label' => __('Zoom'),
+        'fieldsnames' => [
+            0 => 'zoomClick',
+            1 => 'zoomWheel',
+            2 => 'zoom',
+            3 => 'zoomw',
+            4 => 'zoomMouseMoveMode',
+            5 => 'hideHeaderOnZoom',
+        ],
+    ],
+    'slider' => [
+        'label' => __('Slider'),
+        'fieldsnames' => [
+            0 => 'sliderImage',
+        ],
+    ],
+    'stats' => [
+        'label' => __('Statistiques avancées'),
+        'fieldsnames' => [
+            0 => 'tagcommander_id',
+            1 => 'tagcommander_scriptname',
+            2 => 'tagcommander_prod',
+            3 => 'tagcommander_plan',
+            4 => 'tagcommander_default_vars',
+            5 => 'anchorsAliases',
+            6 => 'stats_score',
+            7 => 'stats_exclude_ip',
+            8 => 'relay_url_params',
+            9 => 'gtag_additional_code',
+            10 => 'googleAnalyticsCustom',
+            11 => 'statsCustom',
+            12 => 'xiti',
+            13 => 'xiti_page',
+        ],
+    ],
+    'sommaire' => [
+        'label' => __('Sommaire'),
+        'fieldsnames' => [
+            0 => 'chaptersCaptionDisplay',
+            1 => 'chaptersFontSize',
+            2 => 'displayChaptersIcon',
+            3 => 'displayChaptersPopup',
+            4 => 'displayChaptersAtStart',
+            5 => 'chaptersPage',
+            6 => 'chaptersPosition',
+            7 => 'chaptersLevelLimit',
+            8 => 'chaptersCascade',
+            9 => 'chaptersPagesNumber',
+            10 => 'chaptersColMaxWidth',
+            11 => 'chaptersColumns',
+            12 => 'displayChaptersLine',
+            13 => 'chaptersIndent',
+            14 => 'externalChaptersHTML',
+            15 => 'mobileChaptersStyle',
+        ],
+    ],
+    'tabs' => [
+        'label' => __('Onglets'),
+        'fieldsnames' => [
+            0 => 'tabsHTML5',
+            1 => 'tabsPages',
+            2 => 'tabsSections',
+            3 => 'tabsPagesNumbers',
+            4 => 'tabsDisabledOnPages',
+            5 => 'tabsSide',
+            6 => 'tabsMargin',
+            7 => 'tabsHideOnPages',
+            8 => 'tabsHideOnCover',
+            9 => 'tabsHideOnLastPage',
+            10 => 'tabsHideEdges',
+            11 => 'tabsPriority',
+            12 => 'tabsLinkWidth',
+            13 => 'tabsHideWhenOverlapingArrows',
+            14 => 'tabsHideOnPortrait',
+            15 => 'tabsHideOnZoom',
+        ],
+    ],
+    'links' => [
+        'label' => __('Liens'),
+        'fieldsnames' => [
+            0 => 'permanentLinks',
+            1 => 'mobileLinksRevealAnim',
+            2 => 'linkBlinkTime',
+            3 => 'linkBlinkRepetition',
+            4 => 'openLinkAtStartup',
+            5 => 'customLinkClass',
+            6 => 'ignoreLinksTypes',
+            7 => 'mobileIgnoreBackgroundLinks',
+            8 => 'linkTooltipManager',
+            9 => 'linkCornerSize',
+            10 => 'linkTooltipMaxWidth',
+            11 => 'linkTracker',
+            12 => 'linkTrackerRegexp',
+            13 => 'linkFilePrefix',
+        ],
+    ],
+    'multimedia' => [
+        'label' => __('Multimedia'),
+        'fieldsnames' => [
+            0 => 'textPopupStylesheet',
+            1 => 'textPopupWidth',
+            2 => 'iframePopupMaxWidth',
+            3 => 'OAMChromeFactor',
+            4 => 'OAMIEFactor',
+        ],
+    ],
+    'pdf' => [
+        'label' => 'PDF',
+        'fieldsnames' => [
+            0 => 'PDFRenderer',
+            1 => 'PDFRendererIframe',
+            2 => 'PDFJSCSS',
+        ],
+    ],
+    'slideshow' => [
+        'label' => __('Slideshow'),
+        'fieldsnames' => [
+            0 => 'inlineSlideshowLibrary',
+            1 => 'popupSlideshowLibrary',
+            2 => 'slideshowCaptionSize',
+            3 => 'inlineSlideshowTransitionDuration',
+            4 => 'inlineSlideshowDuration',
+        ],
+    ],
+    'videos' => [
+        'label' => __('Vidéos'),
+        'fieldsnames' => [
+            0 => 'webvideoAsLocal',
+            1 => 'mobileVideosPath',
+            2 => 'brightcovePlayerId',
+            3 => 'brightcovePlayerSecret',
+            4 => 'bigPlayImage',
+        ],
+    ],
+    'audio' => [
+        'label' => __('Lecteur audio'),
+        'fieldsnames' => [
+            0 => 'audioPlayerTheme',
+        ],
+    ],
+    'downloadportion' => [
+        'label' => __('Téléchargement d\'extraits'),
+        'fieldsnames' => [
+            0 => 'downloadPortionPDF',
+            1 => 'downloadPortionZoom',
+        ],
+    ],
+    'product_zoom' => [
+        'label' => __('Zooms produits'),
+        'fieldsnames' => [
+            0 => 'product_zoom_references',
+            1 => 'product_zoom_buttons_order',
+            2 => 'product_zoom_label_1',
+            3 => 'product_zoom_tooltip_1',
+            4 => 'product_zoom_icon_1',
+            5 => 'product_zoom_action_1',
+            6 => 'product_zoom_label_2',
+            7 => 'product_zoom_tooltip_2',
+            8 => 'product_zoom_icon_2',
+            9 => 'product_zoom_action_2',
+            10 => 'product_zoom_label_3',
+            11 => 'product_zoom_tooltip_3',
+            12 => 'product_zoom_icon_3',
+            13 => 'product_zoom_action_3',
+            14 => 'product_share_enabled',
+            15 => 'product_share_link',
+            16 => 'product_email_title',
+            17 => 'product_email_body',
+            18 => 'product_tweet',
+        ],
+    ],
+    'accessibility' => [
+        'label' => __('Accessibilité'),
+        'fieldsnames' => [
+            0 => 'audiodescriptionTexts',
+            1 => 'audiodescriptionVoice',
+        ],
+    ],
+    'splash' => [
+        'label' => __('Ecran de chargement'),
+        'fieldsnames' => [
+            0 => 'splashImage',
+            1 => 'splashURL',
+            2 => 'splashTarget',
+            3 => 'splashMinimalTime',
+        ],
+    ],
+    'notes' => [
+        'label' => __('Notes'),
+        'fieldsnames' => [
+            0 => 'notes',
+        ],
+    ],
+    'articles' => [
+        'label' => __('Articles'),
+        'fieldsnames' => [
+            0 => 'articlesFile',
+            1 => 'articlesImages',
+            2 => 'articlesShare',
+            3 => 'articlesPrint',
+            4 => 'articlesStyle',
+            5 => 'articlesFont',
+        ],
+    ],
+    'archives' => [
+        'label' => __('Archives'),
+        'fieldsnames' => [
+            0 => 'externalArchives',
+            1 => 'archivesLabel',
+        ],
+    ],
+    'form' => [
+        'label' => __('Formulaire'),
+        'fieldsnames' => [
+            0 => 'form',
+        ],
+    ],
+    'privacy' => [
+        'label' => __('Respect de la vie privée'),
+        'fieldsnames' => [
+            0 => 'cookieConsent',
+            1 => 'cookieConsentMessage',
+            2 => 'cookieConsentAutoclose',
+        ],
+    ],
+    'basket' => [
+        'label' => __('Panier'),
+        'fieldsnames' => [
+            0 => 'basket',
+            1 => 'basketManager',
+            2 => 'cartIcon',
+            3 => 'cartLinkAppearance',
+            4 => 'basketReferences',
+            5 => 'basketImages',
+            6 => 'cartHeaderImage',
+            7 => 'cartHeaderMobileImage',
+            8 => 'cartExtraSettings',
+        ],
+    ],
+    'offline' => [
+        'label' => __('Version offline'),
+        'fieldsnames' => [
+            0 => 'offlineTitle',
+            1 => 'offlineLink',
+            2 => 'offlineWindowsInstallPath',
+            3 => 'offlineWindowsProfilePath',
+            4 => 'offlineEnableAdvancedPrinting',
+            5 => 'debugConsole',
+        ],
+    ],
+    'mobilefirst' => [
+        'label' => __('Mobile first'),
+        'fieldsnames' => [
+            0 => 'mobilefirstFluidbookId',
+            1 => 'mobilefirstBreakpoint',
+        ],
+    ],
+    'phonegap' => [
+        'label' => __('Applications mobile'),
+        'fieldsnames' => [
+            0 => 'phonegapId',
+            1 => 'phonegapVersion',
+            2 => 'phonegapPlugins',
+            3 => 'appScreenshots',
+        ],
+    ],
+    'secure' => [
+        'label' => __('Sécurisation'),
+        'fieldsnames' => [
+            0 => 'secureURL',
+            1 => 'secureURLRedirect',
+            2 => 'secureClientSidePassword',
+            3 => 'secureClientSidePasswordCredentials',
+            4 => 'preventRightClick',
+            5 => 'restrictPrintDownload',
+            6 => 'restrictPrint',
+            7 => 'restrictDownload',
+            8 => 'restrictSendBookmark',
+            9 => 'recaptcha',
+        ],
+    ],
+    'multibrochure' => [
+        'label' => __('Multibrochure'),
+        'fieldsnames' => [
+            0 => 'home',
+            1 => 'country',
+            2 => 'multilangDisplay',
+            3 => 'multilang',
+        ],
+    ],
+    'plv' => [
+        'label' => __('Mode PLV'),
+        'fieldsnames' => [
+            0 => 'plv',
+            1 => 'plvTimer',
+            2 => 'plvMode',
+        ],
+    ],
+    'theme' => [
+        'label' => __('Options du thème'),
+        'fieldsnames' => [
+            0 => 'themeEnableAfterSearch',
+        ],
+    ],
+    'package' => [
+        'label' => __('Option d\'export'),
+        'fieldsnames' => [
+            0 => 'htmlExtension',
+            1 => 'actualHtmlExtension',
+            2 => 'htmlPrepend',
+            3 => 'baseUrl',
+            4 => 'forceCompileOnDownload',
+            5 => 'embedAllLibraries',
+        ],
+    ],
+    'demo' => [
+        'label' => __('Lien de démo'),
+        'fieldsnames' => [
+            0 => 'disableDemo',
+            1 => 'redirectDemo',
+        ],
+    ],
+    'gamify' => [
+        'label' => __('Gamification'),
+        'fieldsnames' => [
+            0 => 'gamify_coins_pages',
+        ],
+    ],
+    'scorm' => [
+        'label' => __('SCORM'),
+        'fieldsnames' => [
+            0 => 'scorm_enable',
+            1 => 'scorm_version',
+            2 => 'scorm_id',
+            3 => 'scorm_org',
+            4 => 'scorm_title',
+            5 => 'scorm_variables',
+            6 => 'scorm_complete_on_exit',
+            7 => 'scorm_complete_on_last_page',
+            8 => 'scorm_complete_coins',
+            9 => 'scorm_pass_on_complete',
+            10 => 'scorm_score100_on_complete',
+            11 => 'scorm_quizdata',
+            12 => 'scorm_score',
+            13 => 'scorm_score_min',
+            14 => 'scorm_quiz_as_questionnaire',
+            15 => 'scorm_force_attempts',
+            16 => 'scorm_commit_immediately',
+        ],
+    ],
+    0 => [
+        'key' => 'downloads',
+        'label' => __('Versions disponibles au téléchargement'),
+        'fieldsnames' => [
+            0 => 'download_online',
+            1 => 'download_sharepoint',
+            2 => 'download_scorm',
+            3 => 'download_win_inss_html',
+            4 => 'download_win_ins_html',
+            5 => 'download_win_exe_html',
+            6 => 'download_mac_exe_html',
+            7 => 'download_win_cd_html',
+            8 => 'download_win_html',
+            9 => 'download_precompiled',
+        ],
+    ],
+];
     }
 }
index 15fde3f48f47cb27f64697900b60465a7d955d67..ae5d7544df577a1b298d4937480199ad961509dc 100644 (file)
@@ -331,7 +331,7 @@ class wsParametres extends cubeMetier implements Iterator
                 echo $this->generateV3Field(['name' => 'section_' . $formname, 'type' => 'FormSection', 'label' => $form['label']]);\r
                 $_tab = $tab;\r
             } else {\r
-                $_tab = $form['label'];\r
+                $_tab = $this->__($form['label']);\r
             }\r
             foreach ($form['fieldsnames'] as $fieldsname) {\r
                 if ($fieldsname === '|') {\r
@@ -355,7 +355,7 @@ class wsParametres extends cubeMetier implements Iterator
         $res = "    ";\r
         $res .= '$this->addField(\'' . addcslashes($attributes['name'], "'") . '\', ' . $attributes['type'] . '::class';\r
         if (isset($attributes['label']) && $attributes['label']) {\r
-            $res .= ', ' . $attributes['label'];\r
+            $res .= ', ' . $this->_varexport($attributes['label'], true);\r
         }\r
         unset($attributes['name']);\r
         unset($attributes['type']);\r
@@ -366,12 +366,21 @@ class wsParametres extends cubeMetier implements Iterator
         $res .= ');';\r
         $res .= "\n";\r
 \r
+//        $res = str_replace("!\\\\u00a7!\'", '!\\\\u00a7!', $res);\r
+//        $res = str_replace("\'\\\\u00a7!\\\\u00a7", '\\\\u00a7!\\\\u00a7', $res);\r
+//        $res = str_replace("'\'§!§", "'§!§", $res);\r
+//        $res = str_replace("!§!\''", "!§!'", $res);\r
 \r
-        $res = str_replace("'§!§", '__(\'', $res);\r
-        $res = str_replace("!§!'", '\')', $res);\r
-        $res = preg_replace_callback('/§!§(.*)!§!/uU', function ($matches) {\r
-            return '__(\'' . addcslashes($matches[1], "'") . '\')';\r
-        }, $res);\r
+        $res = str_replace("§!§", '\'.$this->__(\'', $res);\r
+        $res = str_replace("!§!", '\').\'', $res);\r
+        $res = str_replace("''.", '', $res);\r
+        $res = str_replace(".''", '', $res);\r
+\r
+\r
+\r
+//        $res = preg_replace_callback('/§!§(.*)!§!/uU', function ($matches) {\r
+//            return '__(\'' . addcslashes($matches[1], "'") . '\')';\r
+//        }, $res);\r
 \r
         return $res;\r
     }\r
@@ -390,7 +399,6 @@ class wsParametres extends cubeMetier implements Iterator
             $f['allows_alpha'] = true;\r
         }\r
 \r
-\r
         $attrs = ['name' => $name, 'type' => $typeMap[$f['type']] ?? $f['type'], 'v2' => json_encode($orig)];\r
 \r
         if ($name == 'signature') {\r
@@ -436,6 +444,9 @@ class wsParametres extends cubeMetier implements Iterator
     protected function _varexport($expression, $return = FALSE)\r
     {\r
         $export = var_export($expression, TRUE);\r
+        if (!is_array($expression)) {\r
+            return $export;\r
+        }\r
         $export = preg_replace("/^([ ]*)(.*)/m", '$1$1$2', $export);\r
         $array = preg_split("/\r\n|\n|\r/", $export);\r
         $array = preg_replace(["/\s*array\s\($/", "/\)(,)?$/", "/\s=>\s$/"], [NULL, ']$1', ' => ['], $array);\r
@@ -450,6 +461,9 @@ class wsParametres extends cubeMetier implements Iterator
     public function __($str)\r
     {\r
         if ($this->context === 'export') {\r
+            if (stristr($str, '§!§')) {\r
+                return $str;\r
+            }\r
             return '§!§' . $str . '!§!';\r
         } else {\r
             return __($str);\r