Refer to relative path instead of absolute path

There is no need to refer to the absolute path here if we can use the relative one.

Conflicts:
	lib/private/templatelayout.php
This commit is contained in:
Lukas Reschke 2014-10-20 12:37:32 +02:00
parent 8da6e4b9f0
commit 7b94c7f9c1
1 changed files with 21 additions and 8 deletions

View File

@ -157,7 +157,7 @@ class OC_TemplateLayout extends OC_Template {
public function generateAssets() {
$jsFiles = self::findJavascriptFiles(OC_Util::$scripts);
$jsHash = self::hashScriptNames($jsFiles);
$jsHash = self::hashFileNames($jsFiles);
if (!file_exists("assets/$jsHash.js")) {
$jsFiles = array_map(function ($item) {
@ -179,7 +179,7 @@ class OC_TemplateLayout extends OC_Template {
}
$cssFiles = self::findStylesheetFiles(OC_Util::$styles);
$cssHash = self::hashScriptNames($cssFiles);
$cssHash = self::hashFileNames($cssFiles);
if (!file_exists("assets/$cssHash.css")) {
$cssFiles = array_map(function ($item) {
@ -210,17 +210,30 @@ class OC_TemplateLayout extends OC_Template {
$this->append('cssfiles', OC_Helper::linkTo('assets', "$cssHash.css"));
}
/**
* Converts the absolute filepath to a relative path from \OC::$SERVERROOT
* @param string $filePath Absolute path
* @return string Relative path
* @throws Exception If $filePath is not under \OC::$SERVERROOT
*/
public static function convertToRelativePath($filePath) {
$relativePath = explode(\OC::$SERVERROOT, $filePath);
if(count($relativePath) !== 2) {
throw new \Exception('$filePath is not under the \OC::$SERVERROOT');
}
return $relativePath[1];
}
/**
* @param array $files
* @return string
*/
private static function hashScriptNames($files) {
$files = array_map(function ($item) {
$root = $item[0];
$file = $item[2];
return $root . '/' . $file;
}, $files);
private static function hashFileNames($files) {
foreach($files as $i => $file) {
$files[$i] = self::convertToRelativePath($file[0]).'/'.$file[2];
}
sort($files);
// include the apps' versions hash to invalidate the cached assets