make sure styles and scripts are only loaded once

This commit is contained in:
Thomas Müller 2014-12-10 15:41:38 +01:00 committed by Morris Jobke
parent 5b9c453071
commit 775f6a1354
2 changed files with 26 additions and 10 deletions

View File

@ -76,7 +76,7 @@
<?php endif; ?> <?php endif; ?>
<?php endif; ?> <?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
<?php if (isset($_['backends'][$mount['class']]['custom']) && !in_array('files_external/js/'.$_['backends'][$mount['class']]['custom'], \OC_Util::$scripts)): ?> <?php if (isset($_['backends'][$mount['class']]['custom'])): ?>
<?php OCP\Util::addScript('files_external', $_['backends'][$mount['class']]['custom']); ?> <?php OCP\Util::addScript('files_external', $_['backends'][$mount['class']]['custom']); ?>
<?php endif; ?> <?php endif; ?>
<?php endif; ?> <?php endif; ?>

View File

@ -333,9 +333,9 @@ class OC_Util {
/** /**
* generates a path for JS/CSS files. If no application is provided it will create the path for core. * generates a path for JS/CSS files. If no application is provided it will create the path for core.
* *
* @param $application application to get the files from * @param string $application application to get the files from
* @param $directory directory withing this application (css, js, vendor, etc) * @param string $directory directory withing this application (css, js, vendor, etc)
* @param $file the file inside of the above folder * @param string $file the file inside of the above folder
* @return string the path * @return string the path
*/ */
private static function generatePath($application, $directory, $file) { private static function generatePath($application, $directory, $file) {
@ -358,7 +358,10 @@ class OC_Util {
* @return void * @return void
*/ */
public static function addScript($application, $file = null) { public static function addScript($application, $file = null) {
self::$scripts[] = OC_Util::generatePath($application, 'js', $file); $path = OC_Util::generatePath($application, 'js', $file);
if (!in_array($path, self::$scripts)) {
self::$scripts[] = $path;
}
} }
/** /**
@ -369,7 +372,10 @@ class OC_Util {
* @return void * @return void
*/ */
public static function addVendorScript($application, $file = null) { public static function addVendorScript($application, $file = null) {
self::$scripts[] = OC_Util::generatePath($application, 'vendor', $file); $path = OC_Util::generatePath($application, 'vendor', $file);
if (!in_array($path, self::$scripts)) {
self::$scripts[] = $path;
}
} }
/** /**
@ -384,9 +390,12 @@ class OC_Util {
$languageCode = $l->getLanguageCode($application); $languageCode = $l->getLanguageCode($application);
} }
if (!empty($application)) { if (!empty($application)) {
self::$scripts[] = "$application/l10n/$languageCode"; $path = "$application/l10n/$languageCode";
} else { } else {
self::$scripts[] = "l10n/$languageCode"; $path = "l10n/$languageCode";
}
if (!in_array($path, self::$scripts)) {
self::$scripts[] = $path;
} }
} }
@ -398,7 +407,10 @@ class OC_Util {
* @return void * @return void
*/ */
public static function addStyle($application, $file = null) { public static function addStyle($application, $file = null) {
self::$styles[] = OC_Util::generatePath($application, 'css', $file); $path = OC_Util::generatePath($application, 'css', $file);
if (!in_array($path, self::$styles)) {
self::$styles[] = $path;
}
} }
/** /**
@ -409,7 +421,10 @@ class OC_Util {
* @return void * @return void
*/ */
public static function addVendorStyle($application, $file = null) { public static function addVendorStyle($application, $file = null) {
self::$styles[] = OC_Util::generatePath($application, 'vendor', $file); $path = OC_Util::generatePath($application, 'vendor', $file);
if (!in_array($path, self::$styles)) {
self::$styles[] = $path;
}
} }
/** /**
@ -1344,4 +1359,5 @@ class OC_Util {
public static function isPhpCharSetUtf8() { public static function isPhpCharSetUtf8() {
return ini_get('default_charset') === 'UTF-8'; return ini_get('default_charset') === 'UTF-8';
} }
} }