From: tholam Date: Sun, 1 Dec 2013 00:49:21 +0000 (-0600) Subject: Set site logo in mediawiki.skinning.interface module instead of inline styles X-Git-Tag: 1.31.0-rc.0~13798 X-Git-Url: http://git.cyclocoop.org/%22.%20generer_url_ecrire%28%22sites_tous%22%2C%22%22%29.%20%22?a=commitdiff_plain;h=c24ef26d68100f4246ce4c5d3d195f25a2ecff0f;p=lhc%2Fweb%2Fwiklou.git Set site logo in mediawiki.skinning.interface module instead of inline styles Requires skins use the 'mw-wiki-logo' class on the logo element for the styles to apply and to load the 'mediawiki.skinning.interface' module (or implement their own skin module that uses the ResourceLoaderSkinModule class). This is backwards compatible with skins using inline styles as the class only applies when used. Bug: 56257 Change-Id: I4e6db89a688843ac24539f8fd1b408c0d04881b3 --- diff --git a/RELEASE-NOTES-1.25 b/RELEASE-NOTES-1.25 index 71ac5e380e..aa46518225 100644 --- a/RELEASE-NOTES-1.25 +++ b/RELEASE-NOTES-1.25 @@ -33,6 +33,8 @@ changes to languages because of Bugzilla reports. removed. See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery for migration guide for creators and users of custom skins that relied on it. * Javascript variable 'wgFileCanRotate' now only available on Special:Upload. +* (bug 56257) Set site logo from mediawiki.skinning.interface module instead of + inline styles in the HTML. == Compatibility == diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index c5032b5170..50fcd610c2 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -890,6 +890,7 @@ $wgAutoloadLocalClasses = array( 'ResourceLoaderModule' => 'includes/resourceloader/ResourceLoaderModule.php', 'ResourceLoaderNoscriptModule' => 'includes/resourceloader/ResourceLoaderNoscriptModule.php', 'ResourceLoaderSiteModule' => 'includes/resourceloader/ResourceLoaderSiteModule.php', + 'ResourceLoaderSkinModule' => 'includes/resourceloader/ResourceLoaderSkinModule.php', 'ResourceLoaderStartUpModule' => 'includes/resourceloader/ResourceLoaderStartUpModule.php', 'ResourceLoaderUserCSSPrefsModule' => 'includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php', diff --git a/includes/resourceloader/ResourceLoaderSkinModule.php b/includes/resourceloader/ResourceLoaderSkinModule.php new file mode 100644 index 0000000000..6de1be0d2d --- /dev/null +++ b/includes/resourceloader/ResourceLoaderSkinModule.php @@ -0,0 +1,69 @@ +getConfig()->get( 'Logo' ); + $styles = parent::getStyles( $context ); + $styles['all'][] = '.mw-wiki-logo { background-image: ' . + CSSMin::buildUrlValue( $logo ) . + '; }'; + + return $styles; + } + + /** + * @param $context ResourceLoaderContext + * @return boolean + */ + public function isKnownEmpty( ResourceLoaderContext $context ) { + // Regardless of whether the files are specified, we always + // provide mw-wiki-logo styles. + return false; + } + + /** + * @param $context ResourceLoaderContext + * @return int|mixed + */ + public function getModifiedTime( ResourceLoaderContext $context ) { + $parentMTime = parent::getModifiedTime( $context ); + return max( $parentMTime, $this->getHashMtime( $context ) ); + } + + /** + * @param $context ResourceLoaderContext + * @return string: Hash + */ + public function getModifiedHash( ResourceLoaderContext $context ) { + $logo = $this->getConfig()->get( 'Logo' ); + return md5( parent::getModifiedHash( $context ) . $logo ); + } +} diff --git a/resources/Resources.php b/resources/Resources.php index 3bb5b4e53b..7bc3b750b5 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -93,6 +93,7 @@ return array( ), ), 'mediawiki.skinning.interface' => array( + 'class' => 'ResourceLoaderSkinModule', // Used in the web installer. Test it after modifying this definition! 'styles' => array( 'resources/src/mediawiki.skinning/elements.css' => array( 'media' => 'screen' ),