X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderImage.php;h=d9c369dd02359933f5424a5ce1ac27637729045b;hp=d38a17500814c8d89b9a6f11ce1a6a147fab0597;hb=6f3d5a5204770b7e9076ec0c956631c32a9e1114;hpb=671e5b4d81af60d1e05b7227ac688ad97f193150 diff --git a/includes/resourceloader/ResourceLoaderImage.php b/includes/resourceloader/ResourceLoaderImage.php index d38a175008..d9c369dd02 100644 --- a/includes/resourceloader/ResourceLoaderImage.php +++ b/includes/resourceloader/ResourceLoaderImage.php @@ -44,14 +44,18 @@ class ResourceLoaderImage { * @param string|array $descriptor Path to image file, or array structure containing paths * @param string $basePath Directory to which paths in descriptor refer * @param array $variants + * @param string|null $defaultColor of the base variant * @throws InvalidArgumentException */ - public function __construct( $name, $module, $descriptor, $basePath, $variants ) { + public function __construct( $name, $module, $descriptor, $basePath, $variants, + $defaultColor = null + ) { $this->name = $name; $this->module = $module; $this->descriptor = $descriptor; $this->basePath = $basePath; $this->variants = $variants; + $this->defaultColor = $defaultColor; // Expand shorthands: // [ "en,de,fr" => "foo.svg" ] @@ -136,13 +140,9 @@ class ResourceLoaderImage { if ( isset( $desc['lang'][$contextLang] ) ) { return $this->basePath . '/' . $desc['lang'][$contextLang]; } - $fallbacks = Language::getFallbacksFor( $contextLang ); + $fallbacks = Language::getFallbacksFor( $contextLang, Language::STRICT_FALLBACKS ); foreach ( $fallbacks as $lang ) { - // Images will fallback to 'default' instead of 'en', except for 'en-*' variants - if ( - ( $lang !== 'en' || substr( $contextLang, 0, 3 ) === 'en-' ) && - isset( $desc['lang'][$lang] ) - ) { + if ( isset( $desc['lang'][$lang] ) ) { return $this->basePath . '/' . $desc['lang'][$lang]; } } @@ -250,7 +250,10 @@ class ResourceLoaderImage { if ( $variant && isset( $this->variants[$variant] ) ) { $data = $this->variantize( $this->variants[$variant], $context ); } else { - $data = file_get_contents( $path ); + $defaultColor = $this->defaultColor; + $data = $defaultColor ? + $this->variantize( [ 'color' => $defaultColor ], $context ) : + file_get_contents( $path ); } if ( $format === 'rasterized' ) {