]> _ Git - cubeextranet.git/commitdiff
(no commit message)
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Sat, 9 Apr 2011 15:56:23 +0000 (15:56 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Sat, 9 Apr 2011 15:56:23 +0000 (15:56 +0000)
inc/ws/Controlleur/class.ws.url.php
inc/ws/Util/class.ws.swf2html.php
inc/ws/Util/packager/_common.php
inc/ws/Util/packager/class.ws.packager.html5.php [new file with mode: 0644]
inc/ws/Util/packager/class.ws.packager.php

index ca43df93a4ed0da14ee6a224f4644e128d3fe64d..61986ff867b08b2a194eed00afdeaafc60a33826 100644 (file)
@@ -145,6 +145,9 @@ class wsUrl {
                $versions['win-ins'] = array('title' => __('Version offline') . ' - ' . __('Installeur Auto-executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png'));\r
                $versions['mac-exe'] = array('title' => __('Version offline') . ' - ' . __('ExĂ©cutable Mac OS X'), 'icon' => cubeMedia::image(IMG . '/macos.png'));\r
                $versions['win-cd'] = array('title' => __('Version offline') . ' - ' . __('CD-ROM') . ' / ' . __('ClĂ© USB'), 'icon' => cubeMedia::silk('cd.png'));\r
+               if (wsDroits::admin()) {\r
+                       $versions['html5'] = array('title' => __('Version HTML5 (&alpha;)'), 'icon' => cubeMedia::silk('page_white_world.png'));\r
+               }\r
 \r
                $res = '<div class="contextMenu downbookContextMenu" id="' . $id . '">';\r
                $res .= '<ul>';\r
@@ -587,7 +590,7 @@ html{height:100%}' . "\n";
                global $core;\r
                commonDroits::min(5);\r
 \r
-               $dao=new wsDAODocument($core->con);\r
+               $dao = new wsDAODocument($core->con);\r
                header('Content-type: text/plain');\r
                ob_clean();\r
                echo $dao->putLinksFromCSV($args[1]);\r
index f7b67bc82b007592bf4e94c41d150e74513d6a42..f2ff41eda168fd980abf161292538eda0137a0a5 100644 (file)
@@ -127,6 +127,15 @@ class wsSWF2HTMLParagraph extends wsSWF2HTMLTag {
                $this->matrix = new wsSWF2HTMLMatrix();\r
        }\r
 \r
+       public function __get($varname)\r
+       {\r
+               if ($varname == 'left') {\r
+                       return $this->matrix->tx;\r
+               } elseif ($varname == 'top') {\r
+                       return $this->matrix->ty;\r
+               }\r
+       }\r
+\r
        public function addLine($line)\r
        {\r
                $line = parent::addLine($line);\r
index e5bca614a58b4da94cdbb729636dbb3444bf3a95..17aca9b37dcab19e2ddafe63f4e05c402cd55c9b 100644 (file)
@@ -1,6 +1,7 @@
 <?php\r
 $__autoload['wsPackager'] = dirname(__FILE__) . '/class.ws.packager.php';\r
 $__autoload['wsPackagerHTML'] = dirname(__FILE__) . '/class.ws.packager.html.php';\r
+$__autoload['wsPackagerHTML5'] = dirname(__FILE__) . '/class.ws.packager.html5.php';\r
 $__autoload['wsPackagerWinEXE'] = dirname(__FILE__) . '/class.ws.packager.win.exe.php';\r
 $__autoload['wsPackagerWinCD'] = dirname(__FILE__) . '/class.ws.packager.win.cd.php';\r
 $__autoload['wsPackagerMacEXE'] = dirname(__FILE__) . '/class.ws.packager.mac.exe.php';\r
diff --git a/inc/ws/Util/packager/class.ws.packager.html5.php b/inc/ws/Util/packager/class.ws.packager.html5.php
new file mode 100644 (file)
index 0000000..4459250
--- /dev/null
@@ -0,0 +1,137 @@
+<?php\r
+class wsPackagerHTML5 extends wsPackager {\r
+       protected $layouts = array();\r
+\r
+       protected $cssSize = array();\r
+       protected $cssColor = array();\r
+       protected $cssOpacity = array();\r
+       protected $cssFont = array();\r
+\r
+       protected $div = array();\r
+       protected $css = array();\r
+\r
+       public function __construct($book_id)\r
+       {\r
+               parent::__construct($book_id);\r
+               $this->version = 'html5';\r
+       }\r
+\r
+       protected function preparePackage()\r
+       {\r
+               parent::preparePackage();\r
+\r
+               foreach($this->pages as $page => $infos) {\r
+               fb($infos);\r
+                       $file = WS_DOCS . '/' . $infos['document_id'] . '/html/' . $infos['document_page'] . '.obj';\r
+                       fb($file);\r
+                       if (file_exists($file)) {\r
+                               $this->layouts[$page] = unserialize(file_get_contents($file));\r
+                       }\r
+               }\r
+\r
+               $this->createHTML();\r
+       }\r
+\r
+       protected function createHTML()\r
+       {\r
+               foreach($this->layouts as $page => $infos) {\r
+                       $this->div[$page] = array();\r
+                       foreach($infos->tags as $tag) {\r
+                               if ($tag instanceof wsSWF2HTMLFont) {\r
+                                       $this->addFont($tag, $infos);\r
+                               } else if ($tag instanceof wsSWF2HTMLParagraph) {\r
+                                       $this->addParagraph($tag, $this->div[$page]);\r
+                               }\r
+                       }\r
+               }\r
+               file_put_contents($this->vdir . 'style.css', implode("\n", $this->css));\r
+               foreach($this->div as $n => $page) {\r
+                       file_put_contents($this->vdir . 'p' . $n . '.html', $this->writePage($page));\r
+               }\r
+       }\r
+\r
+       protected function writePage($page)\r
+       {\r
+               $res = '';\r
+               foreach($page as $div) {\r
+                       $res .= $this->writeDiv($div);\r
+               }\r
+               return $res;\r
+       }\r
+\r
+       protected function writeDiv($div)\r
+       {\r
+               $res = '<div style="left:' . $div['left'] . 'px;top:' . $div['top'] . 'px;">';\r
+               foreach($div['span'] as $span) {\r
+                       $res .= $this->writeSpan($span);\r
+               }\r
+               $res .= '</div>';\r
+               return $res;\r
+       }\r
+\r
+       protected function writeSpan($span)\r
+       {\r
+               $res = '<span ';\r
+               $res .= 'style="left:' . $span['left'] . 'px;top:' . $span['top'] . '" ';\r
+               $res .= 'class="c' . $span['color'] . ' s' . $span['size'] . ' f' . $span['font'] . '"';\r
+               $res .= '>';\r
+               $res .= htmlentities($span['text']);\r
+               $res .= '</span>';\r
+               return $res;\r
+       }\r
+\r
+       protected function addFont($tag)\r
+       {\r
+       }\r
+\r
+       protected function addParagraph($tag, $div)\r
+       {\r
+               $d = array('span' => array(), 'left' => $tag->left, 'right' => $tag->right);\r
+               foreach($tag->textes as $text) {\r
+                       $d['span'][] = $this->addText($text);\r
+               }\r
+               $div[] = $d;\r
+       }\r
+\r
+       protected function addCSSText($text)\r
+       {\r
+               return array('text' => $text->text,\r
+                       'color' => $this->getCSSColor($text->color),\r
+                       'size' => $this->getCSSSize($text->size),\r
+                       'font' => $this->getCSSFont($text->font),\r
+                       'left' => $text->left,\r
+                       'right' => $text->right);\r
+       }\r
+\r
+       protected function getCSSSize($size)\r
+       {\r
+               return $this->getIndex($size, $this->cssSize);\r
+       }\r
+\r
+       protected function getCSSFont($font, $page)\r
+       {\r
+               $fontname = $page->fonts[$font]->name;\r
+               return $this->getIndex($fontname, $this->cssFont);\r
+       }\r
+\r
+       protected function getCSSColor($color)\r
+       {\r
+               return $this->getIndex($color, $this->cssColor);\r
+       }\r
+\r
+       protected function getIndex($value, $tab)\r
+       {\r
+               if (isset($tab[$value])) {\r
+                       return $tab[$value];\r
+               }\r
+               $res = count($tab);\r
+               $tab[$value] = $res;\r
+               return $res;\r
+       }\r
+\r
+       public function __destruct(){\r
+\r
+       }\r
+}\r
+\r
+?>
\ No newline at end of file
index 7bcd01c9027c4651ca5c72d8391a4e041a4f0915..965fa3cb44c6ab9883c424ac0e3fd52226d58c92 100644 (file)
@@ -19,6 +19,8 @@ class wsPackager {
                        $packager = new wsPackagerWinINST($book_id);\r
                } elseif ($version == 'mac-exe') {\r
                        $packager = new wsPackagerMacEXE($book_id);\r
+               } elseif ($version == 'html5') {\r
+                       $packager = new wsPackagerHTML5($book_id);\r
                }\r
 \r
                return $packager->makePackage();\r