From 0048c3e255be034a5ad3d19ea73ee9271642ff53 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sat, 20 May 2017 15:07:37 +0200 Subject: [PATCH] OutputPage: Move hardcoded default modules to Skin::getDefaultModules These modules should not be hardcoded in OutputPage::output() which makes them impossible to override and also very hard to retrieve through the API for action=parse. Move these instead to Skin which is where all other default module loading happens already. Moving these modules is in preparation for customising ApiParse to support "really" returning all would-be loaded modules on a page when setting 'useskin', which is also needed for Live Preview and in theory for ajax navigation and other scenarios where there is a delay between the "initial" page rendering, and a later re-render which may not have all all the necessary modules. Bug: T130632 Change-Id: Ic4afccf0cd0d428d7fbc36d4e747415af3ab49f5 --- includes/OutputPage.php | 20 ++------------------ includes/skins/Skin.php | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/includes/OutputPage.php b/includes/OutputPage.php index e71cf1866c..ff80f1e425 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -2405,26 +2405,10 @@ class OutputPage extends ContextSource { } $sk = $this->getSkin(); - // add skin specific modules - $modules = $sk->getDefaultModules(); - - // Enforce various default modules for all pages and all skins - $coreModules = [ - // Keep this list as small as possible - 'site', - 'mediawiki.page.startup', - 'mediawiki.user', - ]; - - // Support for high-density display images if enabled - if ( $config->get( 'ResponsiveImages' ) ) { - $coreModules[] = 'mediawiki.hidpi'; - } - - $this->addModules( $coreModules ); - foreach ( $modules as $group ) { + foreach ( $sk->getDefaultModules() as $group ) { $this->addModules( $group ); } + MWDebug::addModules( $this ); // Avoid PHP 7.1 warning of passing $this by reference diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index 7f00767e07..2cd28b4a8d 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -158,8 +158,17 @@ abstract class Skin extends ContextSource { global $wgUseAjax, $wgEnableAPI, $wgEnableWriteAPI; $out = $this->getOutput(); + $config = $this->getConfig(); $user = $out->getUser(); $modules = [ + // modules not specific to any specific skin or page + 'core' => [ + // Enforce various default modules for all pages and all skins + // Keep this list as small as possible + 'site', + 'mediawiki.page.startup', + 'mediawiki.user', + ], // modules that enhance the page content in some way 'content' => [ 'mediawiki.page.ready', @@ -172,6 +181,11 @@ abstract class Skin extends ContextSource { 'user' => [], ]; + // Support for high-density display images if enabled + if ( $config->get( 'ResponsiveImages' ) ) { + $modules['core'][] = 'mediawiki.hidpi'; + } + // Preload jquery.tablesorter for mediawiki.page.ready if ( strpos( $out->getHTML(), 'sortable' ) !== false ) { $modules['content'][] = 'jquery.tablesorter'; -- 2.20.1