summaryrefslogtreecommitdiffstats
path: root/lib/private/Template/JSResourceLocator.php
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2017-03-22 14:47:07 +0100
committerRoeland Jago Douma <roeland@famdouma.nl>2017-03-24 10:58:10 +0100
commit8e89ad21a2dfa8f4f147225ae35cab83db4de2f9 (patch)
tree5c991eec18452d8da40ddedd6c8e372b77428223 /lib/private/Template/JSResourceLocator.php
parent35d3a082f2a7256c104894faf6820a1410a0a38e (diff)
downloadnextcloud-server-8e89ad21a2dfa8f4f147225ae35cab83db4de2f9.tar.gz
nextcloud-server-8e89ad21a2dfa8f4f147225ae35cab83db4de2f9.zip
[PoC] JS Combiner
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'lib/private/Template/JSResourceLocator.php')
-rw-r--r--lib/private/Template/JSResourceLocator.php27
1 files changed, 26 insertions, 1 deletions
diff --git a/lib/private/Template/JSResourceLocator.php b/lib/private/Template/JSResourceLocator.php
index 724f49965b3..6f863e859d9 100644
--- a/lib/private/Template/JSResourceLocator.php
+++ b/lib/private/Template/JSResourceLocator.php
@@ -26,6 +26,16 @@
namespace OC\Template;
class JSResourceLocator extends ResourceLocator {
+
+ /** @var JSCombiner */
+ protected $jsCombiner;
+
+ public function __construct(\OCP\ILogger $logger, $theme, array $core_map, array $party_map, JSCombiner $JSCombiner) {
+ parent::__construct($logger, $theme, $core_map, $party_map);
+
+ $this->jsCombiner = $JSCombiner;
+ }
+
/**
* @param string $script
*/
@@ -52,8 +62,10 @@ class JSResourceLocator extends ResourceLocator {
} else if ($this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js')
|| $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js')
|| $this->appendIfExist($this->serverroot, $script.'.js')
+ || $this->cacheAndAppendCombineJsonIfExist($this->serverroot, $script.'.json')
|| $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.'.js')
|| $this->appendIfExist($this->serverroot, 'core/'.$script.'.js')
+ || $this->cacheAndAppendCombineJsonIfExist($this->serverroot, 'core/'.$script.'.json')
) {
return;
}
@@ -68,7 +80,9 @@ class JSResourceLocator extends ResourceLocator {
$this->appendIfExist($app_path, $script . '.js', $app_url);
return;
}
- $this->append($app_path, $script . '.js', $app_url);
+ if (!$this->cacheAndAppendCombineJsonIfExist($app_path, $script.'.json', $app)) {
+ $this->append($app_path, $script . '.js', $app_url);
+ }
}
/**
@@ -76,4 +90,15 @@ class JSResourceLocator extends ResourceLocator {
*/
public function doFindTheme($script) {
}
+
+ protected function cacheAndAppendCombineJsonIfExist($root, $file, $app = 'core') {
+ if (is_file($root.'/'.$file)) {
+ if ($this->jsCombiner->process($root, $file, $app)) {
+ $this->append($this->serverroot, $this->jsCombiner->getCachedJS($app, $file), false, false);
+ return true;
+ }
+ }
+
+ return false;
+ }
}