diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2017-12-05 18:10:33 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2017-12-11 14:24:23 +0100 |
commit | f018bfc7de7322651473edbfe65bd440b9c9e85b (patch) | |
tree | 02e09daed3fca1c7b28688f0f0fe89c2d57d45c7 | |
parent | 820e7b5abac0618755f1aafd5fece78d14bd6789 (diff) | |
download | nextcloud-server-f018bfc7de7322651473edbfe65bd440b9c9e85b.tar.gz nextcloud-server-f018bfc7de7322651473edbfe65bd440b9c9e85b.zip |
Fixed md5 generation and added fallback for scss requests
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | lib/private/TemplateLayout.php | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 2868d48a911..1bd9004265c 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -188,22 +188,32 @@ class TemplateLayout extends \OC_Template { if (substr($file, -strlen('print.css')) === 'print.css') { $this->append( 'printcssfiles', $web.'/'.$file . $this->getVersionHashSuffix() ); } else { - $this->append( 'cssfiles', $web.'/'.$file . $this->getVersionHashSuffix($web) ); + $this->append( 'cssfiles', $web.'/'.$file . $this->getVersionHashSuffix($web, $file) ); } } } - protected function getVersionHashSuffix($app=false) { + protected function getVersionHashSuffix($path = false, $file = false) { if (\OC::$server->getConfig()->getSystemValue('debug', false)) { // allows chrome workspace mapping in debug mode return ""; } - if ($app !== false && $app !== '') { - $v = \OC_App::getAppVersions(); - $appName = end(explode('/', $app)); + $v = \OC_App::getAppVersions(); + + // Try the webroot path for a match + if ($path !== false && $path !== '') { + $appName = $this->getAppNamefromPath($path); + if(array_key_exists($appName, $v)) { + $appVersion = $v[$appName]; + return '?v=' . substr(md5($appVersion), 0, 8) . '-' . $this->config->getAppValue('theming', 'cachebuster', '0'); + } + } + // fallback to the file path instead + if ($file !== false && $file !== '') { + $appName = $this->getAppNamefromPath($file); if(array_key_exists($appName, $v)) { $appVersion = $v[$appName]; - return '?v=' . substr(md5(implode(',', $appVersion)), 0, 8) . '-' . $this->config->getAppValue('theming', 'cachebuster', '0'); + return '?v=' . substr(md5($appVersion), 0, 8) . '-' . $this->config->getAppValue('theming', 'cachebuster', '0'); } } @@ -239,6 +249,22 @@ class TemplateLayout extends \OC_Template { } /** + * @param string $path + * @return string + */ + static public function getAppNamefromPath($path) { + if ($path !== '' && is_string($path)) { + $pathParts = explode('/', $path); + if ($pathParts[0] === 'css') { + // This is a scss request + return $pathParts[1]; + } + return end($pathParts); + } + + } + + /** * @param array $scripts * @return array */ |