X-Git-Url: http://git.cyclocoop.org/%28?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderSkinModule.php;h=1967a957141d3ab96d88972a83f25de0a8b5c779;hb=2f1050622ac263a30cb02417ec2ce9da6aa4ee06;hp=d72b3afaf5b532e1d0cd095453229fe9eaca0392;hpb=b170b4a14a94fb509c4b15ca4c5717c6976a32cc;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderSkinModule.php b/includes/resourceloader/ResourceLoaderSkinModule.php index d72b3afaf5..1967a95714 100644 --- a/includes/resourceloader/ResourceLoaderSkinModule.php +++ b/includes/resourceloader/ResourceLoaderSkinModule.php @@ -22,49 +22,87 @@ */ class ResourceLoaderSkinModule extends ResourceLoaderFileModule { + /** + * All skins are assumed to be compatible with mobile + */ + public $targets = [ 'desktop', 'mobile' ]; /** * @param ResourceLoaderContext $context * @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'] ); - + $logo = $this->getLogo( $this->getConfig() ); $styles = parent::getStyles( $context ); + + $default = !is_array( $logo ) ? $logo : $logo['1x']; $styles['all'][] = '.mw-wiki-logo { background-image: ' . - CSSMin::buildUrlValue( $logo1 ) . - '; }'; - if ( $logoHD ) { - if ( isset( $logoHD['1.5x'] ) ) { + CSSMin::buildUrlValue( $default ) . + '; }'; + + if ( is_array( $logo ) ) { + if ( isset( $logo['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 ) . ';' . + CSSMin::buildUrlValue( $logo['1.5x'] ) . ';' . 'background-size: 135px auto; }'; } - if ( isset( $logoHD['2x'] ) ) { + if ( isset( $logo['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 ) . ';' . + CSSMin::buildUrlValue( $logo['2x'] ) . ';' . 'background-size: 135px auto; }'; } } + return $styles; } + /** + * @param Config $conf + * @return string|array Single url if no variants are defined + * or array of logo urls keyed by dppx in form "x". + * Key "1x" is always defined. + */ + public static function getLogo( Config $conf ) { + $logo = $conf->get( 'Logo' ); + $logoHD = $conf->get( 'LogoHD' ); + + $logo1Url = OutputPage::transformResourcePath( $conf, $logo ); + + if ( !$logoHD ) { + return $logo1Url; + } + + $logoUrls = [ + '1x' => $logo1Url, + ]; + + // Only 1.5x and 2x are supported + if ( isset( $logoHD['1.5x'] ) ) { + $logoUrls['1.5x'] = OutputPage::transformResourcePath( + $conf, + $logoHD['1.5x'] + ); + } + if ( isset( $logoHD['2x'] ) ) { + $logoUrls['2x'] = OutputPage::transformResourcePath( + $conf, + $logoHD['2x'] + ); + } + + return $logoUrls; + } + /** * @param ResourceLoaderContext $context * @return bool