]> _ Git - cubeextranet.git/commitdiff
(no commit message)
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 30 Aug 2011 17:01:40 +0000 (17:01 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 30 Aug 2011 17:01:40 +0000 (17:01 +0000)
inc/ws/DAO/class.ws.dao.book.php
inc/ws/Metier/class.ws.book.parametres.php

index 081cd310c06f302a89c49715941f85a00d7d5972..3698ba57ef93351a76cd4cc0c065712bf82c9974 100644 (file)
@@ -910,12 +910,84 @@ class wsDAOBook extends commonDAO {
 \r
                $this->compilePDF($book, $pages);\r
                $this->indexPDF($book, $pages);\r
-               $this->touchCompile($book_id);\r
                $this->compileHTML5($book_id);\r
+               $this->compileWidget($book, $pages);\r
+\r
+               $this->touchCompile($book_id);\r
 \r
                return $res;\r
        }\r
 \r
+       public function compileWidget($book, $pages) {\r
+               if (!$book->parametres->widget) {\r
+                       return;\r
+               }\r
+\r
+               global $core;\r
+\r
+               $finalDir = WS_BOOKS . '/final/' . $book->book_id . '/widget/';\r
+               $finalWidget = $finalDir . 'miniFluidbook.swf';\r
+\r
+               if (!file_exists($finalDir)) {\r
+                       mkdir($finalDir, 0777, true);\r
+               }\r
+\r
+               if ($book->parametres->widgetCover) {\r
+                       $file = 'miniFluidbookCouv.swf';\r
+               } else {\r
+                       $file = 'miniFluidbook.swf';\r
+               }\r
+               $mini = WS_COMPILE_ASSETS . '/_widget/' . $file;\r
+\r
+\r
+               $from = max(1, $book->parametres->widgetStart);\r
+               $to = min($book->parametres->widgetEnd, count($pages));\r
+\r
+\r
+               $swfcombine = new cubeCommandLine('swfcombine');\r
+               $swfcombine->setPath(CONVERTER_PATH);\r
+               $swfcombine->setArg('merge');\r
+               $swfcombine->setArg('stack1');\r
+               $swfcombine->setArg('z');\r
+               $swfcombine->setArg('o', $finalWidget);\r
+               $swfcombine->setArg(null, $mini);\r
+\r
+               $tempimage = array();\r
+               $tempswf = array();\r
+\r
+\r
+               for ($i = $from; $i <= $to; $i++) {\r
+                       $page = $pages[$i];\r
+\r
+                       $tempimage[$i] = cubeFiles::tempnam();\r
+                       $tempswf[$i] = cubeFiles::tempnam();\r
+\r
+                       $it = new imageTools();\r
+                       $it->loadImage(WS_DOCS . '/' . $page['document_id'] . '/html/t36-' . $page['document_page'] . '.jpg');\r
+                       $it->resize($book->parametres->widgetSize, 10000);\r
+                       $it->output('jpeg', $tempimage[$i], 100);\r
+\r
+                       $jpg2swf = new cubeCommandLine('jpeg2swf');\r
+                       $jpg2swf->setEnv('PATH', '/bin:/usr/bin:/usr/local/bin');\r
+                       $jpg2swf->setArg('q', $book->parametres->widgetQuality);\r
+                       $jpg2swf->setArg('o', $tempswf[$i]);\r
+                       $jpg2swf->setArg(null, $tempimage[$i]);\r
+                       $jpg2swf->execute();\r
+\r
+                       $swfcombine->setArg(null, $tempswf[$i]);\r
+               }\r
+               $swfcombine->execute();\r
+               fb($swfcombine->commande);\r
+               fb($swfcombine->output);\r
+\r
+               foreach ($tempimage as $t) {\r
+                       unlink($t);\r
+               }\r
+               foreach ($tempswf as $t) {\r
+                       unlink($t);\r
+               }\r
+       }\r
+\r
        public function compileHTML5($book_id) {\r
                $htmlCompiler = new wsHTML5Compiler($book_id);\r
                $htmlCompiler->compile();\r
index eb34d29bb35fa7de64bcfa243a3e8b91a3db2b52..668abc6686b0388326544089625797cb41c810ce 100644 (file)
 \r
 class wsBookParametres extends wsParametres {\r
 \r
-    public function __construct($parent) {\r
-        parent::__construct($parent);\r
-    }\r
-\r
-    /**\r
-     * wsBookParametres::initFields()\r
-     *\r
-     * @return\r
-     */\r
-    protected function initFields() {\r
-        parent::initFields();\r
-        if (is_null($this->parent)) {\r
-            return;\r
-        }\r
-        $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication"));\r
-        $this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du lien de retour au site"));\r
-        $this->fields['signature'] = array('type' => 'combo', 'default' => '1', 'editable' => true, 'label' => __('Signature'), 'grade' => 3, 'datas' => wsDroits::getSignatures());\r
-        $this->forms['important'] = array('label' => __('Description de la publication'),\r
-            'fieldsnames' => array('title', 'url_link', 'signature'));\r
-        // .\r
-        // .\r
-        $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Envoyer à un ami'));\r
-        $this->fields['email_title'] = array('type' => 'text', 'default' => __('%name% vous invite à découvrir %title%'), 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"');\r
-        $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') . '"');\r
-        $this->fields['email_editable'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Permettre au lecteur de modifier le corps de l'email"));\r
-        $this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Demander au destinataire un accusé de réception"), 'grade' => 3);\r
-        $this->fields['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Facebook'));\r
-        $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)'));\r
-        $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)'));\r
-        $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Twitter'));\r
-        $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => __("Contenu Twitter"), 'hint' => __('Contenu du Twit'));\r
-        $this->forms['share'] = array('label' => __('Fonctions de partage'),\r
-            'fieldsnames' => array('friend', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', '|',\r
-                'facebook', 'facebook_title', 'facebook_description', '|',\r
-                'twitter', 'twitter_description'));\r
-        // .\r
-        $this->fields['pages'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Nombre de pages'));\r
-        $this->fields['width'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Largeur'));\r
-        $this->fields['height'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Hauteur'));\r
-        // .\r
-        $this->fields['visualisationMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de visualisation 3D"),\r
-            'datas' => array(__('Mode 3D') => '0',\r
-                __('Mode 2D (caméra fixe et pages à plat)') => '1',\r
-                __("Laisser le choix à l'utilisateur (mode 3D par défaut)") => '2',\r
-                __("Laisser le choix à l'utilisateur (mode 2D par défaut)") => '3'));\r
-        $this->fields['viewMode'] = array('type' => 'combo', 'default' => '3', 'editable' => true, 'label' => __("Mode de visualisation (beta)"),\r
-            'datas' => array(__('Classique') => '0',\r
-                __("Diaporama") => '1'), 'grade' => 5);\r
-        $this->fields['pagesBaseAngle'] = array('type' => 'integer', 'default' => '2', 'editable' => true, 'label' => __('Angle de base entre les pages'), 'grade' => 3,\r
-            'hint' => __("0 : Publication à plat") . "\n" . __('2 : Valeur par défaut'));\r
-        $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);\r
-        $this->fields['extraYSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire verticale'), 'grade' => 3);\r
-        $this->forms['3d_mode'] = array('label' => __('Options de visualisation'),\r
-            'fieldsnames' => array('visualisationMode', 'pagesBaseAngle', '|', 'extraXSpace', 'extraYSpace', '|', 'viewMode'));\r
-\r
-        $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression"));\r
-        $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages'));\r
-        $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le mode plein-écran'));\r
-        $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'aide"));\r
-        $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);\r
-        $this->forms['general'] = array('label' => __('Fonctionnalités générales'),\r
-            'fieldsnames' => array('print', 'bookmark', 'fullscreen', 'help', 'navOrder', 'pages', 'width', 'height'));\r
-        // .\r
-        // \r
-        $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le moteur de recherche'));\r
-        $this->fields['ignoreSearch'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Mots à ignorer'),\r
-            'hint' => __('Liste des mots à ignorer séparés par des virgules'), 'grade' => 5);\r
-        $this->forms['search'] = array('label' => __('Moteur de recherche'),\r
-            'fieldsnames' => array('search', 'ignoreSearch'));\r
-\r
-        $this->fields['soundTheme'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Thème sonore"),\r
-            'datas' => array(__('Pas de son') => '',\r
-                __('Classique') => 'classic',\r
-                __("Papier épais") => 'heavy',\r
-                __("Papier fin") => 'light'));\r
-        $this->fields['soundOn'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les effets sonores à l'ouverture"));\r
-        $this->forms['sound'] = array('label' => __('Effets sonores'),\r
-            'fieldsnames' => array('soundTheme', 'soundOn'));\r
-        // .\r
-        $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => true, 'label' => __('Nombre de pages à précharger'), 'grade' => 3);\r
-        $this->forms['general_settings'] = array('label' => __('Paramètres généraux'),\r
-            'fieldsnames' => array('preload'));\r
-        // .\r
-        $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les fonctions de téléchargement"));\r
-        $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téchargement de PDF avancé'), 'grade' => 3);\r
-        $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téléchargement des versions offline'), 'grade' => 3);\r
-        $this->forms['pdf'] = array('label' => __('Fonction de téléchargement'),\r
-            'fieldsnames' => array('pdf', 'pdfComplex', 'offlineExport'));\r
-        // .\r
-        $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de zoom"), 'grade' => 5,\r
-            'datas' => array(__('Normal') => '0',\r
-                __('Une page') => '1',\r
-                __('Zoom désactivé') => '2'));\r
-        $this->fields['zoom'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Zoom par défaut (atteint au clic)'));\r
-        $this->fields['zoomw'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Zoom maximal (atteint à l'aide de la molette)"));\r
-        $this->forms['zoom'] = array('label' => __('Zoom'),\r
-            'fieldsnames' => array('zoomMode', '|', 'zoom', 'zoomw'));\r
-        // .\r
-        $this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les statistiques Fluidbook'), 'grade' => 3);\r
-        $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher les scores dans les rapports'), 'grade' => 5);\r
-        $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10);\r
-        $this->forms['stats'] = array('label' => __('Statistiques'),\r
-            'fieldsnames' => array('stats', 'stats_score', '|', 'googleAnalytics'));\r
-        // .\r
-        $swfFilter = new stdClass();\r
-        $swfFilter->name = __('Animation SWF') . ' (*.swf)';\r
-        $swfFilter->extensions = '*.swf';\r
-\r
-        $basketFilter = new stdClass();\r
-        $basketFilter->name = __('Liste de produits') . ' (*.xml)';\r
-        $basketFilter->extensions = '*.xml';\r
-\r
-        $imageFilter = new stdClass();\r
-        $imageFilter->name = __('Images') . ' (*.jpg, *.png)';\r
-        $imageFilter->extensions = '*.jpg;*.jpeg;*.png';\r
-\r
-        $epsFilter = new stdClass();\r
-        $epsFilter->name = __('Fichier vectoriel') . ' (*.ai, *.eps)';\r
-        $epsFilter->extensions = '*.ai;*.eps';\r
-\r
-        $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche l'icône du sommaire"), 'grade' => 1);\r
-        $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);\r
-        $this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher le sommaire au chargement de la publication"), 'grade' => 3);\r
-        $this->fields['chaptersColumns'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Afficher le sommaire sur x colonne(s)'), 'grade' => 3);\r
-        $this->fields['chaptersColMaxWidth'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Largeur max d'une colonne"), 'grade' => 3);\r
-        $this->fields['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
-            'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));\r
-        $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'));\r
-        $this->fields['ongletsXML'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('XML de configuration des onglets'), 'grade' => 5);\r
-        $this->fields['ongletsSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
-            'label' => __('SWF pour onglets personnalisés'), 'grade' => 3, 'fileFilter' => $swfFilter);\r
-        $this->fields['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => true, 'label' => __("Position du sommaire"),\r
-            'datas' => array(__('Centré') => 'center',\r
-                __("Aligné sur l'icône") => 'chaptersIcon'));\r
-\r
-        $this->forms['sommaire'] = array('label' => __('Sommaire'),\r
-            'fieldsnames' => array('displayChaptersIcon', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', '|', 'chaptersColMaxWidth', 'chaptersColumns', '|', 'externalChapters', 'fullExternalChapters', '|', 'ongletsSWF', 'ongletsXML'));\r
-        // .\r
-        $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Liens visibles en permanence'), 'grade' => 3);\r
-        $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __("Temps d'apparition du lien à l'ouverture de la page (en secondes)"));\r
-        $this->forms['multimedia'] = array('label' => __('Liens et multimédia'),\r
-            'fieldsnames' => array('permanentLinks', 'linkBlinkTime'));\r
-        // .\r
-        $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
-            'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $swfFilter);\r
-\r
-        $this->forms['archives'] = array('label' => __('Archives'),\r
-            'fieldsnames' => array('externalArchives'));\r
-        // .\r
-        $this->fields['basket'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Panier activé'), 'grade' => 5);\r
-        $this->fields['basketManager'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Manager de panier"),\r
-            'datas' => array(__('Classic') => 'com.fluidbook.player.basket.BasketManager',\r
-                __('Essilor') => 'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager',\r
-                __('Essilor Recap') => 'com.fluidbook.player.basket.cursor.essilorrecap.EssilorRecapBasketManager'), 'grade' => 5);\r
-        $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
-            'label' => __('Références produits'), 'grade' => 5, 'fileFilter' => $basketFilter, 'hint' => __('Fichier contenant les références produits'), 'dir' => 'commerce');\r
-        $this->fields['basketImages'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
-            'label' => __('Images des produits'), 'grade' => 5, 'fileFilter' => $imageFilter, 'hint' => __('Chaque image doit avoir pour nom exact la référence du produit'),\r
-            'multiple' => true, 'dir' => 'commerce');\r
-        $this->fields['basketPDFBackground'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
-            'label' => __('Fond du PDF (bon de commande)'), 'grade' => 5, 'fileFilter' => $epsFilter, 'hint' => __('Fond du bon de commande'), 'dir' => 'commerce');\r
-\r
-        $this->forms['basket'] = array('label' => __('Panier'),\r
-            'fieldsnames' => array('basket', 'basketManager', 'basketReferences', 'basketImages', 'basketPDFBackground'));\r
-        // .\r
-        $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)');\r
-        $this->forms['offline'] = array('label' => __('Version offline'),\r
-            'fieldsnames' => array('offlineLink'));\r
-        // Paramètres non implémentés\r
-        /*\r
-          // $this->fields['attachPDFInEmail'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Joindre le fichier PDF de la page en cours à l'email"),  'grade' => 4);\r
-          // $this->fields['attachmentName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom de la pièce jointe'),  'grade' => 4);\r
-          // $this->fields['addThis'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Identifiant addThis"), 'grade' => 4);\r
-          // $this->fields['addThisOptions'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Paramètres addThis"), 'grade' => 4);\r
-          $this->fields['reading_dir'] = array('type' => 'combo',\r
-          'datas' => array(__('De la gauche vers la droite') => 'ltr', __('De la droite vers la gauche') => 'rtl'),\r
-          'default' => 'ltr', 'editable' => true, 'label' => __('Sens de lecture'), 'grade' => 3);\r
-          $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Affiche le score dans les statistiques'), 'grade' => 3);\r
-          $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");\r
-          $this->fields['chaptersPosition'] = array('type' => 'combo',\r
-          'datas' => array(__('Centré') => 'center' , __("Calé sur l'icône") => 'icon', __('Calé sur la gauche') => 'left'),\r
-          'default' => 'center', 'editable' => true, 'label' => __('Positionnement du sommaire'), 'grade' => 4);\r
-          $this->fields['playVideoAtStart'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Jouer les vidéos à l'affichage de la page"),  'grade' => 4);\r
-          $this->fields['statsWeborama'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Statistiques Weborama'), 'size' => 10,  'grade' => 1);\r
-          $this->fields['zoomAreas'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Activer le zoom sur les liens ''Plus d'infos''"),  'grade' => 4);\r
-          // .\r
-          $this->fields['extraSubMenu'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Sous-menu supplémentaire'),  'grade' => 4);\r
-          $this->fields['extraSMsizeX'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Largeur du sous-menu supplémentaire'),  'grade' => 4);\r
-          $this->fields['extraSMsizeY'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Hauteur du sous-menu supplémentaire'),  'grade' => 4);\r
-          $this->fields['extraName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom du sous-menu supplémentaire'),  'grade' => 4);\r
-          $this->fields['extraFileName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du sous-menu supplémentaire'),  'grade' => 4);\r
-          // .\r
-          $this->fields['backClipName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du fond animé'),  'grade' => 4);\r
-          $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => false, 'label' => __('Largeur du décalage des flèches'),  'grade' => 4); */\r
-    }\r
+       public function __construct($parent) {\r
+               parent::__construct($parent);\r
+       }\r
+\r
+       /**\r
+        * wsBookParametres::initFields()\r
+        *\r
+        * @return\r
+        */\r
+       protected function initFields() {\r
+               parent::initFields();\r
+               if (is_null($this->parent)) {\r
+                       return;\r
+               }\r
+               $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication"));\r
+               $this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du lien de retour au site"));\r
+               $this->fields['signature'] = array('type' => 'combo', 'default' => '1', 'editable' => true, 'label' => __('Signature'), 'grade' => 3, 'datas' => wsDroits::getSignatures());\r
+               $this->forms['important'] = array('label' => __('Description de la publication'),\r
+                       'fieldsnames' => array('title', 'url_link', 'signature'));\r
+               // .\r
+               // .\r
+               $this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Envoyer à un ami'));\r
+               $this->fields['email_title'] = array('type' => 'text', 'default' => __('%name% vous invite à découvrir %title%'), 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"');\r
+               $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') . '"');\r
+               $this->fields['email_editable'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Permettre au lecteur de modifier le corps de l'email"));\r
+               $this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Demander au destinataire un accusé de réception"), 'grade' => 3);\r
+               $this->fields['facebook'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Facebook'));\r
+               $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)'));\r
+               $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)'));\r
+               $this->fields['twitter'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Twitter'));\r
+               $this->fields['twitter_description'] = array('type' => 'textarea', 'default' => '%title% : %short%', 'editable' => true, 'label' => __("Contenu Twitter"), 'hint' => __('Contenu du Twit'));\r
+               $this->forms['share'] = array('label' => __('Fonctions de partage'),\r
+                       'fieldsnames' => array('friend', 'email_title', 'email_body', 'email_editable', 'askAcknowledge', '|',\r
+                               'facebook', 'facebook_title', 'facebook_description', '|',\r
+                               'twitter', 'twitter_description'));\r
+               // .\r
+               $this->fields['pages'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Nombre de pages'));\r
+               $this->fields['width'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Largeur'));\r
+               $this->fields['height'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Hauteur'));\r
+               // .\r
+               $this->fields['visualisationMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de visualisation 3D"),\r
+                       'datas' => array(__('Mode 3D') => '0',\r
+                               __('Mode 2D (caméra fixe et pages à plat)') => '1',\r
+                               __("Laisser le choix à l'utilisateur (mode 3D par défaut)") => '2',\r
+                               __("Laisser le choix à l'utilisateur (mode 2D par défaut)") => '3'));\r
+               $this->fields['viewMode'] = array('type' => 'combo', 'default' => '3', 'editable' => true, 'label' => __("Mode de visualisation (beta)"),\r
+                       'datas' => array(__('Classique') => '0',\r
+                               __("Diaporama") => '1'), 'grade' => 5);\r
+               $this->fields['pagesBaseAngle'] = array('type' => 'integer', 'default' => '2', 'editable' => true, 'label' => __('Angle de base entre les pages'), 'grade' => 3,\r
+                       'hint' => __("0 : Publication à plat") . "\n" . __('2 : Valeur par défaut'));\r
+               $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire horizontale'), 'grade' => 3);\r
+               $this->fields['extraYSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => true, 'label' => __('Marge supplémentaire verticale'), 'grade' => 3);\r
+               $this->forms['3d_mode'] = array('label' => __('Options de visualisation'),\r
+                       'fieldsnames' => array('visualisationMode', 'pagesBaseAngle', '|', 'extraXSpace', 'extraYSpace', '|', 'viewMode'));\r
+\r
+               $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression"));\r
+               $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages'));\r
+               $this->fields['fullscreen'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le mode plein-écran'));\r
+               $this->fields['help'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'aide"));\r
+               $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);\r
+               $this->forms['general'] = array('label' => __('Fonctionnalités générales'),\r
+                       'fieldsnames' => array('print', 'bookmark', 'fullscreen', 'help', 'navOrder', 'pages', 'width', 'height'));\r
+               // .\r
+               // \r
+               $this->fields['search'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer le moteur de recherche'));\r
+               $this->fields['ignoreSearch'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('Mots à ignorer'),\r
+                       'hint' => __('Liste des mots à ignorer séparés par des virgules'), 'grade' => 5);\r
+               $this->forms['search'] = array('label' => __('Moteur de recherche'),\r
+                       'fieldsnames' => array('search', 'ignoreSearch'));\r
+\r
+               $this->fields['soundTheme'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Thème sonore"),\r
+                       'datas' => array(__('Pas de son') => '',\r
+                               __('Classique') => 'classic',\r
+                               __("Papier épais") => 'heavy',\r
+                               __("Papier fin") => 'light'));\r
+               $this->fields['soundOn'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les effets sonores à l'ouverture"));\r
+               $this->forms['sound'] = array('label' => __('Effets sonores'),\r
+                       'fieldsnames' => array('soundTheme', 'soundOn'));\r
+               // .\r
+               $this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => true, 'label' => __('Nombre de pages à précharger'), 'grade' => 3);\r
+               $this->forms['general_settings'] = array('label' => __('Paramètres généraux'),\r
+                       'fieldsnames' => array('preload'));\r
+               // .\r
+               $this->fields['pdf'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer les fonctions de téléchargement"));\r
+               $this->fields['pdfComplex'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téchargement de PDF avancé'), 'grade' => 3);\r
+               $this->fields['offlineExport'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Téléchargement des versions offline'), 'grade' => 3);\r
+               $this->forms['pdf'] = array('label' => __('Fonction de téléchargement'),\r
+                       'fieldsnames' => array('pdf', 'pdfComplex', 'offlineExport'));\r
+               // .\r
+               $this->fields['zoomMode'] = array('type' => 'combo', 'default' => '0', 'editable' => true, 'label' => __("Mode de zoom"), 'grade' => 5,\r
+                       'datas' => array(__('Normal') => '0',\r
+                               __('Une page') => '1',\r
+                               __('Zoom désactivé') => '2'));\r
+               $this->fields['zoom'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Zoom par défaut (atteint au clic)'));\r
+               $this->fields['zoomw'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Zoom maximal (atteint à l'aide de la molette)"));\r
+               $this->forms['zoom'] = array('label' => __('Zoom'),\r
+                       'fieldsnames' => array('zoomMode', '|', 'zoom', 'zoomw'));\r
+               // .\r
+               $this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les statistiques Fluidbook'), 'grade' => 3);\r
+               $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher les scores dans les rapports'), 'grade' => 5);\r
+               $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10);\r
+               $this->forms['stats'] = array('label' => __('Statistiques'),\r
+                       'fieldsnames' => array('stats', 'stats_score', '|', 'googleAnalytics'));\r
+               // .\r
+               $swfFilter = new stdClass();\r
+               $swfFilter->name = __('Animation SWF') . ' (*.swf)';\r
+               $swfFilter->extensions = '*.swf';\r
+\r
+               $basketFilter = new stdClass();\r
+               $basketFilter->name = __('Liste de produits') . ' (*.xml)';\r
+               $basketFilter->extensions = '*.xml';\r
+\r
+               $imageFilter = new stdClass();\r
+               $imageFilter->name = __('Images') . ' (*.jpg, *.png)';\r
+               $imageFilter->extensions = '*.jpg;*.jpeg;*.png';\r
+\r
+               $epsFilter = new stdClass();\r
+               $epsFilter->name = __('Fichier vectoriel') . ' (*.ai, *.eps)';\r
+               $epsFilter->extensions = '*.ai;*.eps';\r
+\r
+               $this->fields['displayChaptersIcon'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Affiche l'icône du sommaire"), 'grade' => 1);\r
+               $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);\r
+               $this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher le sommaire au chargement de la publication"), 'grade' => 3);\r
+               $this->fields['chaptersColumns'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Afficher le sommaire sur x colonne(s)'), 'grade' => 3);\r
+               $this->fields['chaptersColMaxWidth'] = array('type' => 'integer', 'default' => 300, 'editable' => true, 'label' => __("Largeur max d'une colonne"), 'grade' => 3);\r
+               $this->fields['externalChapters'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
+                       'label' => __('Sommaire personnalisé'), 'grade' => 3, 'fileFilter' => $swfFilter, 'hint' => __('Laisser vide pour utiliser le sommaire classique'));\r
+               $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'));\r
+               $this->fields['ongletsXML'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __('XML de configuration des onglets'), 'grade' => 5);\r
+               $this->fields['ongletsSWF'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
+                       'label' => __('SWF pour onglets personnalisés'), 'grade' => 3, 'fileFilter' => $swfFilter);\r
+               $this->fields['chaptersPosition'] = array('type' => 'combo', 'default' => 'center', 'editable' => true, 'label' => __("Position du sommaire"),\r
+                       'datas' => array(__('Centré') => 'center',\r
+                               __("Aligné sur l'icône") => 'chaptersIcon'));\r
+\r
+               $this->forms['sommaire'] = array('label' => __('Sommaire'),\r
+                       'fieldsnames' => array('displayChaptersIcon', 'displayChaptersAtStart', 'chaptersPage', 'chaptersPosition', '|', 'chaptersColMaxWidth', 'chaptersColumns', '|', 'externalChapters', 'fullExternalChapters', '|', 'ongletsSWF', 'ongletsXML'));\r
+               // .\r
+               $this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Liens visibles en permanence'), 'grade' => 3);\r
+               $this->fields['linkBlinkTime'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __("Temps d'apparition du lien à l'ouverture de la page (en secondes)"));\r
+               $this->forms['multimedia'] = array('label' => __('Liens et multimédia'),\r
+                       'fieldsnames' => array('permanentLinks', 'linkBlinkTime'));\r
+               // .\r
+               $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
+                       'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $swfFilter);\r
+\r
+               $this->forms['archives'] = array('label' => __('Archives'),\r
+                       'fieldsnames' => array('externalArchives'));\r
+               // .\r
+               $this->fields['basket'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Panier activé'), 'grade' => 5);\r
+               $this->fields['basketManager'] = array('type' => 'combo', 'default' => 'classic', 'editable' => true, 'label' => __("Manager de panier"),\r
+                       'datas' => array(__('Classic') => 'com.fluidbook.player.basket.BasketManager',\r
+                               __('Essilor') => 'com.fluidbook.player.basket.custom.essilor.EssilorBasketManager',\r
+                               __('Essilor Recap') => 'com.fluidbook.player.basket.cursor.essilorrecap.EssilorRecapBasketManager'), 'grade' => 5);\r
+               $this->fields['basketReferences'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
+                       'label' => __('Références produits'), 'grade' => 5, 'fileFilter' => $basketFilter, 'hint' => __('Fichier contenant les références produits'), 'dir' => 'commerce');\r
+               $this->fields['basketImages'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
+                       'label' => __('Images des produits'), 'grade' => 5, 'fileFilter' => $imageFilter, 'hint' => __('Chaque image doit avoir pour nom exact la référence du produit'),\r
+                       'multiple' => true, 'dir' => 'commerce');\r
+               $this->fields['basketPDFBackground'] = array('type' => 'freefile', 'default' => '', 'editable' => true,\r
+                       'label' => __('Fond du PDF (bon de commande)'), 'grade' => 5, 'fileFilter' => $epsFilter, 'hint' => __('Fond du bon de commande'), 'dir' => 'commerce');\r
+\r
+               $this->forms['basket'] = array('label' => __('Panier'),\r
+                       'fieldsnames' => array('basket', 'basketManager', 'basketReferences', 'basketImages', 'basketPDFBackground'));\r
+               // .\r
+               $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)');\r
+               $this->forms['offline'] = array('label' => __('Version offline'),\r
+                       'fieldsnames' => array('offlineLink'));\r
+\r
+               $this->fields['widget'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Générer le widget'), 'grade' => 5);\r
+               $this->fields['widgetCover'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher la couverture') . ')', 'grade' => 5);\r
+               $this->fields['widgetSize'] = array('type' => 'integer', 'default' => 200, 'editable' => true, 'label' => __('Optimiser pour une hauteur de (en pixels)'), 'grade' => 5);\r
+               $this->fields['widgetQuality'] = array('type' => 'integer', 'default' => 85, 'min' => 0, 'max' => 100, 'editable' => true, 'label' => __('Qualité JPEG'), 'grade' => 5);\r
+               $this->fields['widgetStart'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('Page de début'), 'grade' => 5);\r
+               $this->fields['widgetEnd'] = array('type' => 'integer', 'default' => 8, 'editable' => true, 'label' => __('Page de fin'), 'grade' => 5);\r
+               $this->forms['widget'] = array('label' => __('Widget') . ' (' . __('Mini Fluidbook') . ')',\r
+                       'fieldsnames' => array('widget', 'widgetCover', 'widgetSize', 'widgetQuality', 'widgetStart', 'widgetEnd'));\r
+\r
+               // Paramètres non implémentés\r
+               /*\r
+                 // $this->fields['attachPDFInEmail'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Joindre le fichier PDF de la page en cours à l'email"),  'grade' => 4);\r
+                 // $this->fields['attachmentName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom de la pièce jointe'),  'grade' => 4);\r
+                 // $this->fields['addThis'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Identifiant addThis"), 'grade' => 4);\r
+                 // $this->fields['addThisOptions'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Paramètres addThis"), 'grade' => 4);\r
+                 $this->fields['reading_dir'] = array('type' => 'combo',\r
+                 'datas' => array(__('De la gauche vers la droite') => 'ltr', __('De la droite vers la gauche') => 'rtl'),\r
+                 'default' => 'ltr', 'editable' => true, 'label' => __('Sens de lecture'), 'grade' => 3);\r
+                 $this->fields['stats_score'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Affiche le score dans les statistiques'), 'grade' => 3);\r
+                 $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");\r
+                 $this->fields['chaptersPosition'] = array('type' => 'combo',\r
+                 'datas' => array(__('Centré') => 'center' , __("Calé sur l'icône") => 'icon', __('Calé sur la gauche') => 'left'),\r
+                 'default' => 'center', 'editable' => true, 'label' => __('Positionnement du sommaire'), 'grade' => 4);\r
+                 $this->fields['playVideoAtStart'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Jouer les vidéos à l'affichage de la page"),  'grade' => 4);\r
+                 $this->fields['statsWeborama'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Statistiques Weborama'), 'size' => 10,  'grade' => 1);\r
+                 $this->fields['zoomAreas'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Activer le zoom sur les liens ''Plus d'infos''"),  'grade' => 4);\r
+                 // .\r
+                 $this->fields['extraSubMenu'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Sous-menu supplémentaire'),  'grade' => 4);\r
+                 $this->fields['extraSMsizeX'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Largeur du sous-menu supplémentaire'),  'grade' => 4);\r
+                 $this->fields['extraSMsizeY'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Hauteur du sous-menu supplémentaire'),  'grade' => 4);\r
+                 $this->fields['extraName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom du sous-menu supplémentaire'),  'grade' => 4);\r
+                 $this->fields['extraFileName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du sous-menu supplémentaire'),  'grade' => 4);\r
+                 // .\r
+                 $this->fields['backClipName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Fichier du fond animé'),  'grade' => 4);\r
+                 $this->fields['extraXSpace'] = array('type' => 'integer', 'default' => '0', 'editable' => false, 'label' => __('Largeur du décalage des flèches'),  'grade' => 4); */\r
+       }\r
 \r
 }\r
 \r