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();
$this->phonegap = $phonegap;
$this->standalone = $standalone || $this->phonegap;
$this->appcache = $appcache;
+ $this->widget = !$this->phonegap;
cubePHP::set_memory('4G');
}
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;
}
$script = '<script type="text/javascript" charset="utf-8" src="data/datas.js"></script>' . "\n";
- $script .= '<script type="text/javascript" charset="utf-8" src="data/fluidbook.js"></script>' . "\n";
+ foreach ($this->jsLibs as $jsLib => $files) {
+ $script .= "\t" . '<script type="text/javascript" charset="utf-8" src="data/' . $jsLib . '.js"></script>' . "\n";
+ }
if ($this->book->parametres->scorm_enable) {
- $script .= '<script type="text/javascript" charset="utf-8" src="data/scorm.js"></script>' . "\n";
+ $script .= "\t" . '<script type="text/javascript" charset="utf-8" src="data/scorm.js"></script>' . "\n";
}
if (count($this->specialJsFiles)) {
- $script .= '<script type="text/javascript" charset="utf-8" src="data/special.js"></script>' . "\n";
+ $script .= "\t" . '<script type="text/javascript" charset="utf-8" src="data/special.js"></script>' . "\n";
}
foreach ($this->pluginJs as $p) {
- $script .= '<script type="text/javascript" charset="utf-8" src="' . $p . '"></script>' . "\n";
+ $script .= "\t" . '<script type="text/javascript" charset="utf-8" src="' . $p . '"></script>' . "\n";
}
$script .= $iscript;
$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';
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";
}
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);
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()
$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 != '') {