From c24ef26d68100f4246ce4c5d3d195f25a2ecff0f Mon Sep 17 00:00:00 2001 From: tholam Date: Sat, 30 Nov 2013 18:49:21 -0600 Subject: [PATCH] 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 --- RELEASE-NOTES-1.25 | 2 + includes/AutoLoader.php | 1 + .../ResourceLoaderSkinModule.php | 69 +++++++++++++++++++ resources/Resources.php | 1 + 4 files changed, 73 insertions(+) create mode 100644 includes/resourceloader/ResourceLoaderSkinModule.php 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' ), -- 2.20.1