From 1a272ea6143fb3ffb0785bb27f08f8c7dd4494bf Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Sat, 9 Jul 2011 18:49:15 +0000 Subject: [PATCH] --- inc/ws/Controlleur/class.ws.url.php | 64 +++++--- inc/ws/Metier/class.ws.parametres.php | 138 +++++++++--------- inc/ws/Metier/class.ws.theme.parametres.php | 2 +- .../Util/packager/class.ws.packager.html5.php | 57 +++++--- 4 files changed, 154 insertions(+), 107 deletions(-) diff --git a/inc/ws/Controlleur/class.ws.url.php b/inc/ws/Controlleur/class.ws.url.php index 1ecd46953..f8fb2f216 100644 --- a/inc/ws/Controlleur/class.ws.url.php +++ b/inc/ws/Controlleur/class.ws.url.php @@ -466,7 +466,7 @@ html{height:100%}' . "\n"; 'video_loop' => __('Video : boucle'), 'video_auto_start' => __('Video : démarrage automatique'), 'video_controls' => __('Vidéo : afficher les contrôles'), 'video_sound_on' => __('Vidéo : activer le son'), 'inline' => __('Vidéo : afficher dans la page'), 'video_width' => __('Vidéo : Largeur du popup'), 'video_height' => __('Vidéo : Hauteur du popup'), 'interactive' => __('Interactivité'), 'video_service' => __('Webvideo : service'), - 'display_area'=>__('Afficher le lien au rollover') + 'display_area' => __('Afficher le lien au rollover') ); $xls = new PHPExcel(); @@ -499,14 +499,14 @@ html{height:100%}' . "\n"; if ($l[$id] == 'false') { $l[$id] = 'physical'; } - }else if($id=='display_area'){ - if($l[$id]==''){ - $l[$id]='1'; + } else if ($id == 'display_area') { + if ($l[$id] == '') { + $l[$id] = '1'; } } $value = $l[$id]; } - + $s->setCellValueByColumnAndRow($i, $j, $value); $s->getStyleByColumnAndRow($i, $j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $i++; @@ -889,21 +889,41 @@ html{height:100%}' . "\n"; $dao->updateFromObject($doc); } - public static function getParamsHelp() { + public static function getParamsHelp($args) { commonDroits::min(5); + global $core; $res = ''; - $theme = new wsThemeParametres(new wsTheme()); - $res .= self::formatHelp($theme->getHelp()); + if (isset($args[1]) && $args[1] != '') { + $dao = new wsDAOBook($core->con); + $b = $dao->selectById($args[1]); - $book = new wsBookParametres(new wsBook()); - $res .= self::formatHelp($book->getHelp()); + $daoTheme = new wsDAOTheme($core->con); + $t = $daoTheme->getThemeOfBook($args[1], true); - header('Content-type: text/plain; charset=UTF-8'); - ob_clean(); - echo $res; - exit; + $book = $b->parametres; + $theme = $t->parametres; + } else { + $theme = new wsThemeParametres(new wsTheme()); + $book = new wsBookParametres(new wsBook()); + } + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res.=commonPage::bh(); + $res.=''; + $res.= self::formatHelp($theme->getHelp()); + $res.='
'; + $res.=commonPage::bf(); + $res.=commonPage::bh(); + $res.=''; + $res.= self::formatHelp($book->getHelp()); + $res.='
'; + $res.=commonPage::bf(); + $res .= commonPage::bMain(); + + return $res; } public static function formatHelp($rubriques) { @@ -911,14 +931,16 @@ html{height:100%}' . "\n"; $res = ''; foreach ($rubriques as $label => $fields) { - $res .= "\n" . '-------------------------' . "\n"; - $res .= $label . "\n"; - $res .= '-------------------------' . "\n\n"; - foreach ($fields as $name => $label) { - if ($label == '|') { - $res .= '--' . "\n"; + $res.='' . $label . ''; + foreach ($fields as $name => $t) { + if (is_string($t) && $t == '|') { + $res .= ''; } else { - $res .= $name . str_repeat("\t", 4 - floor(strlen($name) / 8)) . ': ' . $label . "\n"; + $res.= ''; + foreach ($t as $tt) { + $res.='' . $tt . ''; + } + $res.=''; } } } diff --git a/inc/ws/Metier/class.ws.parametres.php b/inc/ws/Metier/class.ws.parametres.php index 8073e2eac..b3da6c4e9 100644 --- a/inc/ws/Metier/class.ws.parametres.php +++ b/inc/ws/Metier/class.ws.parametres.php @@ -1,94 +1,82 @@ parent = $parent; $this->initFields(); $this->datas = array(); } - public function isEmpty() - { + public function isEmpty() { return count($this->datas) == 0; } - public function setParent($parent) - { + public function setParent($parent) { $this->parent = $parent; $this->initFields(); } - public function __set($varname, $value) - { - if(empty($varname)){ + public function __set($varname, $value) { + if (empty($varname)) { return; } $this->set($varname, $value); } - public function __unset($varname) - { + public function __unset($varname) { $this->set($varname, null); } - public function __get($varname) - { + public function __get($varname) { return $this->get($varname); } - public function __isset($varname) - { + public function __isset($varname) { return $this->_isset($varname); } - public function __sleep() - { + public function __sleep() { return array('datas'); } - public function __wakeup() - { + public function __wakeup() { $this->initFields(); } + // Iterator functions - public function rewind() - { + public function rewind() { reset($this->fields); } - public function current() - { + public function current() { return $this->get($this->key()); } - public function key() - { + public function key() { return key($this->fields); } - public function next() - { + public function next() { return next($this->fields); } - public function valid() - { + public function valid() { return $this->_isset($this->key()); } - protected function initFields() - { + protected function initFields() { $this->fields = array(); $this->forms = array(); } - protected function set($varname, $value) - { + protected function set($varname, $value) { if (!$this->_isset($varname)) { throw new Exception('You are setting an attribute (' . get_class($this) . '::' . $varname . ') which not exists'); } @@ -111,14 +99,16 @@ class wsParametres extends cubeMetier implements Iterator { break; case 'boolean': if (!is_bool($value)) { - $value = ($value == '' || $value == '0' || $value == 'false')?false:true; + $value = ($value == '' || $value == '0' || $value == 'false') ? false : true; } break; case 'color': case 'couleur': $value = cubeMath::fill(ltrim($value, '#'), 6); - fb($value); break; + case 'couleurAlpha': + $value = cubeMath::fill(ltrim($value, '#'), 6); + $value=cubeMath::fill($value,8,'f'); case 'date': if (!is_int($value)) { $value = intval($value); @@ -129,19 +119,17 @@ class wsParametres extends cubeMetier implements Iterator { $value = array_pop($e); break; default: - $value = (string)$value; + $value = (string) $value; break; } // switch $this->datas[$varname] = $value; } - protected function _isset($varname) - { + protected function _isset($varname) { return isset($this->fields[$varname]) && isset($this->fields[$varname]['default']); } - protected function get($varname) - { + protected function get($varname) { if (is_null($varname)) { return false; } @@ -149,20 +137,23 @@ class wsParametres extends cubeMetier implements Iterator { throw new Exception('You are getting an attribute (' . get_class($this) . '::' . $varname . ') which not exists'); } if (!isset($this->datas[$varname]) || is_null($this->datas[$varname])) { - if (substr($this->fields[$varname]['default'], 0, 1) == '$') { - return $this->get(substr($this->fields[$varname]['default'], 1)); - } else { - return $this->fields[$varname]['default']; - } + return $this->getDefault($varname); } return $this->datas[$varname]; } - public function getForm($name) - { + protected function getDefault($varname) { + if (substr($this->fields[$varname]['default'], 0, 1) == '$') { + return $this->get(substr($this->fields[$varname]['default'], 1)); + } else { + return $this->fields[$varname]['default']; + } + } + + public function getForm($name) { $f = $this->forms[$name]; $f['fields'] = array(); - foreach($f['fieldsnames'] as $n) { + foreach ($f['fieldsnames'] as $n) { if ($n == '|') { $f['fields'][] = '|'; } else { @@ -173,60 +164,77 @@ class wsParametres extends cubeMetier implements Iterator { return $f; } - public function getForms() - { + public function getForms() { return array_keys($this->forms); } - public function fromRecord($r) - { + public function fromRecord($r) { $c = array_flip($r->columns()); - foreach($this->fields as $n => $f) { + foreach ($this->fields as $n => $f) { if (isset($c[$n]) && !is_null($r->$n)) { $this->set($n, $r->$n); } } } - public function fromXML($xml) - { - foreach($this->fields as $n => $f) { + public function fromXML($xml) { + foreach ($this->fields as $n => $f) { $xp = $xml->$n; if (!$xp || !count($xp)) { continue; } - foreach($xp as $x) { + foreach ($xp as $x) { $this->set($n, $x); } } } - public function toStandardObject() - { + public function toStandardObject() { $res = new stdClass(); - foreach($this as $k => $v) { + foreach ($this as $k => $v) { $res->$k = $v; } return $res; } - public function getHelp() - { + public function getHelp() { $rubriques = array(); - foreach($this->forms as $name => $form) { + foreach ($this->forms as $name => $form) { $rub = array(); - foreach($form['fieldsnames'] as $f) { + foreach ($form['fieldsnames'] as $f) { if ($f == '|') { $rub[] = '|'; } else { + + $d = self::formatValueForHelp($this->getDefault($f)); + $v = self::formatValueForHelp($this->get($f)); + if ($d != $v) { + $v = '' . $v . ''; + } + + $field = $this->fields[$f]; - $rub[$f] = '(' . $field['type'] . ')' . str_repeat("\t", 2 - floor((strlen($field['type']) + 2) / 12)) . $field['label']; + $t = array(); + $t[] = $f; + $t[] = $field['type']; + $t[] = $field['label']; + $t[] = $d; + $t[] = $v; + $rub[$f] = $t; } } $rubriques[$form['label']] = $rub; } return $rubriques; } + + public static function formatValueForHelp($v) { + if (is_bool($v)) { + $v = ($v) ? 'true' : 'false'; + } + return $v; + } + } ?> \ No newline at end of file diff --git a/inc/ws/Metier/class.ws.theme.parametres.php b/inc/ws/Metier/class.ws.theme.parametres.php index 96c32d076..8143d8e79 100644 --- a/inc/ws/Metier/class.ws.theme.parametres.php +++ b/inc/ws/Metier/class.ws.theme.parametres.php @@ -15,7 +15,7 @@ class wsThemeParametres extends wsParametres { parent::initFields(); /* Navigation */ - $this->fields['couleurA'] = array('type' => 'couleurAlpha', 'default' => '', 'editable' => true, + $this->fields['couleurA'] = array('type' => 'couleurAlpha', 'default' => 'ff000000', 'editable' => true, 'label' => __("Couleur de fond")); $this->fields['arrowsColor'] = array('type' => 'couleur', 'default' => 'ffffff', 'editable' => true, 'label' => __('Couleur des flèches')); diff --git a/inc/ws/Util/packager/class.ws.packager.html5.php b/inc/ws/Util/packager/class.ws.packager.html5.php index 74a897414..01d1beb43 100644 --- a/inc/ws/Util/packager/class.ws.packager.html5.php +++ b/inc/ws/Util/packager/class.ws.packager.html5.php @@ -36,7 +36,7 @@ class wsPackagerHTML5 extends wsPackager { $imagesize = getimagesize(WS_DOCS . '/' . $this->pages[1]['document_id'] . '/html/h72-' . $this->pages[1]['document_page'] . '.jpg'); $this->pdf2htmlRatio = $imagesize[0] / $this->layouts[1]['width']; - $this->scale = 1; + $this->scale = 4; $this->multiply = $this->pdf2htmlRatio * $this->scale; $this->createHTML(); @@ -55,19 +55,18 @@ class wsPackagerHTML5 extends wsPackager { $this->div[$page][] = $this->addLine($line, $document_id); } } - - mkdir($this->vdir . '/style', 0777, true); - mkdir($this->vdir . '/contents', 0777, true); - mkdir($this->vdir . '/images', 0777, true); mkdir($this->vdir . '/data/images', 0777, true); + mkdir($this->vdir . '/data/contents', 0777, true); + mkdir($this->vdir . '/data/background', 0777, true); + mkdir($this->vdir . '/data/style', 0777, true); foreach ($this->div as $n => $page) { - file_put_contents($this->vdir . '/contents/p' . $n . '.html', $this->writePage($page)); + file_put_contents($this->vdir . '/data/contents/p' . $n . '.html', $this->writePage($page)); } $this->writeFonts(); $this->writeImages(); $this->writeTheme(); - file_put_contents($this->vdir . '/style/style.css', $this->writeCSS()); + file_put_contents($this->vdir . '/data/style/style.css', $this->writeCSS()); file_put_contents($this->vdir . '/data/datas.js', $this->writeConfig()); } @@ -83,7 +82,7 @@ class wsPackagerHTML5 extends wsPackager { foreach ($this->cssFont as $font => $index) { list($font, $document_id) = explode('//', $font); foreach ($fext as $ext) { - copy(WS_DOCS . '/' . $document_id . "/fonts/web/" . $font . '.' . $ext, $this->vdir . '/style/F' . $index . '.' . $ext); + copy(WS_DOCS . '/' . $document_id . "/fonts/web/" . $font . '.' . $ext, $this->vdir . '/data/style/F' . $index . '.' . $ext); } } } @@ -95,11 +94,11 @@ class wsPackagerHTML5 extends wsPackager { protected function writeImages() { foreach (self::$resolutions as $r) { - mkdir($this->vdir . '/images/' . $r, 0777); + mkdir($this->vdir . '/data/background/' . $r, 0777); } foreach ($this->pages as $page => $infos) { foreach (self::$resolutions as $r) { - copy(WS_DOCS . '/' . $infos['document_id'] . '/html/h' . $r . '-' . $infos['document_page'] . '.jpg', $this->vdir . '/images/' . $r . '/p' . $page . '.jpg'); + copy(WS_DOCS . '/' . $infos['document_id'] . '/html/h' . $r . '-' . $infos['document_page'] . '.jpg', $this->vdir . '/data/background/' . $r . '/p' . $page . '.jpg'); } } } @@ -190,19 +189,19 @@ class wsPackagerHTML5 extends wsPackager { // General theme - $h = $this->t->parametres->height . 'px'; + $h = $this->book->parametres->height . 'px'; $w2 = ($this->book->parametres->width * 2) . 'px'; $w = $this->book->parametres->width . 'px'; $navTop = ($this->book->parametres->height - 40 - 100) / 2; $res[] = '.portrait #pages,.portrait .doublePage.page,.texts,.page,.background{width:' . $w . ';max-width:' . $w . ';height:' . $h . ';max-height:' . $h . '}'; - $res[] = '.background{background-size:' . $w . 'px ' . $h . 'px;}'; + $res[] = '.background{background-size:' . $w . ' ' . $h . ';}'; $res[] = '.doublePage,#pages{width:' . $w2 . ';max-width:' . $w2 . ';height:' . $h . ';max-height:' . $h . '}'; $res[] = '.page.right{left:' . $w . '}'; // Theme // Background - $body = 'body{'; + $body = '#main{'; $body.='background-color:#' . $this->theme->parametres->backgroundColor . ';'; switch ($this->theme->parametres->repeat) { case wsTheme::REPEAT: @@ -221,7 +220,7 @@ class wsPackagerHTML5 extends wsPackager { } if ($this->theme->parametres->backgroundImage != '') { copy($this->themeRoot . '/' . $this->theme->parametres->backgroundImage, $this->vdir . '/data/images/' . $this->theme->parametres->backgroundImage); - $body.='background-image:url(../data/images/' . $this->theme->parametres->backgroundImage . ');'; + $body.='background-image:url(../images/' . $this->theme->parametres->backgroundImage . ');'; $body.='background-position:'; @@ -260,13 +259,29 @@ class wsPackagerHTML5 extends wsPackager { $header.='background-color:' . self::colorToCSS($this->theme->parametres->menuColor) . ';'; if ($this->theme->parametres->menuImage != '') { copy($this->themeRoot . '/' . $this->theme->parametres->menuImage, $this->vdir . '/data/images/' . $this->theme->parametres->menuImage); - $header.='background-image:url(../data/images/' . $this->theme->parametres->menuImage . ');'; + $header.='background-image:url(../images/' . $this->theme->parametres->menuImage . ');'; $header.='background-repeat:no-repeat;'; $header.='background-size:100% ' . $this->theme->parametres->menuHeight . 'px;'; } $header.='}'; $res[] = $header; + // Logo + $logo = '#logo{'; + + $logo.='}'; + + // Credits + $res[] = '#credits,#credits a{color:' . self::colorToCSS($this->theme->parametres->creditsColor) . ';}'; + + // Arrows + $res[] = '#next,#previous{background-color:' . self::colorToCSS($this->theme->parametres->couleurA) . ';}'; + // Book shadow + $shadowColor = self::colorToCSS($this->theme->parametres->bookShadeColor); + if ($shadowColor != 'transparent') { + $res[] = '#pages{' . $this->writeCSSUA('box-shadow', '0 0 20px ' . $shadowColor) . '}'; + } + // Pages styles foreach ($this->cssColor as $color => $index) { $res[] = '.c' . $index . '{color:#' . $color . '}'; @@ -372,7 +387,7 @@ class wsPackagerHTML5 extends wsPackager { } protected function getCSSSize(&$size) { - $size = $this->normalizeFloatValue($size, 1); + $size = $this->normalizeFloatValue($size*$this->multiply, 3); $sizer = $size; return $this->getIndex($sizer, $this->cssSize); } @@ -486,14 +501,16 @@ class wsPackagerHTML5 extends wsPackager { $components = array('alpha', 'red', 'green', 'blue'); foreach ($components as $k => $name) { - $$name = substr($color, $k * 2, 2); - $$name = intval('0x' . $$name); + $hex = substr($color, $k * 2, 2); + $$name = intval($hex, 16); + fb($hex . '->' . $$name, $name); } - + $alpha/=255; if ($alpha == 0) { return 'transparent'; + } elseif ($alpha == 1) { + return '#' . substr($color, 2, 6); } - $alpha/=256; return 'rgba(' . $red . ',' . $green . ',' . $blue . ',' . $alpha . ')'; } } -- 2.39.5