define('GA', 'UA-4339912-4');\r
define('TITLE', 'Extranet Cubedesigners');\r
}\r
+\r
+define('WS_STATS','http://stats.fluidbook.com/');\r
+\r
define('MINIMIZE_JS', false);\r
define('WORKER_PREFIX', 'worker.');\r
\r
$dao->supprime($path);\r
$x->addContent('listeFichiers', extranetUrl::listeFichiers());\r
}\r
-\r
- public static function supprimeBook($args, &$x)\r
- {\r
- global $core;\r
- $dao = new wsDAOBook($core->con);\r
- $dao->supprime($args[1]);\r
- $x->addContent('listeBooks', wsUrl::listeBooks());\r
- }\r
-\r
- public static function searchBooks($args, &$x)\r
- {\r
- $x->addContent('listeBooks', wsUrl::listeBooks());\r
- }\r
-\r
- public static function pageBooks($args, &$x)\r
- {\r
- self::page('books', $args[1]);\r
- $x->addContent('listeBooks', wsUrl::listeBooks());\r
- }\r
-\r
- public static function parPageBooks($args, &$x)\r
- {\r
- self::parPage('books', $_POST['par_page']);\r
- $x->addContent('listeBooks', wsUrl::listeBooks());\r
- }\r
-\r
- public static function sortBooks($args, &$x)\r
- {\r
- self::sort('books', $args[1]);\r
- $x->addContent('listeBooks', wsUrl::listeBooks());\r
- }\r
-\r
- public static function filtreBooks($args, &$x)\r
- {\r
- if (isset($args[1]) && $args[1] == 'efface') {\r
- self::filtre('books');\r
- $x->addReload();\r
- return;\r
- } else {\r
- self::filtre('books', $_POST);\r
- $x->addContent('listeBooks', wsUrl::listeBooks());\r
- }\r
- }\r
}\r
\r
?>
\ No newline at end of file
$db->books->status('integer', 0, false);\r
$db->books->date_status('integer', 0, false);\r
$db->books->parametres('text', 0, false);\r
+ $db->books->chapters('text',0,false);\r
$db->books->date('integer', 0, false);\r
// Clés\r
$db->books->primary('pk_books', 'book_id');\r
require_once(dirname(__FILE__) . '/ws/Controlleur/_common.php');\r
require_once(dirname(__FILE__) . '/ws/DAO/_common.php');\r
$GLOBALS['ajaxClasses'][] = 'extranetAjax';\r
+$GLOBALS['ajaxClasses'][] = 'wsAjax';\r
// Instantiation de la classe de contrôle\r
$core = new extranetCore();\r
// Définition des handlers des urls\r
<?php\r
// Workshop\r
$__autoload['wsFlash'] = dirname(__FILE__) . '/class.ws.flash.php';\r
+$__autoload['wsAjax'] = dirname(__FILE__) . '/class.ws.ajax.php';\r
$__autoload['wsUrl'] = dirname(__FILE__) . '/class.ws.url.php';\r
$__autoload['wsDroits'] = dirname(__FILE__) . '/class.ws.droits.php';\r
$__autoload['wsConversionSession'] = dirname(__FILE__) . '/class.ws.conversion.session.php';\r
-\r
+$__autoload['wsStats']=dirname(__FILE__).'/class.ws.stats.php';\r
?>
\ No newline at end of file
$p = $this->xml->addChild('pages');\r
$docs = array();\r
foreach($pages as $page => $info) {\r
+ $file = ROOT . '/docs/' . $info['document_id'] . '/p' . $info['document_page'] . '.jpg';\r
+ $dim = getimagesize($file);\r
$pa = $p->addChild('page');\r
$pa->addAttribute('page', $page);\r
$pa->addAttribute('document_id', $info['document_id']);\r
$pa->addAttribute('document_page', $info['document_page']);\r
+ $pa->addAttribute('width', $dim[0]);\r
+ $pa->addAttribute('height', $dim[1]);\r
$docs[] = $info['document_id'];\r
}\r
$docs = array_unique($docs);\r
} else {\r
$right = '-';\r
}\r
- $t->addAttribute('right', rand(0, 1)?'w':'r'/*$right*/);\r
+ $t->addAttribute('right', $right);\r
$t->addAttribute('books', $theme->nbBooks);\r
}\r
}\r
}\r
}\r
\r
+ public function setChapters()\r
+ {\r
+ global $core;\r
+ $dao = new wsDAOBook($core->con);\r
+ $dao->setChapters($this->args['book_id'], $this->args['chapters']);\r
+ }\r
+\r
+ public function getChapters()\r
+ {\r
+ global $core;\r
+ $dao = new wsDAOBook($core->con);\r
+ $book = $dao->selectById($this->args['book_id']);\r
+ $this->xml->addChild('chapters', json_encode($book->chapters));\r
+ }\r
+\r
+ public function formatSize($val)\r
+ {\r
+ $str = files::size($val);\r
+ $str = str_replace('.', __(','), $str);\r
+ $str = str_replace('B', __('o'), $str);\r
+ return $str;\r
+ }\r
+\r
public function getBookInfos()\r
{\r
global $core;\r
$dao = new wsDAOBook($core->con);\r
$book = $dao->selectById($this->args['book_id']);\r
- $res = 'Nombre de pages :' . "\n";\r
- $res .= '76 pages' . "\n";\r
+ $pages = $dao->getPagesOfBook($this->args['book_id']);\r
+ $daoDoc = new wsDAODocument($core->con);\r
+\r
+ $nb_pages = count($pages);\r
+ $this->xml->addChild('pages', $nb_pages);\r
+\r
+ $total_size = 0;\r
+ foreach($pages as $page => $info) {\r
+ $file = ROOT . '/docs/' . $info['document_id'] . '/p' . $info['document_page'] . '.swf';\r
+ $total_size += filesize($file);\r
+ }\r
+ $average_size = $total_size / $nb_pages;\r
+\r
+ $total = self::formatSize($total_size);\r
+ $average = self::formatSize($average_size);\r
+\r
+ $firstDoc = $daoDoc->selectById($pages[1]['document_id']);\r
+ $size = $firstDoc->generalInfos['size'];\r
+\r
+ $this->xml->addChild('width', $size[0]);\r
+ $this->xml->addChild('height', $size[1]);\r
+\r
+ $res = __('Nombre de pages') . ' : ' . "\n";\r
+ $res .= $nb_pages . ' ' . __('pages') . "\n";\r
$res .= "\n";\r
- $res .= 'Dimensions :' . "\n";\r
- $res .= '651.97 x 822.05 pt' . "\n";\r
+ $res .= __('Dimensions') . ' : ' . "\n";\r
+ $res .= round($size[0], 3) . ' x ' . round($size[1], 3) . ' pts' . "\n";\r
$res .= "\n";\r
- $res .= 'Taille totale des pages : ' . "\n";\r
- $res .= '7898 Ko' . "\n";\r
+ $res .= __('Taille totale des pages') . ' : ' . "\n";\r
+ $res .= $total . "\n";\r
$res .= "\n";\r
- $res .= 'Taille moyenne des pages :' . "\n";\r
- $res .= '198 Ko' . "\n";\r
+ $res .= __('Taille moyenne des pages') . ' : ' . "\n";\r
+ $res .= $average . "\n";\r
$res .= "\n";\r
- $res .= 'Taille du PDF:' . "\n";\r
+ /*$res .= __('Taille du PDF') . ' : ' . "\n";\r
$res .= '7898 Ko' . "\n";\r
$res .= "\n";\r
- $res .= 'Qualité de conversion :' . "\n";\r
- $res .= '150dpi (qualité 85%)' . "\n";\r
+ $res .= __('Qualité de conversion') . ' : ' . "\n";\r
+ $res .= '150dpi (qualité 85%)' . "\n";*/\r
$this->xml->addChild('infos', $res);\r
}\r
}\r
$settings = $core->user->getSettings('books');\r
\r
$shortcuts = array();\r
- $shortcuts[] = '<a href="' . SITE_PATH . 'editbook/new">' . $core->typo->Ajouter(__('Créer une nouvelle publication')) . '</a>';\r
+ $shortcuts[] = '<a class="popupFS" href="' . SITE_PATH . 'editbook/new">' . $core->typo->Ajouter(__('Créer une nouvelle publication')) . '</a>';\r
\r
$filtres = array();\r
$filtres[] = new extranetFiltre(__('Status'), 'status_book', $settings['filtres']);\r
$book->date_status = $r->date_status;\r
$book->date = $r->date;\r
$book->pages = array();\r
+ if ($r->chapters == '') {\r
+ $book->chapters = array();\r
+ } else {\r
+ $book->chapters = json_decode($r->chapters, false);\r
+ }\r
\r
$p = unserialize($r->parametres);\r
if (!$p || $p->isEmpty()) {\r
$book->status = 0;\r
$book->date_status = TIME;\r
$book->date = TIME;\r
+ $book->chapters = json_encode(array());\r
$book->parametres = new wsBookParametres();\r
$book->pages = array();\r
return $book;\r
\r
public function supprime($book_id)\r
{\r
+ $this->con->execute('DELETE FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
return $this->con->execute('DELETE FROM books WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
return '1=1';\r
}\r
}\r
+\r
+ public function setChapters($book_id, $json)\r
+ {\r
+ $c = $this->con->openCursor('books');\r
+ $c->chapters = json_encode(json_decode($json, false));\r
+ $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
+ }\r
}\r
\r
?>
\ No newline at end of file
return $this->singleton($r);\r
}\r
\r
- public function selectInList($documentsId)\r
+ public function selectByBookId($book_id)\r
{\r
- $r = $this->con->select('SELECT * FROM documents WHERE document_id IN(' . implode(',', $documentsId) . ')');\r
+ $r = $this->con->select('SELECT * FROM documents WHERE document_id IN(SELECT document_id FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\')');\r
+ return $this->factory($r);\r
+ }\r
+\r
+ public function selectInList($documents_id)\r
+ {\r
+ $r = $this->con->select('SELECT * FROM documents WHERE document_id IN(' . implode(',', $documents_id) . ')');\r
return $this->factory($r);\r
}\r
\r
if (is_null($this->parent)) {\r
return;\r
}\r
+ $this->fields['title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de la publication"), 'extra' => false, 'grade' => 1);\r
+ $this->forms['important'] = array('label' => __('Description de la publication'),\r
+ 'fieldsnames' => array('title', 'email_title', 'email_body', 'url_link'));\r
// .\r
$this->fields['pages'] = array('type' => 'integer', 'default' => '', 'editable' => false, 'label' => __('Nombre de pages'), 'extra' => false, 'grade' => 0);\r
$this->fields['width'] = array('type' => 'float', 'default' => '', 'editable' => false, 'label' => __('Largeur'), 'extra' => false, 'grade' => 0);\r
$this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Marques-pages'), 'extra' => false, 'grade' => 1);\r
$this->fields['url_link'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __("URL du lien de retour au site"), 'extra' => false, 'grade' => 1);\r
$this->forms['general'] = array('label' => __('Fonctionnalités générales'),\r
- 'fieldsnames' => array('print', 'search', 'bookmark', 'url_link'));\r
+ 'fieldsnames' => array('print', 'search', 'bookmark'));\r
// .\r
$this->fields['first_page_nr'] = array('type' => 'integer', 'default' => 1, 'editable' => true, 'label' => __('La numérotation débute à la page'), 'extra' => false, 'grade' => 1);\r
$this->fields['preload'] = array('type' => 'integer', 'default' => 16, 'editable' => true, 'label' => __('Nombre de pages à précharger'), 'extra' => false, 'grade' => 1);\r
// .\r
$this->fields['fonctions_friend'] = __('Fonction Envoyer à un ami et partage');\r
$this->fields['friend'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Envoyer à un ami'), 'extra' => false, 'grade' => 1);\r
- $this->fields['email_title'] = array('type' => 'text', 'default' => __('%name% vous invite à découvrir %title%'), 'editable' => true, 'label' => __("Titre de l'email"), 'extra' => false, 'grade' => 1);\r
- $this->fields['email_body'] = array('type' => 'textarea', 'default' => __('Veuillez cliquer sur le lien suivant : %link%'), 'editable' => true, 'label' => __("Titre de l'email"), 'extra' => false, 'grade' => 1);\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\""), 'extra' => false, 'grade' => 1);\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\""), 'extra' => false, 'grade' => 1);\r
$this->fields['email_editable'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Permettre au lecteur de modifier le corps de l'email"), 'extra' => false, 'grade' => 1);\r
$this->fields['askAcknowledge'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Demander au destinataire un accusé de réception"), 'extra' => true, 'grade' => 4);\r
$this->fields['attachPDFInEmail'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Joindre le fichier PDF de la page en cours à l'email"), 'extra' => true, 'grade' => 4);\r
$this->fields['attachmentName'] = array('type' => 'text', 'default' => '', 'editable' => false, 'label' => __('Nom de la pièce jointe'), 'extra' => true, 'grade' => 4);\r
$this->fields['addThis'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Identifiant addThis"), 'extra' => false, 'grade' => 4);\r
$this->fields['addThisOptions'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Paramètres addThis"), 'extra' => false, 'grade' => 4);\r
+ $this->forms['share'] = array('label' => __('Fonctions de partage'),\r
+ 'fieldsnames' => array('friend', 'email_editable', 'askAcknowledge', 'attachPDFInEmail', 'attachmentName', 'addThis', 'addThisOptions'));\r
// .\r
$this->fields['fonctions_stats'] = __('Fonction Statistiques');\r
$this->fields['stats'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les statistiques'), 'extra' => false, 'grade' => 1);\r
- $this->fields['statsWeborama'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Statistiques Weborama'), 'extra' => true, 'grade' => 4);\r
+ $this->fields['statsWeborama'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Statistiques Weborama'), 'size' => 10, 'extra' => true, 'grade' => 1);\r
+ $this->fields['googleAnalytics'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __('Code Google Analytics'), 'size' => 10, 'extra' => true, 'grade' => 1);\r
+ $this->forms['stats'] = array('label' => __('Statistiques'),\r
+ 'fieldsnames' => array('stats', 'statsWeborama'));\r
// .\r
$this->fields['fonctions_sommaire'] = __('Fonction Sommaire');\r
$this->fields['displayChaptersAtStart'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher le sommaire au chargement de la publication"), 'extra' => true, 'grade' => 4);\r
'default' => 'center', 'editable' => true, 'label' => __('Positionnement du sommaire'), 'grade' => 4);\r
$this->fields['chaptersCloseOnTop'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Afficher le bouton fermer en haut du sommaire"), 'extra' => true, 'grade' => 4);\r
$this->fields['chaptersMargin'] = array('type' => 'integer', 'default' => 20, 'editable' => false, 'label' => __('Marge latérale du sommaire'), 'extra' => true, 'grade' => 4);\r
+ $this->forms['sommaire'] = array('label' => __('Sommaire'),\r
+ 'fieldsnames' => array('displayChaptersAtStart', 'chaptersPosition'));\r
// .\r
$this->fields['fonctions_liens'] = __('Liens et multimedia');\r
$this->fields['playVideoAtStart'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Jouer les vidéos à l'affichage de la page"), 'extra' => true, 'grade' => 4);\r
$this->fields['permanentLinks'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Liens visibles en permanence'), 'extra' => true, 'grade' => 4);\r
- $this->fields['linksColor'] = array('type' => 'color', 'default' => '', 'editable' => true, 'label' => __('Couleurs des liens (si différente de la couleur indiquée dans le thème)'), 'extra' => true, 'grade' => 4);\r
+ $this->forms['multimedia'] = array('label' => __('Liens et multimédia'),\r
+ 'fieldsnames' => array('playVideoAtStart', 'permanentLinks'));\r
$this->fields['zoomAreas'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __("Activer le zoom sur les liens ''Plus d'infos''"), 'extra' => true, 'grade' => 4);\r
// .\r
$this->fields['fonctions_sousmenu'] = __('Sous-menu supplémentaire');\r
protected $parametres;\r
\r
protected $pages;\r
+\r
+ protected $chapters;\r
}\r
\r
?>
\ No newline at end of file
$this->pages = $this->generalInfos['pages'] = $v;\r
} elseif (preg_match('|Page ([0-9]+) (.*)Box: ([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*)|iu', $line, $m)) {\r
$this->generalInfos['page'][$m[1]][strtolower($m[2])] = new wsBox($m[3], $m[4], $m[5], $m[6]);\r
- } elseif (preg_match('|Page ([0-9]+) size: ([0-9.]*)([\sx]+)([0-9.]*)(.*)|iu', $line, $m)) {\r
- $this->generalInfos['page'][$m[1]]['size'] = array($m[2], $m[4]);\r
+ } elseif (preg_match('|Page ([0-9]+) size: ([0-9.]*) pts x ([0-9.]*) pts|iu', $line, $m)) {\r
+ $this->generalInfos['page'][$m[1]]['size'] = array($m[2], $m[3]);\r
$this->generalInfos['size'][0] = max($this->generalInfos['size'][0], $m[2]);\r
- $this->generalInfos['size'][1] = max($this->generalInfos['size'][1], $m[4]);\r
+ $this->generalInfos['size'][1] = max($this->generalInfos['size'][1], $m[3]);\r
} elseif ($k == 'BookmarkTitle') {\r
$this->bookmarks[$bookmark_id] = array('titre' => str_replace(' ', '', trim($v)));\r
} elseif ($k == 'BookmarkLevel') {\r