public static $resolutions = array(150, 300);
public $maxRes = 300;
- public $jsFiles = array(
- 'js/libs/cube/util.js',
- 'js/libs/modernizr/modernizr.min.js',
- 'js/libs/modernizr/tests.js',
- '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',
- '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/threejs/Tweenmax.threejs.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.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.js',
- 'js/main.js');
+ 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.js',
+ 'js/main.js']
+ ];
public $specialJsFiles = array();
}
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;
public function compile($delete = true)
{
+
$this->log('Start compile process');
// Raw copy of some directories
global $core;
$titre = $this->book->parametres->title;
+
if (null === $this->_signature) {
$daoSignature = new wsDAOSignature($core->con);
$this->_signature = $daoSignature->selectById($this->book->parametres->signature);
$iscript .= '</script>' . "\n";
}
-
$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;
if ($this->phonegap) {
$csp = "<meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'self' data: gap: 'unsafe-inline' *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' " . implode(' ', array_unique($this->securityPolicyWhitelist)) . "; img-src * data:\">";
}
-
$vars = array('credits', 'style', 'script', 'pagesContents', 'print', 'hiddenContents', 'splash', 'cache', 'bgcolor', 'message', 'favicon', 'svg', 'beginbody', 'csp', 'opengraph', 'twittercard');
$res = [];
protected function writePrint()
{
-
if (!$this->book->parametres->print && !$this->book->parametres->pdf) {
return;
}
$this->vdir->copy($this->wdir . '/' . $ic, 'data/images/' . $ic);
}
}
-
}
protected function writeLinks()
$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';
mkdir(dirname($minimized));
}
if (file_exists($minimized)) {
- $mintime = filemtime($minimized);
+ $mintime = max(filemtime($minimized), filemtime(__FILE__));
$reminimize = false;
} else {
$mintime = 0;
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);
$this->vdir->copy($minimized, $dest);
}
+
if ($this->phonegap) {
$this->vdir->copy(WS_COMPILE_ASSETS . '/_html5/js/libs/phonegap/' . $this->phonegapVersion . '/cordova-' . $this->phonegap . '.js', 'data/cordova.js');
}
$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 != '') {
}
-
public function unzipFile($file, $moveAssets = false, $baseDir = null)
{
$fdir = is_null($baseDir) ? 'data/links/' . str_replace('.', '_', $file) : $baseDir;
public static $resolutions = array(150, 300);
public $maxRes = 300;
- public $jsFiles = array(
- 'js/libs/cube/util.js',
- 'js/libs/modernizr/modernizr.min.js',
- 'js/libs/modernizr/tests.js',
- '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',
- '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/threejs/Tweenmax.threejs.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.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.js',
- 'js/main.js');
+ 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.js',
+ 'js/main.js']
+ ];
public $specialJsFiles = array();
}
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';
mkdir(dirname($minimized));
}
if (file_exists($minimized)) {
- $mintime = filemtime($minimized);
+ $mintime = max(filemtime($minimized), filemtime(__FILE__));
$reminimize = false;
} else {
$mintime = 0;
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);
$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 != '') {