From 3b765102f477ce33711c37750e0e9da5b1571ca7 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 11 Jun 2025 16:50:17 +0200 Subject: [PATCH] wait #7592 @1 --- .../FluidbookPublication/EditOperation.php | 19 + app/Models/Traits/PublicationSettings.php | 1021 +++++++++-------- 2 files changed, 533 insertions(+), 507 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php index d24985261..6fd511815 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookPublication; use App\Models\FluidbookPublication; +use Cubist\Backpack\Http\Controllers\Base\XSendFileController; use Cubist\Util\Files\Files; use Cubist\Util\Gzip; use Illuminate\Support\Facades\Route; @@ -17,6 +18,7 @@ trait EditOperation { Route::match(['get'], $segment . '/{id}/changeprojectmanager/{status}', $controller . '@changeProjectManager'); Route::match(['get'], $segment . '/{id}/pdftextsforaudiodescription', $controller . '@exportPDFTextsForAudioDescription'); + Route::match(['get'], $segment . '/{id}/asset/{asset}', $controller . '@downloadAsset'); } protected function exportPDFTextsForAudioDescription($fluidbook_id) @@ -78,4 +80,21 @@ trait EditOperation Alert::add('success', __('Chef de projet de la publication modifié'))->flash(); return back(); } + + protected function downloadAsset($fluidbook_id, $asset) + { + if (!can('fluidbook-publication:write')) { + abort(401); + } + if (!FluidbookPublication::hasPermission($fluidbook_id)) { + abort(401); + } + /** @var FluidbookPublication $fluidbook */ + $fluidbook = FluidbookPublication::find($fluidbook_id); + if (!$fluidbook || !$fluidbook->allowsEdit()) { + abort(404); + } + $file = $fluidbook->asset_path($asset); + return XSendFileController::sendfileNoCache($file); + } } diff --git a/app/Models/Traits/PublicationSettings.php b/app/Models/Traits/PublicationSettings.php index 681511ef4..f77977fa1 100644 --- a/app/Models/Traits/PublicationSettings.php +++ b/app/Models/Traits/PublicationSettings.php @@ -79,11 +79,11 @@ trait PublicationSettings $disabled = ['phonegapId', 'phonegapVersion', 'phonegapPlugins', 'appScreenshots', 'svgTextMethod']; foreach ($disabled as $item) { - $this->addSettingField($item, Hidden::class); + $this->_addSettingField($item, Hidden::class); } -// $this->addSettingField('', FormSeparator::class); - $this->addSettingField('mobileVideosPath', Hidden::class, $this->__('Chemin vers les vidéos')); +// $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('mobileVideosPath', Hidden::class, $this->__('Chemin vers les vidéos')); } @@ -97,7 +97,7 @@ trait PublicationSettings protected function _mainFeatures() { - $this->addSettingField('bigsection_main_features', FormSuperSection::class, $this->__('Fonctionnalités')); + $this->_addSettingField('bigsection_main_features', FormSuperSection::class, $this->__('Fonctionnalités')); $this->_menu(); $this->_index(); $this->_chapters(); @@ -114,7 +114,7 @@ trait PublicationSettings protected function _appearance() { - $this->addSettingField('bigsection_appearance', FormSuperSection::class, $this->__('Apparence & interface')); + $this->_addSettingField('bigsection_appearance', FormSuperSection::class, $this->__('Apparence & interface')); $this->_visualization(); $this->_mobileFirst(); $this->_theme(); @@ -127,14 +127,14 @@ trait PublicationSettings protected function _ecommerce() { - $this->addSettingField('bigsection_ecommerce', FormSuperSection::class, $this->__('Paniers et produits (e-commerce)')); + $this->_addSettingField('bigsection_ecommerce', FormSuperSection::class, $this->__('Paniers et produits (e-commerce)')); $this->_cart(); $this->_productZoom(); } protected function _linksAndMultimedia() { - $this->addSettingField('bigsection_links', FormSuperSection::class, $this->__('Liens et multimédia')); + $this->_addSettingField('bigsection_links', FormSuperSection::class, $this->__('Liens et multimédia')); $this->_links(); $this->_multimedia(); $this->_video(); @@ -149,7 +149,7 @@ trait PublicationSettings protected function _advanced() { - $this->addSettingField('bigsection_advanced', FormSuperSection::class, $this->__('Paramètres avancés')); + $this->_addSettingField('bigsection_advanced', FormSuperSection::class, $this->__('Paramètres avancés')); $this->_archives(); $this->_form(); $this->_plv(); @@ -159,7 +159,7 @@ trait PublicationSettings protected function _packageAndDownload() { - $this->addSettingField('bigsection_package', FormSuperSection::class, $this->__('Packages & Téléchargements')); + $this->_addSettingField('bigsection_package', FormSuperSection::class, $this->__('Packages & Téléchargements')); $this->_seo(); $this->_multibrochure(); $this->_package(); @@ -172,7 +172,7 @@ trait PublicationSettings protected function _stats() { - $this->addSettingField('bigsection_stats', FormSuperSection::class, $this->__('Statistiques et vie privée')); + $this->_addSettingField('bigsection_stats', FormSuperSection::class, $this->__('Statistiques et vie privée')); $this->_statsFluidbook(); $this->_statsGoogleAnalytics(); $this->_statsGoogleTagManager(); @@ -205,24 +205,24 @@ trait PublicationSettings protected function _slider() { - $this->addSettingField('section_slider', FormSection::class, $this->__('Slider')); - $this->addSettingField('sliderImage', FilesOrURL::class, $this->__('Image pour le slider'), [ + $this->_addSettingField('section_slider', FormSection::class, $this->__('Slider')); + $this->_addSettingField('sliderImage', FilesOrURL::class, $this->__('Image pour le slider'), [ 'accept' => self::$acceptImages, ]); } protected function _main() { - $this->addSettingField('title', LongText::class, $this->__('Titre de la publication')); - $this->addSettingField('mobileLVersion', FluidbookDevelopmentVersion::class, $this->__('Version logicielle'), [ + $this->_addSettingField('title', LongText::class, $this->__('Titre de la publication')); + $this->_addSettingField('mobileLVersion', FluidbookDevelopmentVersion::class, $this->__('Version logicielle'), [ 'default' => 'stable', ]); } protected function _description() { - $this->addSettingField('section_important', FormSection::class, $this->__('Description de la publication')); - $this->addSettingField('mobileVersion', SelectFromArray::class, $this->__('Format des pages'), [ + $this->_addSettingField('section_important', FormSection::class, $this->__('Description de la publication')); + $this->_addSettingField('mobileVersion', SelectFromArray::class, $this->__('Format des pages'), [ 'options' => [ //'pdf' => $this->__('Rediriger vers le PDF'), 'html5-desktop' => $this->__('Version HTML5 recommandée (vecteurs sur desktop)'), @@ -232,95 +232,95 @@ trait PublicationSettings 'default' => 'html5-desktop', ]); - $this->addSettingField('url_link', LongText::class, $this->__('URL du lien de retour au site'), [ + $this->_addSettingField('url_link', LongText::class, $this->__('URL du lien de retour au site'), [ 'default' => 'http://', ]); - $this->addSettingField('signature', FluidbookSignature::class, $this->__('Signature'), [ + $this->_addSettingField('signature', FluidbookSignature::class, $this->__('Signature'), [ 'default' => '1', ]); } protected function _assets() { - $this->addSettingField('section_assets', FormSection::class, $this->__('Assets')); - $this->addSettingField('assetsDir', LongText::class, $this->__('Utiliser le dossier d\'assets du fluidbook')); - $this->addSettingField('linksAssets', FilesOrURL::class, $this->__('Charger ou remplacer des fichiers de liens')); + $this->_addSettingField('section_assets', FormSection::class, $this->__('Assets')); + $this->_addSettingField('assetsDir', LongText::class, $this->__('Utiliser le dossier d\'assets du fluidbook')); + $this->_addSettingField('linksAssets', FilesOrURL::class, $this->__('Charger ou remplacer des fichiers de liens')); } protected function _share() { - $this->addSettingField('section_share', FormSection::class, $this->__('Fonctions de partage')); - $this->addSettingField('share', Checkbox::class, $this->__('Activer les fonctions de partage'), [ + $this->_addSettingField('section_share', FormSection::class, $this->__('Fonctions de partage')); + $this->_addSettingField('share', Checkbox::class, $this->__('Activer les fonctions de partage'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('email_title', LongText::class, $this->__('Titre de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('email_title', LongText::class, $this->__('Titre de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'), ]); - $this->addSettingField('email_body', Textarea::class, $this->__('Corps de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ + $this->_addSettingField('email_body', Textarea::class, $this->__('Corps de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'), ]); - $this->addSettingField('email_editable', Checkbox::class, $this->__('Permettre au lecteur de modifier le corps de l\'email'), [ + $this->_addSettingField('email_editable', Checkbox::class, $this->__('Permettre au lecteur de modifier le corps de l\'email'), [ 'default' => true, ]); - $this->addSettingField('askAcknowledge', Checkbox::class, $this->__('Demander au destinataire un accusé de réception'), [ + $this->_addSettingField('askAcknowledge', Checkbox::class, $this->__('Demander au destinataire un accusé de réception'), [ 'default' => false, ]); - $this->addSettingField('sendasfluidbook', Checkbox::class, $this->__('Envoyer le mail comme Fluidbook'), [ + $this->_addSettingField('sendasfluidbook', Checkbox::class, $this->__('Envoyer le mail comme Fluidbook'), [ 'hint' => $this->__('L\'expéditeur apparaîtra en reply-to'), 'default' => false, ]); - $this->addSettingField('email_mailto', Checkbox::class, $this->__('Envoyer le mail via le client mail du visiteur (mailto:)'), [ + $this->_addSettingField('email_mailto', Checkbox::class, $this->__('Envoyer le mail via le client mail du visiteur (mailto:)'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('facebook_title', LongText::class, $this->__('Titre du contenu partagé'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('facebook_title', LongText::class, $this->__('Titre du contenu partagé'), [ 'hint' => $this->__('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'), ]); - $this->addSettingField('facebook_description', Textarea::class, $this->__('Description du contenu partagé'), [ + $this->_addSettingField('facebook_description', Textarea::class, $this->__('Description du contenu partagé'), [ 'hint' => $this->__('Description proposée sur les fonctions de partage (par défaut, vide)'), ]); - $this->addSettingField('facebook_image', FilesOrURL::class, $this->__('Miniature affichée'), [ + $this->_addSettingField('facebook_image', FilesOrURL::class, $this->__('Miniature affichée'), [ 'accept' => self::$acceptImages, ]); - $this->addSettingField('twitter_description', Textarea::class, $this->__('Contenu Partage court'), [ + $this->_addSettingField('twitter_description', Textarea::class, $this->__('Contenu Partage court'), [ 'hint' => $this->__('Contenu du partage sur les partages courts'), 'default' => '%title% : %short%', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('friend', Checkbox::class, $this->__('E-mail'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('friend', Checkbox::class, $this->__('E-mail'), [ 'default' => true, ]); - $this->addSettingField('facebook', Checkbox::class, $this->__('Facebook'), [ + $this->_addSettingField('facebook', Checkbox::class, $this->__('Facebook'), [ 'default' => true, ]); - $this->addSettingField('twitter', Checkbox::class, $this->__('Twitter'), [ + $this->_addSettingField('twitter', Checkbox::class, $this->__('Twitter'), [ 'default' => true, ]); - $this->addSettingField('whatsapp', Checkbox::class, $this->__('WhatsApp'), [ + $this->_addSettingField('whatsapp', Checkbox::class, $this->__('WhatsApp'), [ 'default' => true, ]); - $this->addSettingField('linkedin', Checkbox::class, $this->__('LinkedIn'), [ + $this->_addSettingField('linkedin', Checkbox::class, $this->__('LinkedIn'), [ 'default' => true, ]); - $this->addSettingField('pinterest', Checkbox::class, $this->__('Pinterest'), [ + $this->_addSettingField('pinterest', Checkbox::class, $this->__('Pinterest'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('googleplus', Checkbox::class, $this->__('Google +'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('googleplus', Checkbox::class, $this->__('Google +'), [ 'default' => false, ]); - $this->addSettingField('viadeo', Checkbox::class, $this->__('Viadeo'), [ + $this->_addSettingField('viadeo', Checkbox::class, $this->__('Viadeo'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('customSharer', LongText::class, $this->__('Classe personnalisée de partage')); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('friendWidth', Integer::class, $this->__('Largeur du menu'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('customSharer', LongText::class, $this->__('Classe personnalisée de partage')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('friendWidth', Integer::class, $this->__('Largeur du menu'), [ 'default' => 319, ]); - $this->addSettingField('friendHeight', Integer::class, $this->__('Largeur du menu'), [ + $this->_addSettingField('friendHeight', Integer::class, $this->__('Largeur du menu'), [ 'default' => 500, ]); @@ -328,18 +328,18 @@ trait PublicationSettings protected function _seo() { - $this->addSettingField('section_seo', FormSection::class, $this->__('Optimisation pour les moteurs de recherche')); - $this->addSettingField('seoVersion', Checkbox::class, $this->__('Générer une version pour les moteurs de recherche'), [ + $this->_addSettingField('section_seo', FormSection::class, $this->__('Optimisation pour les moteurs de recherche')); + $this->_addSettingField('seoVersion', Checkbox::class, $this->__('Générer une version pour les moteurs de recherche'), [ 'default' => true, ]); - $this->addSettingField('seoRobots', Checkbox::class, $this->__('Autoriser le parcours par les moteurs de recherche'), [ + $this->_addSettingField('seoRobots', Checkbox::class, $this->__('Autoriser le parcours par les moteurs de recherche'), [ 'default' => true, ]); - $this->addSettingField('seoDescription', Textarea::class, $this->__('Meta tag Description')); - $this->addSettingField('seoKeywords', Textarea::class, $this->__('Meta tag Keywords')); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('seoBaseURL', LongText::class, $this->__('URL de base')); - $this->addSettingField('seoAdvanced', FilesOrURL::class, $this->__('Données SEO par page'), [ + $this->_addSettingField('seoDescription', Textarea::class, $this->__('Meta tag Description')); + $this->_addSettingField('seoKeywords', Textarea::class, $this->__('Meta tag Keywords')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('seoBaseURL', LongText::class, $this->__('URL de base')); + $this->_addSettingField('seoAdvanced', FilesOrURL::class, $this->__('Données SEO par page'), [ 'accept' => self::$acceptXLSX, ]); @@ -347,8 +347,8 @@ trait PublicationSettings protected function _visualization() { - $this->addSettingField('section_3d_mode', FormSection::class, $this->__('Options de visualisation')); - $this->addSettingField('mobileNavigationType', SelectFromArray::class, $this->__('Mode de navigation'), [ + $this->_addSettingField('section_3d_mode', FormSection::class, $this->__('Options de visualisation')); + $this->_addSettingField('mobileNavigationType', SelectFromArray::class, $this->__('Mode de navigation'), [ 'options' => [ 'book' => $this->__('Normal (automatique)'), 'landscape' => $this->__('Normal (double page)'), @@ -358,8 +358,8 @@ trait PublicationSettings ], 'default' => 'book', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('mobileTransitions', SelectFromArray::class, $this->__('Transitions entre les pages'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('mobileTransitions', SelectFromArray::class, $this->__('Transitions entre les pages'), [ 'options' => [ 'none' => $this->__('Aucune transition'), 'fade' => $this->__('Apparition de la nouvelle page en opacité par dessus la page courante'), @@ -372,89 +372,89 @@ trait PublicationSettings ], 'default' => 'flip3d', ]); - $this->addSettingField('mobileTransitionDuration', Number::class, $this->__('Durée de la transition'), [ + $this->_addSettingField('mobileTransitionDuration', Number::class, $this->__('Durée de la transition'), [ 'default' => 0.5, ]); - $this->addSettingField('mobileTransitionDurationSlide', Number::class, $this->__('Durée de la transition (fade, slide)'), [ + $this->_addSettingField('mobileTransitionDurationSlide', Number::class, $this->__('Durée de la transition (fade, slide)'), [ 'hint' => $this->__('Laisser à zéro pour utiliser la valeur générale'), 'default' => 0, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('forceWhiteBackground', Checkbox::class, $this->__('Ajouter un fond blanc aux pages'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('forceWhiteBackground', Checkbox::class, $this->__('Ajouter un fond blanc aux pages'), [ 'default' => true, ]); - $this->addSettingField('rasterizePages', Hidden::class, $this->__('Ecraser les pages'), [ + $this->_addSettingField('rasterizePages', Hidden::class, $this->__('Ecraser les pages'), [ 'hint' => '1-3,5 = 1,2,3,5', ]); - $this->addSettingField('vectorPages', Hidden::class, $this->__('Conserver les pages en vecteur'), [ + $this->_addSettingField('vectorPages', Hidden::class, $this->__('Conserver les pages en vecteur'), [ 'hint' => '1-3,5 = 1,2,3,5', ]); - $this->addSettingField('correctCenter', Checkbox::class, $this->__('Corriger les lignes blanches entre les pages'), [ + $this->_addSettingField('correctCenter', Checkbox::class, $this->__('Corriger les lignes blanches entre les pages'), [ 'default' => true, 'when' => ['mobileNavigationType' => ['book', 'landscape']], ]); - $this->addSettingField('fixAirPixel', Checkbox::class, $this->__('Corriger la ligne blanche en bordure de page'), + $this->_addSettingField('fixAirPixel', Checkbox::class, $this->__('Corriger la ligne blanche en bordure de page'), ['default' => true, 'when' => ['mobileNavigationType' => ['portrait']]] ); -// $this->addSettingField('pagesBaseAngle', Integer::class, $this->__('Angle de base entre les pages'), [ +// $this->_addSettingField('pagesBaseAngle', Integer::class, $this->__('Angle de base entre les pages'), [ // // 'hint' => $this->__('0 : Publication à plat') . ' //' . $this->__('2 : Valeur par défaut'), // 'default' => 2, // ]); - $this->addSettingField('centerBook', Checkbox::class, $this->__('Centrer la publication sur les couvertures'), [ + $this->_addSettingField('centerBook', Checkbox::class, $this->__('Centrer la publication sur les couvertures'), [ 'default' => true, 'when' => ['mobileNavigationType' => ['book', 'landscape']], ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('mobileHorizontalMargins', Integer::class, $this->__('Marges horizontales sur mobile'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('mobileHorizontalMargins', Integer::class, $this->__('Marges horizontales sur mobile'), [ 'default' => 10, ]); - $this->addSettingField('mobileReducedMargins', Checkbox::class, $this->__('Marges verticales réduites sur mobile'), [ + $this->_addSettingField('mobileReducedMargins', Checkbox::class, $this->__('Marges verticales réduites sur mobile'), [ 'default' => false, ]); - $this->addSettingField('mobileHideSliderIfOverlaps', Checkbox::class, $this->__('Cacher le slider si nécessaire'), ['default' => true, 'when' => ['mobileReducedMargins' => '1']]); - $this->addSettingField('extraXSpace', Integer::class, $this->__('Marge supplémentaire horizontale'), [ + $this->_addSettingField('mobileHideSliderIfOverlaps', Checkbox::class, $this->__('Cacher le slider si nécessaire'), ['default' => true, 'when' => ['mobileReducedMargins' => '1']]); + $this->_addSettingField('extraXSpace', Integer::class, $this->__('Marge supplémentaire horizontale'), [ 'default' => 0, ]); - $this->addSettingField('mobileExtraXSpace', Integer::class, $this->__('Marge supplémentaire horizontale (Mobile)'), [ + $this->_addSettingField('mobileExtraXSpace', Integer::class, $this->__('Marge supplémentaire horizontale (Mobile)'), [ 'default' => 0, ]); - $this->addSettingField('extraYSpace', Integer::class, $this->__('Marge supplémentaire verticale'), [ + $this->_addSettingField('extraYSpace', Integer::class, $this->__('Marge supplémentaire verticale'), [ 'default' => 0, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('viewMode', SelectFromArray::class, $this->__('Mode de visualisation (beta)'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('viewMode', SelectFromArray::class, $this->__('Mode de visualisation (beta)'), [ 'options' => [ 0 => $this->__('Classique'), 1 => $this->__('Diaporama'), ], 'default' => '0', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('dynamicBackgroundColor', Textarea::class, 'Couleur de fond dynamique'); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('svgToCanvas', SelectFromArray::class, $this->__('Rendu des textes'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('dynamicBackgroundColor', Textarea::class, 'Couleur de fond dynamique'); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('svgToCanvas', SelectFromArray::class, $this->__('Rendu des textes'), [ 'options' => [0 => __('Afficher le SVG'), 1 => __('SVG to Canvas'), 2 => __('PDF to Canvas')], 'default' => 0, ]); - $this->addSettingField('pdfToCanvasPDF', FilesOrURL::class, __('PDF pour le rendu PDF to Canvas'), ['when' => ['svgToCanvas' => 2]]); - $this->addSettingField('svgToCanvasUpscale', Number::class, $this->__('Upscale de la fonction svgtocanvas'), [ + $this->_addSettingField('pdfToCanvasPDF', FilesOrURL::class, __('PDF pour le rendu PDF to Canvas'), ['when' => ['svgToCanvas' => 2]]); + $this->_addSettingField('svgToCanvasUpscale', Number::class, $this->__('Upscale de la fonction svgtocanvas'), [ 'default' => 1, 'when' => ['svgToCanvas' => 1], ]); - $this->addSettingField('textsThickness', Number::class, $this->__('Epaisseur des textes'), [ + $this->_addSettingField('textsThickness', Number::class, $this->__('Epaisseur des textes'), [ 'default' => 1, 'when' => ['svgToCanvas' => 1], ]); - $this->addSettingField('textsThicknessPages', LongText::class, $this->__('Appliquer l\'épaisseur des texte sur les pages'), [ + $this->_addSettingField('textsThicknessPages', LongText::class, $this->__('Appliquer l\'épaisseur des texte sur les pages'), [ 'when' => ['svgToCanvas' => 1], ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('transparentPage', Checkbox::class, __('Pages transparentes'), ['default' => false]); - $this->addSettingField('imageFormat', SelectFromArray::class, $this->__('Format des images'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('transparentPage', Checkbox::class, __('Pages transparentes'), ['default' => false]); + $this->_addSettingField('imageFormat', SelectFromArray::class, $this->__('Format des images'), [ 'options' => [ 'jpg' => 'JPEG', 'png' => 'PNG', @@ -463,12 +463,12 @@ trait PublicationSettings 'when' => ['transparentPage' => 0], ]); - $this->addSettingField('JPEGQuality', Integer::class, $this->__('Qualité JPEG'), [ + $this->_addSettingField('JPEGQuality', Integer::class, $this->__('Qualité JPEG'), [ 'default' => 85, 'when' => ['imageFormat' => 'jpg', 'transparentPage' => 0], ]); - $this->addSettingField('maxResolution', SelectFromArray::class, $this->__('Résolution maximale des pages'), [ + $this->_addSettingField('maxResolution', SelectFromArray::class, $this->__('Résolution maximale des pages'), [ 'options' => [ 300 => '300dpi', 150 => '150dpi', @@ -481,11 +481,11 @@ trait PublicationSettings protected function _performances() { - $this->addSettingField('section_performances', FormSection::class, $this->__('Performances')); - $this->addSettingField('rasterizeOnSafari', Checkbox::class, $this->__('Ecraser les pages pour Safari (Mac OS)'), [ + $this->_addSettingField('section_performances', FormSection::class, $this->__('Performances')); + $this->_addSettingField('rasterizeOnSafari', Checkbox::class, $this->__('Ecraser les pages pour Safari (Mac OS)'), [ 'default' => false, ]); - $this->addSettingField('performance3DMode', SelectFromArray::class, $this->__('Performance de la 3D'), [ + $this->_addSettingField('performance3DMode', SelectFromArray::class, $this->__('Performance de la 3D'), [ 'options' => [ 'auto' => $this->__('Tester la machine'), 'highPerf' => $this->__('Haute'), @@ -498,80 +498,80 @@ trait PublicationSettings protected function _general() { - $this->addSettingField('section_general', FormSection::class, $this->__('Fonctionnalités générales')); - $this->addSettingField('tooltipTimer', Number::class, $this->__('Temps maximum d\'apparition des infos-bulle'), [ + $this->_addSettingField('section_general', FormSection::class, $this->__('Fonctionnalités générales')); + $this->_addSettingField('tooltipTimer', Number::class, $this->__('Temps maximum d\'apparition des infos-bulle'), [ 'default' => 3, 'suffix' => __('secondes'), ]); - $this->addSettingField('mobilePlugins', Textarea::class, $this->__('Plugin')); - $this->addSettingField('maxPages', Integer::class, $this->__('Nombre de pages maximal affiché à l\'ouverture du fluidbook (pas de limite = 0)'), [ + $this->_addSettingField('mobilePlugins', Textarea::class, $this->__('Plugin')); + $this->_addSettingField('maxPages', Integer::class, $this->__('Nombre de pages maximal affiché à l\'ouverture du fluidbook (pas de limite = 0)'), [ 'default' => 0, ]); - $this->addSettingField('pages', ReadOnlyValue::class, $this->__('Nombre de pages'), [ + $this->_addSettingField('pages', ReadOnlyValue::class, $this->__('Nombre de pages'), [ 'default' => 0, ]); - $this->addSettingField('width', ReadOnlyValue::class, $this->__('Largeur'), [ + $this->_addSettingField('width', ReadOnlyValue::class, $this->__('Largeur'), [ 'default' => 0, ]); - $this->addSettingField('height', ReadOnlyValue::class, $this->__('Hauteur'), [ + $this->_addSettingField('height', ReadOnlyValue::class, $this->__('Hauteur'), [ 'default' => 0, ]); } protected function _loading() { - $this->addSettingField('section_preload', FormSection::class, $this->__('Préchargement, temps d\'ouverture')); - $this->addSettingField('shortLoading', Checkbox::class, $this->__('Chargement court'), ['default' => false, 'hint' => $this->__('Ce mode permet de donner la priorité à l\'apparition de la publication par rapport au préchargement des images ou à la fluidité des animations')]); - $this->addSettingField('preload', Integer::class, $this->__('Nombre de pages à précharger'), [ + $this->_addSettingField('section_preload', FormSection::class, $this->__('Préchargement, temps d\'ouverture')); + $this->_addSettingField('shortLoading', Checkbox::class, $this->__('Chargement court'), ['default' => false, 'hint' => $this->__('Ce mode permet de donner la priorité à l\'apparition de la publication par rapport au préchargement des images ou à la fluidité des animations')]); + $this->_addSettingField('preload', Integer::class, $this->__('Nombre de pages à précharger'), [ 'default' => 16, ]); - $this->addSettingField('priorityToPreload', Checkbox::class, $this->__('Priorité au préchargement sur la fluidité'), ['default' => false, + $this->_addSettingField('priorityToPreload', Checkbox::class, $this->__('Priorité au préchargement sur la fluidité'), ['default' => false, ]); } protected function _menu() { - $this->addSettingField('section_menu', FormSection::class, $this->__('Menu')); - $this->addSettingField('navOrder', Textarea::class, $this->__('Ordre des icônes dans la nav'), [ + $this->_addSettingField('section_menu', FormSection::class, $this->__('Menu')); + $this->_addSettingField('navOrder', Textarea::class, $this->__('Ordre des icônes dans la nav'), [ 'default' => 'index, chapters, search, print, friend, bookmark, pdf, notes, archives, basket, fullscreen, sound, 3d, extra, extra1, extra2, extra3, extra4, extra5, help, lang', ]); - $this->addSettingField('navOrderH', Textarea::class, $this->__('Ordre des icônes dans la nav mobile') . ' (' . $this->__('Si différente') . ')'); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('mobileNavScale', Integer::class, $this->__('Taille du menu (en %)'), [ + $this->_addSettingField('navOrderH', Textarea::class, $this->__('Ordre des icônes dans la nav mobile') . ' (' . $this->__('Si différente') . ')'); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('mobileNavScale', Integer::class, $this->__('Taille du menu (en %)'), [ 'default' => 100, ]); - $this->addSettingField('menuBreakpoint', LongText::class, $this->__('Breakpoint burger menu'), [ + $this->_addSettingField('menuBreakpoint', LongText::class, $this->__('Breakpoint burger menu'), [ 'hint' => 'Par défaut 1023px', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('afterSearchDisplayForHTML', Checkbox::class, $this->__('Afficher l\'image après le moteur de recherche sur la version HTML5'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('afterSearchDisplayForHTML', Checkbox::class, $this->__('Afficher l\'image après le moteur de recherche sur la version HTML5'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('navExtraImage', FilesOrURL::class, $this->__('Image pour navigation'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('navExtraImage', FilesOrURL::class, $this->__('Image pour navigation'), [ 'accept' => self::$acceptImages, ]); - $this->addSettingField('navExtraImageMobile', FilesOrURL::class, $this->__('Image pour mobile'), [ + $this->_addSettingField('navExtraImageMobile', FilesOrURL::class, $this->__('Image pour mobile'), [ 'accept' => self::$acceptImages, ]); - $this->addSettingField('navExtraLink', LongText::class, $this->__('URL')); - $this->addSettingField('navExtraTooltip', LongText::class, $this->__('Infobulle ou label')); + $this->_addSettingField('navExtraLink', LongText::class, $this->__('URL')); + $this->_addSettingField('navExtraTooltip', LongText::class, $this->__('Infobulle ou label')); for ($i = 1; $i <= 5; $i++) { - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('navExtraIcon' . $i, FilesOrURL::class, $this->__('Icône supplémentaire') . ' ' . $i, [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('navExtraIcon' . $i, FilesOrURL::class, $this->__('Icône supplémentaire') . ' ' . $i, [ 'accept' => self::$acceptImages, ]); - $this->addSettingField('navExtraType' . $i, SelectFromArray::class, $this->__('Type'), [ + $this->_addSettingField('navExtraType' . $i, SelectFromArray::class, $this->__('Type'), [ 'options' => [ 'icon' => $this->__('Icône + Label'), 'image' => $this->__('Image'), ], 'default' => 'icon', ]); - $this->addSettingField('navExtraLink' . $i, LongText::class, $this->__('URL') . ' ' . $i, [ + $this->_addSettingField('navExtraLink' . $i, LongText::class, $this->__('URL') . ' ' . $i, [ ]); - $this->addSettingField('navExtraVisibility' . $i, SelectFromArray::class, $this->__('Visible') . ' ' . $i, [ + $this->_addSettingField('navExtraVisibility' . $i, SelectFromArray::class, $this->__('Visible') . ' ' . $i, [ 'options' => [ 'horizontal' => $this->__('Navigation horizontale'), 'burger' => $this->__('Navigation burger'), @@ -580,8 +580,8 @@ trait PublicationSettings 'default' => 'both', ]); } - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('mobileBottomNav', LongText::class, $this->__('Barre de boutons en bas'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('mobileBottomNav', LongText::class, $this->__('Barre de boutons en bas'), [ 'hint' => $this->__('Identifiants des boutons séparés par des virgules'), ]); @@ -590,76 +590,76 @@ trait PublicationSettings protected function _landing() { - $this->addSettingField('section_landing', FormSection::class, $this->__('Landing page')); - $this->addSettingField('landingPage', FilesOrURL::class, $this->__('Contenu de la landing page')); + $this->_addSettingField('section_landing', FormSection::class, $this->__('Landing page')); + $this->_addSettingField('landingPage', FilesOrURL::class, $this->__('Contenu de la landing page')); } protected function _fullscreen() { - $this->addSettingField('section_fs', FormSection::class, $this->__('Plein écran')); - $this->addSettingField('fullscreen', Checkbox::class, $this->__('Activer le mode plein-écran'), [ + $this->_addSettingField('section_fs', FormSection::class, $this->__('Plein écran')); + $this->_addSettingField('fullscreen', Checkbox::class, $this->__('Activer le mode plein-écran'), [ 'default' => true, ]); - $this->addSettingField('fullscreenAuto', Checkbox::class, $this->__('Lancer la publication en mode plein écran (lorsque possible)'), [ + $this->_addSettingField('fullscreenAuto', Checkbox::class, $this->__('Lancer la publication en mode plein écran (lorsque possible)'), [ 'default' => false, ]); - $this->addSettingField('fullscreeniOS', Checkbox::class, $this->__('Activer le mode plein-écran sur iOS (lorsque supporté par le système/navigateur)'), ['default' => false]); + $this->_addSettingField('fullscreeniOS', Checkbox::class, $this->__('Activer le mode plein-écran sur iOS (lorsque supporté par le système/navigateur)'), ['default' => false]); } protected function _bookmarks() { - $this->addSettingField('section_bookmark', FormSection::class, $this->__('Marques-pages')); - $this->addSettingField('bookmark', Checkbox::class, $this->__('Activer les marques-pages'), [ + $this->_addSettingField('section_bookmark', FormSection::class, $this->__('Marques-pages')); + $this->_addSettingField('bookmark', Checkbox::class, $this->__('Activer les marques-pages'), [ 'default' => true, ]); - $this->addSettingField('bookmarkView', SelectFromArray::class, $this->__('Menu des marques-pages'), [ + $this->_addSettingField('bookmarkView', SelectFromArray::class, $this->__('Menu des marques-pages'), [ 'options' => [ 'small' => $this->__('Réduit'), 'large' => $this->__('Complet'), ], 'default' => 'small', ]); - $this->addSettingField('bookmarkFunctionsMainMenu', Checkbox::class, $this->__('Fonctions vers menus généraux'), [ + $this->_addSettingField('bookmarkFunctionsMainMenu', Checkbox::class, $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'), 'default' => false, ]); - $this->addSettingField('bookmarkEmpty', Checkbox::class, $this->__('Bouton pour effacer les marques-pages'), [ + $this->_addSettingField('bookmarkEmpty', Checkbox::class, $this->__('Bouton pour effacer les marques-pages'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('bookmarkSendEnable', Checkbox::class, $this->__('Activer l\'envoi des marques-pages par e-mail'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('bookmarkSendEnable', Checkbox::class, $this->__('Activer l\'envoi des marques-pages par e-mail'), [ 'default' => true, ]); - $this->addSettingField('bookmark_email_title', LongText::class, $this->__('Titre de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ + $this->_addSettingField('bookmark_email_title', LongText::class, $this->__('Titre de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'), ]); - $this->addSettingField('bookmark_email_body', Textarea::class, $this->__('Corps de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ + $this->_addSettingField('bookmark_email_body', Textarea::class, $this->__('Corps de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"', [ 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'), ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('bookmarkPrint', Checkbox::class, $this->__('Activer l\'impression des marques-pages'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('bookmarkPrint', Checkbox::class, $this->__('Activer l\'impression des marques-pages'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('bookmarkCornerSize', Integer::class, $this->__('Taille des marques-pages'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('bookmarkCornerSize', Integer::class, $this->__('Taille des marques-pages'), [ 'hint' => $this->__('Taille relative à la largeur de la page'), 'default' => 8, ]); - $this->addSettingField('bookmarkOffset', Integer::class, $this->__('Décaler de x pixels vers l\'intérieur'), [ + $this->_addSettingField('bookmarkOffset', Integer::class, $this->__('Décaler de x pixels vers l\'intérieur'), [ 'default' => 0, ]); - $this->addSettingField('bookmarkPermanentIcon', Checkbox::class, $this->__('Afficher l\'icône en permanance'), [ + $this->_addSettingField('bookmarkPermanentIcon', Checkbox::class, $this->__('Afficher l\'icône en permanance'), [ 'default' => false, ]); - $this->addSettingField('bookmarkBlinkOnPageChange', Checkbox::class, $this->__('Faire clignoter le marque-page à l\'apparition de la page'), [ + $this->_addSettingField('bookmarkBlinkOnPageChange', Checkbox::class, $this->__('Faire clignoter le marque-page à l\'apparition de la page'), [ 'default' => false, ]); - $this->addSettingField('bookmarkPosition', SelectFromArray::class, $this->__('Position des marque-pages'), ['default' => 'page', 'options' => ['page' => __('Coin de la page'), 'window' => __('Coin de la fenêtre')]]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('bookmarkDisablePages', LongText::class, $this->__('Désactiver les marques-pages sur ces pages'), [ + $this->_addSettingField('bookmarkPosition', SelectFromArray::class, $this->__('Position des marque-pages'), ['default' => 'page', 'options' => ['page' => __('Coin de la page'), 'window' => __('Coin de la fenêtre')]]); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('bookmarkDisablePages', LongText::class, $this->__('Désactiver les marques-pages sur ces pages'), [ 'hint' => '1-3,5 = 1,2,3,5', ]); - $this->addSettingField('bookmarkUsePDF', SelectFromArray::class, $this->__('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'), [ + $this->_addSettingField('bookmarkUsePDF', SelectFromArray::class, $this->__('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'), [ 'options' => [ 'pages' => $this->__('PDF des pages'), 'download' => $this->__('PDF de remplacement'), @@ -672,44 +672,44 @@ trait PublicationSettings protected function _help() { - $this->addSettingField('section_help', FormSection::class, $this->__('Aide')); - $this->addSettingField('help', Checkbox::class, $this->__('Activer l\'aide'), [ + $this->_addSettingField('section_help', FormSection::class, $this->__('Aide')); + $this->_addSettingField('help', Checkbox::class, $this->__('Activer l\'aide'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('helpStartup', Checkbox::class, $this->__('Afficher l\'aide au démarrage'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('helpStartup', Checkbox::class, $this->__('Afficher l\'aide au démarrage'), [ 'default' => false, ]); - $this->addSettingField('helpStartupTime', Integer::class, $this->__('Temps d\'affichage'), [ + $this->_addSettingField('helpStartupTime', Integer::class, $this->__('Temps d\'affichage'), [ 'default' => 15, 'suffix' => __('secondes'), ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('helpBookmarks', Checkbox::class, $this->__('Améliorer l\'aide des marques-pages'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('helpBookmarks', Checkbox::class, $this->__('Améliorer l\'aide des marques-pages'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('helpArrowTooltip', LongText::class, $this->__('Bulle affichée au niveau de la flèche de droite')); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('landscapeWarning', Textarea::class, $this->__('Avertissement affiché sur mobile au chargement de la publication')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('helpArrowTooltip', LongText::class, $this->__('Bulle affichée au niveau de la flèche de droite')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('landscapeWarning', Textarea::class, $this->__('Avertissement affiché sur mobile au chargement de la publication')); } protected function _index() { - $this->addSettingField('section_index', FormSection::class, $this->__('Vue d\'index (vignettes)')); - $this->addSettingField('index', Checkbox::class, $this->__('Activer l\'index'), [ + $this->_addSettingField('section_index', FormSection::class, $this->__('Vue d\'index (vignettes)')); + $this->_addSettingField('index', Checkbox::class, $this->__('Activer l\'index'), [ 'default' => true, ]); - $this->addSettingField('indexAutoScroll', Checkbox::class, $this->__('Activer le scroll automatique'), [ + $this->_addSettingField('indexAutoScroll', Checkbox::class, $this->__('Activer le scroll automatique'), [ 'default' => false, ]); - $this->addSettingField('pdfThumbnails', FilesOrURL::class, $this->__('PDF utilisé pour générer les miniatures'), [ + $this->_addSettingField('pdfThumbnails', FilesOrURL::class, $this->__('PDF utilisé pour générer les miniatures'), [ 'accept' => [ 0 => '*.pdf', ], ]); - $this->addSettingField('indexMessage', Textarea::class, $this->__('Message en haut'), [ + $this->_addSettingField('indexMessage', Textarea::class, $this->__('Message en haut'), [ 'hint' => $this->__('Message en haut de la vue index'), ]); @@ -717,43 +717,43 @@ trait PublicationSettings protected function _print() { - $this->addSettingField('section_print', FormSection::class, $this->__('Impression')); - $this->addSettingField('print', Checkbox::class, $this->__('Activer l\'impression'), [ + $this->_addSettingField('section_print', FormSection::class, $this->__('Impression')); + $this->_addSettingField('print', Checkbox::class, $this->__('Activer l\'impression'), [ 'default' => true, ]); - $this->addSettingField('printFullBrochure', Checkbox::class, $this->__('Autoriser l\'impression de la brochure complète'), [ + $this->_addSettingField('printFullBrochure', Checkbox::class, $this->__('Autoriser l\'impression de la brochure complète'), [ 'default' => true, ]); - $this->addSettingField('printPageRange', Checkbox::class, $this->__('Activer l\'option pour imprimer une plage de pages'), [ + $this->_addSettingField('printPageRange', Checkbox::class, $this->__('Activer l\'option pour imprimer une plage de pages'), [ 'default' => false, ]); } protected function _search() { - $this->addSettingField('section_search', FormSection::class, $this->__('Moteur de recherche')); - $this->addSettingField('search', Checkbox::class, $this->__('Activer le moteur de recherche'), [ + $this->_addSettingField('section_search', FormSection::class, $this->__('Moteur de recherche')); + $this->_addSettingField('search', Checkbox::class, $this->__('Activer le moteur de recherche'), [ 'default' => true, ]); - $this->addSettingField('search_mode', SelectFromArray::class, $this->__('Mode'), [ + $this->_addSettingField('search_mode', SelectFromArray::class, $this->__('Mode'), [ 'options' => ['standard' => __('Standard'), 'robust' => __('Robuste')], 'default' => 'standard', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('ignoreWordLimit', Integer::class, $this->__('Ignorer les mots de moins de X caractères'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('ignoreWordLimit', Integer::class, $this->__('Ignorer les mots de moins de X caractères'), [ 'default' => 3, 'when' => ['search_mode' => ['standard']] ]); - $this->addSettingField('ignoreSearch', Textarea::class, $this->__('Mots à ignorer'), [ + $this->_addSettingField('ignoreSearch', Textarea::class, $this->__('Mots à ignorer'), [ 'hint' => $this->__('Liste des mots à ignorer séparés par des virgules'), 'when' => ['search_mode' => ['standard']] ]); - $this->addSettingField('ignoreSearchSeparators', LongText::class, $this->__('Caractères à ne pas considérer comme un séparateur de mot'), [ + $this->_addSettingField('ignoreSearchSeparators', LongText::class, $this->__('Caractères à ne pas considérer comme un séparateur de mot'), [ 'when' => ['search_mode' => ['standard']] ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('searchWordSelectionAlgorithm', SelectFromArray::class, $this->__('Algorithme de sélection des occurences'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('searchWordSelectionAlgorithm', SelectFromArray::class, $this->__('Algorithme de sélection des occurences'), [ 'options' => [ 'begins' => $this->__('mot commençant par la requête'), 'exact' => $this->__('mot correspondant exactement à la requête'), @@ -763,7 +763,7 @@ trait PublicationSettings 'default' => 'begins', 'when' => ['search_mode' => ['standard']] ]); - $this->addSettingField('searchPageSelectionAlgorithm', SelectFromArray::class, $this->__('Algorithme de sélection des résultats'), [ + $this->_addSettingField('searchPageSelectionAlgorithm', SelectFromArray::class, $this->__('Algorithme de sélection des résultats'), [ 'options' => [ 'AND' => $this->__('les double-pages qui contiennent tous les mots recherchés (ET logique)'), 'OR' => $this->__('les double-page qui contiennent un des mots recherché (OU logique)'), @@ -771,20 +771,20 @@ trait PublicationSettings 'default' => 'AND', 'when' => ['search_mode' => ['standard']] ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('highlightResults', Checkbox::class, $this->__('Surligner les résultats'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('highlightResults', Checkbox::class, $this->__('Surligner les résultats'), [ 'default' => true, ]); - $this->addSettingField('highlightAllOccurences', Checkbox::class, $this->__('Surligner toutes les occurences'), [ + $this->_addSettingField('highlightAllOccurences', Checkbox::class, $this->__('Surligner toutes les occurences'), [ 'hint' => $this->__('Même sur les pages non considérées comme un résultat'), 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('searchShowNoResultsPages', Checkbox::class, $this->__('Afficher les pages sans résultats'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('searchShowNoResultsPages', Checkbox::class, $this->__('Afficher les pages sans résultats'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('textExtraction', SelectFromArray::class, $this->__('Méthode d\'extraction des textes'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('textExtraction', SelectFromArray::class, $this->__('Méthode d\'extraction des textes'), [ 'options' => [ 'fluidbook' => $this->__('Fluidbook (basée sur PDFBox)'), 'pdfbox' => $this->__('PDFBox'), @@ -793,20 +793,20 @@ trait PublicationSettings 'default' => 'fluidbook', 'when' => ['search_mode' => ['standard']] ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('searchFullBurger', Checkbox::class, $this->__('Afficher le burger menu complet à l\'ouverture de la recheche'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('searchFullBurger', Checkbox::class, $this->__('Afficher le burger menu complet à l\'ouverture de la recheche'), [ 'default' => false, ]); } protected function _sound() { - $this->addSettingField('section_sound', FormSection::class, $this->__('Ambiance et effets sonores')); - $this->addSettingField('soundOn', Checkbox::class, $this->__('Activer les effets sonores à l\'ouverture'), [ + $this->_addSettingField('section_sound', FormSection::class, $this->__('Ambiance et effets sonores')); + $this->_addSettingField('soundOn', Checkbox::class, $this->__('Activer les effets sonores à l\'ouverture'), [ 'default' => true, ]); - $this->addSettingField('sep_ambientSound1', FormSeparator::class); - $this->addSettingField('soundTheme', SelectFromArray::class, $this->__('Thème sonore'), [ + $this->_addSettingField('sep_ambientSound1', FormSeparator::class); + $this->_addSettingField('soundTheme', SelectFromArray::class, $this->__('Thème sonore'), [ 'options' => [ 'none' => $this->__('Pas de son'), 'classic' => $this->__('Classique'), @@ -817,50 +817,50 @@ trait PublicationSettings ], 'default' => 'classic', ]); - $this->addSettingField('soundVolume', Percent::class, $this->__('Volume des effets sonores'), ['default' => 100, 'when' => ['soundTheme' => ['operator' => '!=', 'value' => 'none']]]); - $this->addSettingField('sep_ambientSound', FormSeparator::class); - $this->addSettingField('ambientSound', FilesOrURL::class, $this->__('Ambiance sonore')); - $this->addSettingField('ambientSoundVolume', Percent::class, $this->__('Volume de l\'ambiance sonore'), ['default' => 50, 'when' => ['ambientSound' => ['operator' => 'not_empty']]]); + $this->_addSettingField('soundVolume', Percent::class, $this->__('Volume des effets sonores'), ['default' => 100, 'when' => ['soundTheme' => ['operator' => '!=', 'value' => 'none']]]); + $this->_addSettingField('sep_ambientSound', FormSeparator::class); + $this->_addSettingField('ambientSound', FilesOrURL::class, $this->__('Ambiance sonore')); + $this->_addSettingField('ambientSoundVolume', Percent::class, $this->__('Volume de l\'ambiance sonore'), ['default' => 50, 'when' => ['ambientSound' => ['operator' => 'not_empty']]]); } protected function _downloadpdf() { - $this->addSettingField('section_downloadpdf', FormSection::class, $this->__('Fonction de téléchargement')); - $this->addSettingField('pdf', Checkbox::class, $this->__('Activer les fonctions de téléchargement'), [ + $this->_addSettingField('section_downloadpdf', FormSection::class, $this->__('Fonction de téléchargement')); + $this->_addSettingField('pdf', Checkbox::class, $this->__('Activer les fonctions de téléchargement'), [ 'default' => true, ]); - $this->addSettingField('pdfName', LongText::class, $this->__('Nom du fichier PDF'), [ + $this->_addSettingField('pdfName', LongText::class, $this->__('Nom du fichier PDF'), [ 'default' => '%title%', ]); - $this->addSettingField('pdfReplace', FilesOrURL::class, $this->__('PDF de remplacement'), [ + $this->_addSettingField('pdfReplace', FilesOrURL::class, $this->__('PDF de remplacement'), [ 'accept' => [ 0 => '*.pdf', ], ]); - $this->addSettingField('pdfCompress', Checkbox::class, $this->__('Compression du fichier PDF'), [ + $this->_addSettingField('pdfCompress', Checkbox::class, $this->__('Compression du fichier PDF'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('pdfComplex', Checkbox::class, $this->__('Téchargement de PDF avancé'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('pdfComplex', Checkbox::class, $this->__('Téchargement de PDF avancé'), [ 'hint' => $this->__('Permet à l\'utilisateur de sélectionner les pages qu\'il souhaite télécharger'), 'default' => false, ]); - $this->addSettingField('pdfComplexShowCurrent', Checkbox::class, $this->__('Afficher les pages courrantes'), [ + $this->_addSettingField('pdfComplexShowCurrent', Checkbox::class, $this->__('Afficher les pages courrantes'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); + $this->_addSettingField('', FormSeparator::class); $forms = ['Christaud']; - $this->addSettingField('pdfBeforeForm', SelectFromArray::class, $this->__('Remplir un formulaire avant le téléchargement ou l\'impression'), ['default' => '', 'allows_null' => true, 'options' => array_merge(['' => __('Aucun')], array_combine($forms, $forms))]); + $this->_addSettingField('pdfBeforeForm', SelectFromArray::class, $this->__('Remplir un formulaire avant le téléchargement ou l\'impression'), ['default' => '', 'allows_null' => true, 'options' => array_merge(['' => __('Aucun')], array_combine($forms, $forms))]); } protected function _zoom() { - $this->addSettingField('section_zoom', FormSection::class, $this->__('Zoom')); - $this->addSettingField('zoomClick', Checkbox::class, $this->__('Cliquer sur les pages pour zoomer'), [ + $this->_addSettingField('section_zoom', FormSection::class, $this->__('Zoom')); + $this->_addSettingField('zoomClick', Checkbox::class, $this->__('Cliquer sur les pages pour zoomer'), [ 'default' => true, ]); - $this->addSettingField('zoomWheel', SelectFromArray::class, $this->__('Zoom molette'), [ + $this->_addSettingField('zoomWheel', SelectFromArray::class, $this->__('Zoom molette'), [ 'options' => [ 'disabled' => $this->__('Désactivé'), 'wheel' => $this->__('Molette'), @@ -868,99 +868,99 @@ trait PublicationSettings ], 'default' => 'wheel', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('zoom', Integer::class, $this->__('Zoom par défaut (atteint au clic)'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('zoom', Integer::class, $this->__('Zoom par défaut (atteint au clic)'), [ 'default' => 200, ]); - $this->addSettingField('zoomw', Integer::class, $this->__('Zoom maximal (atteint à l\'aide de la molette)'), [ + $this->_addSettingField('zoomw', Integer::class, $this->__('Zoom maximal (atteint à l\'aide de la molette)'), [ 'default' => 300, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('zoomMouseMoveMode', SelectFromArray::class, $this->__('Mode de déplacement des pages zoomées (souris)'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('zoomMouseMoveMode', SelectFromArray::class, $this->__('Mode de déplacement des pages zoomées (souris)'), [ 'options' => [ 'move' => $this->__('Bouger la souris'), $this->__('dragndrop') => $this->__('Drag & drop'), ], 'default' => 'move', ]); - $this->addSettingField('hideHeaderOnZoom', Checkbox::class, $this->__('Cacher le menu lors du zoom'), [ + $this->_addSettingField('hideHeaderOnZoom', Checkbox::class, $this->__('Cacher le menu lors du zoom'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('zoomAreaDefaultZoomLevel', Number::class, __('Niveau de zoom des zones de zoom'), ['min' => 1, 'max' => 20, 'prefix' => 'x', 'default' => 2] + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('zoomAreaDefaultZoomLevel', Number::class, __('Niveau de zoom des zones de zoom'), ['min' => 1, 'max' => 20, 'prefix' => 'x', 'default' => 2] ); - $this->addSettingField('zoomAreaShowTexts', Checkbox::class, __('Inclure la couche de texte dans les zones de zoom'), ['default' => true]); + $this->_addSettingField('zoomAreaShowTexts', Checkbox::class, __('Inclure la couche de texte dans les zones de zoom'), ['default' => true]); } protected function _chapters() { - $this->addSettingField('section_sommaire', FormSection::class, $this->__('Sommaire')); - $this->addSettingField('chaptersCaptionDisplay', Checkbox::class, $this->__('Afficher le titre "Sommaire" dans la popup'), [ + $this->_addSettingField('section_sommaire', FormSection::class, $this->__('Sommaire')); + $this->_addSettingField('chaptersCaptionDisplay', Checkbox::class, $this->__('Afficher le titre "Sommaire" dans la popup'), [ 'default' => true, ]); - $this->addSettingField('chaptersFontSize', Integer::class, $this->__('Taille du texte des élements du sommaire'), [ + $this->_addSettingField('chaptersFontSize', Integer::class, $this->__('Taille du texte des élements du sommaire'), [ 'hint' => 'En % par rapport à la taille normale', 'min' => 50, 'max' => 120, 'default' => 100, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('displayChaptersIcon', Checkbox::class, $this->__('Affiche l\'icône du sommaire'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('displayChaptersIcon', Checkbox::class, $this->__('Affiche l\'icône du sommaire'), [ 'default' => true, ]); - $this->addSettingField('displayChaptersPopup', Checkbox::class, $this->__('Toujours afficher le sommaire dans un popup'), [ + $this->_addSettingField('displayChaptersPopup', Checkbox::class, $this->__('Toujours afficher le sommaire dans un popup'), [ 'default' => true, ]); - $this->addSettingField('displayChaptersAtStart', Checkbox::class, $this->__('Afficher le sommaire au chargement de la publication'), [ + $this->_addSettingField('displayChaptersAtStart', Checkbox::class, $this->__('Afficher le sommaire au chargement de la publication'), [ 'default' => false, ]); - $this->addSettingField('chaptersPage', LongText::class, $this->__('Faire pointer le sommaire sur la page'), [ + $this->_addSettingField('chaptersPage', LongText::class, $this->__('Faire pointer le sommaire sur la page'), [ 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'), ]); - $this->addSettingField('chaptersPosition', SelectFromArray::class, $this->__('Position du sommaire'), [ + $this->_addSettingField('chaptersPosition', SelectFromArray::class, $this->__('Position du sommaire'), [ 'options' => [ 'center' => $this->__('Centré'), 'chaptersIcon' => $this->__('Aligné sur l\'icône'), ], 'default' => 'center', ]); - $this->addSettingField('chaptersLevelLimit', Integer::class, $this->__('Limiter à x niveaux'), [ + $this->_addSettingField('chaptersLevelLimit', Integer::class, $this->__('Limiter à x niveaux'), [ 'default' => 5, ]); - $this->addSettingField('chaptersCascade', Checkbox::class, $this->__('Sommaire en cascade'), [ + $this->_addSettingField('chaptersCascade', Checkbox::class, $this->__('Sommaire en cascade'), [ 'default' => false, ]); - $this->addSettingField('chaptersPagesNumber', SelectFromArray::class, $this->__('Numérotation du sommaire'), [ + $this->_addSettingField('chaptersPagesNumber', SelectFromArray::class, $this->__('Numérotation du sommaire'), [ 'options' => [ 'virtual' => $this->__('Virtuelle'), 'physical' => $this->__('Physique'), ], 'default' => 'virtual', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('chaptersColMaxWidth', Integer::class, $this->__('Largeur max d\'une colonne'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('chaptersColMaxWidth', Integer::class, $this->__('Largeur max d\'une colonne'), [ 'default' => 300, ]); - $this->addSettingField('chaptersColumns', Integer::class, $this->__('Afficher le sommaire sur x colonne(s)'), [ + $this->_addSettingField('chaptersColumns', Integer::class, $this->__('Afficher le sommaire sur x colonne(s)'), [ 'default' => 1, ]); - $this->addSettingField('displayChaptersLine', Checkbox::class, $this->__('Affiche une ligne entre le label et le numéro de page'), [ + $this->_addSettingField('displayChaptersLine', Checkbox::class, $this->__('Affiche une ligne entre le label et le numéro de page'), [ 'default' => true, ]); - $this->addSettingField('chaptersIndent', Checkbox::class, $this->__('Indenter les éléments (pour les sommaires à plat)'), [ + $this->_addSettingField('chaptersIndent', Checkbox::class, $this->__('Indenter les éléments (pour les sommaires à plat)'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('externalChaptersHTML', FilesOrURL::class, $this->__('Sommaire personnalisé'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('externalChaptersHTML', FilesOrURL::class, $this->__('Sommaire personnalisé'), [ 'hint' => $this->__('Laisser vide pour utiliser le sommaire classique'), 'accept' => [ 0 => '*.zip', ], ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('mobileChaptersStyle', SelectFromArray::class, $this->__('Style des chapitres'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('mobileChaptersStyle', SelectFromArray::class, $this->__('Style des chapitres'), [ 'options' => [ 'classic' => $this->__('Classique'), 'ina' => $this->__('INA'), @@ -971,50 +971,50 @@ trait PublicationSettings protected function _tabs() { - $this->addSettingField('section_tabs', FormSection::class, $this->__('Onglets')); - $this->addSettingField('tabsHTML5', FilesOrURL::class, $this->__('Fichier d\'onglets') . ' (SVG, ZIP)', [ + $this->_addSettingField('section_tabs', FormSection::class, $this->__('Onglets')); + $this->_addSettingField('tabsHTML5', FilesOrURL::class, $this->__('Fichier d\'onglets') . ' (SVG, ZIP)', [ 'hint' => $this->__('Charger un zip rendra les options ci-dessous inopérantes'), 'accept' => self::$acceptTabs, ]); - $this->addSettingField('tabsPages', LongText::class, $this->__('Pages des onglets'), [ + $this->_addSettingField('tabsPages', LongText::class, $this->__('Pages des onglets'), [ 'hint' => $this->__('Numéros de pages séparés par une virgule'), ]); - $this->addSettingField('tabsSections', LongText::class, $this->__('Sections des onglets'), [ + $this->_addSettingField('tabsSections', LongText::class, $this->__('Sections des onglets'), [ 'hint' => $this->__('Numéros de pages séparés par une virgule'), ]); - $this->addSettingField('tabsPagesNumbers', SelectFromArray::class, $this->__('Numérotation utilisée'), [ + $this->_addSettingField('tabsPagesNumbers', SelectFromArray::class, $this->__('Numérotation utilisée'), [ 'options' => [ 'virtual' => $this->__('Virtuelle'), 'physical' => $this->__('Physique'), ], 'default' => 'virtual', ]); - $this->addSettingField('tabsDisabledOnPages', LongText::class, $this->__('Onglets inactifs sur les pages'), [ + $this->_addSettingField('tabsDisabledOnPages', LongText::class, $this->__('Onglets inactifs sur les pages'), [ 'hint' => '1-3,5 = 1,2,3,5', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('tabsSide', SelectFromArray::class, $this->__('Position des onglets'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('tabsSide', SelectFromArray::class, $this->__('Position des onglets'), [ 'options' => [ 'left' => $this->__('Gauche'), 'right' => $this->__('Droite'), ], 'default' => 'right', ]); - $this->addSettingField('tabsMargin', Number::class, $this->__('Marge des onglets'), [ + $this->_addSettingField('tabsMargin', Number::class, $this->__('Marge des onglets'), [ 'hint' => $this->__('Une marge négative = les onglets passent sous la publication'), 'default' => -10, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('tabsHideOnPages', LongText::class, $this->__('Cacher les onglets sur les pages'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('tabsHideOnPages', LongText::class, $this->__('Cacher les onglets sur les pages'), [ 'hint' => '1-3,5 = 1,2,3,5', ]); - $this->addSettingField('tabsHideOnCover', Checkbox::class, $this->__('Cacher les onglets sur la couverture'), [ + $this->_addSettingField('tabsHideOnCover', Checkbox::class, $this->__('Cacher les onglets sur la couverture'), [ 'default' => false, ]); - $this->addSettingField('tabsHideOnLastPage', Checkbox::class, $this->__('Cacher les onglets sur la dernière page'), [ + $this->_addSettingField('tabsHideOnLastPage', Checkbox::class, $this->__('Cacher les onglets sur la dernière page'), [ 'default' => true, ]); - $this->addSettingField('tabsHideEdges', SelectFromArray::class, $this->__('Masquer les bordures du fluidbook'), [ + $this->_addSettingField('tabsHideEdges', SelectFromArray::class, $this->__('Masquer les bordures du fluidbook'), [ 'options' => [ 'none' => $this->__('Aucune'), 'left' => $this->__('Gauche'), @@ -1023,95 +1023,95 @@ trait PublicationSettings ], 'default' => 'right', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('tabsPriority', Integer::class, 'Priorité des onglets sur les contenus (%)', [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('tabsPriority', Integer::class, 'Priorité des onglets sur les contenus (%)', [ 'hint' => 'La valeur indique la réduction permise de la taille de la publication.', 'min' => 0, 'max' => 100, 'default' => 15, ]); - $this->addSettingField('tabsLinkWidth', Number::class, $this->__('Largeur des onglets'), [ + $this->_addSettingField('tabsLinkWidth', Number::class, $this->__('Largeur des onglets'), [ 'hint' => $this->__('Largeur réservée pour les onglets et largeur de la zone cliquable des liens'), 'default' => 30, ]); - $this->addSettingField('tabsHideWhenOverlapingArrows', Checkbox::class, $this->__('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), [ + $this->_addSettingField('tabsHideWhenOverlapingArrows', Checkbox::class, $this->__('Cacher les onglets lorsqu\'ils passent sous les flèches de navigation'), [ 'default' => true, ]); - $this->addSettingField('tabsHideOnPortrait', Checkbox::class, $this->__('Cacher les onglets lorsque le fluidbook est en simple page (Slide, Air, ou portrait)'), [ + $this->_addSettingField('tabsHideOnPortrait', Checkbox::class, $this->__('Cacher les onglets lorsque le fluidbook est en simple page (Slide, Air, ou portrait)'), [ 'default' => true, ]); - $this->addSettingField('tabsHideOnZoom', Checkbox::class, $this->__('Cacher les onglets lorsque le fluidbook est zoomé'), [ + $this->_addSettingField('tabsHideOnZoom', Checkbox::class, $this->__('Cacher les onglets lorsque le fluidbook est zoomé'), [ 'default' => true, ]); } protected function _links() { - $this->addSettingField('section_links', FormSection::class, $this->__('Liens')); - $this->addSettingField('permanentLinks', Checkbox::class, $this->__('Liens visibles en permanence'), [ + $this->_addSettingField('section_links', FormSection::class, $this->__('Liens')); + $this->_addSettingField('permanentLinks', Checkbox::class, $this->__('Liens visibles en permanence'), [ 'default' => false, ]); - $this->addSettingField('mobileLinksRevealAnim', Checkbox::class, $this->__('Animer les liens après un changement de page'), [ + $this->_addSettingField('mobileLinksRevealAnim', Checkbox::class, $this->__('Animer les liens après un changement de page'), [ 'default' => true, ]); - $this->addSettingField('linkBlinkTime', Number::class, $this->__('Temps d\'apparition du lien à l\'ouverture de la page'), [ + $this->_addSettingField('linkBlinkTime', Number::class, $this->__('Temps d\'apparition du lien à l\'ouverture de la page'), [ 'default' => 1.0, 'suffix' => __('secondes'), ]); - $this->addSettingField('linkBlinkRepetition', Integer::class, $this->__('Nombre de clignotement lors de l\'apparition des liens'), [ + $this->_addSettingField('linkBlinkRepetition', Integer::class, $this->__('Nombre de clignotement lors de l\'apparition des liens'), [ 'default' => 1, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('openLinkAtStartup', LongText::class, $this->__('Déclencher un lien à l\'ouverture du fluidbook')); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('customLinkClass', LongText::class, $this->__('Classe pour les liens personnalisés')); - $this->addSettingField('ignoreLinksTypes', LongText::class, $this->__('Ignorer les liens de type'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('openLinkAtStartup', LongText::class, $this->__('Déclencher un lien à l\'ouverture du fluidbook')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('customLinkClass', LongText::class, $this->__('Classe pour les liens personnalisés')); + $this->_addSettingField('ignoreLinksTypes', LongText::class, $this->__('Ignorer les liens de type'), [ 'hint' => $this->__('Liste des numéros séparés par des virgules'), ]); - $this->addSettingField('mobileIgnoreBackgroundLinks', Checkbox::class, $this->__('Ignorer les liens de background'), [ + $this->_addSettingField('mobileIgnoreBackgroundLinks', Checkbox::class, $this->__('Ignorer les liens de background'), [ 'default' => false, ]); - $this->addSettingField('linkTooltipManager', LongText::class, $this->__('Gestionnaire des info-bulles')); - $this->addSettingField('linkCornerSize', Integer::class, $this->__('Taille des liens de coins de page'), [ + $this->_addSettingField('linkTooltipManager', LongText::class, $this->__('Gestionnaire des info-bulles')); + $this->_addSettingField('linkCornerSize', Integer::class, $this->__('Taille des liens de coins de page'), [ 'hint' => $this->__('Pourcentage de la largeur de la page'), 'default' => 10, ]); - $this->addSettingField('linkTooltipMaxWidth', Integer::class, $this->__('Largeur max des infobulles des liens de type "infobulle"'), [ + $this->_addSettingField('linkTooltipMaxWidth', Integer::class, $this->__('Largeur max des infobulles des liens de type "infobulle"'), [ 'default' => 140, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('linkTracker', LongText::class, $this->__('Tracking des liens')); - $this->addSettingField('linkTrackerRegexp', LongText::class, $this->__('Tracking des liens applicables aux liens du domaine')); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('linkFilePrefix', LongText::class, $this->__('Préfixer les liens de téléchargement')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('linkTracker', LongText::class, $this->__('Tracking des liens')); + $this->_addSettingField('linkTrackerRegexp', LongText::class, $this->__('Tracking des liens applicables aux liens du domaine')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('linkFilePrefix', LongText::class, $this->__('Préfixer les liens de téléchargement')); } protected function _multimedia() { - $this->addSettingField('section_multimedia', FormSection::class, $this->__('Multimedia')); - $this->addSettingField('textPopupStylesheet', FilesOrURL::class, $this->__('Feuille de style des popups de texte'), [ + $this->_addSettingField('section_multimedia', FormSection::class, $this->__('Multimedia')); + $this->_addSettingField('textPopupStylesheet', FilesOrURL::class, $this->__('Feuille de style des popups de texte'), [ 'accept' => self::$acceptCSS, ]); - $this->addSettingField('textPopupWidth', Integer::class, $this->__('Largeur optimale des popups'), [ + $this->_addSettingField('textPopupWidth', Integer::class, $this->__('Largeur optimale des popups'), [ 'default' => 600, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('iframePopupMaxWidth', Integer::class, $this->__('Largeur maximale des popups iframe'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('iframePopupMaxWidth', Integer::class, $this->__('Largeur maximale des popups iframe'), [ 'default' => 0, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('OAMChromeFactor', Number::class, $this->__('Facteur OAM Chrome'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('OAMChromeFactor', Number::class, $this->__('Facteur OAM Chrome'), [ 'default' => 1, ]); - $this->addSettingField('OAMIEFactor', Number::class, $this->__('Facteur OAM IE11'), [ + $this->_addSettingField('OAMIEFactor', Number::class, $this->__('Facteur OAM IE11'), [ 'default' => 1, ]); } protected function _pdf() { - $this->addSettingField('section_pdf', FormSection::class, 'PDF'); - $this->addSettingField('PDFRenderer', SelectFromArray::class, $this->__('Rendu des PDF (téléchargement)'), [ + $this->_addSettingField('section_pdf', FormSection::class, 'PDF'); + $this->_addSettingField('PDFRenderer', SelectFromArray::class, $this->__('Rendu des PDF (téléchargement)'), [ 'options' => [ 'native' => $this->__('Navigateur'), 'pdfjs' => 'PDF.js', @@ -1119,7 +1119,7 @@ trait PublicationSettings ], 'default' => 'native', ]); - $this->addSettingField('PDFRendererIframe', SelectFromArray::class, $this->__('Rendu des PDF (iframes)'), [ + $this->_addSettingField('PDFRendererIframe', SelectFromArray::class, $this->__('Rendu des PDF (iframes)'), [ 'options' => [ 'native' => $this->__('Navigateur'), 'pdfjs' => 'PDF.js', @@ -1128,38 +1128,38 @@ trait PublicationSettings ], 'default' => 'native', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('PDFJSCSS', Textarea::class, 'Styles PDF.js'); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('PDFJSCSS', Textarea::class, 'Styles PDF.js'); } protected function _slideshow() { - $this->addSettingField('section_slideshow', FormSection::class, $this->__('Slideshow')); - $this->addSettingField('inlineSlideshowLibrary', SelectFromArray::class, $this->__('Librarie utilisée pour les slideshow intégrés aux pages'), [ + $this->_addSettingField('section_slideshow', FormSection::class, $this->__('Slideshow')); + $this->_addSettingField('inlineSlideshowLibrary', SelectFromArray::class, $this->__('Librarie utilisée pour les slideshow intégrés aux pages'), [ 'options' => [ 'dummy' => 'Simple (' . $this->__('défaut') . ')', 'vacheron' => 'Vacheron', ], 'default' => 'dummy', ]); - $this->addSettingField('popupSlideshowLibrary', SelectFromArray::class, $this->__('Librarie utilisée pour les slideshow popup'), [ + $this->_addSettingField('popupSlideshowLibrary', SelectFromArray::class, $this->__('Librarie utilisée pour les slideshow popup'), [ 'options' => [ 'splide' => 'Splide (' . $this->__('défaut') . ')', 'vacheron' => 'Vacheron', ], 'default' => 'splide', ]); - $this->addSettingField('slideshowControlsSize', SelectFromArray::class, $this->__('Taille des contrôles du slideshow'), ['options' => ['default' => $this->__('Normale'), 'big' => $this->__('Grande')], 'default' => 'default', 'when' => ['popupSlideshowLibrary' => 'vacheron', 'inlineSlideshowLibrary' => ['values' => ['vacheron'], 'operator' => '=', 'logical_operator' => 'OR']]]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('slideshowCaptionSize', LongText::class, $this->__('Taille de police de la légende du diaporama'), [ + $this->_addSettingField('slideshowControlsSize', SelectFromArray::class, $this->__('Taille des contrôles du slideshow'), ['options' => ['default' => $this->__('Normale'), 'big' => $this->__('Grande')], 'default' => 'default', 'when' => ['popupSlideshowLibrary' => 'vacheron', 'inlineSlideshowLibrary' => ['values' => ['vacheron'], 'operator' => '=', 'logical_operator' => 'OR']]]); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('slideshowCaptionSize', LongText::class, $this->__('Taille de police de la légende du diaporama'), [ 'hint' => $this->__('Laisser vide pour utiliser la valeur par défaut'), ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('inlineSlideshowTransitionDuration', Number::class, $this->__('Durée de la transition des diaporamas intégrés aux pages'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('inlineSlideshowTransitionDuration', Number::class, $this->__('Durée de la transition des diaporamas intégrés aux pages'), [ 'default' => 0.75, 'suffix' => __('secondes'), ]); - $this->addSettingField('inlineSlideshowDuration', Number::class, $this->__('Temps d\'attente des diaporamas intégrés aux pages'), [ + $this->_addSettingField('inlineSlideshowDuration', Number::class, $this->__('Temps d\'attente des diaporamas intégrés aux pages'), [ 'default' => 7, 'suffix' => __('secondes'), ]); @@ -1168,21 +1168,21 @@ trait PublicationSettings protected function _video() { - $this->addSettingField('section_videos', FormSection::class, $this->__('Vidéos')); - $this->addSettingField('webvideoAsLocal', Hidden::class, $this->__('Intégrer les webvidéos en local'), [ + $this->_addSettingField('section_videos', FormSection::class, $this->__('Vidéos')); + $this->_addSettingField('webvideoAsLocal', Hidden::class, $this->__('Intégrer les webvidéos en local'), [ 'default' => false, ]); - $this->addSettingField('videoObjectFit', SelectFromArray::class, $this->__('Affichage des vidéos inline'), ['default' => 'fill', 'hint' => 'https://developer.mozilla.org/fr-FR/docs/Web/CSS/object-fit + $this->_addSettingField('videoObjectFit', SelectFromArray::class, $this->__('Affichage des vidéos inline'), ['default' => 'fill', 'hint' => 'https://developer.mozilla.org/fr-FR/docs/Web/CSS/object-fit ', 'options' => [ 'fill' => $this->__('Etirer la vidéo pour qu\'elle occupe l\'espace disponible') . ' (fill)', 'contain' => $this->__('Afficher la vidéo en respectant son ratio mais sans la recadrer') . ' (contain)', 'cover' => $this->__('Afficher la vidéo en respectant son ratio et en la recadrant pour qu\'elle occupe l\'espace disponible') . ' (cover)', ]]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('brightcovePlayerId', LongText::class, $this->__('Identifiant du player Brightcove')); - $this->addSettingField('brightcovePlayerSecret', LongText::class, $this->__('Secret du player Brightcove')); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('bigPlayImage', FilesOrURL::class, $this->__('Image pour le bouton "Big Play"'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('brightcovePlayerId', LongText::class, $this->__('Identifiant du player Brightcove')); + $this->_addSettingField('brightcovePlayerSecret', LongText::class, $this->__('Secret du player Brightcove')); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('bigPlayImage', FilesOrURL::class, $this->__('Image pour le bouton "Big Play"'), [ 'accept' => self::$acceptImages, ]); } @@ -1196,13 +1196,13 @@ trait PublicationSettings 'twostatesicon' => $this->__('Icône à deux états'), ]; - $this->addSettingField('section_audio', FormSection::class, $this->__('Lecteur audio')); - $this->addSettingField('audioPlayerTheme', SelectFromArray::class, $this->__('Apparence du lecteur audio'), [ + $this->_addSettingField('section_audio', FormSection::class, $this->__('Lecteur audio')); + $this->_addSettingField('audioPlayerTheme', SelectFromArray::class, $this->__('Apparence du lecteur audio'), [ 'options' => $themes, 'default' => 'native', ]); - $this->addSettingField('audioPlayerThemePopup', SelectFromArray::class, $this->__('Apparence du lecteur audio en popup'), [ + $this->_addSettingField('audioPlayerThemePopup', SelectFromArray::class, $this->__('Apparence du lecteur audio en popup'), [ 'default' => 'native', 'options' => array_merge(['inline' => __('Même apparence que les audios insérés dans les pages')], $themes), ]); @@ -1210,23 +1210,23 @@ trait PublicationSettings protected function _downloadPortions() { - $this->addSettingField('section_downloadportion', FormSection::class, $this->__('Téléchargement d\'extraits')); - $this->addSettingField('downloadPortionPDF', FilesOrURL::class, 'PDF utilisé pour le téléchargement des extraits'); - $this->addSettingField('downloadPortionZoom', Integer::class, $this->__('Zoom des images extraites'), [ + $this->_addSettingField('section_downloadportion', FormSection::class, $this->__('Téléchargement d\'extraits')); + $this->_addSettingField('downloadPortionPDF', FilesOrURL::class, 'PDF utilisé pour le téléchargement des extraits'); + $this->_addSettingField('downloadPortionZoom', Integer::class, $this->__('Zoom des images extraites'), [ 'default' => 8, ]); } protected function _productZoom() { - $this->addSettingField('section_product_zoom', FormSection::class, $this->__('Zooms produits')); - $this->addSettingField('product_zoom_references', FilesOrURL::class, $this->__('Références produits'), [ + $this->_addSettingField('section_product_zoom', FormSection::class, $this->__('Zooms produits')); + $this->_addSettingField('product_zoom_references', FilesOrURL::class, $this->__('Références produits'), [ 'hint' => $this->__('Fichier contenant les références produits'), 'accept' => self::$acceptProductList, 'destination' => 'commerce', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('product_zoom_buttons_order', SelectFromArray::class, $this->__('Order des boutons'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('product_zoom_buttons_order', SelectFromArray::class, $this->__('Order des boutons'), [ 'options' => [ 'right' => $this->__('De la droite vers la gauche'), 'left' => $this->__('De la gauche vers la droite'), @@ -1236,12 +1236,12 @@ trait PublicationSettings for ($i = 1; $i <= 3; $i++) { - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('product_zoom_label_' . $i, LongText::class, $this->__('Label du bouton') . ' ' . $i, [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('product_zoom_label_' . $i, LongText::class, $this->__('Label du bouton') . ' ' . $i, [ ]); - $this->addSettingField('product_zoom_tooltip_' . $i, LongText::class, $this->__('Label de l\'infobulle') . ' ' . $i, [ + $this->_addSettingField('product_zoom_tooltip_' . $i, LongText::class, $this->__('Label de l\'infobulle') . ' ' . $i, [ ]); - $this->addSettingField('product_zoom_icon_' . $i, SelectFromArray::class, $this->__('Icône du bouton') . ' ' . $i, [ + $this->_addSettingField('product_zoom_icon_' . $i, SelectFromArray::class, $this->__('Icône du bouton') . ' ' . $i, [ 'options' => [ 'none' => $this->__('Aucune'), 'nav-share' => $this->__('Partage'), @@ -1261,7 +1261,7 @@ trait PublicationSettings ], 'default' => 'none', ]); - $this->addSettingField('product_zoom_action_' . $i, SelectFromArray::class, $this->__('Action du bouton') . ' ' . $i, [ + $this->_addSettingField('product_zoom_action_' . $i, SelectFromArray::class, $this->__('Action du bouton') . ' ' . $i, [ 'options' => [ 'disabled' => $this->__('Désactiver'), 'link' => $this->__('Ouvrir un lien'), @@ -1276,20 +1276,20 @@ trait PublicationSettings 'default' => 'disabled', ]); } - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('product_share_enabled', Checkbox::class, $this->__('Activer le bouton de partage'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('product_share_enabled', Checkbox::class, $this->__('Activer le bouton de partage'), [ 'default' => true, ]); - $this->addSettingField('product_share_link', SelectFromArray::class, $this->__('Lien de partage'), [ + $this->_addSettingField('product_share_link', SelectFromArray::class, $this->__('Lien de partage'), [ 'options' => [ 'product' => $this->__('Lien du produit'), 'page' => $this->__('Lien vers la page du fluidbook'), ], 'default' => 'product', ]); - $this->addSettingField('product_email_title', LongText::class, $this->__('Titre de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"'); - $this->addSettingField('product_email_body', Textarea::class, $this->__('Corps de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"'); - $this->addSettingField('product_tweet', Textarea::class, $this->__('Contenu Partage court'), [ + $this->_addSettingField('product_email_title', LongText::class, $this->__('Titre de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"'); + $this->_addSettingField('product_email_body', Textarea::class, $this->__('Corps de l\'email') . ' "' . $this->__('Envoyer à un ami') . '"'); + $this->_addSettingField('product_tweet', Textarea::class, $this->__('Contenu Partage court'), [ 'hint' => $this->__('Contenu du partagé sur les partages courts'), 'default' => '%short%', ]); @@ -1298,30 +1298,30 @@ trait PublicationSettings protected function _accessibility() { - $this->addSettingField('section_accessibility', FormBigSection::class, $this->__('Accessibilité')); - $this->addSettingField('audiodescriptionTexts', FilesOrURL::class, $this->__('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), [ + $this->_addSettingField('section_accessibility', FormBigSection::class, $this->__('Accessibilité')); + $this->_addSettingField('audiodescriptionTexts', FilesOrURL::class, $this->__('Contenus textuels pour l\'audiodescription ou les lecteurs d\'écran'), [ 'accept' => self::$acceptXLSX, 'hint' => '' . __('Télécharger les contenus extraits du PDF au format audiodescription') . '', ]); - $this->addSettingField('audiodescriptionVoice', FluidbookTTSVoice::class, $this->__('Voix pour l\'audiodescription')); + $this->_addSettingField('audiodescriptionVoice', FluidbookTTSVoice::class, $this->__('Voix pour l\'audiodescription')); } protected function _splashScreen() { - $this->addSettingField('section_splash', FormSection::class, $this->__('Ecran de chargement')); - $this->addSettingField('splashImage', FilesOrURL::class, $this->__('Image'), [ + $this->_addSettingField('section_splash', FormSection::class, $this->__('Ecran de chargement')); + $this->_addSettingField('splashImage', FilesOrURL::class, $this->__('Image'), [ 'accept' => self::$acceptImages, ]); - $this->addSettingField('splashURL', LongText::class, $this->__('URL')); - $this->addSettingField('splashTarget', SelectFromArray::class, $this->__('Ouvrir le lien'), [ + $this->_addSettingField('splashURL', LongText::class, $this->__('URL')); + $this->_addSettingField('splashTarget', SelectFromArray::class, $this->__('Ouvrir le lien'), [ 'options' => [ '_self' => $this->__('Dans la fenêtre courrante'), '_blank' => $this->__('Dans un nouvel onglet'), ], 'default' => '_self', ]); - $this->addSettingField('splashMinimalTime', Number::class, $this->__('Temps minimal d\'affichage'), [ + $this->_addSettingField('splashMinimalTime', Number::class, $this->__('Temps minimal d\'affichage'), [ 'default' => 1, ]); @@ -1329,30 +1329,30 @@ trait PublicationSettings protected function _notes() { - $this->addSettingField('section_notes', FormSection::class, $this->__('Notes')); - $this->addSettingField('notes', Checkbox::class, 'Activer les notes', [ + $this->_addSettingField('section_notes', FormSection::class, $this->__('Notes')); + $this->_addSettingField('notes', Checkbox::class, 'Activer les notes', [ 'default' => false, ]); } protected function _articles() { - $this->addSettingField('section_articles', FormSection::class, $this->__('Articles')); - $this->addSettingField('articlesFile', FilesOrURL::class, 'Articles', [ + $this->_addSettingField('section_articles', FormSection::class, $this->__('Articles')); + $this->_addSettingField('articlesFile', FilesOrURL::class, 'Articles', [ 'accept' => self::$acceptXML, ]); - $this->addSettingField('articlesImages', FilesOrURL::class, $this->__('Images des articles'), [ + $this->_addSettingField('articlesImages', FilesOrURL::class, $this->__('Images des articles'), [ 'hint' => $this->__('Les noms des fichiers doivent être les même que ceux des balises du XML'), ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('articlesShare', Checkbox::class, $this->__('Activer le partage'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('articlesShare', Checkbox::class, $this->__('Activer le partage'), [ 'default' => true, ]); - $this->addSettingField('articlesPrint', Checkbox::class, $this->__('Activer l\'impression'), [ + $this->_addSettingField('articlesPrint', Checkbox::class, $this->__('Activer l\'impression'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('articlesStyle', SelectFromArray::class, $this->__('Style'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('articlesStyle', SelectFromArray::class, $this->__('Style'), [ 'options' => [ 'default' => 'Défaut', 'atlantic' => 'Atlantic', @@ -1361,7 +1361,7 @@ trait PublicationSettings ], 'default' => "default", ]); - $this->addSettingField('articlesFont', SelectFromArray::class, $this->__('Police des articles'), [ + $this->_addSettingField('articlesFont', SelectFromArray::class, $this->__('Police des articles'), [ 'options' => [ 'OpenSans' => 'Open Sans (défaut)', 'Montserrat' => 'Montserrat', @@ -1375,8 +1375,8 @@ trait PublicationSettings protected function _anchors() { - $this->addSettingField('section_anchors', FormSection::class, $this->__('Ancres')); - $this->addSettingField('anchors', FilesOrURL::class, $this->__('Définir les ancres'), [ + $this->_addSettingField('section_anchors', FormSection::class, $this->__('Ancres')); + $this->_addSettingField('anchors', FilesOrURL::class, $this->__('Définir les ancres'), [ 'accept' => self::$acceptXLSX, 'hint' => __('Colonne A : numéro de page physique, Colonne B : nom de l\'ancre') ]); @@ -1384,17 +1384,17 @@ trait PublicationSettings protected function _archives() { - $this->addSettingField('section_archives', FormSection::class, $this->__('Archives')); - $this->addSettingField('externalArchives', FilesOrURL::class, $this->__('Archives'), [ + $this->_addSettingField('section_archives', FormSection::class, $this->__('Archives')); + $this->_addSettingField('externalArchives', FilesOrURL::class, $this->__('Archives'), [ 'accept' => self::$acceptImages, ]); - $this->addSettingField('archivesLabel', LongText::class, $this->__('Label')); + $this->_addSettingField('archivesLabel', LongText::class, $this->__('Label')); } protected function _form() { - $this->addSettingField('section_form', FormSection::class, $this->__('Formulaire')); - $this->addSettingField('form', SelectFromArray::class, $this->__('Formulaire'), [ + $this->_addSettingField('section_form', FormSection::class, $this->__('Formulaire')); + $this->_addSettingField('form', SelectFromArray::class, $this->__('Formulaire'), [ 'options' => [ '' => $this->__('Aucun'), 'bulle' => 'Bulle Groupe', @@ -1406,12 +1406,12 @@ trait PublicationSettings protected function _privacy() { - $this->addSettingField('section_privacy', FormSection::class, $this->__('Respect de la vie privée')); - $this->addSettingField('cookieConsent', Checkbox::class, $this->__('Message cookie'), [ + $this->_addSettingField('section_privacy', FormSection::class, $this->__('Respect de la vie privée')); + $this->_addSettingField('cookieConsent', Checkbox::class, $this->__('Message cookie'), [ 'default' => false, ]); - $this->addSettingField('cookieConsentMessage', Textarea::class, $this->__('Texte du consentement')); - $this->addSettingField('cookieConsentAutoclose', Integer::class, $this->__('Masquer automatiquement après x secondes'), [ + $this->_addSettingField('cookieConsentMessage', Textarea::class, $this->__('Texte du consentement')); + $this->_addSettingField('cookieConsentAutoclose', Integer::class, $this->__('Masquer automatiquement après x secondes'), [ 'default' => 0, ]); } @@ -1419,11 +1419,11 @@ trait PublicationSettings protected function _cart() { - $this->addSettingField('section_basket', FormSection::class, $this->__('Panier')); - $this->addSettingField('basket', Checkbox::class, $this->__('Panier activé'), [ + $this->_addSettingField('section_basket', FormSection::class, $this->__('Panier')); + $this->_addSettingField('basket', Checkbox::class, $this->__('Panier activé'), [ 'default' => false, ]); - $this->addSettingField('basketManager', SelectFromArray::class, $this->__('Manager de panier'), [ + $this->_addSettingField('basketManager', SelectFromArray::class, $this->__('Manager de panier'), [ 'options' => [ 'com.fluidbook.player.basket.BasketManager' => $this->__('Classic'), 'com.fluidbook.player.basket.custom.grdf.GrdfBasketManager' => 'Grdf', @@ -1453,8 +1453,8 @@ trait PublicationSettings ], 'default' => 'com.fluidbook.player.basket.BasketManager', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('cartIcon', SelectFromArray::class, $this->__('Icône'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('cartIcon', SelectFromArray::class, $this->__('Icône'), [ 'options' => [ 'nav-basket' => $this->__('Sac'), 'nav-cart-caddie' => $this->__('Caddie'), @@ -1462,55 +1462,55 @@ trait PublicationSettings ], 'default' => 'nav-basket', ]); - $this->addSettingField('cartLinkAppearance', SelectFromArray::class, $this->__('Apparence des liens panier'), [ + $this->_addSettingField('cartLinkAppearance', SelectFromArray::class, $this->__('Apparence des liens panier'), [ 'options' => [ 'link' => $this->__('Lien'), 'overlay' => $this->__('Boutons + et - avec overlay'), ], 'default' => 'link', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('basketReferences', FilesOrURL::class, $this->__('Références produits'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('basketReferences', FilesOrURL::class, $this->__('Références produits'), [ 'hint' => $this->__('Fichier contenant les références produits'), 'accept' => self::$acceptProductList, 'destination' => 'commerce', ]); - $this->addSettingField('basketImages', FilesOrURL::class, $this->__('Images des produits'), [ + $this->_addSettingField('basketImages', FilesOrURL::class, $this->__('Images des produits'), [ 'destination' => 'commerce', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('cartHeaderImage', FilesOrURL::class, $this->__('Header panier'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('cartHeaderImage', FilesOrURL::class, $this->__('Header panier'), [ 'accept' => self::$acceptImages, 'destination' => 'commerce', ]); - $this->addSettingField('cartHeaderMobileImage', FilesOrURL::class, $this->__('Header panier (mobile)'), [ + $this->_addSettingField('cartHeaderMobileImage', FilesOrURL::class, $this->__('Header panier (mobile)'), [ 'accept' => self::$acceptImages, 'destination' => 'commerce', ]); - $this->addSettingField('cartExtraSettings', Textarea::class, $this->__('Paramètres supplémentaires du panier')); + $this->_addSettingField('cartExtraSettings', Textarea::class, $this->__('Paramètres supplémentaires du panier')); } protected function _offline() { - $this->addSettingField('section_offline', FormSection::class, $this->__('Version offline')); - $this->addSettingField('offlineTitle', LongText::class, $this->__('Titre de l\'application')); - $this->addSettingField('offlineLink', LongText::class, $this->__('URL du Fluidbook'), [ + $this->_addSettingField('section_offline', FormSection::class, $this->__('Version offline')); + $this->_addSettingField('offlineTitle', LongText::class, $this->__('Titre de l\'application')); + $this->_addSettingField('offlineLink', LongText::class, $this->__('URL du Fluidbook'), [ 'hint' => $this->__('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'), 'default' => 'http://', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('offlineWindowsInstallPath', LongText::class, $this->__('Chemin d\'installation par défaut'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('offlineWindowsInstallPath', LongText::class, $this->__('Chemin d\'installation par défaut'), [ 'hint' => $this->__('Par défaut') . ': %LOCALAPPDATA%/%title%', ]); - $this->addSettingField('offlineWindowsProfilePath', LongText::class, $this->__('Répertoire de stockage du profile'), [ + $this->_addSettingField('offlineWindowsProfilePath', LongText::class, $this->__('Répertoire de stockage du profile'), [ 'hint' => $this->__('Par défaut') . ': %LOCALAPPDATA%/%title%', ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('offlineEnableAdvancedPrinting', Checkbox::class, $this->__('Activer le menu d\'impression avancée'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('offlineEnableAdvancedPrinting', Checkbox::class, $this->__('Activer le menu d\'impression avancée'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('debugConsole', Checkbox::class, $this->__('Activer la console de débuggage'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('debugConsole', Checkbox::class, $this->__('Activer la console de débuggage'), [ 'default' => false, ]); @@ -1518,9 +1518,9 @@ trait PublicationSettings protected function _mobileFirst() { - $this->addSettingField('section_mobilefirst', FormSection::class, $this->__('Mobile first')); - $this->addSettingField('mobilefirstFluidbookId', LongText::class, __('Identifiant du fluidbook "Mobile first"')); - $this->addSettingField('mobilefirstBreakpoint', LongText::class, __('Breakpoint du passage à la version "Mobile first" (en pixels)'), [ + $this->_addSettingField('section_mobilefirst', FormSection::class, $this->__('Mobile first')); + $this->_addSettingField('mobilefirstFluidbookId', LongText::class, __('Identifiant du fluidbook "Mobile first"')); + $this->_addSettingField('mobilefirstBreakpoint', LongText::class, __('Breakpoint du passage à la version "Mobile first" (en pixels)'), [ 'default' => '640', ]); @@ -1528,7 +1528,7 @@ trait PublicationSettings protected function _secure() { - $this->addSettingField('bigsection_secure', FormSuperSection::class, $this->__('Sécurisation')); + $this->_addSettingField('bigsection_secure', FormSuperSection::class, $this->__('Sécurisation')); $this->_secureURL(); $this->_securePage(); $this->_secureRestrictions(); @@ -1537,33 +1537,33 @@ trait PublicationSettings protected function _securePage() { - $this->addSettingField('section_securepage', FormSection::class, $this->__('Sécurisation par une page de login')); - $this->addSettingField('secureClientSideMode', SelectFromArray::class, __('Mode de d\'authentification'), ['default' => '0', 'options' => ['0' => __('Nom d\'utilisateur et un mot de passe'), '1' => __('Nom d\'utilisateur uniquement')]]); - $this->addSettingField('secureClientSidePassword', FilesOrURL::class, __('Template HTML'), [ + $this->_addSettingField('section_securepage', FormSection::class, $this->__('Sécurisation par une page de login')); + $this->_addSettingField('secureClientSideMode', SelectFromArray::class, __('Mode de d\'authentification'), ['default' => '0', 'options' => ['0' => __('Nom d\'utilisateur et un mot de passe'), '1' => __('Nom d\'utilisateur uniquement')]]); + $this->_addSettingField('secureClientSidePassword', FilesOrURL::class, __('Template HTML'), [ 'accept' => self::$acceptHTML, 'hint' => __('Laisser vide pour utiliser le template par défaut'), ]); - $this->addSettingField('secureClientSidePasswordCredentials', Textarea::class, __('Utilisateurs / mots de passe'), [ + $this->_addSettingField('secureClientSidePasswordCredentials', Textarea::class, __('Utilisateurs / mots de passe'), [ 'hint' => __('Format user:password par ligne'), ]); - $this->addSettingField('secureClientSideBackgroundImage', FilesOrURL::class, __('Image de fond'), ['accept' => self::$acceptImages, 'hint' => __('Laisser vide pour utiliser le fond du fluidbook')]); - $this->addSettingField('secureClientSideFont', FluidbookFont::class, __('Police'), ['default' => 'OpenSans']); - $this->addSettingField('secureClientSideLogo', FilesOrURL::class, __('Logo'), ['accept' => self::$acceptImages, 'hint' => __('Laisser vide pour utiliser le logo du loader')]); - $this->addSettingField('secureClientSideTitle', Textarea::class, __('Titre du formulaire de login'), ['rows' => 2, 'hint' => __('Laisser vide pour utiliser le titre du fluidbook')]); - $this->addSettingField('secureClientSideText', Textarea::class, __('Texte du formulaire de login'), ['rows' => 3]); - $this->addSettingField('secureClientSideLocale', FluidbookLocaleCurrent::class, __('Langue du formulaire'), ['default' => 'fluidbook']); - $this->addSettingField('secureClientSideStyles', Code::class, __('Styles additionnels'), ['default' => '', 'language' => 'css']); + $this->_addSettingField('secureClientSideBackgroundImage', FilesOrURL::class, __('Image de fond'), ['accept' => self::$acceptImages, 'hint' => __('Laisser vide pour utiliser le fond du fluidbook')]); + $this->_addSettingField('secureClientSideFont', FluidbookFont::class, __('Police'), ['default' => 'OpenSans']); + $this->_addSettingField('secureClientSideLogo', FilesOrURL::class, __('Logo'), ['accept' => self::$acceptImages, 'hint' => __('Laisser vide pour utiliser le logo du loader')]); + $this->_addSettingField('secureClientSideTitle', Textarea::class, __('Titre du formulaire de login'), ['rows' => 2, 'hint' => __('Laisser vide pour utiliser le titre du fluidbook')]); + $this->_addSettingField('secureClientSideText', Textarea::class, __('Texte du formulaire de login'), ['rows' => 3]); + $this->_addSettingField('secureClientSideLocale', FluidbookLocaleCurrent::class, __('Langue du formulaire'), ['default' => 'fluidbook']); + $this->_addSettingField('secureClientSideStyles', Code::class, __('Styles additionnels'), ['default' => '', 'language' => 'css']); } protected function _secureURL() { - $this->addSettingField('section_secure_url', FormSection::class, $this->__('Sécurisation par URL')); - $this->addSettingField('secureURL', LongText::class, $this->__('URL de sécurisation'), [ + $this->_addSettingField('section_secure_url', FormSection::class, $this->__('Sécurisation par URL')); + $this->_addSettingField('secureURL', LongText::class, $this->__('URL de sécurisation'), [ 'hint' => $this->__('URL interrogée pour vérifier si le visiteur à les droits pour consulter la publication') . ' ' . __('Le fluidbook et l\'url doivent être sur le même domaine'), 'default' => 'http://', ]); - $this->addSettingField('secureURLRedirect', LongText::class, $this->__('Redirection'), [ + $this->_addSettingField('secureURLRedirect', LongText::class, $this->__('Redirection'), [ 'hint' => $this->__('Si l\'authentification échoue, redirection vers cette adresse'), 'default' => 'http://', ]); @@ -1572,36 +1572,36 @@ trait PublicationSettings protected function _secureRestrictions() { - $this->addSettingField('section_secure_restrictions', FormSection::class, $this->__('Restrictions')); - $this->addSettingField('restrictPrintDownload', LongText::class, $this->__('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), [ + $this->_addSettingField('section_secure_restrictions', FormSection::class, $this->__('Restrictions')); + $this->_addSettingField('restrictPrintDownload', LongText::class, $this->__('Paramètre de l\'url permettant de désactiver la restriction (non vide pour activer les restrictions)'), [ 'hint' => $this->__('Ne pas indiquer le ?'), ]); - $this->addSettingField('restrictPrint', Checkbox::class, $this->__('Restreindre l\'impression'), [ + $this->_addSettingField('restrictPrint', Checkbox::class, $this->__('Restreindre l\'impression'), [ 'default' => false, ]); - $this->addSettingField('restrictDownload', Checkbox::class, $this->__('Restreindre le téléchargement du pdf'), [ + $this->_addSettingField('restrictDownload', Checkbox::class, $this->__('Restreindre le téléchargement du pdf'), [ 'default' => false, ]); - $this->addSettingField('restrictSendBookmark', Checkbox::class, $this->__('Restreindre l\'envoi de marques-pages'), [ + $this->_addSettingField('restrictSendBookmark', Checkbox::class, $this->__('Restreindre l\'envoi de marques-pages'), [ 'default' => false, ]); } protected function _secureOther() { - $this->addSettingField('section_secure_other', FormSection::class, $this->__('Autres options de sécurisation')); - $this->addSettingField('recaptcha', LongText::class, $this->__('Activer reCATPCHA v3 (clé du site)')); - $this->addSettingField('preventRightClick', Checkbox::class, $this->__('Essayer d\'empêcher le clic droit'), [ + $this->_addSettingField('section_secure_other', FormSection::class, $this->__('Autres options de sécurisation')); + $this->_addSettingField('recaptcha', LongText::class, $this->__('Activer reCATPCHA v3 (clé du site)')); + $this->_addSettingField('preventRightClick', Checkbox::class, $this->__('Essayer d\'empêcher le clic droit'), [ 'default' => false, ]); } protected function _multibrochure() { - $this->addSettingField('section_multibrochure', FormSection::class, $this->__('Multibrochure')); - $this->addSettingField('home', LongText::class, $this->__('Accueil de l\'interface multibrochure')); - $this->addSettingField('country', LongText::class, $this->__('Pays de la brochure')); - $this->addSettingField('multilangDisplay', SelectFromArray::class, $this->__('Affichage'), [ + $this->_addSettingField('section_multibrochure', FormSection::class, $this->__('Multibrochure')); + $this->_addSettingField('home', LongText::class, $this->__('Accueil de l\'interface multibrochure')); + $this->_addSettingField('country', LongText::class, $this->__('Pays de la brochure')); + $this->_addSettingField('multilangDisplay', SelectFromArray::class, $this->__('Affichage'), [ 'options' => [ 'lang' => $this->__('Langue'), 'lang_country' => $this->__('Langue') . ' (' . $this->__('Pays') . ')', @@ -1609,7 +1609,7 @@ trait PublicationSettings ], 'default' => 'lang', ]); - $this->addSettingField('multilang', Textarea::class, $this->__('Langues'), [ + $this->_addSettingField('multilang', Textarea::class, $this->__('Langues'), [ 'hint' => $this->__('Code langue') . ',' . $this->__('Code pays') . ',' . $this->__('URL'), ]); @@ -1617,16 +1617,16 @@ trait PublicationSettings protected function _plv() { - $this->addSettingField('section_plv', FormSection::class, $this->__('Mode PLV')); - $this->addSettingField('plv', Checkbox::class, $this->__('Activer le mode PLV'), [ + $this->_addSettingField('section_plv', FormSection::class, $this->__('Mode PLV')); + $this->_addSettingField('plv', Checkbox::class, $this->__('Activer le mode PLV'), [ 'default' => false, ]); - $this->addSettingField('plvTimer', Integer::class, $this->__('Temps'), [ + $this->_addSettingField('plvTimer', Integer::class, $this->__('Temps'), [ 'min' => 1, 'max' => 60, 'default' => 5, ]); - $this->addSettingField('plvMode', SelectFromArray::class, $this->__('Arrivé à la dernière page'), [ + $this->_addSettingField('plvMode', SelectFromArray::class, $this->__('Arrivé à la dernière page'), [ 'options' => [ 'back' => $this->__('Remonter vers la première page'), 'first' => $this->__('Recommencer à la première page'), @@ -1638,73 +1638,73 @@ trait PublicationSettings protected function _screensaver() { - $this->addSettingField('section_screensaver', FormSection::class, $this->__('Économiseur d\'écran')); - $this->addSettingField('screensaver', FilesOrURL::class, __('Animation'), ['accept' => static::$acceptVideo]); - $this->addSettingField('screensaver_sleep_time', Integer::class, __('Activer après un temps d\'inactivité'), ['when' => ['screensaver' => '_not_empty_'], 'suffix' => __('secondes'), 'default' => 60, 'min' => 1]); - $this->addSettingField('screensaver_wake_action', SelectFromArray::class, __('Action à effectuer au réveil'), ['when' => ['screensaver' => '_not_empty_'], 'default' => 'none', 'options' => ['none' => __('Aucune action'), 'page' => __('Aller à une page')]]); - $this->addSettingField('screensaver_wake_page', Text::class, __('Au réveil, aller à la page'), ['when' => ['screensaver' => '_not_empty_', 'screensaver_wake_action' => 'page'], 'default' => 1]); + $this->_addSettingField('section_screensaver', FormSection::class, $this->__('Économiseur d\'écran')); + $this->_addSettingField('screensaver', FilesOrURL::class, __('Animation'), ['accept' => static::$acceptVideo]); + $this->_addSettingField('screensaver_sleep_time', Integer::class, __('Activer après un temps d\'inactivité'), ['when' => ['screensaver' => '_not_empty_'], 'suffix' => __('secondes'), 'default' => 60, 'min' => 1]); + $this->_addSettingField('screensaver_wake_action', SelectFromArray::class, __('Action à effectuer au réveil'), ['when' => ['screensaver' => '_not_empty_'], 'default' => 'none', 'options' => ['none' => __('Aucune action'), 'page' => __('Aller à une page')]]); + $this->_addSettingField('screensaver_wake_page', Text::class, __('Au réveil, aller à la page'), ['when' => ['screensaver' => '_not_empty_', 'screensaver_wake_action' => 'page'], 'default' => 1]); } protected function _theme() { - $this->addSettingField('section_theme', FormSection::class, $this->__('Options du thème')); - $this->addSettingField('themeEnableAfterSearch', Checkbox::class, $this->__('Afficher l\'image supplémentaire à droite du moteur de recherche'), [ + $this->_addSettingField('section_theme', FormSection::class, $this->__('Options du thème')); + $this->_addSettingField('themeEnableAfterSearch', Checkbox::class, $this->__('Afficher l\'image supplémentaire à droite du moteur de recherche'), [ 'default' => true, ]); } protected function _export() { - $this->addSettingField('section_package', FormSection::class, $this->__('Option d\'export')); - $this->addSettingField('htmlExtension', LongText::class, $this->__('Extension des fichiers html'), [ + $this->_addSettingField('section_package', FormSection::class, $this->__('Option d\'export')); + $this->_addSettingField('htmlExtension', LongText::class, $this->__('Extension des fichiers html'), [ 'hint' => $this->__('Ex : php, htm, html, phtml, asp, aspx'), 'default' => 'html', ]); - $this->addSettingField('actualHtmlExtension', LongText::class, $this->__('Extension des fichiers html réellement appliquée au fluidbook'), [ + $this->_addSettingField('actualHtmlExtension', LongText::class, $this->__('Extension des fichiers html réellement appliquée au fluidbook'), [ 'hint' => $this->__('Ex : php, htm, html, phtml, asp, aspx'), 'default' => 'html', ]); - $this->addSettingField('htmlPrepend', Textarea::class, $this->__('Code à insérer en tête des fichiers')); - $this->addSettingField('baseUrl', LongText::class, $this->__('Base de l\'url')); - $this->addSettingField('forceCompileOnDownload', Checkbox::class, $this->__('Forcer la compilation lors du téléchargement'), [ + $this->_addSettingField('htmlPrepend', Textarea::class, $this->__('Code à insérer en tête des fichiers')); + $this->_addSettingField('baseUrl', LongText::class, $this->__('Base de l\'url')); + $this->_addSettingField('forceCompileOnDownload', Checkbox::class, $this->__('Forcer la compilation lors du téléchargement'), [ 'default' => false, ]); - $this->addSettingField('embedAllLibraries', Checkbox::class, $this->__('Intégrer toutes les bibliothèques JS'), [ + $this->_addSettingField('embedAllLibraries', Checkbox::class, $this->__('Intégrer toutes les bibliothèques JS'), [ 'default' => false, ]); } protected function _demoLink() { - $this->addSettingField('section_demo', FormSection::class, $this->__('Lien de démo')); - $this->addSettingField('disableDemo', Checkbox::class, $this->__('Désactiver le lien de démo'), [ + $this->_addSettingField('section_demo', FormSection::class, $this->__('Lien de démo')); + $this->_addSettingField('disableDemo', Checkbox::class, $this->__('Désactiver le lien de démo'), [ 'default' => false, 'hint' => __('Si désactivé, le lien n\'est accessible qu\'aux utilisateurs connectés'), ]); - $this->addSettingField('redirectDemo', LongText::class, $this->__('Rediriger le lien de démo vers')); + $this->_addSettingField('redirectDemo', LongText::class, $this->__('Rediriger le lien de démo vers')); } protected function _pwa() { - $this->addSettingField('section_pwa', FormSection::class, $this->__('Progressive Web App')); - $this->addSettingField('pwa_ios', Checkbox::class, $this->__('Activer sur iOS'), ['default' => false]); - $this->addSettingField('pwa_ios_title', Text::class, $this->__('Titre sur l\'écran d\'accueil'), ['hint' => $this->__('Il est recommandé de ne pas dépasser 10 caractères.') . ' ' . $this->__('Laisser vide pour utiliser le titre de la publication'), 'when' => ['pwa_ios' => '1']]); + $this->_addSettingField('section_pwa', FormSection::class, $this->__('Progressive Web App')); + $this->_addSettingField('pwa_ios', Checkbox::class, $this->__('Activer sur iOS'), ['default' => false]); + $this->_addSettingField('pwa_ios_title', Text::class, $this->__('Titre sur l\'écran d\'accueil'), ['hint' => $this->__('Il est recommandé de ne pas dépasser 10 caractères.') . ' ' . $this->__('Laisser vide pour utiliser le titre de la publication'), 'when' => ['pwa_ios' => '1']]); } protected function _package() { - $this->addSettingField('section_downloads', FormSection::class, $this->__('Versions disponibles au téléchargement')); + $this->_addSettingField('section_downloads', FormSection::class, $this->__('Versions disponibles au téléchargement')); - $this->addSettingField('hosting_loadbalancer', Checkbox::class, $this->__('Hébergement "Load balancer"')); - $this->addSettingField('hosting_loadbalancer_ignore', Textarea::class, __('Ne pas charger ces éléments via le load balancer'), ['when' => ['hosting_loadbalancer' => 1], 'hint' => __('Certains contenus doivent accéder ne doivent pas se trouver sur un autre domaine pour fonctionner')]); + $this->_addSettingField('hosting_loadbalancer', Checkbox::class, $this->__('Hébergement "Load balancer"')); + $this->_addSettingField('hosting_loadbalancer_ignore', Textarea::class, __('Ne pas charger ces éléments via le load balancer'), ['when' => ['hosting_loadbalancer' => 1], 'hint' => __('Certains contenus doivent accéder ne doivent pas se trouver sur un autre domaine pour fonctionner')]); foreach (self::getDownloadVersions() as $name => $downloadVersion) { - $this->addSettingField('download_' . $name, Checkbox::class, $downloadVersion['label'], [ + $this->_addSettingField('download_' . $name, Checkbox::class, $downloadVersion['label'], [ 'default' => $downloadVersion['default'], ]); if ($downloadVersion['install']) { - $this->addSettingField('install_' . $name, ExternalPath::class, __('Installer sur un serveur externe'), ['default' => '', 'servers_model' => FluidbookExternalInstallServer::class, 'when' => ['download_' . $name => 1]]); + $this->_addSettingField('install_' . $name, ExternalPath::class, __('Installer sur un serveur externe'), ['default' => '', 'servers_model' => FluidbookExternalInstallServer::class, 'when' => ['download_' . $name => 1]]); } } @@ -1713,180 +1713,187 @@ trait PublicationSettings protected function _gamify() { - $this->addSettingField('section_gamify', FormSection::class, $this->__('Gamification')); - $this->addSettingField('gamify_coins_pages', Textarea::class, $this->__('Attribuer des coins lors de la visite des pages'), [ + $this->_addSettingField('section_gamify', FormSection::class, $this->__('Gamification')); + $this->_addSettingField('gamify_coins_pages', Textarea::class, $this->__('Attribuer des coins lors de la visite des pages'), [ 'hint' => __('Format (un par ligne): numéro ou intervale de pages=[variable:]nombre. Par exemple : :example1 ou :example2 ou :example3', ['example1' => '2=5', 'example2' => '5=A:10', 'example3' => '5-8;9=1']), ]); } protected function _scorm() { - $this->addSettingField('section_scorm', FormSection::class, $this->__('SCORM')); - $this->addSettingField('scorm_enable', Checkbox::class, $this->__('Activer SCORM'), [ + $this->_addSettingField('section_scorm', FormSection::class, $this->__('SCORM')); + $this->_addSettingField('scorm_enable', Checkbox::class, $this->__('Activer SCORM'), [ 'default' => false, ]); - $this->addSettingField('scorm_version', SCORMVersion::class, $this->__('Version du standard SCORM'), [ + $this->_addSettingField('scorm_version', SCORMVersion::class, $this->__('Version du standard SCORM'), [ 'default' => '1.2', ]); - $this->addSettingField('scorm_id', LongText::class, $this->__('Identifiant SCORM')); - $this->addSettingField('scorm_org', LongText::class, $this->__('Organisation SCORM'), [ + $this->_addSettingField('scorm_id', LongText::class, $this->__('Identifiant SCORM')); + $this->_addSettingField('scorm_org', LongText::class, $this->__('Organisation SCORM'), [ 'default' => 'ACME-ORG-1350650111249', ]); - $this->addSettingField('scorm_title', LongText::class, $this->__('Titre SCORM'), [ + $this->_addSettingField('scorm_title', LongText::class, $this->__('Titre SCORM'), [ 'hint' => $this->__('Laisser vide pour utiliser le titre de la publication'), ]); - $this->addSettingField('scorm_variables', Textarea::class, $this->__('Variables SCORM'), [ + $this->_addSettingField('scorm_variables', Textarea::class, $this->__('Variables SCORM'), [ 'hint' => $this->__('Laisser vide pour utiliser le titre de la publication'), ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('scorm_complete_on_exit', Checkbox::class, 'Marquer le cours comme "Complete" à la fermeture de la fenêtre', [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('scorm_complete_on_exit', Checkbox::class, 'Marquer le cours comme "Complete" à la fermeture de la fenêtre', [ 'default' => false, ]); - $this->addSettingField('scorm_complete_on_last_page', Checkbox::class, 'Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page', [ + $this->_addSettingField('scorm_complete_on_last_page', Checkbox::class, 'Marquer le cours comme "Complete" lorsque le visiteur atteint la dernière page', [ 'default' => false, ]); - $this->addSettingField('scorm_complete_coins', Integer::class, 'Marquer le cours comme "Complete" lorsque le visiteur accumule X coins', [ + $this->_addSettingField('scorm_complete_coins', Integer::class, 'Marquer le cours comme "Complete" lorsque le visiteur accumule X coins', [ 'default' => 0, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('scorm_pass_on_complete', Checkbox::class, $this->__('Marquer le cours comme Pass lorsqu\'il est terminé') . ' (' . $this->__('SCORM 2004 seulement') . ')', [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('scorm_pass_on_complete', Checkbox::class, $this->__('Marquer le cours comme Pass lorsqu\'il est terminé') . ' (' . $this->__('SCORM 2004 seulement') . ')', [ 'default' => true, ]); - $this->addSettingField('scorm_score100_on_complete', Checkbox::class, $this->__('Marquer le cours comme réussi à 100% lorsqu\'il est terminé'), [ + $this->_addSettingField('scorm_score100_on_complete', Checkbox::class, $this->__('Marquer le cours comme réussi à 100% lorsqu\'il est terminé'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('scorm_quizdata', FilesOrURL::class, $this->__('Données de quiz')); - $this->addSettingField('scorm_score', Checkbox::class, $this->__('Activer le support du score'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('scorm_quizdata', FilesOrURL::class, $this->__('Données de quiz')); + $this->_addSettingField('scorm_score', Checkbox::class, $this->__('Activer le support du score'), [ 'default' => false, ]); - $this->addSettingField('scorm_score_min', Integer::class, $this->__('Score minimal pour marquer le contenu comme réussi'), [ + $this->_addSettingField('scorm_score_min', Integer::class, $this->__('Score minimal pour marquer le contenu comme réussi'), [ 'min' => 0, 'max' => 100, 'default' => 50, ]); - $this->addSettingField('scorm_quiz_as_questionnaire', Checkbox::class, $this->__('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), [ + $this->_addSettingField('scorm_quiz_as_questionnaire', Checkbox::class, $this->__('Traiter les quiz comme des questionnaires (toutes les réponses sont considérées comme correctes)'), [ 'default' => false, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('scorm_force_attempts', Checkbox::class, $this->__('Forcer la création d\'un "attempt" à chaque ouverture'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('scorm_force_attempts', Checkbox::class, $this->__('Forcer la création d\'un "attempt" à chaque ouverture'), [ 'default' => false, ]); - $this->addSettingField('scorm_commit_immediately', Checkbox::class, $this->__('Envoyer les données immédiatement au LMS') . ' (' . $this->__('Peut provoquer des ralentissement sur certains LMS') . ')', [ + $this->_addSettingField('scorm_commit_immediately', Checkbox::class, $this->__('Envoyer les données immédiatement au LMS') . ' (' . $this->__('Peut provoquer des ralentissement sur certains LMS') . ')', [ 'default' => false, ]); - $this->addSettingField('scorm_finish_on_complete', Checkbox::class, $this->__('Envoyer le signal "Finish" ou "Terminate" en marquant le contenu comme terminé'), [ + $this->_addSettingField('scorm_finish_on_complete', Checkbox::class, $this->__('Envoyer le signal "Finish" ou "Terminate" en marquant le contenu comme terminé'), [ 'default' => true, ]); } protected function _elearning() { - $this->addSettingField('section_elearning', FormSuperSection::class, __('E-Learning')); + $this->_addSettingField('section_elearning', FormSuperSection::class, __('E-Learning')); $this->_gamify(); $this->_scorm(); } protected function _statsCustom() { - $this->addSettingField('section_stats_custom', FormSection::class, __('Autres services')); - $this->addSettingField('googleAnalyticsCustom', Code::class, $this->__('Code Stats personnalisé (placé avant fermeture de head)'), [ + $this->_addSettingField('section_stats_custom', FormSection::class, __('Autres services')); + $this->_addSettingField('googleAnalyticsCustom', Code::class, $this->__('Code Stats personnalisé (placé avant fermeture de head)'), [ 'fake' => true, 'language' => 'html', 'store_in' => 'settings', 'translatable' => false, ]); - $this->addSettingField('statsCustom', Code::class, $this->__('Code Stats personnalisé (placé avant fermeture du body)'), [ + $this->_addSettingField('statsCustom', Code::class, $this->__('Code Stats personnalisé (placé avant fermeture du body)'), [ 'language' => 'html', ]); - $this->addSettingField('anchorsAliases', LongText::class, $this->__('Alias des ancres')); - $this->addSettingField('relay_url_params', LongText::class, $this->__('Relayer les paramètres d\'url dans les liens sortants')); + $this->_addSettingField('anchorsAliases', LongText::class, $this->__('Alias des ancres')); + $this->_addSettingField('relay_url_params', LongText::class, $this->__('Relayer les paramètres d\'url dans les liens sortants')); } protected function _statsPiano() { - $this->addSettingField('section_piano', FormSection::class, __('Piano Analytics')); - $this->addSettingField('xiti', Code::class, $this->__('Code Piano Analytics'), [ + $this->_addSettingField('section_piano', FormSection::class, __('Piano Analytics')); + $this->_addSettingField('xiti', Code::class, $this->__('Code Piano Analytics'), [ 'language' => 'html', ]); - $this->addSettingField('piano_plan', FilesOrURL::class, 'Plan de taggage'); - $this->addSettingField('xiti_page', Textarea::class, $this->__('Modèle code xiti (pour tags relatifs aux pages)')); + $this->_addSettingField('piano_plan', FilesOrURL::class, 'Plan de taggage'); + $this->_addSettingField('xiti_page', Textarea::class, $this->__('Modèle code xiti (pour tags relatifs aux pages)')); } protected function _statsTagCommander() { - $this->addSettingField('section_tc', FormSection::class, $this->__('Tag Commander')); - $this->addSettingField('tagcommander_plan_type', SelectFromArray::class, __('Type de plan de marquage'), + $this->_addSettingField('section_tc', FormSection::class, $this->__('Tag Commander')); + $this->_addSettingField('tagcommander_plan_type', SelectFromArray::class, __('Type de plan de marquage'), [ 'options' => ['file' => __('Fichier'), 'esm' => 'ESM (Harmonie Mutuelle)'], 'default' => 'file', ] ); - $this->addSettingField('tagcommander_id', LongText::class, 'Tag commander ID', [ + $this->_addSettingField('tagcommander_id', LongText::class, 'Tag commander ID', [ 'when' => ['tagcommander_plan_type' => 'file'], ]); - $this->addSettingField('tagcommander_scriptname', LongText::class, 'Nom du script Tagcommander', [ + $this->_addSettingField('tagcommander_scriptname', LongText::class, 'Nom du script Tagcommander', [ 'default' => 'tc_Multisite_Head.js,tc_Multisite_Analytics.js,tc_Multisite_Medias.js', 'when' => ['tagcommander_plan_type' => 'file'], ]); - $this->addSettingField('tagcommander_prod', Checkbox::class, 'Production', [ + $this->_addSettingField('tagcommander_prod', Checkbox::class, 'Production', [ 'default' => true, ]); - $this->addSettingField('tagcommander_plan', FilesOrURL::class, 'Plan de taggage "Tag commander"', [ + $this->_addSettingField('tagcommander_plan', FilesOrURL::class, 'Plan de taggage "Tag commander"', [ 'when' => ['tagcommander_plan_type' => 'file'], ]); - $this->addSettingField('tagcommander_event_page', Textarea::class, __('Nom de l\'évenement de vue de page'), [ + $this->_addSettingField('tagcommander_event_page', Textarea::class, __('Nom de l\'évenement de vue de page'), [ 'default' => 'page', 'when' => ['tagcommander_plan_type' => 'file'], ]); - $this->addSettingField('tagcommander_default_vars', Textarea::class, 'Variables par défaut'); + $this->_addSettingField('tagcommander_default_vars', Textarea::class, 'Variables par défaut'); } protected function _statsGoogleTagManager() { - $this->addSettingField('section_gtmStats', FormSection::class, $this->__('Google Tag Manager')); - $this->addSettingField('googleTagManager', LongText::class, $this->__('Code Google Tag Manager')); - $this->addSettingField('gtag_additional_code', Code::class, $this->__('Code additionnel Google Tag Manager'), [ + $this->_addSettingField('section_gtmStats', FormSection::class, $this->__('Google Tag Manager')); + $this->_addSettingField('googleTagManager', LongText::class, $this->__('Code Google Tag Manager')); + $this->_addSettingField('gtag_additional_code', Code::class, $this->__('Code additionnel Google Tag Manager'), [ 'language' => 'html', ]); } protected function _statsMatomo() { - $this->addSettingField('section_matomoStats', FormSection::class, $this->__('Matomo')); - $this->addSettingField('matomoServer', Text::class, $this->__('URL du serveur Matomo'), [ + $this->_addSettingField('section_matomoStats', FormSection::class, $this->__('Matomo')); + $this->_addSettingField('matomoServer', Text::class, $this->__('URL du serveur Matomo'), [ 'prefix' => 'https://' ]); - $this->addSettingField('matomoSiteId', Integer::class, $this->__('Site ID'), ['when' => ['matomoServer' => '_not_empty_']]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('matomoTagManager', Text::class, 'Matomo Tag Manager', ['prefix' => 'https://']); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('matomoTracking', SelectFromArray::class, $this->__('Type de tracker'), + $this->_addSettingField('matomoSiteId', Integer::class, $this->__('Site ID'), ['when' => ['matomoServer' => '_not_empty_']]); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('matomoTagManager', Text::class, 'Matomo Tag Manager', ['prefix' => 'https://']); + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('matomoTracking', SelectFromArray::class, $this->__('Type de tracker'), ['default' => 'js', 'options' => ['js' => __('Tracker JS') . ' (' . __('recommandé') . ')', 'pixel' => __('Pixel'), 'proxy' => __('Proxy')]]); } protected function _statsGoogleAnalytics() { - $this->addSettingField('section_gaStats', FormSection::class, $this->__('Google Analytics')); - $this->addSettingField('googleAnalytics', LongText::class, $this->__('Code Google Analytics')); + $this->_addSettingField('section_gaStats', FormSection::class, $this->__('Google Analytics')); + $this->_addSettingField('googleAnalytics', LongText::class, $this->__('Code Google Analytics')); } protected function _statsFluidbook() { - $this->addSettingField('section_fluidbookStats', FormSection::class, $this->__('Statistiques Fluidbook')); - $this->addSettingField('stats', Checkbox::class, $this->__('Activer les statistiques Fluidbook'), [ + $this->_addSettingField('section_fluidbookStats', FormSection::class, $this->__('Statistiques Fluidbook')); + $this->_addSettingField('stats', Checkbox::class, $this->__('Activer les statistiques Fluidbook'), [ 'default' => true, ]); - $this->addSettingField('', FormSeparator::class); - $this->addSettingField('stats_score', Checkbox::class, $this->__('Afficher les scores dans les rapports'), [ + $this->_addSettingField('', FormSeparator::class); + $this->_addSettingField('stats_score', Checkbox::class, $this->__('Afficher les scores dans les rapports'), [ 'default' => true, ]); - $this->addSettingField('stats_exclude_ip', Textarea::class, $this->__('Exclure les IP suivantes des statistiques'), [ + $this->_addSettingField('stats_exclude_ip', Textarea::class, $this->__('Exclure les IP suivantes des statistiques'), [ 'hint' => $this->__('Indiquer une adresse ip de la forme www.xxx.yyy.zzz par ligne'), ]); } + protected function _addSettingField($name, $type = 'Text', $label = '', $attributes = []) + { + if ($type === FilesOrURL::class || $type === 'FilesOrURL') { + $attributes['downloadbase'] = '/fluidbook-publication/$id/asset/'; + } + return $this->addSettingField($name, $type, $label, $attributes); + } } -- 2.39.5