resourceloader: Avoid Title::newMainPage() to support $wgForceUIMsgAsContentMsg
authorBrad Jorsch <bjorsch@wikimedia.org>
Tue, 29 Mar 2016 18:15:12 +0000 (14:15 -0400)
committerKrinkle <krinklemail@gmail.com>
Fri, 1 Apr 2016 23:37:09 +0000 (23:37 +0000)
$wgForceUIMsgAsContentMsg forces Message::inContentLanguage() to not
actually do anything, thus falling back to the session user's language
which we can't use in ResourceLoader. And 'mainpage' is added to that
array on various multi-lingual wikis.

Bug: T127233
Change-Id: I9dc1e57922641881b36c70658083c2c8c8a608a0

includes/resourceloader/ResourceLoaderStartUpModule.php

index d765137..34866f3 100644 (file)
@@ -40,8 +40,17 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                }
 
                global $wgContLang;
+               $conf = $this->getConfig();
 
-               $mainPage = Title::newMainPage();
+               // We can't use Title::newMainPage() if 'mainpage' is in
+               // $wgForceUIMsgAsContentMsg because that will try to use the session
+               // user's language and we have no session user. This does the
+               // equivalent but falling back to our ResourceLoaderContext language
+               // instead.
+               $mainPage = Title::newFromText( $context->msg( 'mainpage' )->inContentLanguage()->text() );
+               if ( !$mainPage ) {
+                       $mainPage = Title::newFromText( 'Main Page' );
+               }
 
                /**
                 * Namespace related preparation
@@ -57,7 +66,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        }
                }
 
-               $conf = $this->getConfig();
                // Build list of variables
                $vars = [
                        'wgLoadScript' => wfScript( 'load' ),