X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dcompta/comptes/journal.php?a=blobdiff_plain;f=includes%2Fskins%2FSkinFallbackTemplate.php;h=312769f9311fa28fad94fc75feea526faf23c9ab;hb=b3efe0ca7d05ce6551b82e63de46b2dc44c1f4af;hp=9cb4ea0d2f28438bc8ae6694a768260a206995c1;hpb=77e1b851dd3611cf6ce8f8771f47717907513c45;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/skins/SkinFallbackTemplate.php b/includes/skins/SkinFallbackTemplate.php index 9cb4ea0d2f..312769f931 100644 --- a/includes/skins/SkinFallbackTemplate.php +++ b/includes/skins/SkinFallbackTemplate.php @@ -24,9 +24,11 @@ class SkinFallbackTemplate extends BaseTemplate { return $maybeDir !== '.' && $maybeDir !== '..' && is_dir( "$styleDirectory/$maybeDir" ); } ); - // Only keep the ones that contain a .php file with the same name inside + // Filter out skins that aren't installed $possibleSkins = array_filter( $possibleSkins, function ( $skinDir ) use ( $styleDirectory ) { - return is_file( "$styleDirectory/$skinDir/$skinDir.php" ); + return + is_file( "$styleDirectory/$skinDir/skin.json" ) + || is_file( "$styleDirectory/$skinDir/$skinDir.php" ); } ); return $possibleSkins; @@ -56,14 +58,16 @@ class SkinFallbackTemplate extends BaseTemplate { } else { $skinsInstalledText[] = $this->getMsg( 'default-skin-not-found-row-disabled' ) ->params( $normalizedKey, $skin )->plain(); - $skinsInstalledSnippet[] = "require_once \"\$IP/skins/$skin/$skin.php\";"; + $skinsInstalledSnippet[] = $this->getSnippetForSkin( $skin ); } } return $this->getMsg( 'default-skin-not-found' )->params( $defaultSkin, implode( "\n", $skinsInstalledText ), - implode( "\n", $skinsInstalledSnippet ) + implode( "\n", $skinsInstalledSnippet ) )->numParams( + count( $skinsInstalledText ), + count( $skinsInstalledSnippet ) )->parseAsBlock(); } else { return $this->getMsg( 'default-skin-not-found-no-skins' )->params( @@ -72,6 +76,21 @@ class SkinFallbackTemplate extends BaseTemplate { } } + /** + * Get the appropriate LocalSettings.php snippet to enable the given skin + * + * @param string $skin + * @return string + */ + private function getSnippetForSkin( $skin ) { + global $IP; + if ( file_exists( "$IP/skins/$skin/skin.json" ) ) { + return "wfLoadSkin( '$skin' );"; + } else { + return "require_once \"\$IP/skins/$skin/$skin.php\";"; + } + } + /** * Outputs the entire contents of the page. No navigation (other than search box), just the big * warning message and page content.