From add6a162c9ff1ec591ef8f166e0dccf4c8ba2335 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Tue, 30 Aug 2011 17:01:40 +0000 Subject: [PATCH] --- inc/ws/DAO/class.ws.dao.book.php | 74 +++- inc/ws/Metier/class.ws.book.parametres.php | 400 +++++++++++---------- 2 files changed, 278 insertions(+), 196 deletions(-) diff --git a/inc/ws/DAO/class.ws.dao.book.php b/inc/ws/DAO/class.ws.dao.book.php index 081cd310c..3698ba57e 100644 --- a/inc/ws/DAO/class.ws.dao.book.php +++ b/inc/ws/DAO/class.ws.dao.book.php @@ -910,12 +910,84 @@ class wsDAOBook extends commonDAO { $this->compilePDF($book, $pages); $this->indexPDF($book, $pages); - $this->touchCompile($book_id); $this->compileHTML5($book_id); + $this->compileWidget($book, $pages); + + $this->touchCompile($book_id); return $res; } + public function compileWidget($book, $pages) { + if (!$book->parametres->widget) { + return; + } + + global $core; + + $finalDir = WS_BOOKS . '/final/' . $book->book_id . '/widget/'; + $finalWidget = $finalDir . 'miniFluidbook.swf'; + + if (!file_exists($finalDir)) { + mkdir($finalDir, 0777, true); + } + + if ($book->parametres->widgetCover) { + $file = 'miniFluidbookCouv.swf'; + } else { + $file = 'miniFluidbook.swf'; + } + $mini = WS_COMPILE_ASSETS . '/_widget/' . $file; + + + $from = max(1, $book->parametres->widgetStart); + $to = min($book->parametres->widgetEnd, count($pages)); + + + $swfcombine = new cubeCommandLine('swfcombine'); + $swfcombine->setPath(CONVERTER_PATH); + $swfcombine->setArg('merge'); + $swfcombine->setArg('stack1'); + $swfcombine->setArg('z'); + $swfcombine->setArg('o', $finalWidget); + $swfcombine->setArg(null, $mini); + + $tempimage = array(); + $tempswf = array(); + + + for ($i = $from; $i <= $to; $i++) { + $page = $pages[$i]; + + $tempimage[$i] = cubeFiles::tempnam(); + $tempswf[$i] = cubeFiles::tempnam(); + + $it = new imageTools(); + $it->loadImage(WS_DOCS . '/' . $page['document_id'] . '/html/t36-' . $page['document_page'] . '.jpg'); + $it->resize($book->parametres->widgetSize, 10000); + $it->output('jpeg', $tempimage[$i], 100); + + $jpg2swf = new cubeCommandLine('jpeg2swf'); + $jpg2swf->setEnv('PATH', '/bin:/usr/bin:/usr/local/bin'); + $jpg2swf->setArg('q', $book->parametres->widgetQuality); + $jpg2swf->setArg('o', $tempswf[$i]); + $jpg2swf->setArg(null, $tempimage[$i]); + $jpg2swf->execute(); + + $swfcombine->setArg(null, $tempswf[$i]); + } + $swfcombine->execute(); + fb($swfcombine->commande); + fb($swfcombine->output); + + foreach ($tempimage as $t) { + unlink($t); + } + foreach ($tempswf as $t) { + unlink($t); + } + } + public function compileHTML5($book_id) { $htmlCompiler = new wsHTML5Compiler($book_id); $htmlCompiler->compile(); diff --git a/inc/ws/Metier/class.ws.book.parametres.php b/inc/ws/Metier/class.ws.book.parametres.php index eb34d29bb..668abc668 100644 --- a/inc/ws/Metier/class.ws.book.parametres.php +++ b/inc/ws/Metier/class.ws.book.parametres.php @@ -2,201 +2,211 @@ 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; - } - $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication")); - $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('title', 'url_link', 'signature')); - // . - // . - $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Envoyer à un ami')); - $this->fields['email_title'] = array('type' => 'text', 'default' => __('%name% vous invite à découvrir %title%'), 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"'); - $this->fields['email_body'] = array('type' => 'textarea', 'default' => __('Veuillez cliquer sur le lien suivant : %link%'), 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"'); - $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['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Facebook')); - $this->fields['facebook_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre facebook"), 'hint' => __('Titre proposé sur la fonction de partage facebook (par défaut, titre de la publication)')); - $this->fields['facebook_description'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Description facebook"), 'grade' => 1, 'hint' => __('Description proposée sur la fonction de partage facebook (par défaut, vide)')); - $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Twitter')); - $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => __("Contenu Twitter"), 'hint' => __('Contenu du Twit')); - $this->forms['share'] = array('label' => __('Fonctions de partage'), - 'fieldsnames' => array('friend', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', '|', - 'facebook', 'facebook_title', 'facebook_description', '|', - 'twitter', 'twitter_description')); - // . - $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' => '0', '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' => '3', 'editable' => true, 'label' => __("Mode de visualisation (beta)"), - 'datas' => array(__('Classique') => '0', - __("Diaporama") => '1'), 'grade' => 5); - $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->forms['3d_mode'] = array('label' => __('Options de visualisation'), - 'fieldsnames' => array('visualisationMode', 'pagesBaseAngle', '|', 'extraXSpace', 'extraYSpace', '|', 'viewMode')); - - $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression")); - $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages')); - $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le mode plein-écran')); - $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'aide")); - $this->fields['navOrder'] = array('type' => 'textarea', 'default' => 'index, chapters, print, friend, bookmark, pdf, archives, basket, fullscreen, sound, 3d, help', 'editable' => true, 'label' => __('Ordre des icônes dans la nav'), 'grade' => 5); - $this->forms['general'] = array('label' => __('Fonctionnalités générales'), - 'fieldsnames' => array('print', 'bookmark', 'fullscreen', 'help', 'navOrder', 'pages', 'width', 'height')); - // . - // - $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le moteur de recherche')); - $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->forms['search'] = array('label' => __('Moteur de recherche'), - 'fieldsnames' => array('search', 'ignoreSearch')); - - $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->forms['sound'] = array('label' => __('Effets sonores'), - 'fieldsnames' => array('soundTheme', 'soundOn')); - // . - $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => true, 'label' => __('Nombre de pages à précharger'), 'grade' => 3); - $this->forms['general_settings'] = array('label' => __('Paramètres généraux'), - 'fieldsnames' => array('preload')); - // . - $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les fonctions de téléchargement")); - $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téchargement de PDF avancé'), 'grade' => 3); - $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téléchargement des versions offline'), 'grade' => 3); - $this->forms['pdf'] = array('label' => __('Fonction de téléchargement'), - 'fieldsnames' => array('pdf', 'pdfComplex', 'offlineExport')); - // . - $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de zoom"), 'grade' => 5, - '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['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10); - $this->forms['stats'] = array('label' => __('Statistiques'), - 'fieldsnames' => array('stats', 'stats_score', '|', 'googleAnalytics')); - // . - $swfFilter = new stdClass(); - $swfFilter->name = __('Animation SWF') . ' (*.swf)'; - $swfFilter->extensions = '*.swf'; - - $basketFilter = new stdClass(); - $basketFilter->name = __('Liste de produits') . ' (*.xml)'; - $basketFilter->extensions = '*.xml'; - - $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'; - - $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche l'icône du sommaire"), 'grade' => 1); - $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['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true, - 'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, '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['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['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => true, 'label' => __("Position du sommaire"), - 'datas' => array(__('Centré') => 'center', - __("Aligné sur l'icône") => 'chaptersIcon')); - - $this->forms['sommaire'] = array('label' => __('Sommaire'), - 'fieldsnames' => array('displayChaptersIcon', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', '|', 'chaptersColMaxWidth', 'chaptersColumns', '|', 'externalChapters', 'fullExternalChapters', '|', 'ongletsSWF', 'ongletsXML')); - // . - $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Liens visibles en permanence'), 'grade' => 3); - $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __("Temps d'apparition du lien à l'ouverture de la page (en secondes)")); - $this->forms['multimedia'] = array('label' => __('Liens et multimédia'), - 'fieldsnames' => array('permanentLinks', 'linkBlinkTime')); - // . - $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true, - 'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $swfFilter); - - $this->forms['archives'] = array('label' => __('Archives'), - 'fieldsnames' => array('externalArchives')); - // . - $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', - __('Essilor') => 'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager', - __('Essilor Recap') => 'com.fluidbook.player.basket.cursor.essilorrecap.EssilorRecapBasketManager'), 'grade' => 5); - $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true, - 'label' => __('Références produits'), 'grade' => 5, '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->forms['offline'] = array('label' => __('Version offline'), - 'fieldsnames' => array('offlineLink')); - // Paramètres non implémentés - /* - // $this->fields['attachPDFInEmail'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Joindre le fichier PDF de la page en cours à l'email"), 'grade' => 4); - // $this->fields['attachmentName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom de la pièce jointe'), 'grade' => 4); - // $this->fields['addThis'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Identifiant addThis"), 'grade' => 4); - // $this->fields['addThisOptions'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Paramètres addThis"), 'grade' => 4); - $this->fields['reading_dir'] = array('type' => 'combo', - 'datas' => array(__('De la gauche vers la droite') => 'ltr', __('De la droite vers la gauche') => 'rtl'), - 'default' => 'ltr', 'editable' => true, 'label' => __('Sens de lecture'), 'grade' => 3); - $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Affiche le score dans les statistiques'), 'grade' => 3); - $this->fields['optimizepdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Optimiser le PDF'), 'grade' => 4, 'hint' => "Permet de réduire la taille du document PDF"); - $this->fields['chaptersPosition'] = array('type' => 'combo', - 'datas' => array(__('Centré') => 'center' , __("Calé sur l'icône") => 'icon', __('Calé sur la gauche') => 'left'), - 'default' => 'center', 'editable' => true, 'label' => __('Positionnement du sommaire'), 'grade' => 4); - $this->fields['playVideoAtStart'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Jouer les vidéos à l'affichage de la page"), 'grade' => 4); - $this->fields['statsWeborama'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Statistiques Weborama'), 'size' => 10, 'grade' => 1); - $this->fields['zoomAreas'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Activer le zoom sur les liens ''Plus d'infos''"), 'grade' => 4); - // . - $this->fields['extraSubMenu'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Sous-menu supplémentaire'), 'grade' => 4); - $this->fields['extraSMsizeX'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Largeur du sous-menu supplémentaire'), 'grade' => 4); - $this->fields['extraSMsizeY'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Hauteur du sous-menu supplémentaire'), 'grade' => 4); - $this->fields['extraName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom du sous-menu supplémentaire'), 'grade' => 4); - $this->fields['extraFileName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du sous-menu supplémentaire'), 'grade' => 4); - // . - $this->fields['backClipName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du fond animé'), 'grade' => 4); - $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => false, 'label' => __('Largeur du décalage des flèches'), 'grade' => 4); */ - } + public function __construct($parent) { + parent::__construct($parent); + } + + /** + * wsBookParametres::initFields() + * + * @return + */ + protected function initFields() { + parent::initFields(); + if (is_null($this->parent)) { + return; + } + $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication")); + $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('title', 'url_link', 'signature')); + // . + // . + $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Envoyer à un ami')); + $this->fields['email_title'] = array('type' => 'text', 'default' => __('%name% vous invite à découvrir %title%'), 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"'); + $this->fields['email_body'] = array('type' => 'textarea', 'default' => __('Veuillez cliquer sur le lien suivant : %link%'), 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"'); + $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['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Facebook')); + $this->fields['facebook_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre facebook"), 'hint' => __('Titre proposé sur la fonction de partage facebook (par défaut, titre de la publication)')); + $this->fields['facebook_description'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Description facebook"), 'grade' => 1, 'hint' => __('Description proposée sur la fonction de partage facebook (par défaut, vide)')); + $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Twitter')); + $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => __("Contenu Twitter"), 'hint' => __('Contenu du Twit')); + $this->forms['share'] = array('label' => __('Fonctions de partage'), + 'fieldsnames' => array('friend', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', '|', + 'facebook', 'facebook_title', 'facebook_description', '|', + 'twitter', 'twitter_description')); + // . + $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' => '0', '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' => '3', 'editable' => true, 'label' => __("Mode de visualisation (beta)"), + 'datas' => array(__('Classique') => '0', + __("Diaporama") => '1'), 'grade' => 5); + $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->forms['3d_mode'] = array('label' => __('Options de visualisation'), + 'fieldsnames' => array('visualisationMode', 'pagesBaseAngle', '|', 'extraXSpace', 'extraYSpace', '|', 'viewMode')); + + $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression")); + $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages')); + $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le mode plein-écran')); + $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'aide")); + $this->fields['navOrder'] = array('type' => 'textarea', 'default' => 'index, chapters, print, friend, bookmark, pdf, archives, basket, fullscreen, sound, 3d, help', 'editable' => true, 'label' => __('Ordre des icônes dans la nav'), 'grade' => 5); + $this->forms['general'] = array('label' => __('Fonctionnalités générales'), + 'fieldsnames' => array('print', 'bookmark', 'fullscreen', 'help', 'navOrder', 'pages', 'width', 'height')); + // . + // + $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le moteur de recherche')); + $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->forms['search'] = array('label' => __('Moteur de recherche'), + 'fieldsnames' => array('search', 'ignoreSearch')); + + $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->forms['sound'] = array('label' => __('Effets sonores'), + 'fieldsnames' => array('soundTheme', 'soundOn')); + // . + $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => true, 'label' => __('Nombre de pages à précharger'), 'grade' => 3); + $this->forms['general_settings'] = array('label' => __('Paramètres généraux'), + 'fieldsnames' => array('preload')); + // . + $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les fonctions de téléchargement")); + $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téchargement de PDF avancé'), 'grade' => 3); + $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téléchargement des versions offline'), 'grade' => 3); + $this->forms['pdf'] = array('label' => __('Fonction de téléchargement'), + 'fieldsnames' => array('pdf', 'pdfComplex', 'offlineExport')); + // . + $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de zoom"), 'grade' => 5, + '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['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10); + $this->forms['stats'] = array('label' => __('Statistiques'), + 'fieldsnames' => array('stats', 'stats_score', '|', 'googleAnalytics')); + // . + $swfFilter = new stdClass(); + $swfFilter->name = __('Animation SWF') . ' (*.swf)'; + $swfFilter->extensions = '*.swf'; + + $basketFilter = new stdClass(); + $basketFilter->name = __('Liste de produits') . ' (*.xml)'; + $basketFilter->extensions = '*.xml'; + + $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'; + + $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche l'icône du sommaire"), 'grade' => 1); + $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['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true, + 'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, '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['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['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => true, 'label' => __("Position du sommaire"), + 'datas' => array(__('Centré') => 'center', + __("Aligné sur l'icône") => 'chaptersIcon')); + + $this->forms['sommaire'] = array('label' => __('Sommaire'), + 'fieldsnames' => array('displayChaptersIcon', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', '|', 'chaptersColMaxWidth', 'chaptersColumns', '|', 'externalChapters', 'fullExternalChapters', '|', 'ongletsSWF', 'ongletsXML')); + // . + $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Liens visibles en permanence'), 'grade' => 3); + $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __("Temps d'apparition du lien à l'ouverture de la page (en secondes)")); + $this->forms['multimedia'] = array('label' => __('Liens et multimédia'), + 'fieldsnames' => array('permanentLinks', 'linkBlinkTime')); + // . + $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true, + 'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $swfFilter); + + $this->forms['archives'] = array('label' => __('Archives'), + 'fieldsnames' => array('externalArchives')); + // . + $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', + __('Essilor') => 'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager', + __('Essilor Recap') => 'com.fluidbook.player.basket.cursor.essilorrecap.EssilorRecapBasketManager'), 'grade' => 5); + $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true, + 'label' => __('Références produits'), 'grade' => 5, '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->forms['offline'] = array('label' => __('Version offline'), + 'fieldsnames' => array('offlineLink')); + + $this->fields['widget'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Générer le widget'), 'grade' => 5); + $this->fields['widgetCover'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher la couverture') . ')', 'grade' => 5); + $this->fields['widgetSize'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Optimiser pour une hauteur de (en pixels)'), 'grade' => 5); + $this->fields['widgetQuality'] = array('type' => 'integer', 'default' => 85, 'min' => 0, 'max' => 100, 'editable' => true, 'label' => __('Qualité JPEG'), 'grade' => 5); + $this->fields['widgetStart'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Page de début'), 'grade' => 5); + $this->fields['widgetEnd'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => __('Page de fin'), 'grade' => 5); + $this->forms['widget'] = array('label' => __('Widget') . ' (' . __('Mini Fluidbook') . ')', + 'fieldsnames' => array('widget', 'widgetCover', 'widgetSize', 'widgetQuality', 'widgetStart', 'widgetEnd')); + + // Paramètres non implémentés + /* + // $this->fields['attachPDFInEmail'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Joindre le fichier PDF de la page en cours à l'email"), 'grade' => 4); + // $this->fields['attachmentName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom de la pièce jointe'), 'grade' => 4); + // $this->fields['addThis'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Identifiant addThis"), 'grade' => 4); + // $this->fields['addThisOptions'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Paramètres addThis"), 'grade' => 4); + $this->fields['reading_dir'] = array('type' => 'combo', + 'datas' => array(__('De la gauche vers la droite') => 'ltr', __('De la droite vers la gauche') => 'rtl'), + 'default' => 'ltr', 'editable' => true, 'label' => __('Sens de lecture'), 'grade' => 3); + $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Affiche le score dans les statistiques'), 'grade' => 3); + $this->fields['optimizepdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Optimiser le PDF'), 'grade' => 4, 'hint' => "Permet de réduire la taille du document PDF"); + $this->fields['chaptersPosition'] = array('type' => 'combo', + 'datas' => array(__('Centré') => 'center' , __("Calé sur l'icône") => 'icon', __('Calé sur la gauche') => 'left'), + 'default' => 'center', 'editable' => true, 'label' => __('Positionnement du sommaire'), 'grade' => 4); + $this->fields['playVideoAtStart'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Jouer les vidéos à l'affichage de la page"), 'grade' => 4); + $this->fields['statsWeborama'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Statistiques Weborama'), 'size' => 10, 'grade' => 1); + $this->fields['zoomAreas'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Activer le zoom sur les liens ''Plus d'infos''"), 'grade' => 4); + // . + $this->fields['extraSubMenu'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Sous-menu supplémentaire'), 'grade' => 4); + $this->fields['extraSMsizeX'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Largeur du sous-menu supplémentaire'), 'grade' => 4); + $this->fields['extraSMsizeY'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Hauteur du sous-menu supplémentaire'), 'grade' => 4); + $this->fields['extraName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom du sous-menu supplémentaire'), 'grade' => 4); + $this->fields['extraFileName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du sous-menu supplémentaire'), 'grade' => 4); + // . + $this->fields['backClipName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du fond animé'), 'grade' => 4); + $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => false, 'label' => __('Largeur du décalage des flèches'), 'grade' => 4); */ + } } -- 2.39.5