From 9fd7770eb476fe8ba9db8a95870f6c7a6d613493 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Fri, 19 Apr 2013 14:39:18 +0000 Subject: [PATCH] --- inc/ws/Metier/class.ws.book.parametres.php | 12 ++-- inc/ws/Util/html5/class.ws.html5.links.php | 3 + .../packager/class.ws.packager.phonegap.php | 63 ++++++++++++++++++- inc/ws/Util/packager/class.ws.packager.php | 3 - style/ws/html5-screenshot.css | 1 + 5 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 style/ws/html5-screenshot.css diff --git a/inc/ws/Metier/class.ws.book.parametres.php b/inc/ws/Metier/class.ws.book.parametres.php index b2a03508a..a5a170943 100644 --- a/inc/ws/Metier/class.ws.book.parametres.php +++ b/inc/ws/Metier/class.ws.book.parametres.php @@ -103,7 +103,7 @@ class wsBookParametres extends wsParametres { 'fieldsnames' => array('fullscreen', 'navOrder', 'tooltipTimer', 'preload', 'pages', 'width', 'height')); //. // - + $this->fields['bookmark'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __('Activer les marques-pages')); $this->fields['bookmark_email_title'] = array('type' => 'text', 'default' => '', 'editable' => true, 'label' => __("Titre de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut')); $this->fields['bookmark_email_body'] = array('type' => 'textarea', 'default' => '', 'editable' => true, 'label' => __("Corps de l'email") . ' "' . __('Envoyer à un ami') . '"', 'hint' => __('Laisser vide pour utiliser la valeur par défaut')); @@ -119,12 +119,12 @@ class wsBookParametres extends wsParametres { $this->forms['help'] = array('label' => __('Aide'), 'fieldsnames' => array('help', '|', 'helpStartup', 'helpStartupTime', '|', 'helpBookmarks', '|', 'helpArrowTooltip')); // . - // + // $this->fields['indexAutoScroll'] = array('type' => 'boolean', 'default' => false, 'editable' => true, 'label' => __('Activer le scroll automatique')); $this->forms['index'] = array('label' => __('Index'), 'fieldsnames' => array('indexAutoScroll')); // . - // + // $this->fields['print'] = array('type' => 'boolean', 'default' => true, 'editable' => true, 'label' => __("Activer l'impression")); $this->fields['printMode'] = array('type' => 'combo', 'default' => 'vector', 'editable' => true, 'label' => __("Mode d'impression"), 'datas' => array(__('Bitmap') => 'bitmap', @@ -226,7 +226,7 @@ class wsBookParametres extends wsParametres { $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','ignoreLinksTypes', 'linkTooltipManager', 'linkCornerSize', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkMultimediaPerformanceMode', 'linkMultimediaQuality', '|', 'videoReset', 'videoBigPlay')); + 'fieldsnames' => array('permanentLinks', 'linkBlinkTime', 'customLinkClass', 'ignoreLinksTypes', 'linkTooltipManager', 'linkCornerSize', '|', 'linkTracker', 'linkTrackerRegexp', '|', 'linkMultimediaPerformanceMode', 'linkMultimediaQuality', '|', 'videoReset', 'videoBigPlay')); //. $this->fields['externalArchives'] = array('type' => 'freefile', 'default' => '', 'editable' => true, 'label' => __('Archives'), 'grade' => 3, 'fileFilter' => $swfFilter); @@ -291,9 +291,11 @@ class wsBookParametres extends wsParametres { $this->fields['phonegapId'] = array('type' => 'text', 'default' => 'com.fluidbook.phonegap.$id', 'editable' => true, 'label' => __("Identifiant de l'identifiant"), 'grade' => 5, 'hint' => __('De la forme') . ' com.fluidbook.phonegap.xxxxx'); $this->fields['phonegapVersion'] = array('type' => 'text', 'default' => '1.0.0', 'editable' => true, 'label' => __("Version de l'application"), 'grade' => 5, 'hint' => __('De la forme') . ' 1.2.3'); $this->fields['phonegapPlugins'] = array('type' => 'textarea', 'default' => 'ChildBrowser', 'editable' => true, 'label' => __('Plugins Phonegap'), 'grade' => 5); + $defaultScreenshots = "P,0\nL,2\nL,index"; + $this->fields['appScreenshots'] = array('type' => 'textarea', 'default' => $defaultScreenshots, 'editable' => true, 'label' => 'Générer les screenshots', 'grade' => 5, 'hint' => __('Une ligne par vue à générer de la forme X,Y (X : P(ortrait) ou L(andscape), Y : numéro de page ou vue (1, index))')); $this->forms['phonegap'] = array('label' => __('Applications mobile'), - 'fieldsnames' => array('phonegapId', 'phonegapVersion', 'phonegapPlugins')); + 'fieldsnames' => array('phonegapId', 'phonegapVersion', 'phonegapPlugins', 'appScreenshots')); $this->fields['secureURL'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('URL de sécurisation'), 'grade' => 5, 'hint' => __('URL intérrogé pour vérifier si le visiteur à les droits pour consulter la publication')); $this->fields['secureURLRedirect'] = array('type' => 'text', 'default' => 'http://', 'editable' => true, 'label' => __('Redirection'), 'grade' => 5, 'hint' => __("Si l'authentification échoue, redirection vers cette adresse")); diff --git a/inc/ws/Util/html5/class.ws.html5.links.php b/inc/ws/Util/html5/class.ws.html5.links.php index 7e73949d4..3a840f3c6 100644 --- a/inc/ws/Util/html5/class.ws.html5.links.php +++ b/inc/ws/Util/html5/class.ws.html5.links.php @@ -53,6 +53,9 @@ class wsHTML5Link { return new webVideoPopupLink($id, $init, $compiler); } case 11: + if($init['to']=='fullScreen'){ + return null; + } return new actionLink($id, $init, $compiler); case 12: return new basketLink($id, $init, $compiler); diff --git a/inc/ws/Util/packager/class.ws.packager.phonegap.php b/inc/ws/Util/packager/class.ws.packager.phonegap.php index 41711cb9e..823b9513b 100644 --- a/inc/ws/Util/packager/class.ws.packager.phonegap.php +++ b/inc/ws/Util/packager/class.ws.packager.phonegap.php @@ -37,6 +37,7 @@ class wsPackagerPhonegap extends wsPackager { unlink($vdir . '/widget.html'); unlink($vdir . '/cache.appcache'); + $this->makeScreenshots(); if ($this->makeResources) { if ($os == 'ios') { @@ -48,6 +49,64 @@ class wsPackagerPhonegap extends wsPackager { } } + protected function makeScreenshots() { + $resolutions = array('ipad' => '1024x768', 'iphone3-5' => '960x640', 'iphone-4' => '1136x640'); + + $views = array(); + $s=str_replace("\r","\n", $this->book->parametres->appScreenshots); + $screenshots=explode("\n",$s); + + foreach ($screenshots as $v) { + $v = trim($v); + if ($v == '') { + continue; + } + list($orientation, $view) = explode(',', $v); + + if (is_numeric($view)) { + $url = '/page/' . $view; + } else { + $url = '/' . $view; + } + $views[] = array('orientation' => $orientation, 'url' => $url); + } + + $baseUrl = 'http://workshop.fluidbook.com/viewerh/' . $this->book->book_id . '_' . $this->book->hash . '_' . $this->book->compilehtml5date . '/index.html#'; + + + foreach ($resolutions as $n => $res) { + + list($w, $h) = explode('x', $res); + $dir = $this->vdir . '/screenshots/' . $n . '/'; + if(!file_exists($dir)){ + mkdir($dir,0777,true); + } + + foreach ($views as $k => $view) { + if ($view['orientation'] == 'P') { + $screenWidth = $w; + $screenHeight = $h; + } else { + $screenWidth = $h; + $screenHeight = $w; + } + $url = $baseUrl . $view['url']; + $out = $dir . '/' . $k . '.png'; + + $cl = new cubeCommandLine('xvfb-run'); + $cl->setArg('server-args', '-screen 0, ' . $screenWidth . 'x' . $screenHeight . 'x24'); + $cl->setArg(null, 'cutycapt'); + $cl->setArg('min-width',$screenWidth); + $cl->setArg('min-height',$screenHeight); + $cl->setArg('user-styles','http://workshop.fluidbook.com/style/ws/html5-screenshot.css'); + $cl->setArg('url', $url); + $cl->setArg('delay', '1000'); + $cl->setArg('out', $out); + $cl->execute(); + } + } + } + protected function makeAndroidResources($resources) { $icons = array('drawable' => 96, 'drawable-hdpi' => 72, @@ -125,7 +184,7 @@ class wsPackagerPhonegap extends wsPackager { protected function _makeIcon($size, $name, $dir, $os = '') { $os = strtolower($os); - $icoos = $os.'icon'; + $icoos = $os . 'icon'; if (isset($this->theme->parametres->$icoos) && $this->theme->parametres->$icoos != '') { $base = $this->themeRoot . '/' . $this->theme->parametres->$icoos; @@ -137,7 +196,7 @@ class wsPackagerPhonegap extends wsPackager { $it = new cubeImageTools(); $it->loadImage($base); - $it->resize($size, $size, 'ratio',false,'C','M','transparent'); + $it->resize($size, $size, 'ratio', false, 'C', 'M', 'transparent'); $it->output('png', $dir . '/' . $name . '.png'); } diff --git a/inc/ws/Util/packager/class.ws.packager.php b/inc/ws/Util/packager/class.ws.packager.php index 8e9b84afb..9b959dd98 100644 --- a/inc/ws/Util/packager/class.ws.packager.php +++ b/inc/ws/Util/packager/class.ws.packager.php @@ -173,9 +173,6 @@ class wsPackager { mkdir(WS_FILES . '/packager/download', 0777, true); } - fb($zip->commande); - fb($zip->output); - if ($rename) { rename($zipfile, $final); } diff --git a/style/ws/html5-screenshot.css b/style/ws/html5-screenshot.css new file mode 100644 index 000000000..a3393d82c --- /dev/null +++ b/style/ws/html5-screenshot.css @@ -0,0 +1 @@ +.mview{overflow-y: hidden;} \ No newline at end of file -- 2.39.5