Merge "Convert article delete to use OOUI"
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoader.php
index c2faf48..8553116 100644 (file)
@@ -563,7 +563,8 @@ class ResourceLoader implements LoggerAwareInterface {
        }
 
        /**
-        * Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule.
+        * Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule
+        * or one of its subclasses.
         *
         * @param string $name Module name
         * @return bool
@@ -573,11 +574,13 @@ class ResourceLoader implements LoggerAwareInterface {
                        return false;
                }
                $info = $this->moduleInfos[$name];
+               if ( isset( $info['object'] ) ) {
+                       return false;
+               }
                if (
-                       isset( $info['object'] ) ||
-                       // This special case is dumb, but we need $wgResourceModuleSkinStyles
-                       // to work for 'oojs-ui-core.styles'. See T167042.
-                       ( isset( $info['class'] ) && $info['class'] !== 'ResourceLoaderOOUIFileModule' )
+                       isset( $info['class'] ) &&
+                       $info['class'] !== 'ResourceLoaderFileModule' &&
+                       !is_subclass_of( $info['class'], 'ResourceLoaderFileModule' )
                ) {
                        return false;
                }
@@ -1097,7 +1100,12 @@ MESSAGE;
                                        $strContent = self::filter( $filter, $strContent );
                                }
 
-                               $out .= $strContent;
+                               if ( $context->getOnly() === 'scripts' ) {
+                                       // Use a linebreak between module scripts (T162719)
+                                       $out .= $this->ensureNewline( $strContent );
+                               } else {
+                                       $out .= $strContent;
+                               }
 
                        } catch ( Exception $e ) {
                                $this->outputErrorAndLog( $e, 'Generating module package failed: {exception}' );
@@ -1125,7 +1133,8 @@ MESSAGE;
                                if ( !$context->getDebug() ) {
                                        $stateScript = self::filter( 'minify-js', $stateScript );
                                }
-                               $out .= $stateScript;
+                               // Use a linebreak between module script and state script (T162719)
+                               $out = $this->ensureNewline( $out ) . $stateScript;
                        }
                } else {
                        if ( count( $states ) ) {
@@ -1137,6 +1146,19 @@ MESSAGE;
                return $out;
        }
 
+       /**
+        * Ensure the string is either empty or ends in a line break
+        * @param string $str
+        * @return string
+        */
+       private function ensureNewline( $str ) {
+               $end = substr( $str, -1 );
+               if ( $end === false || $end === "\n" ) {
+                       return $str;
+               }
+               return $str . "\n";
+       }
+
        /**
         * Get names of modules that use a certain message.
         *