X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderImageModule.php;h=d26c96181c82af156a0d95050fd64d4e400ab176;hb=eaefbf99c8183f543c766272fc1a73480d28e004;hp=ff1b7b1a8893755b6fa8fbc0d9a9c8cf5954251d;hpb=df212f1c916f73ea8e2bdfdf00228d551b8bd620;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderImageModule.php b/includes/resourceloader/ResourceLoaderImageModule.php index ff1b7b1a88..d26c96181c 100644 --- a/includes/resourceloader/ResourceLoaderImageModule.php +++ b/includes/resourceloader/ResourceLoaderImageModule.php @@ -70,7 +70,8 @@ class ResourceLoaderImageModule extends ResourceLoaderModule { * 'selectorWithVariant' => [CSS selector template, variables: {prefix} {name} {variant}], * // List of variants that may be used for the image files * 'variants' => [ - * [theme name] => [ + * // This level of nesting can be omitted if you use the same images for every skin + * [skin name (or 'default')] => [ * [variant name] => [ * 'color' => [color string, e.g. '#ffff00'], * 'global' => [boolean, if true, this variant is available @@ -82,7 +83,8 @@ class ResourceLoaderImageModule extends ResourceLoaderModule { * ], * // List of image files and their options * 'images' => [ - * [theme name] => [ + * // This level of nesting can be omitted if you use the same images for every skin + * [skin name (or 'default')] => [ * [icon name] => [ * 'file' => [file path string or array whose values are file path strings * and whose keys are 'default', 'ltr', 'rtl', a single @@ -315,11 +317,7 @@ class ResourceLoaderImageModule extends ResourceLoaderModule { $selectors = $this->getSelectors(); foreach ( $this->getImages( $context ) as $name => $image ) { - $declarations = $this->getCssDeclarations( - $image->getDataUri( $context, null, 'original' ), - $image->getUrl( $context, $script, null, 'rasterized' ) - ); - $declarations = implode( "\n\t", $declarations ); + $declarations = $this->getStyleDeclarations( $context, $image, $script ); $selector = strtr( $selectors['selectorWithoutVariant'], [ @@ -331,11 +329,7 @@ class ResourceLoaderImageModule extends ResourceLoaderModule { $rules[] = "$selector {\n\t$declarations\n}"; foreach ( $image->getVariants() as $variant ) { - $declarations = $this->getCssDeclarations( - $image->getDataUri( $context, $variant, 'original' ), - $image->getUrl( $context, $script, $variant, 'rasterized' ) - ); - $declarations = implode( "\n\t", $declarations ); + $declarations = $this->getStyleDeclarations( $context, $image, $script, $variant ); $selector = strtr( $selectors['selectorWithVariant'], [ @@ -352,6 +346,28 @@ class ResourceLoaderImageModule extends ResourceLoaderModule { return [ 'all' => $style ]; } + /** + * @param ResourceLoaderContext $context + * @param ResourceLoaderImage $image Image to get the style for + * @param string $script URL to load.php + * @param string|null $variant Variant to get the style for + * @return string + */ + private function getStyleDeclarations( + ResourceLoaderContext $context, + ResourceLoaderImage $image, + $script, + $variant = null + ) { + $imageDataUri = $image->getDataUri( $context, $variant, 'original' ); + $primaryUrl = $imageDataUri ?: $image->getUrl( $context, $script, $variant, 'original' ); + $declarations = $this->getCssDeclarations( + $primaryUrl, + $image->getUrl( $context, $script, $variant, 'rasterized' ) + ); + return implode( "\n\t", $declarations ); + } + /** * SVG support using a transparent gradient to guarantee cross-browser * compatibility (browsers able to understand gradient syntax support also SVG).