summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-01-06 14:36:51 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-01-06 14:36:51 +0100
commit20886d8151f72e919ae6d17632aeb510eba28ca6 (patch)
treed28784abf16699218b09f7d4aa1f87a08db46b4f /lib
parent6a3f69c2d043203a7650d16200accd0303430e09 (diff)
parent2c44bc1768886d9b9693e484db37b971fc9917dd (diff)
downloadnextcloud-server-20886d8151f72e919ae6d17632aeb510eba28ca6.tar.gz
nextcloud-server-20886d8151f72e919ae6d17632aeb510eba28ca6.zip
Merge pull request #13116 from owncloud/fix_assets
Fix JS asset generation
Diffstat (limited to 'lib')
-rw-r--r--lib/private/assetic/separatorfilter.php57
-rw-r--r--lib/private/templatelayout.php8
2 files changed, 63 insertions, 2 deletions
diff --git a/lib/private/assetic/separatorfilter.php b/lib/private/assetic/separatorfilter.php
new file mode 100644
index 00000000000..fb1a4e7f00c
--- /dev/null
+++ b/lib/private/assetic/separatorfilter.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * ownCloud
+ *
+ * Copyright (C) 2014 Robin McCorkell <rmccorkell@karoshi.org.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Assetic;
+
+use Assetic\Filter\FilterInterface;
+use Assetic\Asset\AssetInterface;
+
+/**
+ * Inserts a separator between assets to prevent merge failures
+ * e.g. missing semicolon at the end of a JS file
+ */
+class SeparatorFilter implements FilterInterface
+{
+ /**
+ * @var string
+ */
+ private $separator;
+
+ /**
+ * Constructor.
+ *
+ * @param string $separator Separator to use between assets
+ */
+ public function __construct($separator = ';')
+ {
+ $this->separator = $separator;
+ }
+
+ public function filterLoad(AssetInterface $asset)
+ {
+ }
+
+ public function filterDump(AssetInterface $asset)
+ {
+ $asset->setContent($asset->getContent() . $this->separator);
+ }
+}
diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php
index fa025721e53..44c997c321e 100644
--- a/lib/private/templatelayout.php
+++ b/lib/private/templatelayout.php
@@ -6,6 +6,7 @@ use Assetic\Filter\CssImportFilter;
use Assetic\Filter\CssMinFilter;
use Assetic\Filter\CssRewriteFilter;
use Assetic\Filter\JSMinFilter;
+use OC\Assetic\SeparatorFilter; // waiting on upstream
/**
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
@@ -163,10 +164,13 @@ class OC_TemplateLayout extends OC_Template {
$file = $item[2];
// no need to minifiy minified files
if (substr($file, -strlen('.min.js')) === '.min.js') {
- return new FileAsset($root . '/' . $file, array(), $root, $file);
+ return new FileAsset($root . '/' . $file, array(
+ new SeparatorFilter(';')
+ ), $root, $file);
}
return new FileAsset($root . '/' . $file, array(
- new JSMinFilter()
+ new JSMinFilter(),
+ new SeparatorFilter(';')
), $root, $file);
}, $jsFiles);
$jsCollection = new AssetCollection($jsFiles);