From: stephen@cubedesigners.com Date: Wed, 28 Nov 2018 16:56:08 +0000 (+0000) Subject: Merge print branch compiler after master branch changes. WIP #817 @0.25 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=2824ef74a842cc75c5a26c83621a7f81e5b82be2;p=cubeextranet.git Merge print branch compiler after master branch changes. WIP #817 @0.25 --- diff --git a/inc/ws/Util/html5/printing/class.ws.html5.compiler.php b/inc/ws/Util/html5/printing/class.ws.html5.compiler.php index 98234e726..e0b7bf317 100644 --- a/inc/ws/Util/html5/printing/class.ws.html5.compiler.php +++ b/inc/ws/Util/html5/printing/class.ws.html5.compiler.php @@ -3,67 +3,84 @@ class wsHTML5Compiler { public static $resolutions = array(150, 300); - - public $jsFiles = array( - 'js/libs/modernizr/modernizr.min.js', - 'js/libs/modernizr/tests.js', - 'js/libs/cookie.min.js', - 'js/libs/cube/fb.js', - 'js/libs/cube/util.js', - 'js/libs/screenfull.min.js', - 'js/libs/storage.js', - 'js/libs/keymaster.js', - 'js/libs/jquery/jquery.min.js', - 'js/libs/jquery/jquery.transform.js', - 'js/libs/jquery/jquery.form.min.js', - 'js/libs/jquery/jquery.mousewheel.min.js', - 'js/libs/jquery/jquery.hashchange.min.js', - 'js/libs/jquery/perfect-scrollbar.jquery.min.js', - 'js/libs/mmenu/jquery.mmenu.min.js', - 'js/libs/mmenu/jquery.mmenu.rtl.min.js', - 'js/libs/mmenu/jquery.mmenu.offcanvas.min.js', - 'js/libs/gsap/TweenMax.min.js', - 'js/libs/gsap/jquery.gsap.min.js', - 'js/libs/gal/gal.js', - 'js/libs/gal/gal.filesystem.js', - 'js/libs/hammer.min.js', - 'js/libs/fluidbook/fluidbook.utils.js', - 'js/libs/fluidbook/fluidbook.links.js', - 'js/libs/fluidbook/fluidbook.support.js', - 'js/libs/fluidbook/fluidbook.video.js', - 'js/libs/fluidbook/fluidbook.viewport.js', - 'js/libs/fluidbook/fluidbook.desktop.js', - 'js/libs/fluidbook/fluidbook.service.js', - 'js/libs/fluidbook/fluidbook.share.js', - 'js/libs/fluidbook/fluidbook.l10n.js', - 'js/libs/fluidbook/fluidbook.slider.js', - 'js/libs/fluidbook/fluidbook.nav.js', - 'js/libs/fluidbook/fluidbook.interface.js', - 'js/libs/fluidbook/fluidbook.touch.js', - 'js/libs/fluidbook/fluidbook.loader.js', - 'js/libs/fluidbook/fluidbook.search.js', - 'js/libs/fluidbook/fluidbook.help.js', - 'js/libs/fluidbook/fluidbook.resize.js', - 'js/libs/fluidbook/fluidbook.stats.js', - 'js/libs/fluidbook/fluidbook.cache.js', - 'js/libs/fluidbook/fluidbook.tooltip.js', - 'js/libs/fluidbook/fluidbook.bookmarks.js', - 'js/libs/fluidbook/fluidbook.background.js', - 'js/libs/fluidbook/fluidbook.pad.js', - 'js/libs/fluidbook/fluidbook.audiodescription.js', - 'js/libs/fluidbook/fluidbook.privacy.js', - 'js/libs/fluidbook/fluidbook.zoom.js', - 'js/libs/fluidbook/fluidbook.menu.js', - 'js/libs/fluidbook/fluidbook.sound.js', - 'js/libs/fluidbook/fluidbook.contentlock.js', - 'js/libs/fluidbook/fluidbook.scorm.js', - 'js/libs/fluidbook/menu/fluidbook.chapters.js', - 'js/libs/fluidbook/menu/fluidbook.index.js', - 'js/libs/fluidbook/fluidbook.landingpage.js', - 'js/libs/fluidbook/fluidbook.slideshow.js', - 'js/libs/fluidbook/fluidbook.print.js', - 'js/libs/fluidbook/fluidbook.js', - 'js/main.js'); + public $maxRes = 300; + + public $jsLibs = [ + 'cube' => + ['js/libs/cube/util.js', + 'js/libs/cube/fb.js',], + 'modernizr' => + ['js/libs/modernizr/modernizr.min.js', + 'js/libs/modernizr/tests.js',], + 'threejs' => + ['js/libs/threejs/three.min.js', + 'js/libs/threejs/Projector.js', + 'js/libs/threejs/CanvasRenderer.js', + 'js/libs/threejs/modifier.js', + 'js/libs/threejs/stats.js',], + 'jquery' => + ['js/libs/jquery/jquery.min.js', + 'js/libs/jquery/jquery.transform.js', + 'js/libs/jquery/jquery.form.min.js', + 'js/libs/jquery/jquery.mousewheel.min.js', + 'js/libs/jquery/jquery.hashchange.min.js',], + 'screenfull' => ['js/libs/screenfull.min.js',], + 'storage' => ['js/libs/storage.js',], + 'keymaster' => ['js/libs/keymaster.js',], + 'perfectscrollbar' => ['js/libs/jquery/perfect-scrollbar.jquery.min.js',], + 'mmenu' => + ['js/libs/mmenu/jquery.mmenu.min.js', + 'js/libs/mmenu/jquery.mmenu.rtl.min.js', + 'js/libs/mmenu/jquery.mmenu.offcanvas.min.js',], + 'tweenmax' => + ['js/libs/gsap/TweenMax.min.js', + 'js/libs/gsap/jquery.gsap.min.js', + 'js/libs/threejs/Tweenmax.threejs.js',], + 'hammer' => ['js/libs/hammer.min.js',], + 'gal' => + ['js/libs/gal/gal.js', + 'js/libs/gal/gal.filesystem.js',], + 'fluidbook' => + ['js/libs/fluidbook/fluidbook.utils.js', + 'js/libs/fluidbook/fluidbook.links.js', + 'js/libs/fluidbook/fluidbook.support.js', + 'js/libs/fluidbook/fluidbook.video.js', + 'js/libs/fluidbook/fluidbook.viewport.js', + 'js/libs/fluidbook/fluidbook.desktop.js', + 'js/libs/fluidbook/fluidbook.service.js', + 'js/libs/fluidbook/fluidbook.share.js', + 'js/libs/fluidbook/fluidbook.l10n.js', + 'js/libs/fluidbook/fluidbook.slider.js', + 'js/libs/fluidbook/fluidbook.pagetransitions.js', + 'js/libs/fluidbook/fluidbook.nav.js', + 'js/libs/fluidbook/fluidbook.interface.js', + 'js/libs/fluidbook/fluidbook.touch.js', + 'js/libs/fluidbook/fluidbook.loader.js', + 'js/libs/fluidbook/fluidbook.search.js', + 'js/libs/fluidbook/fluidbook.help.js', + 'js/libs/fluidbook/fluidbook.resize.js', + 'js/libs/fluidbook/fluidbook.stats.js', + 'js/libs/fluidbook/fluidbook.cache.js', + 'js/libs/fluidbook/fluidbook.tooltip.js', + 'js/libs/fluidbook/fluidbook.bookmarks.js', + 'js/libs/fluidbook/fluidbook.background.js', + 'js/libs/fluidbook/fluidbook.pad.js', + 'js/libs/fluidbook/fluidbook.audiodescription.js', + 'js/libs/fluidbook/fluidbook.privacy.js', + 'js/libs/fluidbook/fluidbook.zoom.js', + 'js/libs/fluidbook/fluidbook.menu.js', + 'js/libs/fluidbook/fluidbook.sound.js', + 'js/libs/fluidbook/fluidbook.contentlock.js', + 'js/libs/fluidbook/fluidbook.scorm.js', + 'js/libs/fluidbook/fluidbook.3dflip.js', + 'js/libs/fluidbook/menu/fluidbook.chapters.js', + 'js/libs/fluidbook/menu/fluidbook.index.js', + 'js/libs/fluidbook/fluidbook.landingpage.js', + 'js/libs/fluidbook/fluidbook.slideshow.js', + 'js/libs/fluidbook/fluidbook.print.js', + 'js/libs/fluidbook/fluidbook.js', + 'js/main.js'] + ]; public $specialJsFiles = array(); @@ -196,6 +213,7 @@ class wsHTML5Compiler $this->phonegap = $phonegap; $this->standalone = $standalone || $this->phonegap; $this->appcache = $appcache; + $this->widget = !$this->phonegap; cubePHP::set_memory('4G'); @@ -316,24 +334,24 @@ class wsHTML5Compiler } if ($this->config->form == 'bulle') { - $this->addJs('js/libs/fluidbook/forms/fluidbook.form.bulle.js'); + $this->addJsLib('bulle', 'js/libs/fluidbook/forms/fluidbook.form.bulle.js'); } else if ($this->config->form == 'bourbon') { - $this->addJs('js/libs/parsley.min.js'); - $this->addJs('js/libs/fluidbook/forms/fluidbook.form.bourbon.js'); + $this->addJsLib('parsley', 'js/libs/parsley.min.js'); + $this->addJsLib('bourbon', 'js/libs/fluidbook/forms/fluidbook.form.bourbon.js'); } else if ($this->config->form == 'avery') { - $this->addJs('js/libs/parsley.min.js'); - $this->addJs('js/libs/fluidbook/forms/fluidbook.form.avery.js'); + $this->addJsLib('parsley', 'js/libs/parsley.min.js'); + $this->addJsLib('avery', 'js/libs/fluidbook/forms/fluidbook.form.avery.js'); $this->addLess('form/avery'); $this->writeCountries(); } if ($this->config->basket) { - $this->addJs('js/libs/fluidbook/fluidbook.cart.js'); + $this->addJsLib('cart', 'js/libs/fluidbook/fluidbook.cart.js'); switch ($this->config->basketManager) { case 'Remarkable': - $this->addJs('js/libs/parsley.min.js'); - $this->addJs('js/libs/jquery/jquery.cookie.js'); - $this->addJs('js/libs/fluidbook/cart/fluidbook.cart.remarkable.js'); + $this->addJsLib('parsley', 'js/libs/parsley.min.js'); + $this->addJsLib('cookie', 'js/libs/jquery/jquery.cookie.js'); + $this->addJsLib('remarkable', 'js/libs/fluidbook/cart/fluidbook.cart.remarkable.js'); break; default: break; @@ -648,15 +666,17 @@ class wsHTML5Compiler } $script = '' . "\n"; - $script .= '' . "\n"; + foreach ($this->jsLibs as $jsLib => $files) { + $script .= "\t" . '' . "\n"; + } if ($this->book->parametres->scorm_enable) { - $script .= '' . "\n"; + $script .= "\t" . '' . "\n"; } if (count($this->specialJsFiles)) { - $script .= '' . "\n"; + $script .= "\t" . '' . "\n"; } foreach ($this->pluginJs as $p) { - $script .= '' . "\n"; + $script .= "\t" . '' . "\n"; } $script .= $iscript; @@ -1205,7 +1225,7 @@ class wsHTML5Compiler $config = $this->writeConfig(); $this->vdir->file_put_contents('data/datas.js', $config); - $finals = array('fluidbook' => $this->jsFiles); + $finals = $this->jsLibs; if ($this->book->parametres->scorm_enable) { $finals['scorm'] = array(); $finals['scorm'][] = 'js/libs/scorm/apiwrapper.js'; @@ -1251,11 +1271,15 @@ class wsHTML5Compiler if ($reminimize) { $js = ''; + $hasNonMin = false; foreach ($files as $file) { $f = $this->assets . '/' . $file; if (!file_exists($f)) { continue; } + if (strpos($f, '.min.') === false) { + $hasNonMin = true; + } $js .= file_get_contents($f); $js .= ";\n\n"; } @@ -1266,11 +1290,15 @@ class wsHTML5Compiler unlink($minimized); } - $uglify = new CubeIT_CommandLine('/usr/local/bin/uglifyjs'); - $uglify->setArg('o', $minimized); - $uglify->setArg(null, $tmp); - $uglify->execute(); - $uglify->debug(); + if ($hasNonMin) { + $uglify = new CubeIT_CommandLine('/usr/local/bin/uglifyjs'); + $uglify->setArg('o', $minimized); + $uglify->setArg(null, $tmp); + $uglify->execute(); + $uglify->debug(); + } else { + copy($tmp, $minimized); + } if (!file_exists($minimized)) { die('An error occured while uglifying : ' . $uglify->output); @@ -1284,7 +1312,9 @@ class wsHTML5Compiler if ($this->phonegap) { $this->vdir->copy(WS_COMPILE_ASSETS . '/_html5/js/libs/phonegap/' . $this->phonegapVersion . '/cordova-' . $this->phonegap . '.js', 'data/cordova.js'); } - + $this->vdir->copyDirectory($this->assets . '/js/libs/fluidbook/workers', 'js/libs/fluidbook/workers'); + $this->vdir->copyDirectory($this->assets . '/js/libs/stand', 'js/libs/stand'); + $this->vdir->copyDirectory($this->assets . '/js/libs/polyfills', 'js/libs/polyfills'); } public function writeTexts() @@ -1889,11 +1919,18 @@ class wsHTML5Compiler $locale = $map[$locale]; } - $this->addJs('js/libs/videojs/video.withscalefix.js'); - $this->addJs('js/libs/videojs/lang/' . $locale . '.js'); + $this->addJsLib('videojs', ['js/libs/videojs/video.withscalefix.js', 'js/libs/videojs/lang/' . $locale . '.js']); $this->addLess('videojs/videojs'); } + public function addJsLib($name, $files) + { + if (!is_array($files)) { + $files = [$files]; + } + $this->jsLibs[$name] = $files; + } + public function copyLinkFile($source, $dest, $video = false) { if ($video && $this->book->parametres->mobileVideosPath != '') {