summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2017-12-05 18:10:33 +0100
committerMorris Jobke <hey@morrisjobke.de>2017-12-11 14:24:23 +0100
commitf018bfc7de7322651473edbfe65bd440b9c9e85b (patch)
tree02e09daed3fca1c7b28688f0f0fe89c2d57d45c7
parent820e7b5abac0618755f1aafd5fece78d14bd6789 (diff)
downloadnextcloud-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.php38
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
*/