]> _ Git - cubeextranet.git/commitdiff
#2027
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 23 Apr 2018 14:37:02 +0000 (14:37 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 23 Apr 2018 14:37:02 +0000 (14:37 +0000)
inc/ws/Metier/class.ws.book.parametres.php
inc/ws/Util/html5/inlineslideshow/class.ws.html5.compiler.php
inc/ws/Util/html5/inlineslideshow/class.ws.html5.links.php

index fdf0e301d9e7d04fb7d52b6a96e4f1a3ce9bd52c..d964e830cbed8b68c82f74a41952ba127d6863e3 100644 (file)
 class wsBookParametres extends wsParametres
 {
 
-    public function __construct($parent)
-    {
-        parent::__construct($parent);
-    }
-
-    /**
-     * wsBookParametres::initFields()
-     *
-     * @return
-     */
-    protected function initFields()
-    {
-        parent::initFields();
-        //             if (is_null($this->parent)) {
-        //                     return;
-        //             }
-
-        // .
-        $swfFilter = new stdClass();
-        $swfFilter->name = __('Animation SWF') . ' (*.swf)';
-        $swfFilter->extensions = '*.swf';
-
-        $multimediaFilter = new stdClass();
-        $multimediaFilter->name = __('Archive ZIP') . ' (*.zip)';
-        $multimediaFilter->extensions = '*.zip';
-
-        $pdfFilter = new stdClass();
-        $pdfFilter->name = __('Document PDF') . ' (*.pdf)';
-        $pdfFilter->extensions = '*.pdf';
-
-        $basketFilter = new stdClass();
-        $basketFilter->name = __('Liste de produits') . ' (*.xml, *.xlsx)';
-        $basketFilter->extensions = '*.xml;*.xlsx';
-
-        $imageFilter = new stdClass();
-        $imageFilter->name = __('Images') . ' (*.jpg, *.png)';
-        $imageFilter->extensions = '*.jpg;*.jpeg;*.png';
-
-        $epsFilter = new stdClass();
-        $epsFilter->name = __('Fichier vectoriel') . ' (*.ai, *.eps)';
-        $epsFilter->extensions = '*.ai;*.eps';
-
-        $svgFilter = new stdClass();
-        $svgFilter->name = __('Fichier SVG') . ' (*.svg)';
-        $svgFilter->extensions = '*.svg';
-
-        $imageExtraFilter = new stdClass();
-        $imageExtraFilter->name = __('Images') . ' (*.svg, *.jpg, *.png, *.gif)';
-        $imageExtraFilter->extensions = '*.svg;*.jpg;*.png;*.gif';
-
-        $soundFilter = new stdClass();
-        $soundFilter->name = __('Fichier sonore') . ' (*.mp3, *.wav)';
-        $soundFilter->extensions = '*.mp3;*.wav';
-
-        $branches = array('master : git (stable)' => 'stable',
-            'master : local (dev)' => 'dev');
-        $gitbranches = json_decode(file_get_contents(WS_CACHE . '/activebranches'));
-        foreach ($gitbranches as $b) {
-            if ($b == 'master') {
-                continue;
-            }
-            $branches[$b . ' : git'] = $b . '|git';
-            $branches[$b . ' : local'] = $b . '|local';
-        }
-        $extraVisibility = [
-            __('Navigation horizontale') => 'horizontal',
-            __('Navigation burger') => 'burger',
-            __('Navigations horizontale et burger') => 'both'];
-
-        $extraType = [
-            __('Icône + Label') => 'icon',
-            __('Image') => 'image'];
-
-        $this->fields['mobileLVersion'] = array('type' => 'combo', 'default' => 'stable', 'editable' => true,
-            'label' => __('Version logicielle'), 'grade' => 1,
-            'datas' => $branches
-        );
-        $this->fields['mobileVersion'] = array('type' => 'combo', 'default' => 'html5-desktop', 'editable' => true, 'label' => __('Version mobile'), 'grade' => 3,
-            'datas' => array(__('Rediriger vers le PDF') => 'pdf',
-                __('Version HTML5 recommandée (vecteurs sur desktop)') => 'html5-desktop',
-                __('Version HTML5 vecteurs') => 'html5',
-                __("Version HTML5 en images") => 'html5-images')
-        );
-
-        $this->fields['version'] = array('type' => 'combo', 'default' => '2', 'editable' => true, 'label' => __('Version'), 'datas' => array('1' => '1', '2' => '2'), 'grade' => 3);
-        $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication"), 'embed' => false);
-        $this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du lien de retour au site"));
-        $this->fields['signature'] = array('type' => 'combo', 'default' => '1', 'editable' => true, 'label' => __('Signature'), 'grade' => 3, 'datas' => wsDroits::getSignatures());
-        $this->forms['important'] = array('label' => __('Description de la publication'),
-            'fieldsnames' => array('version', 'mobileLVersion', 'mobileVersion', 'title', 'url_link', 'signature'));
-        // .
-        // .
-
-        $this->fields['email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['email_editable'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Permettre au lecteur de modifier le corps de l'email"));
-        $this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Demander au destinataire un accusé de réception"), 'grade' => 3);
-        $this->fields['sendasfluidbook'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Envoyer le mail comme Fluidbook"), 'grade' => 3, 'hint' => __("L'expéditeur apparaîtra en reply-to"));
-        $this->fields['email_mailto'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Envoyer le mail via le client mail du visiteur (mailto:)"), 'grade' => 3);
-
-        $this->fields['facebook_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre du contenu partagé"), 'hint' => __('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'));
-        $this->fields['facebook_description'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Description du contenu partagé"), 'grade' => 1, 'hint' => __('Description proposée sur les fonctions de partage (par défaut, vide)'));
-        $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => __("Contenu Partage court"), 'hint' => __('Contenu du partagé sur les partages courts'));
-        $this->fields['facebook_image'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Miniature affichée'), 'fileFilter' => $imageFilter);
-
-        $this->fields['share'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les fonctions de partage'));
-        $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('E-mail'));
-        $this->fields['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Facebook'));
-        $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Twitter'));
-        $this->fields['googleplus'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Google +'));
-        $this->fields['linkedin'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('LinkedIn'));
-        $this->fields['viadeo'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Viadeo'));
-        $this->fields['customSharer'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Classe personnalisée de partage"), 'grade' => 5);
-        $this->fields['friendWidth'] = array('type' => 'integer', 'default' => 319, 'editable' => true, 'label' => __('Largeur du menu'), 'grade' => 5);
-        $this->fields['friendHeight'] = array('type' => 'integer', 'default' => 500, 'editable' => true, 'label' => __('Largeur du menu'), 'grade' => 5);
-        $this->forms['share'] = array('label' => __('Fonctions de partage'),
-            'fieldsnames' => array('share', '|', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', 'sendasfluidbook', 'email_mailto', '|',
-                'facebook_title', 'facebook_description', 'facebook_image', 'twitter_description', '|',
-                'friend', 'facebook', 'twitter', 'googleplus', 'linkedin', 'viadeo', '|', 'customSharer', '|', 'friendWidth', 'friendHeight'));
-        // .
-        $this->fields['pages'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Nombre de pages'));
-        $this->fields['width'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Largeur'));
-        $this->fields['height'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Hauteur'));
-        // .
-        $this->fields['visualisationMode'] = array('type' => 'combo', 'default' => '3', 'editable' => true, 'label' => __("Mode de visualisation 3D"),
-            'datas' => array(__('Mode 3D') => '0',
-                __('Mode 2D (caméra fixe et pages à plat)') => '1',
-                __("Laisser le choix à l'utilisateur (mode 3D par défaut)") => '2',
-                __("Laisser le choix à l'utilisateur (mode 2D par défaut)") => '3'));
-        $this->fields['viewMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de visualisation (beta)"),
-            'datas' => array(__('Classique') => '0',
-                __("Diaporama") => '1'), 'grade' => 5);
-        $this->fields['antialiasReading'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Amélioration de la lisibilité en mode 2D"));
-        $this->fields['pagesBaseAngle'] = array('type' => 'integer', 'default' => '2', 'editable' => true, 'label' => __('Angle de base entre les pages'), 'grade' => 3,
-            'hint' => __("0 : Publication à plat") . "\n" . __('2 : Valeur par défaut'));
-        $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);
-        $this->fields['extraYSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire verticale'), 'grade' => 3);
-        $this->fields['centerBook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Centrer la publication sur les couvertures'), 'grade' => 2);
-        $this->fields['correctCenter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Corriger les lignes blanches entre les pages'), 'grade' => 2);
-        $this->fields['maxResolution'] = array('type' => 'combo', 'default' => 300, 'editable' => true, 'datas' => array('300dpi' => 300, '150dpi' => 150), 'grade' => 2, 'label' => __('Résolution maximale des pages'));
-        $this->forms['3d_mode'] = array('label' => __('Options de visualisation'),
-            'fieldsnames' => array('visualisationMode', 'antialiasReading', 'correctCenter', 'pagesBaseAngle', 'centerBook', '|', 'extraXSpace', 'extraYSpace', '|', 'viewMode', '|', 'maxResolution'));
-
-        $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => true, 'label' => __('Nombre de pages à précharger'), 'grade' => 3);
-
-        $this->fields['navOrder'] = array('type' => 'textarea', 'default' => 'index, chapters, search, print, friend, bookmark, pdf, archives, basket, fullscreen, sound, 3d, extra, extra1, extra2, extra3, extra4, extra5, help, lang', 'editable' => true, 'label' => __('Ordre des icônes dans la nav'), 'grade' => 3);
-        $this->fields['tooltipTimer'] = array('type' => 'float', 'default' => 3, "editable" => true, 'label' => __("Temps maximum d'apparition des infos-bulles (en secondes)"));
-
-
-        $this->forms['general'] = array('label' => __('Fonctionnalités générales'),
-            'fieldsnames' => array('navOrder', 'tooltipTimer', 'preload', 'pages', 'width', 'height'));
-        //.
-        //
-
-        $this->forms['menu'] = array('label' => __('Menu'), 'fieldsnames' => ['afterSearchDisplayForHTML', '|']);
-        $this->fields['afterSearchDisplayForHTML'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher l\'image après le moteur de recherche sur la version HTML5'), 'grade' => 1);
-        $extraNum = 5;
-        for ($i = 0; $i <= $extraNum; $i++) {
-            if ($i > 0) {
-                $j = $i;
-                $this->fields['navExtraIcon' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Icône supplémentaire') . ' ' . $j, 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraType' . $j] = array('type' => 'combo', 'datas' => $extraType, 'default' => 'icon', 'editable' => true, 'label' => __('Type'));
-                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("URL") . ' ' . $j);
-                $this->fields['navExtraVisibility' . $j] = array('type' => 'combo', 'datas' => $extraVisibility, 'default' => 'both', 'editable' => true, 'label' => __("Visible") . ' ' . $j);
-                $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraIcon' . $j, 'navExtraType' . $j, 'navExtraLink' . $j, 'navExtraVisibility' . $j, '|']);
-            } else {
-                $j = '';
-                $this->fields['navExtraImage' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image pour navigation'), 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraImageMobile' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image pour mobile'), 'fileFilter' => $imageExtraFilter);
-                $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("URL"));
-                $this->fields['navExtraTooltip' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Infobulle ou label"));
-                $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraImage' . $j, 'navExtraImageMobile' . $j, 'navExtraLink' . $j, 'navExtraTooltip' . $j, '|']);
-            }
-        }
-
-
-        $this->fields['landingPage'] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Landing Page content'), 'grade' => 3);
-        $this->forms['landing'] = array('label' => __('Custom Landing Page'), 'fieldsnames' => array('landingPage'));
-
-
-        $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le mode plein-écran'));
-        $this->fields['fullscreenAuto'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Lancer la publication en mode plein écran (lorsque possible)'));
-        $this->forms['fs'] = array('label' => __('Plein écran'),
-            'fieldsnames' => array('fullscreen', 'fullscreenAuto'));
-
-
-        $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages'));
-        $this->fields['bookmarkSendEnable'] = array('type' => 'boolean', 'default' => 'true', 'editable' => true, 'label' => __("Activer l'envoi des marques-pages par e-mail"));
-        $this->fields['bookmark_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['bookmark_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
-        $this->fields['bookmarkCornerSize'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => __("Taille des marques-pages"), 'hint' => __('Taille relative à la largeur de la page'));
-        $this->fields['bookmarkOffset'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __("Décaler de x pixels vers l'intérieur"));
-        $this->fields['bookmarkBlinkOnPageChange'] = array('type' => 'boolean', 'default' => 'false', 'editable' => true, 'label' => __('Faire clignoter le marque page à l\'apparition de la page'));
-        $this->fields['bookmarkUsePDF'] = array('type' => 'combo', 'default' => 'pages', 'editable' => true, 'label' => __('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'),
-            'datas' => [__('PDF des pages') => 'pages',
-                __('PDF de remplacement') => 'download',
-                __('PDF des miniatures') => 'thumbnails']);
-        $this->forms['bookmark'] = array('label' => __('Marques-pages'),
-            'fieldsnames' => array('bookmark', '|', 'bookmarkSendEnable', 'bookmark_email_title', 'bookmark_email_body', '|', 'bookmarkCornerSize', 'bookmarkOffset', 'bookmarkBlinkOnPageChange', 'bookmarkUsePDF'));
-
-        $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'aide"));
-        $this->fields['helpBookmarks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Améliorer l'aide des marques-pages"));
-        $this->fields['helpStartup'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher l'aide au démarrage"));
-        $this->fields['helpStartupTime'] = array('type' => 'integer', 'default' => 15, 'editable' => true, 'label' => __("Temps d'affichage en secondes"));
-        $this->fields['helpArrowTooltip'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Bulle affichée au niveau de la flèche de droite'), 'grade' => 5);
-        $this->forms['help'] = array('label' => __('Aide'),
-            'fieldsnames' => array('help', '|', 'helpStartup', 'helpStartupTime', '|', 'helpBookmarks', '|', 'helpArrowTooltip'));
-        // .
-        //
-        $this->fields['indexAutoScroll'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer le scroll automatique'));
-        $this->fields['pdfThumbnails'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('PDF utilisé pour générer les miniatures'), 'grade' => 1, 'fileFilter' => $pdfFilter);
-
-        $this->forms['index'] = array('label' => __('Index'), 'fieldsnames' => array('indexAutoScroll', 'pdfThumbnails'));
-
-        // .
-        //
-        $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression"));
-        $this->fields['printMode'] = array('type' => 'combo', 'default' => 'vector', 'editable' => true, 'label' => __("Mode d'impression"),
-            'datas' => array(__('Bitmap') => 'bitmap',
-                __('Vectoriel') => 'vector',
-                __('PDF') => 'pdf'));
-        $this->fields['printCoverWithMarks'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Imprimer les couvertures avec les pages marquées"), 'grade' => 3);
-        $this->forms['print'] = array('label' => __('Impression'),
-            'fieldsnames' => array('print', 'printMode', 'printCoverWithMarks'));
-
-
-        $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le moteur de recherche'));
-        $this->fields['highlightResults'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Surligner les résultats'));
-        $this->fields['highlightAllOccurences'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Surligner toutes les occurences'), 'hint' => __('Même sur les pages non considérées comme un résultat'));
-        $this->fields['ignoreSearch'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Mots à ignorer'),
-            'hint' => __('Liste des mots à ignorer séparés par des virgules'), 'grade' => 5);
-        $this->fields['ignoreSearchSeparators'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Caractères à ne pas considérer comme un séparateur de mot'));
-        $this->fields['ignoreWordLimit'] = ['type' => 'integer', 'default' => 3, 'editable' => true, 'label' => __('Ignorer les mots de moins de X caractères')];
-        $this->fields['textExtraction'] = array('type' => 'combo', 'default' => 'pdfbox', 'editable' => true, 'label' => __("Méthode d'extraction des textes"),
-            'datas' => array(__('PDFBox') => 'pdfbox',
-                __('Poppler') => 'poppler',
-                __('Fluidbook (expérimentation basée sur PDFBox)') => 'fluidbook'));
-        $this->fields['searchShowNoResultsPages'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher les pages sans résultats"));
-        $this->fields['searchPageSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'AND',
-            'datas' => [__('les double-pages qui contiennent tous les mots recherchés (ET logique)') => 'AND', __('les double-page qui contiennent un des mots recherché (OU logique)') => 'OR'], 'label' => __('Algorithme de sélection des résultats'));
-        $this->fields['searchWordSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'begins',
-            'datas' => [__('mot commençant par la requête') => 'begins', __('mot correspondant exactement à la requête') => 'exact', __('mot contenant la requête') => 'contains', __('expression exacte') => 'expression'],
-            'label' => __('Algorithme de sélection des occurences'));
-
-        $this->forms['search'] = array('label' => __('Moteur de recherche'),
-            'fieldsnames' => array('search', '|', 'ignoreWordLimit', 'ignoreSearch', 'ignoreSearchSeparators',
-                '|', 'searchWordSelectionAlgorithm', 'searchPageSelectionAlgorithm',
-                '|', 'highlightResults', 'highlightAllOccurences',
-                '|', 'searchShowNoResultsPages',
-                '|', 'textExtraction'));
-
-        $this->fields['soundTheme'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Thème sonore"),
-            'datas' => array(__('Pas de son') => '',
-                __('Classique') => 'classic',
-                __("Papier épais") => 'heavy',
-                __("Papier fin") => 'light'));
-        $this->fields['soundOn'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les effets sonores à l'ouverture"));
-        $this->fields['ambientSound'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Ambiance sonore'), 'grade' => 3, 'fileFilter' => $soundFilter);
-        $this->fields['ambientSoundVolume'] = array('type' => 'integer', 'default' => 50, 'editable' => true,
-            'label' => __("Volume de l'ambiance sonore"),
-            'min' => 0, 'max' => 100);
-        $this->forms['sound'] = array('label' => __('Effets sonores'),
-            'fieldsnames' => array('soundTheme', 'soundOn', '|', 'ambientSound', 'ambientSoundVolume'));
-        // .
-        $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les fonctions de téléchargement"));
-        $this->fields['pdfName'] = array('type' => 'text', 'default' => 'document.pdf', 'editable' => true, 'label' => __("Nom du fichier PDF"));
-        $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téchargement de PDF avancé'), "hint" => __("Permet à l'utilisateur de sélectionner les pages qu'il souhaite télécharger"), 'grade' => 3);
-        $this->fields['pdfCompress'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Compression du fichier PDF'));
-        $this->fields['pdfReplace'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('PDF de remplacement'), 'grade' => 3, 'fileFilter' => $pdfFilter);
-        $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téléchargement des versions offline'), "hint" => __('Valable si le téléchargement avancé est activé'), 'grade' => 3);
-        $this->forms['pdf'] = array('label' => __('Fonction de téléchargement'),
-            'fieldsnames' => array('pdf', 'pdfName', 'pdfReplace', 'pdfCompress', 'pdfComplex', 'offlineExport'));
-        // .
-        $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de zoom"), 'grade' => 3,
-            'datas' => array(__('Normal') => '0',
-                __('Une page') => '1',
-                __('Zoom désactivé') => '2'));
-        $this->fields['zoom'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Zoom par défaut (atteint au clic)'));
-        $this->fields['zoomw'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Zoom maximal (atteint à l'aide de la molette)"));
-        $this->forms['zoom'] = array('label' => __('Zoom'),
-            'fieldsnames' => array('zoomMode', '|', 'zoom', 'zoomw'));
-        // .
-        $this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les statistiques Fluidbook'), 'grade' => 3);
-        $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher les scores dans les rapports'), 'grade' => 5);
-        $this->fields['stats_exclude_ip'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Exclure les IP suivantes des statistiques'), 'grade' => 3, 'hint' => sprintf(__('Indiquer une adresse ip de la forme %s par ligne'), 'www.xxx.yyy.zzz'));
-        $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10);
-        $this->fields['googleAnalyticsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code Stats personnalisé (placé avant fermeture de head)'));
-        $this->fields['statsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code Stats personnalisé (placé avant fermeture du body)'));
-        $this->fields['xiti'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code XiTi global'));
-        $this->fields['xiti_page'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Modèle code xiti (pour tags relatifs aux pages)'));
-        $this->forms['stats'] = array('label' => __('Statistiques'),
-            'fieldsnames' => array('stats', 'stats_score', 'stats_exclude_ip', '|', 'googleAnalytics', '|', 'googleAnalyticsCustom', 'statsCustom', '|', 'xiti', 'xiti_page'));
-
-        $this->fields['displayChaptersPopup'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Always display chapters in a popup'), 'grade' => 1);
-        $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche l'icône du sommaire"), 'grade' => 1);
-        $this->fields['displayChaptersLine'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche une ligne entre le label et le numéro de page"), 'grade' => 5);
-        $this->fields['chaptersPage'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Faire pointer le sommaire sur la page'), 'grade' => 3, 'hint' => __('Laisser vide pour utiliser le sommaire classique'), 'size' => 5);
-        $this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher le sommaire au chargement de la publication"), 'grade' => 3);
-        $this->fields['chaptersColumns'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Afficher le sommaire sur x colonne(s)'), 'grade' => 3);
-        $this->fields['chaptersColMaxWidth'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Largeur max d'une colonne"), 'grade' => 3);
-        $this->fields['chaptersLevelLimit'] = array('type' => 'integer', 'default' => 5, 'editable' => true, 'label' => __('Limiter à x niveaux'));
-        $this->fields['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));
-        $this->fields['externalChaptersHTML'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Sommaire personnalisé (HTML5)'), 'grade' => 3, 'fileFilter' => $multimediaFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));
-        $this->fields['fullExternalChapters'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Sommaire totalement personnalisé"), 'grade' => 3, 'hint' => __('Supprime la flèche de fermeture, titre prédéfini et couleur de fond'));
-        $this->fields['mobileChaptersStyle'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __('Style des chapîtres') . ' (' . __('version mobile') . ')'
-        , 'datas' => array(__('Classique') => 'classic',
-                __('INA') => 'ina'));
-
-        $this->fields['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => true, 'label' => __("Position du sommaire"),
-            'datas' => array(__('Centré') => 'center',
-                __("Aligné sur l'icône") => 'chaptersIcon'));
-        $this->fields['chaptersCascade'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Sommaire en cascade"), 'grade' => 3);
-
-        $this->forms['sommaire'] = array('label' => __('Sommaire'),
-            'fieldsnames' => array('displayChaptersIcon', 'displayChaptersPopup', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', 'chaptersLevelLimit', 'chaptersCascade', '|', 'chaptersColMaxWidth', 'chaptersColumns', 'displayChaptersLine', '|', 'externalChapters', 'fullExternalChapters', '|', 'externalChaptersHTML', '|', 'mobileChaptersStyle'));
-        // .
-
-        $this->fields['ongletsXML'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('XML de configuration des onglets'), 'grade' => 5);
-        $this->fields['ongletsSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('SWF pour onglets personnalisés'), 'grade' => 3, 'fileFilter' => $swfFilter);
-
-        $this->fields['tabs2DSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('SWF pour onglets 2D'), 'grade' => 3, 'fileFilter' => $swfFilter);
-
-        $this->fields['tabsHTML5'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Onglets HTML5'), 'grade' => 3);
-
-        $this->fields['flatTabsAbsolute'] = array('type' => 'boolean', 'default' => false, "editable" => true,
-            'label' => __("Positionnement relatif à l'interface"), 'grade' => 5);
-
-        $this->forms['tabs'] = array('label' => __('Onglets'),
-            'fieldsnames' => array('ongletsSWF', 'ongletsXML', '|', 'tabs2DSWF', 'flatTabsAbsolute', '|', 'tabsHTML5'));
-
-        $this->fields['customLinkClass'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Classe pour les liens personnalisés'), 'grade' => 5);
-        $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Liens visibles en permanence'), 'grade' => 3);
-        $this->fields['ignoreLinksTypes'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Ignorer les liens de type'), 'hint' => __('Liste des numéros séparés par des virgules'), 'grade' => 5);
-        $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __("Temps d'apparition du lien à l'ouverture de la page (en secondes)"));
-        $this->fields['linkTooltipManager'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Gestionnaire des info-bulles"), 'grade' => 5);
-        $this->fields['linkTracker'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Tracking des liens'), 'grade' => 5);
-        $this->fields['linkTrackerRegexp'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Tracking des liens applicables aux liens du domaine'), 'grade' => 5);
-        $this->fields['linkFilePrefix'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Préfixer les liens de téléchargement'));
-        $this->fields['linkMultimediaPerformanceMode'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Mode perfomance pour les liens multimédia'), 'grade' => 5);
-        $this->fields['linkMultimediaQuality'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __('Qualité de rendu des animations'), 'grade' => 5);
-        $this->fields['linkCornerSize'] = array('type' => 'integer', 'default' => '10', 'editable' => true, 'label' => __('Taille des liens de coins de page'), 'hint' => __("Pourcentage de la largeur de la page"));
-        $this->fields['linkTooltipMaxWidth'] = array('type' => 'integer', 'default' => '140', 'editable' => true, 'label' => __('Largeur max des infobulles des liens de type "infobulle"'));
-        $this->fields['videoReset'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Réinitialiser les vidéos après la lecture'), 'grade' => 3);
-        $this->fields['videoBigPlay'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher le gros bouton Play'), 'grade' => 3);
-        $this->fields['brightcovePlayerId'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Brightcove Player Id'), 'grade' => 3);
-        $this->fields['brightcovePlayerSecret'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Brightcove Player Secret'), 'grade' => 3);
-        $this->forms['multimedia'] = array('label' => __('Liens et multimédia'),
-            'fieldsnames' => array('permanentLinks', 'linkBlinkTime', 'customLinkClass', 'ignoreLinksTypes', 'linkTooltipManager', 'linkCornerSize', 'linkTooltipMaxWidth', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkFilePrefix', '|', 'linkMultimediaPerformanceMode', 'linkMultimediaQuality', '|', 'videoReset', 'videoBigPlay', '|', 'brightcovePlayerId', 'brightcovePlayerSecret'));
-        //.
-        $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $imageFilter);
-        $this->fields['externalArchivesBack'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Image de fond'), 'grade' => 3, 'fileFilter' => $imageFilter);
-        $this->fields['archivesLink'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Lien'), 'grade' => 5);
-        $this->fields['archivesLabel'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Label'), 'grade' => 5);
-
-        $this->forms['archives'] = array('label' => __('Archives'),
-            'fieldsnames' => array('externalArchives', 'externalArchivesBack', '|', 'archivesLink', 'archivesLabel'));
-        // .
-        $this->fields['form'] = array('type' => 'combo', 'default' => '', 'editable' => true, 'grade' => 5, 'label' => __('Formulaire'), 'datas' => array(__('Aucun') => '', __('Bulle Groupe') => 'bulle'));
-        $this->forms['form'] = array('label' => __('Formulaire'),
-            'fieldsnames' => array('form'));
-
-        $this->fields['cookieConsent'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Message cookie'));
-        $this->fields['cookieConsentMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Texte du consentement'));
-        $this->fields['cookieConsentAutoclose'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Masquer automatiquement après x secondes'));
-        $this->forms['privacy'] = array('label' => __('Respect de la vie privée'),
-            'fieldsnames' => array('cookieConsent', 'cookieConsentMessage', 'cookieConsentAutoclose'));
-
-        //.
-        $this->fields['basket'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Panier activé'), 'grade' => 5);
-        $this->fields['basketManager'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Manager de panier"),
-            'datas' => array(__('Classic') => 'com.fluidbook.player.basket.BasketManager',
-                'Grdf' => 'com.fluidbook.player.basket.custom.grdf.GrdfBasketManager',
-                'Grdf 2013' => 'com.fluidbook.player.basket.custom.grdf.grdf2013.GrdfBasketManager2013',
-                'Grdf 2015' => 'com.fluidbook.player.basket.custom.grdf.grdf2015.GrdfBasketManager2015',
-                'Essilor' => 'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager',
-                'Essilor Recap' => 'com.fluidbook.player.basket.custom.essilorrecap.EssilorRecapBasketManager',
-                'Wesco Ventes' => 'com.fluidbook.player.basket.custom.wesco.WescoBasketManager',
-                'Atlantic Download' => 'com.fluidbook.player.basket.custom.atlantic.AtlanticDownloadBasketManager',
-                'Remarkable' => 'Remarkable'
-            ), 'grade' => 5);
-        $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => __('Fichier contenant les références produits'), 'dir' => 'commerce');
-        $this->fields['basketImages'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Images des produits'), 'grade' => 5, 'fileFilter' => $imageFilter, 'hint' => __('Chaque image doit avoir pour nom exact la référence du produit'),
-            'multiple' => true, 'dir' => 'commerce');
-        $this->fields['basketPDFBackground'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Fond du PDF (bon de commande)'), 'grade' => 5, 'fileFilter' => $epsFilter, 'hint' => __('Fond du bon de commande'), 'dir' => 'commerce');
-
-        $this->forms['basket'] = array('label' => __('Panier'),
-            'fieldsnames' => array('basket', 'basketManager', 'basketReferences', 'basketImages', 'basketPDFBackground'));
-        // .
-        $this->fields['offlineLink'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du Fluidbook"), 'hint' => __('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'));
-        $this->fields['offlineTitle'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'application"));
-        $this->forms['offline'] = array('label' => __('Version offline'),
-            'fieldsnames' => array('offlineTitle', 'offlineLink'));
-
-        $this->fields['alwaysHTML5'] = array('type' => 'boolean', 'default' => 'false', 'editable' => true, 'label' => __('Toujours utiliser la version HTML5'), 'grade' => 1);
-
-        $this->fields['html5priority'] = array('type' => 'combo', 'default' => 'true', 'editable' => true, 'label' => __("Rediriger vers la version HTML5"), 'grade' => 1,
-            'datas' => array(__('Si l\'utilisateur a un appareil tactile') => 'false',
-                __('Si flash n\'est pas installé') => 'notinstalled',
-                __("Si flash n'est pas pas installé ou bloqué") => 'true'));
-
-        $this->fields['flashBlockedWait'] = array('type' => 'float', 'default' => 1.5, 'editable' => true, 'label' => __("Temps d'attente avant de considérer flash comme bloqué"));
-
-
-        $this->fields['navOrderH'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Ordre des icônes dans la nav') . ' (' . __('Si différente') . ')', 'grade' => 3);
-
-        $this->fields['menuBreakpoint'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Breakpoint burger menu'), 'hint' => 'Par défaut 1023px', 'grade' => 3);
-
-
-        $this->fields['mobileTransitions'] = array('type' => 'combo', 'default' => 'flip', 'editable' => true, 'label' => __('Transitions entre les pages'), 'grade' => 3,
-            'datas' => array(__('Aucune transition') => 'none',
-                __('Glisser') => 'slide',
-                __('Tourner') => 'flip')
-        );
-        $this->fields['mobileNavigationType'] = array('type' => 'combo', 'default' => 'book', 'editable' => true, 'label' => __('Mode de navigation'), 'grade' => 5,
-            'datas' => array(__('Normal (automatique)') => 'book',
-                __('Normal (double page)') => 'landscape',
-                __('Normal (une page)') => 'portrait',
-                __('Magazine tablette') => 'tab')
-        );
-        $this->fields['rasterizePages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Ecraser les pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
-        $this->fields['vectorPages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Conserver les pages en vecteur'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
-
-
-        $this->fields['mobileTransitionDuration'] = array('type' => 'float', 'default' => '0.75', 'editable' => true, 'label' => __('Durée de la transition'));
-        $this->fields['mobileLinksRevealAnim'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Animer les liens après un changement de page"), 'grade' => 3);
-
-        $this->fields['mobileIconVector'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Utiliser les icônes vectorielles'));
-        $this->fields['mobileServerConfig'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Inclure les fichiers de configuration serveur'), 'grade' => 3);
-
-        $this->fields['mobilePlugins'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Plugin'), 'grade' => 5);
-
-        $this->fields['mobileVideosPath'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Chemin vers les vidéos'), 'grade' => 5);
-        $this->fields['mobileExtraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);
-        $this->fields['mobileNavScale'] = array('type' => 'integer', 'default' => '100', 'editable' => true, 'label' => __('Taille du menu (en %)'), 'grade' => 3);
-
-        $this->fields['mobileIgnoreBackgroundLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Ignorer les liens de background'));
-
-        $this->forms['mobile'] = array('label' => __('Version mobile'),
-            'fieldsnames' => array('alwaysHTML5', 'html5priority', 'flashBlockedWait', 'mobileNavigationType', '|', 'rasterizePages', 'vectorPages', '|', 'mobileNavScale', '|', 'mobileTransitions', 'mobileTransitionDuration', "mobileLinksRevealAnim", '|', 'menuBreakpoint', 'navOrderH', '|', 'mobileIconVector', 'mobileServerConfig', 'mobilePlugins', '|', 'mobileVideosPath', '|', 'mobileExtraXSpace', '|', 'mobileIgnoreBackgroundLinks'));
-
-
-        $this->fields['phonegapId'] = array('type' => 'text', 'default' => 'com.fluidbook.phonegap.$id', 'editable' => true, 'label' => __("Identifiant de l'identifiant"), 'grade' => 5, 'hint' => __('De la forme') . ' com.fluidbook.phonegap.xxxxx');
-        $this->fields['phonegapVersion'] = array('type' => 'text', 'default' => '1.0.0', 'editable' => true, 'label' => __("Version de l'application"), 'grade' => 5, 'hint' => __('De la forme') . ' 1.2.3');
-        $this->fields['phonegapPlugins'] = array('type' => 'textarea', 'default' => 'ChildBrowser', 'editable' => true, 'label' => __('Plugins Phonegap'), 'grade' => 5);
-        $defaultScreenshots = "P,0\nL,2\nL,index";
-        $this->fields['appScreenshots'] = array('type' => 'textarea', 'default' => $defaultScreenshots, 'editable' => true, 'label' => 'Générer les screenshots', 'grade' => 5, 'hint' => __('Une ligne par vue à générer de la forme X,Y (X : P(ortrait) ou L(andscape), Y : numéro de page ou vue (1, index))'));
-
-        $this->forms['phonegap'] = array('label' => __('Applications mobile'),
-            'fieldsnames' => array('phonegapId', 'phonegapVersion', 'phonegapPlugins', 'appScreenshots'));
-
-        $this->fields['secureURL'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('URL de sécurisation'), 'grade' => 5, 'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'));
-        $this->fields['secureURLRedirect'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('Redirection'), 'grade' => 5, 'hint' => __("Si l'authentification échoue, redirection vers cette adresse"));
-        $this->fields['preventRightClick'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Essayer d'empêcher le clic droit"), 'grade' => 1);
-        $this->forms['secure'] = array('label' => __('Sécurisation'),
-            'fieldsnames' => array('secureURL', 'secureURLRedirect', '|', 'preventRightClick'));
-
-        $this->fields['seoVersion'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Générer une version pour les moteurs de recherche'));
-        $this->fields['seoRobots'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Autoriser le parcours par les moteurs de recherche'));
-        $this->fields['seoDescription'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Meta tag Description'));
-        $this->fields['seoKeywords'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Meta tag Keywords'));
-
-        $this->forms['seo'] = array('label' => __('Optimisation pour les moteurs de recherche'),
-            'fieldsnames' => array('seoVersion', 'seoRobots', 'seoDescription', "seoKeywords"));
-
-        $this->fields['home'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Accueil de l'interface multibrochure"), 'grade' => 5);
-        $this->fields['multilang'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Langues'), 'hint' => __('Code langue') . ',' . __('Code pays') . ',' . __('URL'));
-        $this->fields['country'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Pays de la brochure'));
-        $this->fields['multilangDisplay'] = array('type' => 'combo', 'default' => 'lang', 'editable' => true, 'label' => __('Affichage'),
-            'datas' => array(__('Langue') => 'lang',
-                __('Langue') . ' (' . __('Pays') . ')' => 'lang_country',
-                __('Pays') . ' (' . __('Langue') . ')' => 'country_lang'));
-        $this->forms['multibrochure'] = array('label' => __('Multibrochure'),
-            'fieldsnames' => array('home', 'country', 'multilangDisplay', 'multilang'));
-
-        $this->fields['plv'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer le mode PLV'), 'grade' => 3);
-        $this->fields['plvTimer'] = array('type' => 'integer', 'min' => 1, 'max' => 60, 'default' => 5, 'editable' => true, 'label' => __('Temps'), 'grade' => 3);
-        $this->fields['plvMode'] = array('type' => 'combo', 'default' => 'first', 'editable' => true, 'label' => __('Arrivé à la dernière page'), 'grade' => 3,
-            'datas' => array(__('Remonter vers la première page') => 'back',
-                __('Recommencer à la première page') => 'first'));
-        $this->forms['plv'] = array('label' => __('Mode PLV'),
-            'fieldsnames' => array('plv', 'plvTimer', 'plvMode'));
-
-        $this->fields['widget'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Générer le widget'), 'grade' => 3);
-        $this->fields['widgetCover'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher la couverture') . ')', 'grade' => 3);
-        $this->fields['widgetSize'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Optimiser pour une hauteur de (en pixels)'), 'grade' => 3);
-        $this->fields['widgetQuality'] = array('type' => 'integer', 'default' => 85, 'min' => 0, 'max' => 100, 'editable' => true, 'label' => __('Qualité JPEG'), 'grade' => 3);
-        $this->fields['widgetStart'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Page de début'), 'grade' => 3);
-        $this->fields['widgetEnd'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => __('Page de fin'), 'grade' => 3);
-        $this->forms['widget'] = array('label' => __('Widget') . ' (' . __('Mini Fluidbook') . ')',
-            'fieldsnames' => array('widget', 'widgetCover', 'widgetSize', 'widgetQuality', 'widgetStart', 'widgetEnd'));
-
-        $this->fields['extras'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Extras'), 'grade' => 3);
-        $this->fields['v1SWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
-            'label' => __('Index.swf spécifique'), 'grade' => 5, 'fileFilter' => $swfFilter);
-        $this->forms['v1'] = array('label' => __('Options spécifiques au fluidbook version 1'),
-            'fieldsnames' => array('extras', 'v1SWF'));
-
-        $this->fields['themeEnableAfterSearch'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Afficher l'image supplémentaire à droite du moteur de recherche"), 'grade' => 3);
-        $this->forms['theme'] = array('label' => __('Options du thème'),
-            'fieldsnames' => array('themeEnableAfterSearch'));
-
-        $this->fields['forceCompileOnDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Forcer la compilation lors du téléchargement'), 'grade' => 3);
-        $this->fields['htmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => true, 'label' => __('Extension des fichiers html'), 'grade' => 5, 'hint' => __('Ex : php, htm, html, phtml, asp'), 'grade' => 5);
-        $this->fields['htmlPrepend'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code à insérer en tête des fichiers'), 'grade' => 5);
-        $this->fields['baseUrl'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Base de l\'url'), 'grade' => 5, 'grade' => 5);
-
-        $this->forms['package'] = array('label' => __('Option d\'export'),
-            'fieldsnames' => array('htmlExtension', 'htmlPrepend', 'baseUrl', 'forceCompileOnDownload'));
-
-        $this->fields['disableDemo'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Désactiver le lien de démo'), 'grade' => 5);
-        $this->fields['redirectDemo'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Rediriger le lien de démo vers'), 'grade' => 5);
-        $this->forms['demo'] = array('label' => __('Lien de démo'),
-            'fieldsnames' => array('disableDemo', 'redirectDemo'));
-
-
-        $this->fields['scorm_enable'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer SCORM'), 'grade' => 5);
-        $this->fields['scorm_id'] = array('type' => 'text', 'default' => 'MFMCTE091mobile', 'editable' => true, 'label' => __('Identifiant SCORM'), 'grade' => 5);
-        $this->fields['scorm_org'] = array('type' => 'text', 'default' => 'ACME-ORG-1350650111249', 'editable' => true, 'label' => __('Organisation SCORM'), 'grade' => 5);
-        $this->fields['scorm_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Titre SCORM'), 'grade' => 5, 'hint' => __('Laisser vide pour utiliser le titre de la publication'));
-        $this->fields['scorm_variables'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Variables SCORM'), 'grade' => 5, 'hint' => __('Laisser vide pour utiliser le titre de la publication'));
-
-        $this->forms['scorm'] = array('label' => __('SCORM'),
-            'fieldsnames' => array('scorm_enable', 'scorm_id', 'scorm_org', 'scorm_title', 'scorm_variables'));
-    }
+       public function __construct($parent)
+       {
+               parent::__construct($parent);
+       }
+
+       /**
+        * wsBookParametres::initFields()
+        *
+        * @return
+        */
+       protected function initFields()
+       {
+               parent::initFields();
+               //              if (is_null($this->parent)) {
+               //                      return;
+               //              }
+
+               // .
+               $swfFilter = new stdClass();
+               $swfFilter->name = __('Animation SWF') . ' (*.swf)';
+               $swfFilter->extensions = '*.swf';
+
+               $multimediaFilter = new stdClass();
+               $multimediaFilter->name = __('Archive ZIP') . ' (*.zip)';
+               $multimediaFilter->extensions = '*.zip';
+
+               $pdfFilter = new stdClass();
+               $pdfFilter->name = __('Document PDF') . ' (*.pdf)';
+               $pdfFilter->extensions = '*.pdf';
+
+               $basketFilter = new stdClass();
+               $basketFilter->name = __('Liste de produits') . ' (*.xml, *.xlsx)';
+               $basketFilter->extensions = '*.xml;*.xlsx';
+
+               $imageFilter = new stdClass();
+               $imageFilter->name = __('Images') . ' (*.jpg, *.png)';
+               $imageFilter->extensions = '*.jpg;*.jpeg;*.png';
+
+               $epsFilter = new stdClass();
+               $epsFilter->name = __('Fichier vectoriel') . ' (*.ai, *.eps)';
+               $epsFilter->extensions = '*.ai;*.eps';
+
+               $svgFilter = new stdClass();
+               $svgFilter->name = __('Fichier SVG') . ' (*.svg)';
+               $svgFilter->extensions = '*.svg';
+
+               $imageExtraFilter = new stdClass();
+               $imageExtraFilter->name = __('Images') . ' (*.svg, *.jpg, *.png, *.gif)';
+               $imageExtraFilter->extensions = '*.svg;*.jpg;*.png;*.gif';
+
+               $soundFilter = new stdClass();
+               $soundFilter->name = __('Fichier sonore') . ' (*.mp3, *.wav)';
+               $soundFilter->extensions = '*.mp3;*.wav';
+
+               $branches = array('master : git (stable)' => 'stable',
+                       'master : local (dev)' => 'dev');
+               $gitbranches = json_decode(file_get_contents(WS_CACHE . '/activebranches'));
+               foreach ($gitbranches as $b) {
+                       if ($b == 'master') {
+                               continue;
+                       }
+                       $branches[$b . ' : git'] = $b . '|git';
+                       $branches[$b . ' : local'] = $b . '|local';
+               }
+               $extraVisibility = [
+                       __('Navigation horizontale') => 'horizontal',
+                       __('Navigation burger') => 'burger',
+                       __('Navigations horizontale et burger') => 'both'];
+
+               $extraType = [
+                       __('Icône + Label') => 'icon',
+                       __('Image') => 'image'];
+
+               $this->fields['mobileLVersion'] = array('type' => 'combo', 'default' => 'stable', 'editable' => true,
+                       'label' => __('Version logicielle'), 'grade' => 1,
+                       'datas' => $branches
+               );
+               $this->fields['mobileVersion'] = array('type' => 'combo', 'default' => 'html5-desktop', 'editable' => true, 'label' => __('Version mobile'), 'grade' => 3,
+                       'datas' => array(__('Rediriger vers le PDF') => 'pdf',
+                               __('Version HTML5 recommandée (vecteurs sur desktop)') => 'html5-desktop',
+                               __('Version HTML5 vecteurs') => 'html5',
+                               __("Version HTML5 en images") => 'html5-images')
+               );
+
+               $this->fields['version'] = array('type' => 'combo', 'default' => '2', 'editable' => true, 'label' => __('Version'), 'datas' => array('1' => '1', '2' => '2'), 'grade' => 3);
+               $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication"), 'embed' => false);
+               $this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du lien de retour au site"));
+               $this->fields['signature'] = array('type' => 'combo', 'default' => '1', 'editable' => true, 'label' => __('Signature'), 'grade' => 3, 'datas' => wsDroits::getSignatures());
+               $this->forms['important'] = array('label' => __('Description de la publication'),
+                       'fieldsnames' => array('version', 'mobileLVersion', 'mobileVersion', 'title', 'url_link', 'signature'));
+               // .
+               // .
+
+               $this->fields['email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
+               $this->fields['email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
+               $this->fields['email_editable'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Permettre au lecteur de modifier le corps de l'email"));
+               $this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Demander au destinataire un accusé de réception"), 'grade' => 3);
+               $this->fields['sendasfluidbook'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Envoyer le mail comme Fluidbook"), 'grade' => 3, 'hint' => __("L'expéditeur apparaîtra en reply-to"));
+               $this->fields['email_mailto'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Envoyer le mail via le client mail du visiteur (mailto:)"), 'grade' => 3);
+
+               $this->fields['facebook_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre du contenu partagé"), 'hint' => __('Titre proposé sur les fonction de partage (par défaut, titre de la publication)'));
+               $this->fields['facebook_description'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Description du contenu partagé"), 'grade' => 1, 'hint' => __('Description proposée sur les fonctions de partage (par défaut, vide)'));
+               $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => __("Contenu Partage court"), 'hint' => __('Contenu du partagé sur les partages courts'));
+               $this->fields['facebook_image'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Miniature affichée'), 'fileFilter' => $imageFilter);
+
+               $this->fields['share'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les fonctions de partage'));
+               $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('E-mail'));
+               $this->fields['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Facebook'));
+               $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Twitter'));
+               $this->fields['googleplus'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Google +'));
+               $this->fields['linkedin'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('LinkedIn'));
+               $this->fields['viadeo'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Viadeo'));
+               $this->fields['customSharer'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Classe personnalisée de partage"), 'grade' => 5);
+               $this->fields['friendWidth'] = array('type' => 'integer', 'default' => 319, 'editable' => true, 'label' => __('Largeur du menu'), 'grade' => 5);
+               $this->fields['friendHeight'] = array('type' => 'integer', 'default' => 500, 'editable' => true, 'label' => __('Largeur du menu'), 'grade' => 5);
+               $this->forms['share'] = array('label' => __('Fonctions de partage'),
+                       'fieldsnames' => array('share', '|', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', 'sendasfluidbook', 'email_mailto', '|',
+                               'facebook_title', 'facebook_description', 'facebook_image', 'twitter_description', '|',
+                               'friend', 'facebook', 'twitter', 'googleplus', 'linkedin', 'viadeo', '|', 'customSharer', '|', 'friendWidth', 'friendHeight'));
+               // .
+               $this->fields['pages'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Nombre de pages'));
+               $this->fields['width'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Largeur'));
+               $this->fields['height'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Hauteur'));
+               // .
+               $this->fields['visualisationMode'] = array('type' => 'combo', 'default' => '3', 'editable' => true, 'label' => __("Mode de visualisation 3D"),
+                       'datas' => array(__('Mode 3D') => '0',
+                               __('Mode 2D (caméra fixe et pages à plat)') => '1',
+                               __("Laisser le choix à l'utilisateur (mode 3D par défaut)") => '2',
+                               __("Laisser le choix à l'utilisateur (mode 2D par défaut)") => '3'));
+               $this->fields['viewMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de visualisation (beta)"),
+                       'datas' => array(__('Classique') => '0',
+                               __("Diaporama") => '1'), 'grade' => 5);
+               $this->fields['antialiasReading'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Amélioration de la lisibilité en mode 2D"));
+               $this->fields['pagesBaseAngle'] = array('type' => 'integer', 'default' => '2', 'editable' => true, 'label' => __('Angle de base entre les pages'), 'grade' => 3,
+                       'hint' => __("0 : Publication à plat") . "\n" . __('2 : Valeur par défaut'));
+               $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);
+               $this->fields['extraYSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire verticale'), 'grade' => 3);
+               $this->fields['centerBook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Centrer la publication sur les couvertures'), 'grade' => 2);
+               $this->fields['correctCenter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Corriger les lignes blanches entre les pages'), 'grade' => 2);
+               $this->fields['maxResolution'] = array('type' => 'combo', 'default' => 300, 'editable' => true, 'datas' => array('300dpi' => 300, '150dpi' => 150), 'grade' => 2, 'label' => __('Résolution maximale des pages'));
+               $this->forms['3d_mode'] = array('label' => __('Options de visualisation'),
+                       'fieldsnames' => array('visualisationMode', 'antialiasReading', 'correctCenter', 'pagesBaseAngle', 'centerBook', '|', 'extraXSpace', 'extraYSpace', '|', 'viewMode', '|', 'maxResolution'));
+
+               $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => true, 'label' => __('Nombre de pages à précharger'), 'grade' => 3);
+
+               $this->fields['navOrder'] = array('type' => 'textarea', 'default' => 'index, chapters, search, print, friend, bookmark, pdf, archives, basket, fullscreen, sound, 3d, extra, extra1, extra2, extra3, extra4, extra5, help, lang', 'editable' => true, 'label' => __('Ordre des icônes dans la nav'), 'grade' => 3);
+               $this->fields['tooltipTimer'] = array('type' => 'float', 'default' => 3, "editable" => true, 'label' => __("Temps maximum d'apparition des infos-bulles (en secondes)"));
+
+
+               $this->forms['general'] = array('label' => __('Fonctionnalités générales'),
+                       'fieldsnames' => array('navOrder', 'tooltipTimer', 'preload', 'pages', 'width', 'height'));
+               //.
+               //
+
+               $this->forms['menu'] = array('label' => __('Menu'), 'fieldsnames' => ['afterSearchDisplayForHTML', '|']);
+               $this->fields['afterSearchDisplayForHTML'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher l\'image après le moteur de recherche sur la version HTML5'), 'grade' => 1);
+               $extraNum = 5;
+               for ($i = 0; $i <= $extraNum; $i++) {
+                       if ($i > 0) {
+                               $j = $i;
+                               $this->fields['navExtraIcon' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Icône supplémentaire') . ' ' . $j, 'fileFilter' => $imageExtraFilter);
+                               $this->fields['navExtraType' . $j] = array('type' => 'combo', 'datas' => $extraType, 'default' => 'icon', 'editable' => true, 'label' => __('Type'));
+                               $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("URL") . ' ' . $j);
+                               $this->fields['navExtraVisibility' . $j] = array('type' => 'combo', 'datas' => $extraVisibility, 'default' => 'both', 'editable' => true, 'label' => __("Visible") . ' ' . $j);
+                               $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraIcon' . $j, 'navExtraType' . $j, 'navExtraLink' . $j, 'navExtraVisibility' . $j, '|']);
+                       } else {
+                               $j = '';
+                               $this->fields['navExtraImage' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image pour navigation'), 'fileFilter' => $imageExtraFilter);
+                               $this->fields['navExtraImageMobile' . $j] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Image pour mobile'), 'fileFilter' => $imageExtraFilter);
+                               $this->fields['navExtraLink' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("URL"));
+                               $this->fields['navExtraTooltip' . $j] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Infobulle ou label"));
+                               $this->forms['menu']['fieldsnames'] = array_merge($this->forms['menu']['fieldsnames'], ['navExtraImage' . $j, 'navExtraImageMobile' . $j, 'navExtraLink' . $j, 'navExtraTooltip' . $j, '|']);
+                       }
+               }
+
+
+               $this->fields['landingPage'] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Landing Page content'), 'grade' => 3);
+               $this->forms['landing'] = array('label' => __('Custom Landing Page'), 'fieldsnames' => array('landingPage'));
+
+
+               $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le mode plein-écran'));
+               $this->fields['fullscreenAuto'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Lancer la publication en mode plein écran (lorsque possible)'));
+               $this->forms['fs'] = array('label' => __('Plein écran'),
+                       'fieldsnames' => array('fullscreen', 'fullscreenAuto'));
+
+
+               $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages'));
+               $this->fields['bookmarkSendEnable'] = array('type' => 'boolean', 'default' => 'true', 'editable' => true, 'label' => __("Activer l'envoi des marques-pages par e-mail"));
+               $this->fields['bookmark_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
+               $this->fields['bookmark_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut'));
+               $this->fields['bookmarkCornerSize'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => __("Taille des marques-pages"), 'hint' => __('Taille relative à la largeur de la page'));
+               $this->fields['bookmarkOffset'] = array('type' => 'integer', 'default' => 0, 'editable' => true, 'label' => __("Décaler de x pixels vers l'intérieur"));
+               $this->fields['bookmarkBlinkOnPageChange'] = array('type' => 'boolean', 'default' => 'false', 'editable' => true, 'label' => __('Faire clignoter le marque page à l\'apparition de la page'));
+               $this->fields['bookmarkUsePDF'] = array('type' => 'combo', 'default' => 'pages', 'editable' => true, 'label' => __('PDF à utiliser pour l\'envoi ou le téléchargement de pages marquées'),
+                       'datas' => [__('PDF des pages') => 'pages',
+                               __('PDF de remplacement') => 'download',
+                               __('PDF des miniatures') => 'thumbnails']);
+               $this->forms['bookmark'] = array('label' => __('Marques-pages'),
+                       'fieldsnames' => array('bookmark', '|', 'bookmarkSendEnable', 'bookmark_email_title', 'bookmark_email_body', '|', 'bookmarkCornerSize', 'bookmarkOffset', 'bookmarkBlinkOnPageChange', 'bookmarkUsePDF'));
+
+               $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'aide"));
+               $this->fields['helpBookmarks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Améliorer l'aide des marques-pages"));
+               $this->fields['helpStartup'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher l'aide au démarrage"));
+               $this->fields['helpStartupTime'] = array('type' => 'integer', 'default' => 15, 'editable' => true, 'label' => __("Temps d'affichage en secondes"));
+               $this->fields['helpArrowTooltip'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Bulle affichée au niveau de la flèche de droite'), 'grade' => 5);
+               $this->forms['help'] = array('label' => __('Aide'),
+                       'fieldsnames' => array('help', '|', 'helpStartup', 'helpStartupTime', '|', 'helpBookmarks', '|', 'helpArrowTooltip'));
+               // .
+               //
+               $this->fields['indexAutoScroll'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer le scroll automatique'));
+               $this->fields['pdfThumbnails'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('PDF utilisé pour générer les miniatures'), 'grade' => 1, 'fileFilter' => $pdfFilter);
+
+               $this->forms['index'] = array('label' => __('Index'), 'fieldsnames' => array('indexAutoScroll', 'pdfThumbnails'));
+
+               // .
+               //
+               $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression"));
+               $this->fields['printMode'] = array('type' => 'combo', 'default' => 'vector', 'editable' => true, 'label' => __("Mode d'impression"),
+                       'datas' => array(__('Bitmap') => 'bitmap',
+                               __('Vectoriel') => 'vector',
+                               __('PDF') => 'pdf'));
+               $this->fields['printCoverWithMarks'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Imprimer les couvertures avec les pages marquées"), 'grade' => 3);
+               $this->forms['print'] = array('label' => __('Impression'),
+                       'fieldsnames' => array('print', 'printMode', 'printCoverWithMarks'));
+
+
+               $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le moteur de recherche'));
+               $this->fields['highlightResults'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Surligner les résultats'));
+               $this->fields['highlightAllOccurences'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Surligner toutes les occurences'), 'hint' => __('Même sur les pages non considérées comme un résultat'));
+               $this->fields['ignoreSearch'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Mots à ignorer'),
+                       'hint' => __('Liste des mots à ignorer séparés par des virgules'), 'grade' => 5);
+               $this->fields['ignoreSearchSeparators'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Caractères à ne pas considérer comme un séparateur de mot'));
+               $this->fields['ignoreWordLimit'] = ['type' => 'integer', 'default' => 3, 'editable' => true, 'label' => __('Ignorer les mots de moins de X caractères')];
+               $this->fields['textExtraction'] = array('type' => 'combo', 'default' => 'pdfbox', 'editable' => true, 'label' => __("Méthode d'extraction des textes"),
+                       'datas' => array(__('PDFBox') => 'pdfbox',
+                               __('Poppler') => 'poppler',
+                               __('Fluidbook (expérimentation basée sur PDFBox)') => 'fluidbook'));
+               $this->fields['searchShowNoResultsPages'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher les pages sans résultats"));
+               $this->fields['searchPageSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'AND',
+                       'datas' => [__('les double-pages qui contiennent tous les mots recherchés (ET logique)') => 'AND', __('les double-page qui contiennent un des mots recherché (OU logique)') => 'OR'], 'label' => __('Algorithme de sélection des résultats'));
+               $this->fields['searchWordSelectionAlgorithm'] = array('type' => 'combo', 'editable' => true, 'default' => 'begins',
+                       'datas' => [__('mot commençant par la requête') => 'begins', __('mot correspondant exactement à la requête') => 'exact', __('mot contenant la requête') => 'contains', __('expression exacte') => 'expression'],
+                       'label' => __('Algorithme de sélection des occurences'));
+
+               $this->forms['search'] = array('label' => __('Moteur de recherche'),
+                       'fieldsnames' => array('search', '|', 'ignoreWordLimit', 'ignoreSearch', 'ignoreSearchSeparators',
+                               '|', 'searchWordSelectionAlgorithm', 'searchPageSelectionAlgorithm',
+                               '|', 'highlightResults', 'highlightAllOccurences',
+                               '|', 'searchShowNoResultsPages',
+                               '|', 'textExtraction'));
+
+               $this->fields['soundTheme'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Thème sonore"),
+                       'datas' => array(__('Pas de son') => '',
+                               __('Classique') => 'classic',
+                               __("Papier épais") => 'heavy',
+                               __("Papier fin") => 'light'));
+               $this->fields['soundOn'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les effets sonores à l'ouverture"));
+               $this->fields['ambientSound'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Ambiance sonore'), 'grade' => 3, 'fileFilter' => $soundFilter);
+               $this->fields['ambientSoundVolume'] = array('type' => 'integer', 'default' => 50, 'editable' => true,
+                       'label' => __("Volume de l'ambiance sonore"),
+                       'min' => 0, 'max' => 100);
+               $this->forms['sound'] = array('label' => __('Effets sonores'),
+                       'fieldsnames' => array('soundTheme', 'soundOn', '|', 'ambientSound', 'ambientSoundVolume'));
+               // .
+               $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les fonctions de téléchargement"));
+               $this->fields['pdfName'] = array('type' => 'text', 'default' => 'document.pdf', 'editable' => true, 'label' => __("Nom du fichier PDF"));
+               $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téchargement de PDF avancé'), "hint" => __("Permet à l'utilisateur de sélectionner les pages qu'il souhaite télécharger"), 'grade' => 3);
+               $this->fields['pdfCompress'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Compression du fichier PDF'));
+               $this->fields['pdfReplace'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('PDF de remplacement'), 'grade' => 3, 'fileFilter' => $pdfFilter);
+               $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téléchargement des versions offline'), "hint" => __('Valable si le téléchargement avancé est activé'), 'grade' => 3);
+               $this->forms['pdf'] = array('label' => __('Fonction de téléchargement'),
+                       'fieldsnames' => array('pdf', 'pdfName', 'pdfReplace', 'pdfCompress', 'pdfComplex', 'offlineExport'));
+               // .
+               $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de zoom"), 'grade' => 3,
+                       'datas' => array(__('Normal') => '0',
+                               __('Une page') => '1',
+                               __('Zoom désactivé') => '2'));
+               $this->fields['zoom'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Zoom par défaut (atteint au clic)'));
+               $this->fields['zoomw'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Zoom maximal (atteint à l'aide de la molette)"));
+               $this->forms['zoom'] = array('label' => __('Zoom'),
+                       'fieldsnames' => array('zoomMode', '|', 'zoom', 'zoomw'));
+               // .
+               $this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les statistiques Fluidbook'), 'grade' => 3);
+               $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher les scores dans les rapports'), 'grade' => 5);
+               $this->fields['stats_exclude_ip'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Exclure les IP suivantes des statistiques'), 'grade' => 3, 'hint' => sprintf(__('Indiquer une adresse ip de la forme %s par ligne'), 'www.xxx.yyy.zzz'));
+               $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10);
+               $this->fields['googleAnalyticsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code Stats personnalisé (placé avant fermeture de head)'));
+               $this->fields['statsCustom'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code Stats personnalisé (placé avant fermeture du body)'));
+               $this->fields['xiti'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code XiTi global'));
+               $this->fields['xiti_page'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Modèle code xiti (pour tags relatifs aux pages)'));
+               $this->forms['stats'] = array('label' => __('Statistiques'),
+                       'fieldsnames' => array('stats', 'stats_score', 'stats_exclude_ip', '|', 'googleAnalytics', '|', 'googleAnalyticsCustom', 'statsCustom', '|', 'xiti', 'xiti_page'));
+
+               $this->fields['displayChaptersPopup'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Always display chapters in a popup'), 'grade' => 1);
+               $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche l'icône du sommaire"), 'grade' => 1);
+               $this->fields['displayChaptersLine'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche une ligne entre le label et le numéro de page"), 'grade' => 5);
+               $this->fields['chaptersPage'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Faire pointer le sommaire sur la page'), 'grade' => 3, 'hint' => __('Laisser vide pour utiliser le sommaire classique'), 'size' => 5);
+               $this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher le sommaire au chargement de la publication"), 'grade' => 3);
+               $this->fields['chaptersColumns'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Afficher le sommaire sur x colonne(s)'), 'grade' => 3);
+               $this->fields['chaptersColMaxWidth'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Largeur max d'une colonne"), 'grade' => 3);
+               $this->fields['chaptersLevelLimit'] = array('type' => 'integer', 'default' => 5, 'editable' => true, 'label' => __('Limiter à x niveaux'));
+               $this->fields['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));
+               $this->fields['externalChaptersHTML'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Sommaire personnalisé (HTML5)'), 'grade' => 3, 'fileFilter' => $multimediaFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));
+               $this->fields['fullExternalChapters'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Sommaire totalement personnalisé"), 'grade' => 3, 'hint' => __('Supprime la flèche de fermeture, titre prédéfini et couleur de fond'));
+               $this->fields['mobileChaptersStyle'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __('Style des chapîtres') . ' (' . __('version mobile') . ')'
+               , 'datas' => array(__('Classique') => 'classic',
+                               __('INA') => 'ina'));
+
+               $this->fields['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => true, 'label' => __("Position du sommaire"),
+                       'datas' => array(__('Centré') => 'center',
+                               __("Aligné sur l'icône") => 'chaptersIcon'));
+               $this->fields['chaptersCascade'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Sommaire en cascade"), 'grade' => 3);
+
+               $this->forms['sommaire'] = array('label' => __('Sommaire'),
+                       'fieldsnames' => array('displayChaptersIcon', 'displayChaptersPopup', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', 'chaptersLevelLimit', 'chaptersCascade', '|', 'chaptersColMaxWidth', 'chaptersColumns', 'displayChaptersLine', '|', 'externalChapters', 'fullExternalChapters', '|', 'externalChaptersHTML', '|', 'mobileChaptersStyle'));
+               // .
+
+               $this->fields['ongletsXML'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('XML de configuration des onglets'), 'grade' => 5);
+               $this->fields['ongletsSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('SWF pour onglets personnalisés'), 'grade' => 3, 'fileFilter' => $swfFilter);
+
+               $this->fields['tabs2DSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('SWF pour onglets 2D'), 'grade' => 3, 'fileFilter' => $swfFilter);
+
+               $this->fields['tabsHTML5'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Onglets HTML5'), 'grade' => 3);
+
+               $this->fields['flatTabsAbsolute'] = array('type' => 'boolean', 'default' => false, "editable" => true,
+                       'label' => __("Positionnement relatif à l'interface"), 'grade' => 5);
+
+               $this->forms['tabs'] = array('label' => __('Onglets'),
+                       'fieldsnames' => array('ongletsSWF', 'ongletsXML', '|', 'tabs2DSWF', 'flatTabsAbsolute', '|', 'tabsHTML5'));
+
+               $this->fields['customLinkClass'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Classe pour les liens personnalisés'), 'grade' => 5);
+               $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Liens visibles en permanence'), 'grade' => 3);
+               $this->fields['ignoreLinksTypes'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Ignorer les liens de type'), 'hint' => __('Liste des numéros séparés par des virgules'), 'grade' => 5);
+               $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __("Temps d'apparition du lien à l'ouverture de la page (en secondes)"));
+               $this->fields['linkTooltipManager'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Gestionnaire des info-bulles"), 'grade' => 5);
+               $this->fields['linkTracker'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Tracking des liens'), 'grade' => 5);
+               $this->fields['linkTrackerRegexp'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Tracking des liens applicables aux liens du domaine'), 'grade' => 5);
+               $this->fields['linkFilePrefix'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Préfixer les liens de téléchargement'));
+               $this->fields['linkMultimediaPerformanceMode'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Mode perfomance pour les liens multimédia'), 'grade' => 5);
+               $this->fields['linkMultimediaQuality'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __('Qualité de rendu des animations'), 'grade' => 5);
+               $this->fields['linkCornerSize'] = array('type' => 'integer', 'default' => '10', 'editable' => true, 'label' => __('Taille des liens de coins de page'), 'hint' => __("Pourcentage de la largeur de la page"));
+               $this->fields['linkTooltipMaxWidth'] = array('type' => 'integer', 'default' => '140', 'editable' => true, 'label' => __('Largeur max des infobulles des liens de type "infobulle"'));
+               $this->fields['videoReset'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Réinitialiser les vidéos après la lecture'), 'grade' => 3);
+               $this->fields['videoBigPlay'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher le gros bouton Play'), 'grade' => 3);
+               $this->fields['brightcovePlayerId'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Brightcove Player Id'), 'grade' => 3);
+               $this->fields['brightcovePlayerSecret'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Brightcove Player Secret'), 'grade' => 3);
+               $this->fields['inlineSlideshowTransitionDuration'] = array('type' => 'float', 'default' => 0.75, 'editable' => true, 'label' => __('Durée de la transition des diaporamas intégrés aux pages (s)'));
+               $this->fields['inlineSlideshowDuration'] = array('type' => 'float', 'default' => 7, 'editable' => true, 'label' => __('Temps d\'attente des diaporamas intégrés aux pages (s)'));
+               $this->forms['multimedia'] = array('label' => __('Liens et multimédia'),
+                       'fieldsnames' => array('permanentLinks', 'linkBlinkTime', 'customLinkClass', 'ignoreLinksTypes', 'linkTooltipManager', 'linkCornerSize', 'linkTooltipMaxWidth', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkFilePrefix', '|', 'linkMultimediaPerformanceMode', 'linkMultimediaQuality', '|', 'inlineSlideshowTransitionDuration', 'inlineSlideshowDuration', '|', 'videoReset', 'videoBigPlay', '|', 'brightcovePlayerId', 'brightcovePlayerSecret'));
+               //.
+               $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $imageFilter);
+               $this->fields['externalArchivesBack'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Image de fond'), 'grade' => 3, 'fileFilter' => $imageFilter);
+               $this->fields['archivesLink'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Lien'), 'grade' => 5);
+               $this->fields['archivesLabel'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Label'), 'grade' => 5);
+
+               $this->forms['archives'] = array('label' => __('Archives'),
+                       'fieldsnames' => array('externalArchives', 'externalArchivesBack', '|', 'archivesLink', 'archivesLabel'));
+               // .
+               $this->fields['form'] = array('type' => 'combo', 'default' => '', 'editable' => true, 'grade' => 5, 'label' => __('Formulaire'), 'datas' => array(__('Aucun') => '', __('Bulle Groupe') => 'bulle'));
+               $this->forms['form'] = array('label' => __('Formulaire'),
+                       'fieldsnames' => array('form'));
+
+               $this->fields['cookieConsent'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Message cookie'));
+               $this->fields['cookieConsentMessage'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Texte du consentement'));
+               $this->fields['cookieConsentAutoclose'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Masquer automatiquement après x secondes'));
+               $this->forms['privacy'] = array('label' => __('Respect de la vie privée'),
+                       'fieldsnames' => array('cookieConsent', 'cookieConsentMessage', 'cookieConsentAutoclose'));
+
+               //.
+               $this->fields['basket'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Panier activé'), 'grade' => 5);
+               $this->fields['basketManager'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Manager de panier"),
+                       'datas' => array(__('Classic') => 'com.fluidbook.player.basket.BasketManager',
+                               'Grdf' => 'com.fluidbook.player.basket.custom.grdf.GrdfBasketManager',
+                               'Grdf 2013' => 'com.fluidbook.player.basket.custom.grdf.grdf2013.GrdfBasketManager2013',
+                               'Grdf 2015' => 'com.fluidbook.player.basket.custom.grdf.grdf2015.GrdfBasketManager2015',
+                               'Essilor' => 'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager',
+                               'Essilor Recap' => 'com.fluidbook.player.basket.custom.essilorrecap.EssilorRecapBasketManager',
+                               'Wesco Ventes' => 'com.fluidbook.player.basket.custom.wesco.WescoBasketManager',
+                               'Atlantic Download' => 'com.fluidbook.player.basket.custom.atlantic.AtlanticDownloadBasketManager',
+                               'Remarkable' => 'Remarkable'
+                       ), 'grade' => 5);
+               $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Références produits'), 'grade' => 3, 'fileFilter' => $basketFilter, 'hint' => __('Fichier contenant les références produits'), 'dir' => 'commerce');
+               $this->fields['basketImages'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Images des produits'), 'grade' => 5, 'fileFilter' => $imageFilter, 'hint' => __('Chaque image doit avoir pour nom exact la référence du produit'),
+                       'multiple' => true, 'dir' => 'commerce');
+               $this->fields['basketPDFBackground'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Fond du PDF (bon de commande)'), 'grade' => 5, 'fileFilter' => $epsFilter, 'hint' => __('Fond du bon de commande'), 'dir' => 'commerce');
+
+               $this->forms['basket'] = array('label' => __('Panier'),
+                       'fieldsnames' => array('basket', 'basketManager', 'basketReferences', 'basketImages', 'basketPDFBackground'));
+               // .
+               $this->fields['offlineLink'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du Fluidbook"), 'hint' => __('URL du fluidbook utilisée pour la version Offline (CD-ROM, clé USB, Exécutables)'));
+               $this->fields['offlineTitle'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'application"));
+               $this->forms['offline'] = array('label' => __('Version offline'),
+                       'fieldsnames' => array('offlineTitle', 'offlineLink'));
+
+               $this->fields['alwaysHTML5'] = array('type' => 'boolean', 'default' => 'false', 'editable' => true, 'label' => __('Toujours utiliser la version HTML5'), 'grade' => 1);
+
+               $this->fields['html5priority'] = array('type' => 'combo', 'default' => 'true', 'editable' => true, 'label' => __("Rediriger vers la version HTML5"), 'grade' => 1,
+                       'datas' => array(__('Si l\'utilisateur a un appareil tactile') => 'false',
+                               __('Si flash n\'est pas installé') => 'notinstalled',
+                               __("Si flash n'est pas pas installé ou bloqué") => 'true'));
+
+               $this->fields['flashBlockedWait'] = array('type' => 'float', 'default' => 1.5, 'editable' => true, 'label' => __("Temps d'attente avant de considérer flash comme bloqué"));
+
+
+               $this->fields['navOrderH'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Ordre des icônes dans la nav') . ' (' . __('Si différente') . ')', 'grade' => 3);
+
+               $this->fields['menuBreakpoint'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Breakpoint burger menu'), 'hint' => 'Par défaut 1023px', 'grade' => 3);
+
+
+               $this->fields['mobileTransitions'] = array('type' => 'combo', 'default' => 'flip', 'editable' => true, 'label' => __('Transitions entre les pages'), 'grade' => 3,
+                       'datas' => array(__('Aucune transition') => 'none',
+                               __('Glisser') => 'slide',
+                               __('Tourner') => 'flip')
+               );
+               $this->fields['mobileNavigationType'] = array('type' => 'combo', 'default' => 'book', 'editable' => true, 'label' => __('Mode de navigation'), 'grade' => 5,
+                       'datas' => array(__('Normal (automatique)') => 'book',
+                               __('Normal (double page)') => 'landscape',
+                               __('Normal (une page)') => 'portrait',
+                               __('Magazine tablette') => 'tab')
+               );
+               $this->fields['rasterizePages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Ecraser les pages'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
+               $this->fields['vectorPages'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Conserver les pages en vecteur'), 'hint' => '1-3,5 = 1,2,3,5', 'grade' => 1);
+
+
+               $this->fields['mobileTransitionDuration'] = array('type' => 'float', 'default' => '0.75', 'editable' => true, 'label' => __('Durée de la transition'));
+               $this->fields['mobileLinksRevealAnim'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Animer les liens après un changement de page"), 'grade' => 3);
+
+               $this->fields['mobileIconVector'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Utiliser les icônes vectorielles'));
+               $this->fields['mobileServerConfig'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Inclure les fichiers de configuration serveur'), 'grade' => 3);
+
+               $this->fields['mobilePlugins'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Plugin'), 'grade' => 5);
+
+               $this->fields['mobileVideosPath'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Chemin vers les vidéos'), 'grade' => 5);
+               $this->fields['mobileExtraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);
+               $this->fields['mobileNavScale'] = array('type' => 'integer', 'default' => '100', 'editable' => true, 'label' => __('Taille du menu (en %)'), 'grade' => 3);
+
+               $this->fields['mobileIgnoreBackgroundLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Ignorer les liens de background'));
+
+               $this->forms['mobile'] = array('label' => __('Version mobile'),
+                       'fieldsnames' => array('alwaysHTML5', 'html5priority', 'flashBlockedWait', 'mobileNavigationType', '|', 'rasterizePages', 'vectorPages', '|', 'mobileNavScale', '|', 'mobileTransitions', 'mobileTransitionDuration', "mobileLinksRevealAnim", '|', 'menuBreakpoint', 'navOrderH', '|', 'mobileIconVector', 'mobileServerConfig', 'mobilePlugins', '|', 'mobileVideosPath', '|', 'mobileExtraXSpace', '|', 'mobileIgnoreBackgroundLinks'));
+
+
+               $this->fields['phonegapId'] = array('type' => 'text', 'default' => 'com.fluidbook.phonegap.$id', 'editable' => true, 'label' => __("Identifiant de l'identifiant"), 'grade' => 5, 'hint' => __('De la forme') . ' com.fluidbook.phonegap.xxxxx');
+               $this->fields['phonegapVersion'] = array('type' => 'text', 'default' => '1.0.0', 'editable' => true, 'label' => __("Version de l'application"), 'grade' => 5, 'hint' => __('De la forme') . ' 1.2.3');
+               $this->fields['phonegapPlugins'] = array('type' => 'textarea', 'default' => 'ChildBrowser', 'editable' => true, 'label' => __('Plugins Phonegap'), 'grade' => 5);
+               $defaultScreenshots = "P,0\nL,2\nL,index";
+               $this->fields['appScreenshots'] = array('type' => 'textarea', 'default' => $defaultScreenshots, 'editable' => true, 'label' => 'Générer les screenshots', 'grade' => 5, 'hint' => __('Une ligne par vue à générer de la forme X,Y (X : P(ortrait) ou L(andscape), Y : numéro de page ou vue (1, index))'));
+
+               $this->forms['phonegap'] = array('label' => __('Applications mobile'),
+                       'fieldsnames' => array('phonegapId', 'phonegapVersion', 'phonegapPlugins', 'appScreenshots'));
+
+               $this->fields['secureURL'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('URL de sécurisation'), 'grade' => 5, 'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication'));
+               $this->fields['secureURLRedirect'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('Redirection'), 'grade' => 5, 'hint' => __("Si l'authentification échoue, redirection vers cette adresse"));
+               $this->fields['preventRightClick'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Essayer d'empêcher le clic droit"), 'grade' => 1);
+               $this->forms['secure'] = array('label' => __('Sécurisation'),
+                       'fieldsnames' => array('secureURL', 'secureURLRedirect', '|', 'preventRightClick'));
+
+               $this->fields['seoVersion'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Générer une version pour les moteurs de recherche'));
+               $this->fields['seoRobots'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Autoriser le parcours par les moteurs de recherche'));
+               $this->fields['seoDescription'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Meta tag Description'));
+               $this->fields['seoKeywords'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Meta tag Keywords'));
+
+               $this->forms['seo'] = array('label' => __('Optimisation pour les moteurs de recherche'),
+                       'fieldsnames' => array('seoVersion', 'seoRobots', 'seoDescription', "seoKeywords"));
+
+               $this->fields['home'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Accueil de l'interface multibrochure"), 'grade' => 5);
+               $this->fields['multilang'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Langues'), 'hint' => __('Code langue') . ',' . __('Code pays') . ',' . __('URL'));
+               $this->fields['country'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Pays de la brochure'));
+               $this->fields['multilangDisplay'] = array('type' => 'combo', 'default' => 'lang', 'editable' => true, 'label' => __('Affichage'),
+                       'datas' => array(__('Langue') => 'lang',
+                               __('Langue') . ' (' . __('Pays') . ')' => 'lang_country',
+                               __('Pays') . ' (' . __('Langue') . ')' => 'country_lang'));
+               $this->forms['multibrochure'] = array('label' => __('Multibrochure'),
+                       'fieldsnames' => array('home', 'country', 'multilangDisplay', 'multilang'));
+
+               $this->fields['plv'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer le mode PLV'), 'grade' => 3);
+               $this->fields['plvTimer'] = array('type' => 'integer', 'min' => 1, 'max' => 60, 'default' => 5, 'editable' => true, 'label' => __('Temps'), 'grade' => 3);
+               $this->fields['plvMode'] = array('type' => 'combo', 'default' => 'first', 'editable' => true, 'label' => __('Arrivé à la dernière page'), 'grade' => 3,
+                       'datas' => array(__('Remonter vers la première page') => 'back',
+                               __('Recommencer à la première page') => 'first'));
+               $this->forms['plv'] = array('label' => __('Mode PLV'),
+                       'fieldsnames' => array('plv', 'plvTimer', 'plvMode'));
+
+               $this->fields['widget'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Générer le widget'), 'grade' => 3);
+               $this->fields['widgetCover'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher la couverture') . ')', 'grade' => 3);
+               $this->fields['widgetSize'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Optimiser pour une hauteur de (en pixels)'), 'grade' => 3);
+               $this->fields['widgetQuality'] = array('type' => 'integer', 'default' => 85, 'min' => 0, 'max' => 100, 'editable' => true, 'label' => __('Qualité JPEG'), 'grade' => 3);
+               $this->fields['widgetStart'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Page de début'), 'grade' => 3);
+               $this->fields['widgetEnd'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => __('Page de fin'), 'grade' => 3);
+               $this->forms['widget'] = array('label' => __('Widget') . ' (' . __('Mini Fluidbook') . ')',
+                       'fieldsnames' => array('widget', 'widgetCover', 'widgetSize', 'widgetQuality', 'widgetStart', 'widgetEnd'));
+
+               $this->fields['extras'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Extras'), 'grade' => 3);
+               $this->fields['v1SWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,
+                       'label' => __('Index.swf spécifique'), 'grade' => 5, 'fileFilter' => $swfFilter);
+               $this->forms['v1'] = array('label' => __('Options spécifiques au fluidbook version 1'),
+                       'fieldsnames' => array('extras', 'v1SWF'));
+
+               $this->fields['themeEnableAfterSearch'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Afficher l'image supplémentaire à droite du moteur de recherche"), 'grade' => 3);
+               $this->forms['theme'] = array('label' => __('Options du thème'),
+                       'fieldsnames' => array('themeEnableAfterSearch'));
+
+               $this->fields['forceCompileOnDownload'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Forcer la compilation lors du téléchargement'), 'grade' => 3);
+               $this->fields['htmlExtension'] = array('type' => 'text', 'default' => 'html', 'editable' => true, 'label' => __('Extension des fichiers html'), 'grade' => 5, 'hint' => __('Ex : php, htm, html, phtml, asp'), 'grade' => 5);
+               $this->fields['htmlPrepend'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Code à insérer en tête des fichiers'), 'grade' => 5);
+               $this->fields['baseUrl'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Base de l\'url'), 'grade' => 5, 'grade' => 5);
+
+               $this->forms['package'] = array('label' => __('Option d\'export'),
+                       'fieldsnames' => array('htmlExtension', 'htmlPrepend', 'baseUrl', 'forceCompileOnDownload'));
+
+               $this->fields['disableDemo'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Désactiver le lien de démo'), 'grade' => 5);
+               $this->fields['redirectDemo'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Rediriger le lien de démo vers'), 'grade' => 5);
+               $this->forms['demo'] = array('label' => __('Lien de démo'),
+                       'fieldsnames' => array('disableDemo', 'redirectDemo'));
+
+
+               $this->fields['scorm_enable'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer SCORM'), 'grade' => 5);
+               $this->fields['scorm_id'] = array('type' => 'text', 'default' => 'MFMCTE091mobile', 'editable' => true, 'label' => __('Identifiant SCORM'), 'grade' => 5);
+               $this->fields['scorm_org'] = array('type' => 'text', 'default' => 'ACME-ORG-1350650111249', 'editable' => true, 'label' => __('Organisation SCORM'), 'grade' => 5);
+               $this->fields['scorm_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Titre SCORM'), 'grade' => 5, 'hint' => __('Laisser vide pour utiliser le titre de la publication'));
+               $this->fields['scorm_variables'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Variables SCORM'), 'grade' => 5, 'hint' => __('Laisser vide pour utiliser le titre de la publication'));
+
+               $this->forms['scorm'] = array('label' => __('SCORM'),
+                       'fieldsnames' => array('scorm_enable', 'scorm_id', 'scorm_org', 'scorm_title', 'scorm_variables'));
+       }
 
 }
index 5244c018a8c08718150b8f82bc6112d1c532a29e..b60bd0448fe515c25fb949ec244d6d3ced6edd54 100644 (file)
@@ -1523,8 +1523,10 @@ class wsHTML5Compiler
 
                // Links Styles
                $lessVariables['links-color'] = wsHTML5::colorToCSS($this->theme->parametres->linksColor);
+               $lessVariables['inlineslideshow-transition-time'] = (floatval($this->book->parametres->inlineSlideshowTransitionDuration) * 1000) . 'ms';
                $res = array_merge($res, $links);
 
+
                // Bookmarks
                if (!isset($this->book->parametres->bookmarkCornerSize)) {
                        $this->book->parametres->bookmarkCornerSize = 10;
index ecfd54fe872d8c7e331c597323fc75f1f4a33987..036507b9e37340aaa568c97fb119bbb8e8270ee0 100644 (file)
@@ -931,6 +931,8 @@ class inlineSlideshowLink extends contentLink
        public function getHTMLContent()
        {
                $d = $this->unzipFile($this->to, false);
+               $this->compiler->vdir->copyDirectory($d['dir'], $d['fdir']);
+
                $iterator = CubeIT_Files::getRecursiveDirectoryIterator($d['dir']);
 
                $files = array();