From 67984c30d63b1b0dc7d7b84e84f1810b584685c7 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Tue, 29 Mar 2016 14:15:12 -0400 Subject: [PATCH] resourceloader: Avoid Title::newMainPage() to support $wgForceUIMsgAsContentMsg $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 --- .../resourceloader/ResourceLoaderStartUpModule.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index d7651378a3..34866f3635 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -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' ), -- 2.20.1