diff --git a/classes/frontendfile/FrontEndFileHandler.class.php b/classes/frontendfile/FrontEndFileHandler.class.php
index a1e3b5f6f..65f2ff930 100644
--- a/classes/frontendfile/FrontEndFileHandler.class.php
+++ b/classes/frontendfile/FrontEndFileHandler.class.php
@@ -155,34 +155,54 @@ class FrontEndFileHandler extends Handler
$file->filePath = $this->_getAbsFileUrl($pathInfo['dirname']);
$file->fileRealPath = FileHandler::getRealPath($pathInfo['dirname']);
$file->fileExtension = strtolower($pathInfo['extension']);
- $file->fileNameNoExt = preg_replace('/\.min$/', '', $pathInfo['filename']);
- $file->keyName = implode('.', array($file->fileNameNoExt, $file->fileExtension));
+ if(preg_match('/^(.+)\.min$/', $pathInfo['filename'], $matches))
+ {
+ $file->fileNameNoExt = $matches[1];
+ $file->isMinified = true;
+ }
+ else
+ {
+ $file->fileNameNoExt = $pathInfo['filename'];
+ $file->isMinified = false;
+ }
+ $file->keyName = $file->fileNameNoExt . '.' . $file->fileExtension;
$file->cdnPath = $this->_normalizeFilePath($pathInfo['dirname']);
- if(strpos($file->filePath, '://') === FALSE)
+ // Minify file
+ if(!__DEBUG__ && __XE_VERSION_STABLE__ && !$file->isMinified && strpos($file->filePath, '://') === false && strpos($file->filePath, 'common/js/plugins') === false)
{
- if(!__DEBUG__ && __XE_VERSION_STABLE__)
+ $originalFilePath = $file->fileRealPath . '/' . $pathInfo['basename'];
+ if(($file->fileExtension === 'css' || $file->fileExtension === 'js') && file_exists($originalFilePath))
{
- // if no debug mode, load minifed file
- $minifiedFileName = implode('.', array($file->fileNameNoExt, 'min', $file->fileExtension));
- $minifiedRealPath = implode('/', array($file->fileRealPath, $minifiedFileName));
- if(file_exists($minifiedRealPath))
+ $minifiedFileName = $file->fileNameNoExt . '.min.' . $file->fileExtension;
+ $minifiedFileHash = substr(sha1($file->cdnPath . $file->fileName), 0, 24);
+ $minifiedFilePath = _XE_PATH_ . 'files/cache/minify/' . $minifiedFileHash . '.' . $minifiedFileName;
+
+ if(!file_exists($minifiedFilePath) || filemtime($minifiedFilePath) < filemtime($originalFilePath))
{
- $file->fileName = $minifiedFileName;
- }
- }
- else
- {
- // Remove .min
- if(file_exists(implode('/', array($file->fileRealPath, $file->keyName))))
- {
- $file->fileName = $file->keyName;
+ FileHandler::makeDir(_XE_PATH_ . 'files/cache/minify');
+ if($file->fileExtension === 'css')
+ {
+ $minifier = new MatthiasMullie\Minify\CSS($originalFilePath);
+ $minifier->minify($minifiedFilePath);
+ }
+ else
+ {
+ $minifier = new MatthiasMullie\Minify\JS($originalFilePath);
+ $minifier->minify($minifiedFilePath);
+ }
}
+
+ $file->fileName = $minifiedFileHash . '.' . $minifiedFileName;
+ $file->filePath = $this->_getAbsFileUrl('./files/cache/minify');
+ $file->fileRealPath = _XE_PATH_ . 'files/cache/minify';
+ $file->cdnPath = $this->_normalizeFilePath('./files/cache/minify');
+ $file->isMinified = true;
}
}
+ // Process targetIe and media attributes
$file->targetIe = $targetIe;
-
if($file->fileExtension == 'css')
{
$file->media = $media;
diff --git a/common/js/foggyLayer.js b/common/js/plugins/foggyLayer/foggyLayer.js
similarity index 100%
rename from common/js/foggyLayer.js
rename to common/js/plugins/foggyLayer/foggyLayer.js
diff --git a/modules/layout/tpl/layout_preview.html b/modules/layout/tpl/layout_preview.html
index 000645cc7..72b47238f 100644
--- a/modules/layout/tpl/layout_preview.html
+++ b/modules/layout/tpl/layout_preview.html
@@ -1,2 +1,2 @@
-
+
{$layout_tpl}