From 1efd9de4529f5423ebc51ddd06b4707349e358d4 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Wed, 12 Sep 2012 15:52:21 +0000 Subject: [PATCH] --- fluidbook/compile/_ico/phonegap.png | Bin 0 -> 21181 bytes inc/ws/Metier/class.ws.book.parametres.php | 3 +- .../packager/class.ws.packager.phonegap.php | 157 ++++++++++++++++-- 3 files changed, 143 insertions(+), 17 deletions(-) create mode 100644 fluidbook/compile/_ico/phonegap.png diff --git a/fluidbook/compile/_ico/phonegap.png b/fluidbook/compile/_ico/phonegap.png new file mode 100644 index 0000000000000000000000000000000000000000..5af011ce4c55f0a94e718dfb4bc20fe70279e95c GIT binary patch literal 21181 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 literal 0 HcmV?d00001 diff --git a/inc/ws/Metier/class.ws.book.parametres.php b/inc/ws/Metier/class.ws.book.parametres.php index 780745500..3c1ec8e7b 100644 --- a/inc/ws/Metier/class.ws.book.parametres.php +++ b/inc/ws/Metier/class.ws.book.parametres.php @@ -192,8 +192,9 @@ class wsBookParametres extends wsParametres { $this->fields['linkMultimediaQuality'] = array('type' => 'float', 'default' => 1.0, 'editable' => true, 'label' => __('Qualité de rendu des animations'), 'grade' => 5); $this->fields['linkCornerSize'] = array('type' => 'integer', 'default' => '10', 'editable' => true, 'label' => __('Taille des liens de coins de page'), 'hint' => __("Pourcentage de la largeur de la page")); $this->fields['videoReset'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Réinitialiser les vidéos après la lecture'), 'grade' => 3); + $this->fields['videoBigPlay'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Afficher le gros bouton Play'), 'grade' => 3); $this->forms['multimedia'] = array('label' => __('Liens et multimédia'), - 'fieldsnames' => array('permanentLinks', 'linkBlinkTime', 'customLinkClass', 'linkTooltipManager', 'linkCornerSize', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkMultimediaPerformanceMode', 'linkMultimediaQuality', '|', 'videoReset')); + 'fieldsnames' => array('permanentLinks', 'linkBlinkTime', 'customLinkClass', 'linkTooltipManager', 'linkCornerSize', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkMultimediaPerformanceMode', 'linkMultimediaQuality', '|', 'videoReset', 'videoBigPlay')); //. $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $swfFilter); diff --git a/inc/ws/Util/packager/class.ws.packager.phonegap.php b/inc/ws/Util/packager/class.ws.packager.phonegap.php index 80cb045df..0bf225d0c 100644 --- a/inc/ws/Util/packager/class.ws.packager.phonegap.php +++ b/inc/ws/Util/packager/class.ws.packager.phonegap.php @@ -2,6 +2,8 @@ class wsPackagerPhonegap extends wsPackager { + protected $splashdone = array(); + public function __construct($book_id, $vdir = null, $whole = true) { parent::__construct($book_id, $vdir, $whole); $this->version = 'phonegap'; @@ -19,27 +21,106 @@ class wsPackagerPhonegap extends wsPackager { unlink($this->vdir . '/www/cache.appcache'); rmdir($this->vdir . '/data'); - $this->makeCompileScripts(); + $this->makeConfig(); } - protected function makeCompileScripts() { + protected function makeConfig() { + $config = simplexml_load_string(''); + $ns = $config->getNamespaces(); + $config->addChild('name', $this->book->parametres->title); + $config->addChild('description'); + $author = $config->addChild('author', 'Fluidbook'); + $author->addAttribute('href', 'http://www.fluidbook.com'); + $author->addAttribute('email', 'contact@fluidbook.com'); + $preferences = array('phonegap-version' => '2.0.0', + 'target-device' => 'universal', + 'fullscreen' => 'false', + 'webviewbounce' => 'false', + 'prerendered-icon' => 'true', + 'stay-in-webview' => 'false', + 'ios-statusbarstyle' => 'black-opaque', + 'exit-on-suspend' => 'false'); + + foreach ($preferences as $k => $v) { + $p = $config->addChild('preference'); + $p->addAttribute('name', $k); + $p->addAttribute('value', $v); + } + + $access = $config->addChild('access'); + $access->addAttribute('origin', '*'); + + $icon = $config->addChild('icon'); + $icon->addAttribute('src', 'icon.png'); + if ($this->theme->parametres->favicon != '') { + copy($this->themeRoot . '/' . $this->theme->parametres->favicon, $this->vdir . '/icon.png'); + } else { + copy(WS_COMPILE_ASSETS . '/_ico/phonegap.png', $this->vdir . '/icon.png'); + } + + + $ios = array('320x480', '640x960', '1024x768', '768x1024'); + $android = array('ldpi' => '320x480', 'mdpi' => '640x960', 'hdpi' => '1024x768', 'xhdpi' => '1280x1920'); + + if (!file_exists($this->vdir . '/splash')) { + mkdir($this->vdir . '/splash'); + } + + foreach ($ios as $size) { + list($width, $height) = explode('x', $size); + $this->_makeSplash($width, $height); - $projectPath = '~/Documents/PhonegapApps/Fluidbook_' . $this->book_id; - $projectName = 'Fluidbook_' . $this->book_id; + $s = $config->addChild('splash'); + $s->addAttribute('src', 'splash/' . $size . '.png', $ns['gap']); + $s->addAttribute('width', $width); + $s->addAttribute('height', $height); + } - $create = '#! /bin/sh' . "\n"; - $create .='DIR="$( cd "$( dirname "$0" )" && pwd )"' . "\n"; - $create .='rm -rf ' . $projectPath . "\n"; - $create .= '~/Documents/Cordova/bin/create ' . $projectPath . ' com.fluidbook.ios.' . $this->book_id . ' ' . $projectName . "\n"; - $create .='cp -R $DIR/www ' . $projectPath . "\n"; - $create .='open ' . $projectPath . "\n"; - file_put_contents($this->vdir . '/create', $create); - chmod($this->vdir . '/create', 0755); + foreach ($android as $density => $size) { + list($width, $height) = explode('x', $size); + $this->_makeSplash($width, $height); - $build = '#! /bin/sh' . "\n"; - $build.=$projectPath . '/cordova/debug' . "\n"; - file_put_contents($this->vdir . '/build', $build); - chmod($this->vdir . '/build', 0755); + $s = $config->addChild('splash', null, $ns['gap']); + $s->addAttribute('src', 'splash/' . $size . '.png'); + $s->addAttribute('platform', 'android', $ns['gap']); + $s->addAttribute('density', $density, $ns['gap']); + } + copy($this->vdir . '/splash/768x1024.png', $this->vdir . '/splash.png'); + file_put_contents($this->vdir . '/config.xml', $config->asXML()); + } + + protected function _makeSplash($width, $height) { + if (isset($this->splashdone[$width . 'x' . $height])) { + return; + } + + $im = imagecreatetruecolor($width, $height); + // Draw Background + $back = imagecolorhexallocate($this->theme->parametres->backgroundColor); + imagefill($im, 0, 0, $back); + // Draw image + $this->_drawBackImage($im, $width, $height); + + imagepng($im, $this->vdir . '/splash/' . $width . 'x' . $height . '.png'); + + $this->splashdone[$width . 'x' . $height] = true; + } + + protected function _drawBackImage($im, $width, $height) { + if ($this->theme->parametres->backgroundImage == '') { + return; + } + $backimage = $this->themeRoot . '/' . $this->theme->parametres->backgroundImage; + if (!file_exists($backimage)) { + return; + } + $im2 = imagecreatefromfile($backimage); + $w2 = imagesx($im2); + $h2 = imagesy($im2); + + imagecopyresampled($im, $im2, 0, 0, 0, 0, $width, $height, $w2, $h2); + + imagedestroy($im2); } public function makePackage($zip) { @@ -51,4 +132,48 @@ class wsPackagerPhonegap extends wsPackager { } +function imagecolorhexallocate($im, $hex, $alpha = 0) { + $hex = trim($hex, '#'); + if (strlen($hex) < 6) { + $diff = 6 - strlen($hex); + $hex = str_repeat('0', $diff) . $hex; + } + if (!preg_match("|[0-9a-fA-F]{6}|i", $hex)) { + return false; + } + + for ($i = 0; $i < 3; $i++) { + $temp = substr($hex, 2 * $i, 2); + $rgb[$i] = 16 * hexdec(substr($temp, 0, 1)) + hexdec(substr($temp, 1, 1)); + } + + if (!$alpha) { + return imagecolorallocate($im, $rgb[0], $rgb[1], $rgb[2]); + } else { + return imagecolorallocatealpha($im, $rgb[0], $rgb[1], $rgb[2], $alpha); + } +} + +function imagecreatefromfile($file) { + if (!file_exists($file)) { + return false; + } + + $dim = getimagesize($file); + switch ($dim[2]) { + case 1: + $format = "gif"; + break; + case 2: + $format = "jpeg"; + break; + case 3: + $format = "png"; + break; + default:; + } // switch + $function = "imagecreatefrom" . $format; + return $function($file); +} + ?> -- 2.39.5