wiki.techinc.nl/includes/resourceloader/ResourceLoaderSkinModule.php
Timo Tijhof 419db58c8b Centralise url handling for urls to static resources
Keep in CSSMin as-is for back-compat and to ensure library remains
independent of MediaWiki.

Moved down a few lines as there is no need to compute the md5 hash when we're
returning a data URI. Previously md5_file was called twice during module builds
(once for the fallback url, and another time when producing the embedded data uri).

Applied to logo in SkinModule as example. To be applied elsewhere as needed.
Without it, fallback is current behaviour (no cache invalidation).

Bug: T99096
Change-Id: I7f38bfc1bea5c241bc4f8ec4f4b640fd65f2c04f
2016-02-02 23:26:16 +00:00

89 lines
2.8 KiB
PHP

<?php
/**
* ResourceLoader module for skin stylesheets.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @author Timo Tijhof
*/
class ResourceLoaderSkinModule extends ResourceLoaderFileModule {
/* Methods */
/**
* @param $context ResourceLoaderContext
* @return array
*/
public function getStyles( ResourceLoaderContext $context ) {
$conf = $this->getConfig();
$logo = $conf->get( 'Logo' );
$logoHD = $conf->get( 'LogoHD' );
$logo1 = OutputPage::transformResourcePath( $conf, $logo );
$logo15 = OutputPage::transformResourcePath( $conf, $logoHD['1.5x'] );
$logo2 = OutputPage::transformResourcePath( $conf, $logoHD['2x'] );
$styles = parent::getStyles( $context );
$styles['all'][] = '.mw-wiki-logo { background-image: ' .
CSSMin::buildUrlValue( $logo1 ) .
'; }';
if ( $logoHD ) {
if ( isset( $logoHD['1.5x'] ) ) {
$styles[
'(-webkit-min-device-pixel-ratio: 1.5), ' .
'(min--moz-device-pixel-ratio: 1.5), ' .
'(min-resolution: 1.5dppx), ' .
'(min-resolution: 144dpi)'
][] = '.mw-wiki-logo { background-image: ' .
CSSMin::buildUrlValue( $logo15 ) . ';' .
'background-size: 135px auto; }';
}
if ( isset( $logoHD['2x'] ) ) {
$styles[
'(-webkit-min-device-pixel-ratio: 2), ' .
'(min--moz-device-pixel-ratio: 2),' .
'(min-resolution: 2dppx), ' .
'(min-resolution: 192dpi)'
][] = '.mw-wiki-logo { background-image: ' .
CSSMin::buildUrlValue( $logo2 ) . ';' .
'background-size: 135px auto; }';
}
}
return $styles;
}
/**
* @param $context ResourceLoaderContext
* @return bool
*/
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 string: Hash
*/
public function getModifiedHash( ResourceLoaderContext $context ) {
$logo = $this->getConfig()->get( 'Logo' );
$logoHD = $this->getConfig()->get( 'LogoHD' );
return md5( parent::getModifiedHash( $context ) . $logo . json_encode( $logoHD ) );
}
}