diff options
Diffstat (limited to 'lib/private/Template/JSResourceLocator.php')
-rw-r--r-- | lib/private/Template/JSResourceLocator.php | 27 |
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; + } } |