From 767a8725fa9864266eb07393fe9ed11e3379beed Mon Sep 17 00:00:00 2001 From: Trevor Parscal Date: Fri, 10 Sep 2010 20:18:24 +0000 Subject: [PATCH] ResourceLoaderSiteModule now supports CSS too! --- includes/ResourceLoader.php | 13 ++++++++-- includes/ResourceLoaderModule.php | 43 ++++++++++++++++++++++++++----- includes/Skin.php | 13 ++-------- 3 files changed, 49 insertions(+), 20 deletions(-) diff --git a/includes/ResourceLoader.php b/includes/ResourceLoader.php index ede4341c7a..3ca408cf4a 100644 --- a/includes/ResourceLoader.php +++ b/includes/ResourceLoader.php @@ -307,8 +307,17 @@ class ResourceLoader { // Output if ( $context->getOnly() === 'styles' ) { - foreach ( $styles as $media => $style ) { - echo "@media $media {\n$style\n}\n"; + if ( $context->getDebug() ) { + echo "/* $name */\n"; + foreach ( $styles as $media => $style ) { + echo "@media $media {\n" . str_replace( "\n", "\n\t", "\t" . $style ) . "\n}\n"; + } + } else { + foreach ( $styles as $media => $style ) { + if ( strlen( $style ) ) { + echo "@media $media{" . $style . "}"; + } + } } } else if ( $context->getOnly() === 'scripts' ) { echo $scripts; diff --git a/includes/ResourceLoaderModule.php b/includes/ResourceLoaderModule.php index cb1977a148..5d5c0131e6 100644 --- a/includes/ResourceLoaderModule.php +++ b/includes/ResourceLoaderModule.php @@ -691,6 +691,8 @@ class ResourceLoaderSiteModule extends ResourceLoaderModule { } public function getModifiedTime( ResourceLoaderContext $context ) { + global $wgHandheldStyle; + if ( isset( $this->modifiedTime[$context->getHash()] ) ) { return $this->modifiedTime[$context->getHash()]; } @@ -698,20 +700,28 @@ class ResourceLoaderSiteModule extends ResourceLoaderModule { // HACK: We duplicate the message names from generateUserJs() // here and weird things (i.e. mtime moving backwards) can happen // when a MediaWiki:Something.js page is deleted - $jsPages = array( Title::makeTitle( NS_MEDIAWIKI, 'Common.js' ), - Title::makeTitle( NS_MEDIAWIKI, ucfirst( $context->getSkin() ) . '.js' ) + $pages = array( + Title::makeTitle( NS_MEDIAWIKI, 'Common.js' ), + Title::makeTitle( NS_MEDIAWIKI, 'Common.css' ), + Title::makeTitle( NS_MEDIAWIKI, ucfirst( $context->getSkin() ) . '.js' ), + Title::makeTitle( NS_MEDIAWIKI, ucfirst( $context->getSkin() ) . '.css' ), + Title::makeTitle( NS_MEDIAWIKI, 'Print.css' ), + ); + if ( $wgHandheldStyle ) { + $pages[] = Title::makeTitle( NS_MEDIAWIKI, 'Handheld.css' ); + } // Do batch existence check // TODO: This would work better if page_touched were loaded by this as well - $lb = new LinkBatch( $jsPages ); + $lb = new LinkBatch( $pages ); $lb->execute(); $this->modifiedTime = 1; // wfTimestamp() interprets 0 as "now" - foreach ( $jsPages as $jsPage ) { - if ( $jsPage->exists() ) { - $this->modifiedTime = max( $this->modifiedTime, wfTimestamp( TS_UNIX, $jsPage->getTouched() ) ); + foreach ( $pages as $page ) { + if ( $page->exists() ) { + $this->modifiedTime = max( $this->modifiedTime, wfTimestamp( TS_UNIX, $page->getTouched() ) ); } } @@ -719,7 +729,26 @@ class ResourceLoaderSiteModule extends ResourceLoaderModule { } public function getStyles( ResourceLoaderContext $context ) { - return array(); + global $wgHandheldStyle; + $styles = array( + 'all' => array( 'Common.css', $context->getSkin() . '.css' ), + 'print' => array( 'Print.css' ), + ); + if ( $wgHandheldStyle ) { + $sources['handheld'] = array( 'Handheld.css' ); + } + foreach ( $styles as $media => $messages ) { + foreach ( $messages as $i => $message ) { + $style = wfMsgExt( $message, 'content' ); + if ( !wfEmptyMsg( $message, $style ) ) { + $styles[$media][$i] = $style; + } + } + } + foreach ( $styles as $media => $messages ) { + $styles[$media] = implode( "\n", $messages ); + } + return $styles; } public function getMessages() { return array(); } public function getLoaderScript() { return ''; } diff --git a/includes/Skin.php b/includes/Skin.php index a57cc18dcc..0f0fae558a 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -646,17 +646,7 @@ CSS; // If we use the site's dynamic CSS, throw that in, too // Per-site custom styles if ( $wgUseSiteCss ) { - global $wgHandheldStyle; - - $query = wfArrayToCGI( self::getDynamicStylesheetQuery() ); - # Site settings must override extension css! (bug 15025) - $out->addStyle( self::makeNSUrl( 'Common.css', $query, NS_MEDIAWIKI ) ); - $out->addStyle( self::makeNSUrl( 'Print.css', $query, NS_MEDIAWIKI ), 'print' ); - - if ( $wgHandheldStyle ) { - $out->addStyle( self::makeNSUrl( 'Handheld.css', $query, NS_MEDIAWIKI ), 'handheld' ); - } - $out->addStyle( self::makeNSUrl( $this->getSkinName() . '.css', $query, NS_MEDIAWIKI ) ); + $out->addModuleStyles( 'site' ); } global $wgAllowUserCssPrefs; @@ -727,6 +717,7 @@ CSS; $out->addModuleStyles( 'mediawiki.legacy.oldshared' ); // TODO: Figure out how to best integrate this stuff into ResourceLoader $out->addStyle( $this->getStylesheet() ); + // TODO: When converting old skins to use ResourceLoader (or removing them) this needs to be reconsidered $out->addStyle( 'common/common_rtl.css', '', '', 'rtl' ); } -- 2.20.1