From 896507363504402811c410bb7c783e40446d2925 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Thu, 29 Jul 2021 16:01:35 +0200 Subject: [PATCH] wip #4211 @1.5 --- app/Console/Commands/WorkshopMigration.php | 30 +- app/Fields/FluidbookDevelopmentVersion.php | 27 + app/Fields/FluidbookSignature.php | 24 + app/Models/FluidbookPublication.php | 3134 ++++++++++++++++- app/Models/FluidbookTheme.php | 10 +- .../base/inc/sidebar_content.blade.php | 6 +- .../crud/inc/form_save_buttons.blade.php | 8 +- 7 files changed, 3204 insertions(+), 35 deletions(-) create mode 100644 app/Fields/FluidbookDevelopmentVersion.php create mode 100644 app/Fields/FluidbookSignature.php diff --git a/app/Console/Commands/WorkshopMigration.php b/app/Console/Commands/WorkshopMigration.php index 9a78f5447..66893dbf3 100644 --- a/app/Console/Commands/WorkshopMigration.php +++ b/app/Console/Commands/WorkshopMigration.php @@ -3,12 +3,8 @@ namespace App\Console\Commands; -use App\Models\FluidbookTheme; use App\Models\FluidbookQuote; -use App\Models\FluidbookTranslate; use Cubist\Backpack\Console\Commands\CubistCommand; -use Cubist\Backpack\Magic\Fields\Files; -use Cubist\Backpack\Magic\Fields\Color; use Illuminate\Support\Facades\DB; class WorkshopMigration extends CubistCommand @@ -25,7 +21,7 @@ class WorkshopMigration extends CubistCommand //'Backup current database' => 'backup', //'Import Quotes' => 'importQuotes', 'Migrate magic models' => 'migrate', - 'Import Translations' => 'importTranslations', + 'Import publications' => 'importPublications', 'Clean caches' => 'cleanCache' ]; @@ -97,29 +93,7 @@ class WorkshopMigration extends CubistCommand } } - protected function importTranslations() - { - $slug = []; - $nsis = []; - $contents = []; - - foreach (DB::table($this->_oldDB . '.langues')->get() as $e) { - $code = $e->lang_id; - if (stristr($code, '-')) { - $ex = explode('-', $code); - $code = $ex[0] . '_' . mb_strtoupper($ex[1]); - } - $slug[$code] = '1'; - $nsis[$code] = $e->nsis; - $contents[$code] = ['k' => '-']; - $translations = json_decode($e->traductions, true); - foreach ($translations as $str => $translation) { - $contents[$code]['t_' . base64_encode($str)] = $translation; - } - touch(FluidbookTranslate::getLanguageFile($code)); - } + protected function importPublications(){ - DB::table('fluidbook_translate')->where('id',1)->update(['slug' => json_encode($slug), 'nsis' => json_encode($nsis), 'content_translatable' => json_encode($contents)]); } - } diff --git a/app/Fields/FluidbookDevelopmentVersion.php b/app/Fields/FluidbookDevelopmentVersion.php new file mode 100644 index 000000000..bc8239032 --- /dev/null +++ b/app/Fields/FluidbookDevelopmentVersion.php @@ -0,0 +1,27 @@ + 'stable', + 'master : local (dev)' => 'dev']; + + foreach ($versions as $version) { + if ($version === 'master') { + continue; + } + $res[$version . ' : git'] = $version . '|git'; + $res[$version . ' : local'] = $version . '|local'; + } + return $res; + } +} diff --git a/app/Fields/FluidbookSignature.php b/app/Fields/FluidbookSignature.php new file mode 100644 index 000000000..ecd80d5f0 --- /dev/null +++ b/app/Fields/FluidbookSignature.php @@ -0,0 +1,24 @@ +setAttribute('optionsmodel', Signature::class); + } + + /** + * @param $e \Illuminate\Database\Eloquent\Model + * @return \Illuminate\Database\Eloquent\Model + */ + public function getClause($e) + { + return $e->where('active', 1); + } +} diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index b7ef7c7ba..643ab62b7 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -3,7 +3,10 @@ namespace App\Models; +use App\Fields\FluidbookDevelopmentVersion; use App\Fields\FluidbookLocale; +use App\Fields\FluidbookSignature; +use App\Fields\User; use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; use Illuminate\Database\Eloquent\Builder; @@ -16,6 +19,8 @@ class FluidbookPublication extends CubistMagicAbstractModel protected $_enableBulk = false; + protected $_enableTrackNonDefaultValues = true; + public static function addOwnerClause(Builder $builder) { if (backpack_user()->hasPermissionTo('fluidbook-quote:admin')) { @@ -28,7 +33,3132 @@ class FluidbookPublication extends CubistMagicAbstractModel { parent::setFields(); - $this->addField('title','Text',__('Titre de la publication')); - $this->addField('locale',FluidbookLocale::class,__('Langue par défaut')); + $this->addField(['name' => 'owner', + 'label' => __('Propriétaire'), + 'type' => User::class, + 'column' => true, + 'can' => 'quiz:admin', + 'column_attribute' => 'companyWithNameOnTwoLines', + 'attribute' => 'companyWithName', + 'default' => backpack_user()->id] + ); + + $this->setSettingsFields(); + } + + public function setSettingsFields() + { + $this->addField([ + 'name' => 'section_important', + 'type' => 'FormSection', + 'label' => 'Description de la publication', + ]); + $this->addField([ + 'name' => 'mobileLVersion', + 'type' => FluidbookDevelopmentVersion::class, + 'label' => __('Version logicielle'), + 'default' => 'dev', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'mobileVersion', + 'type' => 'SelectFromArray', + 'options' => [ + 'html5-desktop' => 'Version HTML5 recommandée (vecteurs sur desktop)', + 'html5' => 'Version HTML5 vecteurs', + 'html5-images' => 'Version HTML5 en images', + ], + 'label' => __('Version mobile'), + 'default' => 'html5-desktop', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'title', + 'type' => 'Text', + 'label' => __('Titre de la publication'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'url_link', + 'type' => 'Text', + 'label' => __('URL du lien de retour au site'), + 'default' => 'https://', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'signature', + 'type' => FluidbookSignature::class, + 'label' => __('Signature'), + 'default' => '1', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_assets', + 'type' => 'FormSection', + 'label' => 'Assets', + ]); + $this->addField([ + 'name' => 'assetsDir', + 'type' => 'Integer', + 'label' => __('Utiliser le dossier d\'assets du fluidbook'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linksAssets', + 'type' => 'FilesOrURL', + 'label' => __('Charger ou remplacer des fichiers de liens'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_basicStats', + 'type' => 'FormSection', + 'label' => 'Statistiques', + ]); + $this->addField([ + 'name' => 'stats', + 'type' => 'Checkbox', + 'label' => __('Activer les statistiques Fluidbook'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'googleAnalytics', + 'type' => 'Text', + 'label' => __('Code Google Analytics'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'googleTagManager', + 'type' => 'Text', + 'label' => __('Code Google Tag Manager'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_share', + 'type' => 'FormSection', + 'label' => 'Fonctions de partage', + ]); + $this->addField([ + 'name' => 'share', + 'type' => 'Checkbox', + 'label' => __('Activer les fonctions de partage'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'email_title', + 'type' => 'Text', + 'label' => __('Titre de l\'email "Envoyer à un ami"'), + 'hint' => __('Laisser vide pour utiliser la valeur par défaut'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'email_body', + 'type' => 'Textarea', + 'label' => __('Corps de l\'email "Envoyer à un ami"'), + 'hint' => __('Laisser vide pour utiliser la valeur par défaut'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'facebook_title', + 'type' => 'Text', + 'label' => __('Titre du contenu partagé'), + 'hint' => __('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'facebook_description', + 'type' => 'Textarea', + 'label' => __('Description du contenu partagé'), + 'hint' => __('Description proposée sur les fonctions de partage (par défaut, vide)'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'facebook_image', + 'type' => 'FilesOrURL', + 'label' => __('Miniature affichée'), + 'default' => '', + 'accept' => [ + 0 => '*.jpg', + 1 => '*.jpeg', + 2 => '*.png', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'twitter_description', + 'type' => 'Textarea', + 'label' => __('Contenu Partage court'), + 'hint' => __('Contenu du partagé sur les partages courts'), + 'default' => '%title% : %short%', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'friend', + 'type' => 'Checkbox', + 'label' => __('E-mail'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'facebook', + 'type' => 'Checkbox', + 'label' => __('Facebook'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'twitter', + 'type' => 'Checkbox', + 'label' => __('Twitter'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'whatsapp', + 'type' => 'Checkbox', + 'label' => __('WhatsApp'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linkedin', + 'type' => 'Checkbox', + 'label' => __('LinkedIn'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pinterest', + 'type' => 'Checkbox', + 'label' => __('Pinterest'), + 'default' => false, + 'translatable' => false, + ]); + + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'customSharer', + 'type' => 'Text', + 'label' => __('Classe personnalisée de partage'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'friendWidth', + 'type' => 'Integer', + 'label' => __('Largeur du menu'), + 'default' => 319, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'friendHeight', + 'type' => 'Integer', + 'label' => __('Largeur du menu'), + 'default' => 500, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_seo', + 'type' => 'FormSection', + 'label' => 'Optimisation pour les moteurs de recherche', + ]); + $this->addField([ + 'name' => 'seoVersion', + 'type' => 'Checkbox', + 'label' => __('Générer une version pour les moteurs de recherche'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'seoRobots', + 'type' => 'Checkbox', + 'label' => __('Autoriser le parcours par les moteurs de recherche'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'seoDescription', + 'type' => 'Textarea', + 'label' => __('Meta tag Description'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'seoKeywords', + 'type' => 'Textarea', + 'label' => __('Meta tag Keywords'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'seoBaseURL', + 'type' => 'Text', + 'label' => __('URL de base'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'seoAdvanced', + 'type' => 'FilesOrURL', + 'label' => __('Données SEO par page'), + 'default' => '', + 'accept' => [ + 0 => '*.xlsx', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_3d_mode', + 'type' => 'FormSection', + 'label' => 'Options de visualisation', + ]); + $this->addField([ + 'name' => 'mobileNavigationType', + 'type' => 'SelectFromArray', + 'options' => [ + 'book' => 'Normal (automatique)', + 'landscape' => 'Normal (double page)', + 'portrait' => 'Normal (une page)', + 'mobilefirst' => 'Mobile first', + 'tab' => 'Magazine tablette', + ], + 'label' => __('Mode de navigation'), + 'default' => 'book', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'mobileTransitions', + 'type' => 'SelectFromArray', + 'options' => [ + 'none' => 'Aucune transition', + 'fade' => 'Opacité', + 'slide' => 'Glisser', + 'flip' => 'Tourner (rigide)', + 'flip3d' => 'Tourner (souple)', + ], + 'label' => __('Transitions entre les pages'), + 'default' => 'flip3d', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'mobileTransitionDuration', + 'type' => 'Number', + 'label' => __('Durée de la transition'), + 'default' => '0.5', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'forceWhiteBackground', + 'type' => 'Checkbox', + 'label' => __('Ajouter un fond blanc aux pages'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'rasterizePages', + 'type' => 'Textarea', + 'label' => __('Ecraser les pages'), + 'hint' => __('1-3,5 = 1,2,3,5'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'vectorPages', + 'type' => 'Textarea', + 'label' => __('Conserver les pages en vecteur'), + 'hint' => __('1-3,5 = 1,2,3,5'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'visualisationMode', + 'type' => 'SelectFromArray', + 'options' => [ + 0 => 'Mode 3D', + 1 => 'Mode 2D (caméra fixe et pages à plat)', + 2 => 'Laisser le choix à l\'utilisateur (mode 3D par défaut)', + 3 => 'Laisser le choix à l\'utilisateur (mode 2D par défaut)', + ], + 'label' => __('Mode de visualisation 3D'), + 'default' => '3', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'antialiasReading', + 'type' => 'Checkbox', + 'label' => __('Amélioration de la lisibilité en mode 2D'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'correctCenter', + 'type' => 'Checkbox', + 'label' => __('Corriger les lignes blanches entre les pages'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pagesBaseAngle', + 'type' => 'Integer', + 'label' => __('Angle de base entre les pages'), + 'hint' => __('0 : Publication à plat +2 : Valeur par défaut'), + 'default' => '2', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'centerBook', + 'type' => 'Checkbox', + 'label' => __('Centrer la publication sur les couvertures'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'extraXSpace', + 'type' => 'Integer', + 'label' => __('Marge supplémentaire horizontale'), + 'default' => '0', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'mobileExtraXSpace', + 'type' => 'Integer', + 'label' => __('Marge supplémentaire horizontale'), + 'default' => '0', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'extraYSpace', + 'type' => 'Integer', + 'label' => __('Marge supplémentaire verticale'), + 'default' => '0', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'viewMode', + 'type' => 'SelectFromArray', + 'options' => [ + 0 => 'Classique', + 1 => 'Diaporama', + ], + 'label' => __('Mode de visualisation (beta)'), + 'default' => '0', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'dynamicBackgroundColor', + 'type' => 'Textarea', + 'label' => __('Couleur de fond dynamique'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'imageFormat', + 'type' => 'SelectFromArray', + 'options' => [ + 'jpg' => 'JPEG', + 'png' => 'PNG', + ], + 'label' => __('Format des images'), + 'default' => 'jpg', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'maxResolution', + 'type' => 'SelectFromArray', + 'options' => [ + 300 => '300dpi', + 150 => '150dpi', + ], + 'label' => __('Résolution maximale des pages'), + 'default' => 300, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_performances', + 'type' => 'FormSection', + 'label' => 'Performances', + ]); + $this->addField([ + 'name' => 'rasterizeOnSafari', + 'type' => 'Checkbox', + 'label' => __('Ecraser les pages pour Safari (Mac OS)'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_general', + 'type' => 'FormSection', + 'label' => 'Fonctionnalités générales', + ]); + $this->addField([ + 'name' => 'tooltipTimer', + 'type' => 'Number', + 'label' => __('Temps maximum d\'apparition des infos-bulles (en secondes)'), + 'default' => 3, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'mobilePlugins', + 'type' => 'Textarea', + 'label' => __('Plugin'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'preload', + 'type' => 'Integer', + 'label' => __('Nombre de pages à précharger'), + 'default' => 16, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'maxPages', + 'type' => 'Integer', + 'label' => __('Nombre de pages maximal affiché à l\'ouverture du fluidbook (pas de limite = 0)'), + 'default' => 0, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pages', + 'type' => 'Integer', + 'label' => __('Nombre de pages'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'width', + 'type' => 'Number', + 'label' => __('Largeur'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'height', + 'type' => 'Number', + 'label' => __('Hauteur'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_menu', + 'type' => 'FormSection', + 'label' => 'Menu', + ]); + $this->addField([ + 'name' => 'navOrder', + 'type' => 'Textarea', + 'label' => __('Ordre des icônes dans la nav horizontale'), + 'default' => 'index, chapters, search, print, friend, bookmark, pdf, notes, archives, basket, fullscreen, sound, 3d, extra, extra1, extra2, extra3, extra4, extra5, help, lang', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navOrderH', + 'type' => 'Textarea', + 'label' => __('Ordre des icônes dans le menu burger (Si différente)'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'mobileNavScale', + 'type' => 'Integer', + 'label' => __('Taille du menu (en %)'), + 'default' => '100', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'menuBreakpoint', + 'type' => 'Text', + 'label' => __('Breakpoint burger menu'), + 'hint' => __('Par défaut 1023px'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'afterSearchDisplayForHTML', + 'type' => 'Checkbox', + 'label' => __('Afficher l\'image après le moteur de recherche sur la version HTML5'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'navExtraImage', + 'type' => 'FilesOrURL', + 'label' => __('Image pour navigation'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraImageMobile', + 'type' => 'FilesOrURL', + 'label' => __('Image pour mobile'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraLink', + 'type' => 'Text', + 'label' => __('URL'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraTooltip', + 'type' => 'Text', + 'label' => __('Infobulle ou label'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'navExtraIcon1', + 'type' => 'FilesOrURL', + 'label' => __('Icône supplémentaire 1'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraType1', + 'type' => 'SelectFromArray', + 'options' => [ + 'icon' => 'Icône + Label', + 'image' => 'Image', + ], + 'label' => __('Type'), + 'default' => 'icon', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraLink1', + 'type' => 'Text', + 'label' => __('URL 1'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraVisibility1', + 'type' => 'SelectFromArray', + 'options' => [ + 'horizontal' => 'Navigation horizontale', + 'burger' => 'Navigation burger', + 'both' => 'Navigations horizontale et burger', + ], + 'label' => __('Visible 1'), + 'default' => 'both', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'navExtraIcon2', + 'type' => 'FilesOrURL', + 'label' => __('Icône supplémentaire 2'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraType2', + 'type' => 'SelectFromArray', + 'options' => [ + 'icon' => 'Icône + Label', + 'image' => 'Image', + ], + 'label' => __('Type'), + 'default' => 'icon', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraLink2', + 'type' => 'Text', + 'label' => __('URL 2'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraVisibility2', + 'type' => 'SelectFromArray', + 'options' => [ + 'horizontal' => 'Navigation horizontale', + 'burger' => 'Navigation burger', + 'both' => 'Navigations horizontale et burger', + ], + 'label' => __('Visible 2'), + 'default' => 'both', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'navExtraIcon3', + 'type' => 'FilesOrURL', + 'label' => __('Icône supplémentaire 3'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraType3', + 'type' => 'SelectFromArray', + 'options' => [ + 'icon' => 'Icône + Label', + 'image' => 'Image', + ], + 'label' => __('Type'), + 'default' => 'icon', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraLink3', + 'type' => 'Text', + 'label' => __('URL 3'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraVisibility3', + 'type' => 'SelectFromArray', + 'options' => [ + 'horizontal' => 'Navigation horizontale', + 'burger' => 'Navigation burger', + 'both' => 'Navigations horizontale et burger', + ], + 'label' => __('Visible 3'), + 'default' => 'both', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'navExtraIcon4', + 'type' => 'FilesOrURL', + 'label' => __('Icône supplémentaire 4'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraType4', + 'type' => 'SelectFromArray', + 'options' => [ + 'icon' => 'Icône + Label', + 'image' => 'Image', + ], + 'label' => __('Type'), + 'default' => 'icon', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraLink4', + 'type' => 'Text', + 'label' => __('URL 4'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraVisibility4', + 'type' => 'SelectFromArray', + 'options' => [ + 'horizontal' => 'Navigation horizontale', + 'burger' => 'Navigation burger', + 'both' => 'Navigations horizontale et burger', + ], + 'label' => __('Visible 4'), + 'default' => 'both', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'navExtraIcon5', + 'type' => 'FilesOrURL', + 'label' => __('Icône supplémentaire 5'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraType5', + 'type' => 'SelectFromArray', + 'options' => [ + 'icon' => 'Icône + Label', + 'image' => 'Image', + ], + 'label' => __('Type'), + 'default' => 'icon', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraLink5', + 'type' => 'Text', + 'label' => __('URL 5'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'navExtraVisibility5', + 'type' => 'SelectFromArray', + 'options' => [ + 'horizontal' => 'Navigation horizontale', + 'burger' => 'Navigation burger', + 'both' => 'Navigations horizontale et burger', + ], + 'label' => __('Visible 5'), + 'default' => 'both', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'mobileBottomNav', + 'type' => 'Text', + 'label' => __('Barre de boutons en bas'), + 'hint' => __('Identifiants des boutons séparés par des virgules'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_landing', + 'type' => 'FormSection', + 'label' => 'Custom Landing Page', + ]); + $this->addField([ + 'name' => 'landingPage', + 'type' => 'FilesOrURL', + 'label' => __('Landing Page content'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_fs', + 'type' => 'FormSection', + 'label' => 'Plein écran', + ]); + $this->addField([ + 'name' => 'fullscreen', + 'type' => 'Checkbox', + 'label' => __('Activer le mode plein-écran'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'fullscreenAuto', + 'type' => 'Checkbox', + 'label' => __('Lancer la publication en mode plein écran (lorsque possible)'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_bookmark', + 'type' => 'FormSection', + 'label' => 'Marques-pages', + ]); + $this->addField([ + 'name' => 'bookmark', + 'type' => 'Checkbox', + 'label' => __('Activer les marques-pages'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'bookmarkSendEnable', + 'type' => 'Checkbox', + 'label' => __('Activer l\'envoi des marques-pages par e-mail'), + 'default' => 'true', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'bookmark_email_title', + 'type' => 'Text', + 'label' => __('Titre de l\'email "Envoyer à un ami"'), + 'hint' => __('Laisser vide pour utiliser la valeur par défaut'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'bookmark_email_body', + 'type' => 'Textarea', + 'label' => __('Corps de l\'email "Envoyer à un ami"'), + 'hint' => __('Laisser vide pour utiliser la valeur par défaut'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'bookmarkCornerSize', + 'type' => 'Integer', + 'label' => __('Taille des marques-pages'), + 'hint' => __('Taille relative à la largeur de la page'), + 'default' => 8, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'bookmarkOffset', + 'type' => 'Integer', + 'label' => __('Décaler de x pixels vers l\'intérieur'), + 'default' => 0, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'bookmarkPermanentIcon', + 'type' => 'Checkbox', + 'label' => __('Afficher l\'icône en permanance'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'bookmarkBlinkOnPageChange', + 'type' => 'Checkbox', + 'label' => __('Faire clignoter le marque page à l\'apparition de la page'), + 'default' => 'false', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'bookmarkDisablePages', + 'type' => 'Text', + 'label' => __('Désactiver les marques-pages sur ces pages'), + 'hint' => __('1-3,5 = 1,2,3,5'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'bookmarkUsePDF', + 'type' => 'SelectFromArray', + 'options' => [ + 'pages' => 'PDF des pages', + 'download' => 'PDF de remplacement', + 'thumbnails' => 'PDF des miniatures', + ], + 'label' => __('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'), + 'default' => 'pages', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_help', + 'type' => 'FormSection', + 'label' => 'Aide', + ]); + $this->addField([ + 'name' => 'help', + 'type' => 'Checkbox', + 'label' => __('Activer l\'aide'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'helpStartup', + 'type' => 'Checkbox', + 'label' => __('Afficher l\'aide au démarrage'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'helpStartupTime', + 'type' => 'Integer', + 'label' => __('Temps d\'affichage en secondes'), + 'default' => 15, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'helpBookmarks', + 'type' => 'Checkbox', + 'label' => __('Améliorer l\'aide des marques-pages'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'helpArrowTooltip', + 'type' => 'Text', + 'label' => __('Bulle affichée au niveau de la flèche de droite'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'landscapeWarning', + 'type' => 'Textarea', + 'label' => __('Avertissement affiché sur mobile au chargement de la publication'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_index', + 'type' => 'FormSection', + 'label' => 'Vue d\'index (vignettes)', + ]); + $this->addField([ + 'name' => 'indexAutoScroll', + 'type' => 'Checkbox', + 'label' => __('Activer le scroll automatique'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pdfThumbnails', + 'type' => 'FilesOrURL', + 'label' => __('PDF utilisé pour générer les miniatures'), + 'default' => '', + 'accept' => [ + 0 => '*.pdf', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'indexMessage', + 'type' => 'Textarea', + 'label' => __('Message en haut'), + 'hint' => __('Message en haut de la vue index'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_print', + 'type' => 'FormSection', + 'label' => 'Impression', + ]); + $this->addField([ + 'name' => 'print', + 'type' => 'Checkbox', + 'label' => __('Activer l\'impression'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'printFullBrochure', + 'type' => 'Checkbox', + 'label' => __('Autoriser l\'impression de la brochure complète'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'printPageRange', + 'type' => 'Checkbox', + 'label' => __('Activer l\'option pour imprimer une plage de pages'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_search', + 'type' => 'FormSection', + 'label' => 'Moteur de recherche', + ]); + $this->addField([ + 'name' => 'search', + 'type' => 'Checkbox', + 'label' => __('Activer le moteur de recherche'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'ignoreWordLimit', + 'type' => 'Integer', + 'label' => __('Ignorer les mots de moins de X caractères'), + 'default' => 3, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'ignoreSearch', + 'type' => 'Textarea', + 'label' => __('Mots à ignorer'), + 'hint' => __('Liste des mots à ignorer séparés par des virgules'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'ignoreSearchSeparators', + 'type' => 'Text', + 'label' => __('Caractères à ne pas considérer comme un séparateur de mot'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'searchWordSelectionAlgorithm', + 'type' => 'SelectFromArray', + 'options' => [ + 'begins' => 'mot commençant par la requête', + 'exact' => 'mot correspondant exactement à la requête', + 'contains' => 'mot contenant la requête', + 'expression' => 'expression exacte', + ], + 'label' => __('Algorithme de sélection des occurences'), + 'default' => 'begins', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'searchPageSelectionAlgorithm', + 'type' => 'SelectFromArray', + 'options' => [ + 'AND' => 'les double-pages qui contiennent tous les mots recherchés (ET logique)', + 'OR' => 'les double-page qui contiennent un des mots recherché (OU logique)', + ], + 'label' => __('Algorithme de sélection des résultats'), + 'default' => 'AND', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'highlightResults', + 'type' => 'Checkbox', + 'label' => __('Surligner les résultats'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'highlightAllOccurences', + 'type' => 'Checkbox', + 'label' => __('Surligner toutes les occurences'), + 'hint' => __('Même sur les pages non considérées comme un résultat'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'searchShowNoResultsPages', + 'type' => 'Checkbox', + 'label' => __('Afficher les pages sans résultats'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'textExtraction', + 'type' => 'SelectFromArray', + 'options' => [ + 'pdfbox' => 'PDFBox', + 'poppler' => 'Poppler', + 'fluidbook' => 'Fluidbook (expérimentation basée sur PDFBox)', + ], + 'label' => __('Méthode d\'extraction des textes'), + 'default' => 'pdfbox', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_sound', + 'type' => 'FormSection', + 'label' => 'Effets sonores', + ]); + $this->addField([ + 'name' => 'soundTheme', + 'type' => 'SelectFromArray', + 'options' => [ + '' => 'Pas de son', + 'classic' => 'Classique', + 'heavy' => 'Papier épais', + 'light' => 'Papier fin', + 'silent' => 'Silencieux', + 'woosh' => 'Woosh', + ], + 'label' => __('Thème sonore'), + 'default' => 'classic', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'soundOn', + 'type' => 'Checkbox', + 'label' => __('Activer les effets sonores à l\'ouverture'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'ambientSound', + 'type' => 'FilesOrURL', + 'label' => __('Ambiance sonore'), + 'default' => '', + 'accept' => [ + 0 => '*.mp3', + 1 => '*.wav', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'ambientSoundVolume', + 'type' => 'Integer', + 'label' => __('Volume de l\'ambiance sonore'), + 'min' => 0, + 'max' => 100, + 'default' => 50, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_pdf', + 'type' => 'FormSection', + 'label' => 'Fonction de téléchargement', + ]); + $this->addField([ + 'name' => 'pdf', + 'type' => 'Checkbox', + 'label' => __('Activer les fonctions de téléchargement'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pdfName', + 'type' => 'Text', + 'label' => __('Nom du fichier PDF'), + 'default' => 'document.pdf', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pdfReplace', + 'type' => 'FilesOrURL', + 'label' => __('PDF de remplacement'), + 'default' => '', + 'accept' => [ + 0 => '*.pdf', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pdfCompress', + 'type' => 'Checkbox', + 'label' => __('Compression du fichier PDF'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'pdfComplex', + 'type' => 'Checkbox', + 'label' => __('Téchargement de PDF avancé'), + 'hint' => __('Permet à l\'utilisateur de sélectionner les pages qu\'il souhaite télécharger'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'offlineExport', + 'type' => 'Checkbox', + 'label' => __('Téléchargement des versions offline'), + 'hint' => __('Valable si le téléchargement avancé est activé'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_zoom', + 'type' => 'FormSection', + 'label' => 'Zoom', + ]); + $this->addField([ + 'name' => 'zoomWheel', + 'type' => 'SelectFromArray', + 'options' => [ + 'disabled' => 'Désactivé', + 'wheel' => 'Molette', + 'ctrlwheel' => 'Ctrl+Molette', + ], + 'label' => __('Zoom molette'), + 'default' => 'wheel', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'zoom', + 'type' => 'Integer', + 'label' => __('Zoom par défaut (atteint au clic)'), + 'default' => 200, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'zoomw', + 'type' => 'Integer', + 'label' => __('Zoom maximal (atteint à l\'aide de la molette)'), + 'default' => 300, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_stats', + 'type' => 'FormSection', + 'label' => 'Statistiques avancées', + ]); + $this->addField([ + 'name' => 'stats_score', + 'type' => 'Checkbox', + 'label' => __('Afficher les scores dans les rapports'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'stats_exclude_ip', + 'type' => 'Textarea', + 'label' => __('Exclure les IP suivantes des statistiques'), + 'hint' => __('Indiquer une adresse ip de la forme www.xxx.yyy.zzz par ligne'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'relay_url_params', + 'type' => 'Text', + 'label' => __('Relayer les paramètres d\'url dans les liens sortants'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'gtag_additional_code', + 'type' => 'Code', + 'label' => __('Code additionnel Google Tag Manager'), + 'hint'=>__('Code HTML'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'googleAnalyticsCustom', + 'type' => 'Code', + 'label' => __('Code Stats personnalisé (placé avant fermeture de head)'), + 'hint'=>__('Code HTML'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'statsCustom', + 'type' => 'Code', + 'label' => __('Code Stats personnalisé (placé avant fermeture du body)'), + 'hint'=>__('Code HTML'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'xiti', + 'type' => 'Textarea', + 'label' => __('Code XiTi global'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'xiti_page', + 'type' => 'Textarea', + 'label' => __('Modèle code xiti (pour tags relatifs aux pages)'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'tagcommander_id', + 'type' => 'Text', + 'label' => __('Tag commander ID'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tagcommander_prod', + 'type' => 'Checkbox', + 'label' => __('Production'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tagcommander_plan', + 'type' => 'FilesOrURL', + 'label' => __('Plan de taggage "Tag commander"'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tagcommander_default_vars', + 'type' => 'Textarea', + 'label' => __('Variables par défaut'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_sommaire', + 'type' => 'FormSection', + 'label' => 'Sommaire', + ]); + $this->addField([ + 'name' => 'chaptersCaptionDisplay', + 'type' => 'Checkbox', + 'label' => __('Afficher le titre "Sommaire" dans la popup'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'chaptersFontSize', + 'type' => 'Integer', + 'label' => __('Taille du texte des élements du sommaire'), + 'hint' => __('En % par rapport à la taille normale'), + 'min' => 50, + 'max' => 120, + 'default' => 100, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'displayChaptersIcon', + 'type' => 'Checkbox', + 'label' => __('Affiche l\'icône du sommaire'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'displayChaptersPopup', + 'type' => 'Checkbox', + 'label' => __('Always display chapters in a popup'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'displayChaptersAtStart', + 'type' => 'Checkbox', + 'label' => __('Afficher le sommaire au chargement de la publication'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'chaptersPage', + 'type' => 'Text', + 'label' => __('Faire pointer le sommaire sur la page'), + 'hint' => __('Laisser vide pour utiliser le sommaire classique'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'chaptersPosition', + 'type' => 'SelectFromArray', + 'options' => [ + 'center' => 'Centré', + 'chaptersIcon' => 'Aligné sur l\'icône', + ], + 'label' => __('Position du sommaire'), + 'default' => 'center', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'chaptersLevelLimit', + 'type' => 'Integer', + 'label' => __('Limiter à x niveaux'), + 'default' => 5, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'chaptersCascade', + 'type' => 'Checkbox', + 'label' => __('Sommaire en cascade'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'chaptersPagesNumber', + 'type' => 'SelectFromArray', + 'options' => [ + 'virtual' => 'Virtuelle', + 'physical' => 'Physique', + ], + 'label' => __('Numérotation du sommaire'), + 'default' => 'virtual', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'chaptersColMaxWidth', + 'type' => 'Integer', + 'label' => __('Largeur max d\'une colonne'), + 'default' => 300, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'chaptersColumns', + 'type' => 'Integer', + 'label' => __('Afficher le sommaire sur x colonne(s)'), + 'default' => 1, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'displayChaptersLine', + 'type' => 'Checkbox', + 'label' => __('Affiche une ligne entre le label et le numéro de page'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'externalChaptersHTML', + 'type' => 'FilesOrURL', + 'label' => __('Sommaire personnalisé'), + 'hint' => __('Laisser vide pour utiliser le sommaire classique'), + 'default' => '', + 'accept' => [ + 0 => '*.zip', + ], + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'mobileChaptersStyle', + 'type' => 'SelectFromArray', + 'options' => [ + 'classic' => 'Classique', + 'ina' => 'INA', + ], + 'label' => __('Style des chapitres'), + 'default' => 'classic', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_tabs', + 'type' => 'FormSection', + 'label' => 'Onglets', + ]); + $this->addField([ + 'name' => 'tabsHTML5', + 'type' => 'FilesOrURL', + 'label' => __('Fichier d\'onglets (SVG, ZIP)'), + 'hint' => __('Charger un zip rendra les options ci-dessous inopérantes'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.zip', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsPages', + 'type' => 'Text', + 'label' => __('Pages des onglets'), + 'hint' => __('Numéros de pages séparas par une virgule'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsSections', + 'type' => 'Text', + 'label' => __('Sections des onglets'), + 'hint' => __('Numéros de pages séparés par une virgule'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsPagesNumbers', + 'type' => 'SelectFromArray', + 'options' => [ + 'virtual' => 'Virtuelle', + 'physical' => 'Physique', + ], + 'label' => __('Numérotation utilisée'), + 'default' => 'virtual', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'tabsSide', + 'type' => 'SelectFromArray', + 'options' => [ + 'left' => 'Gauche', + 'right' => 'Droite', + ], + 'label' => __('Position des onglets'), + 'default' => 'right', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsMargin', + 'type' => 'Number', + 'label' => __('Marge des onglets'), + 'hint' => __('Une marge négative = les onglets passent sous la publication'), + 'default' => '-10', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'tabsHideOnPages', + 'type' => 'Text', + 'label' => __('Cacher les onglets sur les pages'), + 'hint' => __('1-3,5 = 1,2,3,5'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsHideOnCover', + 'type' => 'Checkbox', + 'label' => __('Cacher les onglets sur la couverture'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsHideOnLastPage', + 'type' => 'Checkbox', + 'label' => __('Cacher les onglets sur la dernière page'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsHideEdges', + 'type' => 'SelectFromArray', + 'options' => [ + 'none' => 'Aucune', + 'left' => 'Gauche', + 'right' => 'Droite', + 'both' => 'Les deux', + ], + 'label' => __('Masquer les bordures du fluidbook'), + 'default' => 'right', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'tabsPriority', + 'type' => 'Integer', + 'label' => __('Priorité des onglets sur les contenus (%)'), + 'hint' => __('La valeur indique la réduction permise de la taille de la publication.'), + 'min' => 0, + 'max' => 100, + 'default' => 15, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsLinkWidth', + 'type' => 'Number', + 'label' => __('Largeur des onglets'), + 'hint' => __('Largeur réservée pour les onglets et largeur de la zone cliquable des liens'), + 'default' => '30', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsHideWhenOverlapingArrows', + 'type' => 'Checkbox', + 'label' => __('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsHideOnPortrait', + 'type' => 'Checkbox', + 'label' => __('Cacher les onglets lorsque le fluidbook est en mode portrait'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'tabsHideOnZoom', + 'type' => 'Checkbox', + 'label' => __('Cacher les onglets lorsque le fluidbook est zoomé'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_links', + 'type' => 'FormSection', + 'label' => 'Liens', + ]); + $this->addField([ + 'name' => 'permanentLinks', + 'type' => 'Checkbox', + 'label' => __('Liens visibles en permanence'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'mobileLinksRevealAnim', + 'type' => 'Checkbox', + 'label' => __('Animer les liens après un changement de page'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linkBlinkTime', + 'type' => 'Number', + 'label' => __('Temps d\'apparition du lien à l\'ouverture de la page (en secondes)'), + 'default' => 1.0, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linkBlinkRepetition', + 'type' => 'Integer', + 'label' => __('Nombre de clignotement lors de l\'apparition des liens'), + 'default' => 1, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'openLinkAtStartup', + 'type' => 'Text', + 'label' => __('Déclencher un lien à l\'ouverture du fluidbook'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'customLinkClass', + 'type' => 'Text', + 'label' => __('Classe pour les liens personnalisés'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'ignoreLinksTypes', + 'type' => 'Text', + 'label' => __('Ignorer les liens de type'), + 'hint' => __('Liste des numéros séparés par des virgules'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'mobileIgnoreBackgroundLinks', + 'type' => 'Checkbox', + 'label' => __('Ignorer les liens de background'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linkTooltipManager', + 'type' => 'Text', + 'label' => __('Gestionnaire des info-bulles'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linkCornerSize', + 'type' => 'Integer', + 'label' => __('Taille des liens de coins de page'), + 'hint' => __('Pourcentage de la largeur de la page'), + 'default' => '10', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linkTooltipMaxWidth', + 'type' => 'Integer', + 'label' => __('Largeur max des infobulles des liens de type "infobulle"'), + 'default' => '140', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'linkTracker', + 'type' => 'Text', + 'label' => __('Tracking des liens'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'linkTrackerRegexp', + 'type' => 'Text', + 'label' => __('Tracking des liens applicables aux liens du domaine'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'linkFilePrefix', + 'type' => 'Text', + 'label' => __('Préfixer les liens de téléchargement'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_multimedia', + 'type' => 'FormSection', + 'label' => 'Multimedia', + ]); + $this->addField([ + 'name' => 'textPopupStylesheet', + 'type' => 'FilesOrURL', + 'label' => __('Feuille de style des popups de texte'), + 'default' => '', + 'accept' => [ + 0 => '*.css', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'textPopupWidth', + 'type' => 'Integer', + 'label' => __('Largeur optimale des popups'), + 'default' => '600', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'iframePopupMaxWidth', + 'type' => 'Integer', + 'label' => __('Largeur maximale des popups iframe'), + 'default' => '0', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'OAMChromeFactor', + 'type' => 'Number', + 'label' => __('Facteur OAM Chrome'), + 'default' => '1', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'OAMIEFactor', + 'type' => 'Number', + 'label' => __('Facteur OAM IE11'), + 'default' => '1', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_slideshow', + 'type' => 'FormSection', + 'label' => 'Slideshow', + ]); + $this->addField([ + 'name' => 'inlineSlideshowLibrary', + 'type' => 'SelectFromArray', + 'options' => [ + 'dummy' => 'Simple (défaut)', + 'vacheron' => 'Vacheron', + ], + 'label' => __('Librarie utilisée pour les slideshow intégrés aux pages'), + 'default' => 'dummy', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'popupSlideshowLibrary', + 'type' => 'SelectFromArray', + 'options' => [ + 'splide' => 'Splide (défaut)', + 'vacheron' => 'Vacheron', + ], + 'label' => __('Librarie utilisée pour les slideshow popup'), + 'default' => 'splide', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'slideshowCaptionSize', + 'type' => 'Text', + 'label' => __('Taille de police de la légende du diaporama'), + 'hint' => __('Laisser vide pour utiliser la valeur par défaut'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'inlineSlideshowTransitionDuration', + 'type' => 'Number', + 'label' => __('Durée de la transition des diaporamas intégrés aux pages(s)'), + 'default' => 0.75, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'inlineSlideshowDuration', + 'type' => 'Number', + 'label' => __('Temps d\'attente des diaporamas intégrés aux pages (s)'), + 'default' => 7, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_videos', + 'type' => 'FormSection', + 'label' => 'Vidéos', + ]); + $this->addField([ + 'name' => 'mobileVideosPath', + 'type' => 'Text', + 'label' => __('Chemin vers les vidéos'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'brightcovePlayerId', + 'type' => 'Text', + 'label' => __('Brightcove Player Id'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'brightcovePlayerSecret', + 'type' => 'Text', + 'label' => __('Brightcove Player Secret'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'bigPlayImage', + 'type' => 'FilesOrURL', + 'label' => __('Image pour le bouton "Big Play"'), + 'default' => '', + 'accept' => [ + 0 => '*.svg', + 1 => '*.jpg', + 2 => '*.png', + 3 => '*.gif', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_audio', + 'type' => 'FormSection', + 'label' => 'Lecteur audio', + ]); + $this->addField([ + 'name' => 'audioPlayerTheme', + 'type' => 'SelectFromArray', + 'options' => [ + 'native' => 'Apparence native du navigateur', + 'invisible' => 'Zone cliquable invisible', + 'redbull' => 'Red Bull', + ], + 'label' => __('Apparence du lecteur audio'), + 'default' => 'native', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_downloadportion', + 'type' => 'FormSection', + 'label' => 'Téléchargement d\'extraits', + ]); + $this->addField([ + 'name' => 'downloadPortionPDF', + 'type' => 'FilesOrURL', + 'label' => __('PDF utilisé pour le téléchargement des extraits'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'downloadPortionZoom', + 'type' => 'Integer', + 'label' => __('Zoom des images extraites'), + 'default' => 8, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_product_zoom', + 'type' => 'FormSection', + 'label' => 'Zooms produits', + ]); + $this->addField([ + 'name' => 'product_zoom_references', + 'type' => 'FilesOrURL', + 'label' => __('Références produits'), + 'hint' => __('Fichier contenant les références produits'), + 'default' => '', + 'accept' => [ + 0 => '*.xml', + 1 => '*.xlsx', + ], + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'product_zoom_buttons_order', + 'type' => 'SelectFromArray', + 'options' => [ + 'right' => 'De la droite vers la gauche', + 'left' => 'De la gauche vers la droite', + ], + 'label' => __('Order des boutons'), + 'default' => 'right', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'product_zoom_label_1', + 'type' => 'Text', + 'label' => __('Label du bouton 1'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_tooltip_1', + 'type' => 'Text', + 'label' => __('Label de l\'infobulle 1'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_icon_1', + 'type' => 'SelectFromArray', + 'options' => [ + 'none' => 'Aucune', + 'nav-share' => 'Partage', + 'icon-site' => 'Ecran', + 'nav-download' => 'Télécharger', + 'icon-pdf' => 'PDF', + 'icon-video' => 'Video', + 'icon-link' => 'Lien', + 'icon-code' => 'Code', + 'icon-qr' => 'QR code', + 'icon-article' => 'Article', + 'nav-basket' => 'Panier (sac)', + 'nav-cart-caddie' => 'Panier (caddie)', + 'nav-cart-wishlist' => 'Panier (wishlist)', + 'icon-360' => '360°', + 'icon-photo' => 'Photo', + ], + 'label' => __('Icône du bouton 1'), + 'default' => 'click', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_action_1', + 'type' => 'SelectFromArray', + 'options' => [ + 'disabled' => 'Désactiver', + 'link' => 'Ouvrir un lien', + 'iframe' => 'Ouvrir en iframe', + 'copy' => 'Copier un contenu', + 'video' => 'Web Vidéo', + 'videofile' => 'Vidéo', + 'videogif' => 'Vidéo (boucle, sans contrôle)', + 'image' => 'Voir une image', + 'addtocart' => 'Ajouter au panier', + ], + 'label' => __('Action du bouton 1'), + 'default' => 'disabled', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'product_zoom_label_2', + 'type' => 'Text', + 'label' => __('Label du bouton 2'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_tooltip_2', + 'type' => 'Text', + 'label' => __('Label de l\'infobulle 2'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_icon_2', + 'type' => 'SelectFromArray', + 'options' => [ + 'none' => 'Aucune', + 'nav-share' => 'Partage', + 'icon-site' => 'Ecran', + 'nav-download' => 'Télécharger', + 'icon-pdf' => 'PDF', + 'icon-video' => 'Video', + 'icon-link' => 'Lien', + 'icon-code' => 'Code', + 'icon-qr' => 'QR code', + 'icon-article' => 'Article', + 'nav-basket' => 'Panier (sac)', + 'nav-cart-caddie' => 'Panier (caddie)', + 'nav-cart-wishlist' => 'Panier (wishlist)', + 'icon-360' => '360°', + 'icon-photo' => 'Photo', + ], + 'label' => __('Icône du bouton 2'), + 'default' => 'click', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_action_2', + 'type' => 'SelectFromArray', + 'options' => [ + 'disabled' => 'Désactiver', + 'link' => 'Ouvrir un lien', + 'iframe' => 'Ouvrir en iframe', + 'copy' => 'Copier un contenu', + 'video' => 'Web Vidéo', + 'videofile' => 'Vidéo', + 'videogif' => 'Vidéo (boucle, sans contrôle)', + 'image' => 'Voir une image', + 'addtocart' => 'Ajouter au panier', + ], + 'label' => __('Action du bouton 2'), + 'default' => 'disabled', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'product_zoom_label_3', + 'type' => 'Text', + 'label' => __('Label du bouton 3'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_tooltip_3', + 'type' => 'Text', + 'label' => __('Label de l\'infobulle 3'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_icon_3', + 'type' => 'SelectFromArray', + 'options' => [ + 'none' => 'Aucune', + 'nav-share' => 'Partage', + 'icon-site' => 'Ecran', + 'nav-download' => 'Télécharger', + 'icon-pdf' => 'PDF', + 'icon-video' => 'Video', + 'icon-link' => 'Lien', + 'icon-code' => 'Code', + 'icon-qr' => 'QR code', + 'icon-article' => 'Article', + 'nav-basket' => 'Panier (sac)', + 'nav-cart-caddie' => 'Panier (caddie)', + 'nav-cart-wishlist' => 'Panier (wishlist)', + 'icon-360' => '360°', + 'icon-photo' => 'Photo', + ], + 'label' => __('Icône du bouton 3'), + 'default' => 'click', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_zoom_action_3', + 'type' => 'SelectFromArray', + 'options' => [ + 'disabled' => 'Désactiver', + 'link' => 'Ouvrir un lien', + 'iframe' => 'Ouvrir en iframe', + 'copy' => 'Copier un contenu', + 'video' => 'Web Vidéo', + 'videofile' => 'Vidéo', + 'videogif' => 'Vidéo (boucle, sans contrôle)', + 'image' => 'Voir une image', + 'addtocart' => 'Ajouter au panier', + ], + 'label' => __('Action du bouton 3'), + 'default' => 'disabled', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'product_share_enabled', + 'type' => 'Checkbox', + 'label' => __('Activer le bouton de partage'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_share_link', + 'type' => 'SelectFromArray', + 'options' => [ + 'product' => 'Lien du produit', + 'page' => 'Lien vers la page du fluidbook', + ], + 'label' => __('Lien de partage'), + 'default' => 'product', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_email_title', + 'type' => 'Text', + 'label' => __('Titre de l\'email "Envoyer à un ami"'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_email_body', + 'type' => 'Textarea', + 'label' => __('Corps de l\'email "Envoyer à un ami"'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'product_tweet', + 'type' => 'Textarea', + 'label' => __('Contenu Partage court'), + 'hint' => __('Contenu du partagé sur les partages courts'), + 'default' => '%short%', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_accessibility', + 'type' => 'FormSection', + 'label' => 'Accessibilité', + ]); + $this->addField([ + 'name' => 'audiodescriptionTexts', + 'type' => 'FilesOrURL', + 'label' => __('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), + 'default' => '', + 'accept' => [ + 0 => '*.xlsx', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'audiodescriptionVoice', + 'type' => 'SelectFromArray', + 'options' => [ + '' => '', + 'festival:voice_cmu_us_slt_arctic_hts' => 'Festival (en-US)', + 'readspeaker:Sophie/en_us' => 'ReadSpeaker Sophie (en-US)', + 'readspeaker:Marc/en_us' => 'ReadSpeaker Marc (en-US)', + ], + 'label' => __('Voix pour l\'audiodescription'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_splash', + 'type' => 'FormSection', + 'label' => 'Ecran de chargement', + ]); + $this->addField([ + 'name' => 'splashImage', + 'type' => 'FilesOrURL', + 'label' => __('Image'), + 'default' => '', + 'accept' => [ + 0 => '*.jpg', + 1 => '*.jpeg', + 2 => '*.png', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'splashURL', + 'type' => 'Text', + 'label' => __('URL'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'splashTarget', + 'type' => 'SelectFromArray', + 'options' => [ + '_self' => 'Dans la fenêtre courrante', + '_blank' => 'Dans un nouvel onglet', + ], + 'label' => __('Ouvrir le lien'), + 'default' => '_self', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'splashMinimalTime', + 'type' => 'Number', + 'label' => __('Temps minimal d\'affichage'), + 'default' => '1', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_notes', + 'type' => 'FormSection', + 'label' => 'Notes', + ]); + $this->addField([ + 'name' => 'notes', + 'type' => 'Checkbox', + 'label' => __('Activer les notes'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_articles', + 'type' => 'FormSection', + 'label' => 'Articles', + ]); + $this->addField([ + 'name' => 'articlesFile', + 'type' => 'FilesOrURL', + 'label' => __('Articles'), + 'default' => '', + 'accept' => [ + 0 => '*.xml', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'articlesImages', + 'type' => 'FilesOrURL', + 'label' => __('Images des articles'), + 'hint' => __('Les noms des fichiers doivent être les même que ceux des balises du XML'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'articlesShare', + 'type' => 'Checkbox', + 'label' => __('Activer le partage'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'articlesStyle', + 'type' => 'SelectFromArray', + 'options' => [ + 'default' => 'Défaut', + 'atlantic' => 'Atlantic', + 'harmonie-mutuelle' => 'Harmonie Mutuelle', + 'business-immo' => 'Business Immo', + ], + 'label' => __('Style'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'articlesFont', + 'type' => 'SelectFromArray', + 'options' => [ + 'OpenSans' => 'Open Sans (défaut)', + 'Montserrat' => 'Montserrat', + 'Arial' => 'Arial, Helvetica, sans-serif (police système)', + 'sans-serif' => 'Police système sans-serif', + ], + 'label' => __('Police des articles'), + 'default' => 'OpenSans', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_archives', + 'type' => 'FormSection', + 'label' => 'Archives', + ]); + $this->addField([ + 'name' => 'externalArchives', + 'type' => 'FilesOrURL', + 'label' => __('Archives'), + 'default' => '', + 'accept' => [ + 0 => '*.jpg', + 1 => '*.jpeg', + 2 => '*.png', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'archivesLabel', + 'type' => 'Text', + 'label' => __('Label'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_form', + 'type' => 'FormSection', + 'label' => 'Formulaire', + ]); + $this->addField([ + 'name' => 'form', + 'type' => 'SelectFromArray', + 'options' => [ + '' => 'Aucun', + 'bulle' => 'Bulle Groupe', + 'bourbon' => 'Bourbon / Suggestions', + 'avery' => 'Avery', + ], + 'label' => __('Formulaire'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_privacy', + 'type' => 'FormSection', + 'label' => 'Respect de la vie privée', + ]); + $this->addField([ + 'name' => 'cookieConsent', + 'type' => 'Checkbox', + 'label' => __('Message cookie'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'cookieConsentMessage', + 'type' => 'Textarea', + 'label' => __('Texte du consentement'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'cookieConsentAutoclose', + 'type' => 'Integer', + 'label' => __('Masquer automatiquement après x secondes'), + 'default' => '0', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_basket', + 'type' => 'FormSection', + 'label' => 'Panier', + ]); + $this->addField([ + 'name' => 'basket', + 'type' => 'Checkbox', + 'label' => __('Panier activé'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'cartIcon', + 'type' => 'SelectFromArray', + 'options' => [ + 'nav-basket' => 'Sac', + 'nav-cart-caddie' => 'Caddie', + 'nav-cart-wishlist' => 'Wishlist', + ], + 'label' => __('Icône'), + 'default' => 'nav-basket', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'basketManager', + 'type' => 'SelectFromArray', + 'options' => [ + 'com.fluidbook.player.basket.BasketManager' => 'Classic', + 'com.fluidbook.player.basket.custom.grdf.GrdfBasketManager' => 'Grdf', + 'com.fluidbook.player.basket.custom.grdf.grdf2013.GrdfBasketManager2013' => 'Grdf 2013', + 'com.fluidbook.player.basket.custom.grdf.grdf2015.GrdfBasketManager2015' => 'Grdf 2015', + 'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager' => 'Essilor', + 'com.fluidbook.player.basket.custom.essilorrecap.EssilorRecapBasketManager' => 'Essilor Recap', + 'com.fluidbook.player.basket.custom.wesco.WescoBasketManager' => 'Wesco Ventes', + 'com.fluidbook.player.basket.custom.atlantic.AtlanticDownloadBasketManager' => 'Atlantic Download', + 'Remarkable' => 'Remarkable', + 'Mopec' => 'Mopec', + 'Puma' => 'Puma', + 'MIF' => 'MIF', + 'Flexipan' => 'Flexipan', + 'ZoomProductLink' => 'Zoom + lien produit (déprécié, utiliser la fonctionnalité "Zoom produits")', + 'JoueclubWishlist' => 'Wishlist Jouéclub', + 'GrandVision' => 'GrandVision', + ], + 'label' => __('Manager de panier'), + 'default' => 'classic', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'basketReferences', + 'type' => 'FilesOrURL', + 'label' => __('Références produits'), + 'hint' => __('Fichier contenant les références produits'), + 'default' => '', + 'accept' => [ + 0 => '*.xml', + 1 => '*.xlsx', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'basketImages', + 'type' => 'FilesOrURL', + 'label' => __('Images des produits'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'basketPDFBackground', + 'type' => 'FilesOrURL', + 'label' => __('Fond du PDF (bon de commande)'), + 'hint' => __('Fond du bon de commande'), + 'default' => '', + 'accept' => [ + 0 => '*.ai', + 1 => '*.eps', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_offline', + 'type' => 'FormSection', + 'label' => 'Version offline', + ]); + $this->addField([ + 'name' => 'offlineTitle', + 'type' => 'Text', + 'label' => __('Titre de l\'application'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'offlineLink', + 'type' => 'Text', + 'label' => __('URL du Fluidbook'), + 'hint' => __('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'), + 'default' => 'http://', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'offlineEnableAdvancedPrinting', + 'type' => 'Checkbox', + 'label' => __('Activer le menu d\'impression avancée'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_mobilefirst', + 'type' => 'FormSection', + 'label' => 'Mobile first', + ]); + $this->addField([ + 'name' => 'mobilefirstFluidbookId', + 'type' => 'Text', + 'label' => __('Identifiant du fluidbook "Mobile first"'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'mobilefirstBreakpoint', + 'type' => 'Text', + 'label' => __('Breakpoint du passage à la version "Mobile first" (en pixels)'), + 'default' => '640', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_phonegap', + 'type' => 'FormSection', + 'label' => 'Applications mobile', + ]); + $this->addField([ + 'name' => 'phonegapId', + 'type' => 'Text', + 'label' => __('Identifiant de l\'identifiant'), + 'hint' => __('De la forme com.fluidbook.phonegap.xxxxx'), + 'default' => 'com.fluidbook.phonegap.$id', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'phonegapVersion', + 'type' => 'Text', + 'label' => __('Version de l\'application'), + 'hint' => __('De la forme 1.2.3'), + 'default' => '1.0.0', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'phonegapPlugins', + 'type' => 'Textarea', + 'label' => __('Plugins Phonegap'), + 'default' => 'ChildBrowser', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'appScreenshots', + 'type' => 'Textarea', + 'label' => __('Générer les screenshots'), + 'hint' => __('Une ligne par vue à générer de la forme X,Y (X : P(ortrait) ou L(andscape), Y : numéro de page ou vue (1, index))'), + 'default' => 'P,0 +L,2 +L,index', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_secure', + 'type' => 'FormSection', + 'label' => 'Sécurisation', + ]); + $this->addField([ + 'name' => 'secureURL', + 'type' => 'Text', + 'label' => __('URL de sécurisation'), + 'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'), + 'default' => 'http://', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'secureURLRedirect', + 'type' => 'Text', + 'label' => __('Redirection'), + 'hint' => __('Si l\'authentification échoue, redirection vers cette adresse'), + 'default' => 'http://', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'secureClientSidePassword', + 'type' => 'FilesOrURL', + 'label' => __('Sécurisation par mot de passe côté client'), + 'default' => '', + 'accept' => [ + 0 => '*.html', + ], + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'secureClientSidePasswordCredentials', + 'type' => 'Textarea', + 'label' => __('Utilisateurs / mots de passe'), + 'hint' => __('Format user:password par ligne'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'preventRightClick', + 'type' => 'Checkbox', + 'label' => __('Essayer d\'empêcher le clic droit'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'restrictPrintDownload', + 'type' => 'Text', + 'label' => __('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), + 'hint' => __('Ne pas indiquer le ?'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'restrictPrint', + 'type' => 'Checkbox', + 'label' => __('Restreindre l\'impression'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'restrictDownload', + 'type' => 'Checkbox', + 'label' => __('Restreindre le téléchargement du pdf'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'restrictSendBookmark', + 'type' => 'Checkbox', + 'label' => __('Restreindre l\'envoi de marques-pages'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_multibrochure', + 'type' => 'FormSection', + 'label' => 'Multibrochure', + ]); + $this->addField([ + 'name' => 'home', + 'type' => 'Text', + 'label' => __('Accueil de l\'interface multibrochure'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'country', + 'type' => 'Text', + 'label' => __('Pays de la brochure'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'multilangDisplay', + 'type' => 'SelectFromArray', + 'options' => [ + 'lang' => 'Langue', + 'lang_country' => 'Langue (Pays)', + 'country_lang' => 'Pays (Langue)', + ], + 'label' => __('Affichage'), + 'default' => 'lang', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'multilang', + 'type' => 'Textarea', + 'label' => __('Langues'), + 'hint' => __('Code langue,Code pays,URL'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_plv', + 'type' => 'FormSection', + 'label' => 'Mode PLV', + ]); + $this->addField([ + 'name' => 'plv', + 'type' => 'Checkbox', + 'label' => __('Activer le mode PLV'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'plvTimer', + 'type' => 'Integer', + 'label' => __('Temps'), + 'min' => 1, + 'max' => 60, + 'default' => 5, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'plvMode', + 'type' => 'SelectFromArray', + 'options' => [ + 'back' => 'Remonter vers la première page', + 'first' => 'Recommencer à la première page', + ], + 'label' => __('Arrivé à la dernière page'), + 'default' => 'first', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_theme', + 'type' => 'FormSection', + 'label' => 'Options du thème', + ]); + $this->addField([ + 'name' => 'themeEnableAfterSearch', + 'type' => 'Checkbox', + 'label' => __('Afficher l\'image supplémentaire à droite du moteur de recherche'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_package', + 'type' => 'FormSection', + 'label' => 'Option d\'export', + ]); + $this->addField([ + 'name' => 'htmlExtension', + 'type' => 'Text', + 'label' => __('Extension des fichiers html'), + 'hint' => __('Ex : php, htm, html, phtml, asp, aspx'), + 'default' => 'html', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'actualHtmlExtension', + 'type' => 'Text', + 'label' => __('Extension des fichiers html réellement appliquée au fluidbook'), + 'hint' => __('Ex : php, htm, html, phtml, asp'), + 'default' => 'html', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'htmlPrepend', + 'type' => 'Code', + 'label' => __('Code à insérer en tête des fichiers'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'baseUrl', + 'type' => 'Text', + 'label' => __('Base de l\'url'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'forceCompileOnDownload', + 'type' => 'Checkbox', + 'label' => __('Forcer la compilation lors du téléchargement'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_demo', + 'type' => 'FormSection', + 'label' => 'Lien de démo', + ]); + $this->addField([ + 'name' => 'disableDemo', + 'type' => 'Checkbox', + 'label' => __('Désactiver le lien de démo'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'redirectDemo', + 'type' => 'Text', + 'label' => __('Rediriger le lien de démo vers'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_scorm', + 'type' => 'FormSection', + 'label' => 'SCORM', + ]); + $this->addField([ + 'name' => 'scorm_enable', + 'type' => 'Checkbox', + 'label' => __('Activer SCORM'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_version', + 'type' => 'SelectFromArray', + 'options' => [ + '1.2' => 'SCORM 1.2', + 2004 => 'SCORM 2004 4th edition', + ], + 'label' => __('Version du standard SCORM'), + 'default' => '1.2', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_id', + 'type' => 'Text', + 'label' => __('Identifiant SCORM'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_org', + 'type' => 'Text', + 'label' => __('Organisation SCORM'), + 'default' => 'ACME-ORG-1350650111249', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_title', + 'type' => 'Text', + 'label' => __('Titre SCORM'), + 'hint' => __('Laisser vide pour utiliser le titre de la publication'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_variables', + 'type' => 'Textarea', + 'label' => __('Variables SCORM'), + 'hint' => __('Laisser vide pour utiliser le titre de la publication'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'scorm_complete_on_exit', + 'type' => 'Checkbox', + 'label' => __('Marquer le cours comme "Complete" à la fermeture de la fenêtre'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_complete_on_last_page', + 'type' => 'Checkbox', + 'label' => __('Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'scorm_pass_on_complete', + 'type' => 'Checkbox', + 'label' => __('Marquer le cours comme Pass lorsqu\'il est terminé (SCORM 2004 seulement)'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_score100_on_complete', + 'type' => 'Checkbox', + 'label' => __('Marquer le cours comme réussi à 100% lorsqu\'il est terminé'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'scorm_quizdata', + 'type' => 'FilesOrURL', + 'label' => __('Données de quiz'), + 'default' => '', + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_score', + 'type' => 'Checkbox', + 'label' => __('Activer le support du score'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_score_min', + 'type' => 'Integer', + 'label' => __('Score minimal pour marquer le contenu comme réussi'), + 'min' => 0, + 'max' => 100, + 'default' => 50, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_quiz_as_questionnaire', + 'type' => 'Checkbox', + 'label' => __('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'type' => 'FormSeparator', + ]); + $this->addField([ + 'name' => 'scorm_force_attempts', + 'type' => 'Checkbox', + 'label' => __('Forcer la création d\'un "attempt" à chaque ouverture'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'scorm_commit_immediately', + 'type' => 'Checkbox', + 'label' => __('Envoyer les données immédiatement au LMS (Peut provoquer des ralentissement sur certains LMS)'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'section_downloads', + 'type' => 'FormSection', + 'label' => 'Versions disponibles au téléchargement', + ]); + $this->addField([ + 'name' => 'download_online', + 'type' => 'Checkbox', + 'label' => __('Version online - Version par défaut'), + 'default' => true, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_sharepoint', + 'type' => 'Checkbox', + 'label' => __('Version Sharepoint - Version par défaut'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_scorm', + 'type' => 'Checkbox', + 'label' => __('Version SCORM - Version par défaut'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_win-inss-html', + 'type' => 'Checkbox', + 'label' => __('Version offline - Executable Windows'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_win-ins-html', + 'type' => 'Checkbox', + 'label' => __('Version offline - Installeur Auto-executable Windows'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_win-exe-html', + 'type' => 'Checkbox', + 'label' => __('Version offline - ZIP Windows'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_mac-exe-html', + 'type' => 'Checkbox', + 'label' => __('Version offline - Exécutable Mac OS X'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_win-cd-html', + 'type' => 'Checkbox', + 'label' => __('Version offline - CD-ROM / Clé USB'), + 'default' => false, + 'translatable' => false, + ]); + $this->addField([ + 'name' => 'download_win-html', + 'type' => 'Checkbox', + 'label' => __('Version offline - HTML (Non adaptée à l\'installation sur un serveur web)'), + 'default' => false, + 'translatable' => false, + ]); + } } diff --git a/app/Models/FluidbookTheme.php b/app/Models/FluidbookTheme.php index 0a5dfc239..38f15d79f 100644 --- a/app/Models/FluidbookTheme.php +++ b/app/Models/FluidbookTheme.php @@ -10,6 +10,7 @@ use App\Jobs\UpdateWS2ThemeTable; use Cubist\Backpack\Magic\Fields\Color; use Cubist\Backpack\Magic\Fields\Files; use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\DB; use Spatie\MediaLibrary\MediaCollections\Models\Media; @@ -29,6 +30,14 @@ class FluidbookTheme extends CubistMagicAbstractModel public static $updateWS2ViewOnChange = true; + public static function addOwnerClause(Builder $builder) + { + if (backpack_user()->hasPermissionTo('fluidbook-quote:admin')) { + return; + } + $builder->where('owner', backpack_user()->id); + } + public function setFields() { parent::setFields(); @@ -43,7 +52,6 @@ class FluidbookTheme extends CubistMagicAbstractModel ); $this->addField('name', 'Text', __('Nom'), ['column' => true]); - $this->addField('preview', 'NoValue', __('Preview'), ['column' => true, 'column_type' => 'model_function', 'column_function_name' => 'getPreviewImage', 'column_limit' => -1]); $this->setSettingsFields(); diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index e5ddcfc02..e403e14ad 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -18,10 +18,14 @@ @endcanany -@canany(['fluidbook-quote:read','signature:read']) +@canany(['fluidbook-quote:read','signature:read','fluidbook-theme:read','fluibook-translate:write'])