Merge "ResourceLoaderOOUIModule: Minor code quality fixes, and more comments"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 17 Mar 2017 20:21:42 +0000 (20:21 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 17 Mar 2017 20:21:42 +0000 (20:21 +0000)
1  2 
includes/resourceloader/ResourceLoaderImageModule.php

@@@ -70,7 -70,8 +70,8 @@@ class ResourceLoaderImageModule extend
         *         '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 +83,8 @@@
         *         ],
         *         // 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
                $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'],
                                [
                        $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'],
                                        [
                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).