Contributions: Only add form JS when the form is added
authorDerk-Jan Hartman <hartman.wiki@gmail.com>
Mon, 19 Feb 2018 11:53:47 +0000 (12:53 +0100)
committerDerk-Jan Hartman <hartman.wiki@gmail.com>
Wed, 21 Feb 2018 09:47:13 +0000 (10:47 +0100)
Special:Contributions can be transcluded ('including') on to another
page. In this mode, the form is not present, but the OOUI JS infusing,
payload and styling, was added regardless. This caused errors on pages
transcluding such lists, as the OOUI HTML was missing, causing the JS to
throw errors.

Bug: T187710
Change-Id: I7d45dd3ddd3ba75d44f7d24e03cef5e95301f4ed

includes/specials/SpecialContributions.php

index 4775a7f..806713b 100644 (file)
@@ -40,14 +40,12 @@ class SpecialContributions extends IncludableSpecialPage {
                $this->setHeaders();
                $this->outputHeader();
                $out = $this->getOutput();
+               // Modules required for viewing the list of contributions (also when included on other pages)
                $out->addModuleStyles( [
                        'mediawiki.special',
                        'mediawiki.special.changeslist',
-                       'mediawiki.widgets.DateInputWidget.styles',
                ] );
-               $out->addModules( 'mediawiki.special.contributions' );
                $this->addHelpLink( 'Help:User contributions' );
-               $out->enableOOUI();
 
                $this->opts = [];
                $request = $this->getRequest();
@@ -497,6 +495,14 @@ class SpecialContributions extends IncludableSpecialPage {
                        $this->opts['hideMinor'] = false;
                }
 
+               // Modules required only for the form
+               $this->getOutput()->addModules( [
+                       'mediawiki.userSuggest',
+                       'mediawiki.special.contributions',
+               ] );
+               $this->getOutput()->addModuleStyles( 'mediawiki.widgets.DateInputWidget.styles' );
+               $this->getOutput()->enableOOUI();
+
                $form = Html::openElement(
                        'form',
                        [
@@ -544,8 +550,6 @@ class SpecialContributions extends IncludableSpecialPage {
                        $filterSelection = Html::rawElement( 'div', [], '' );
                }
 
-               $this->getOutput()->addModules( 'mediawiki.userSuggest' );
-
                $labelNewbies = Xml::radioLabel(
                        $this->msg( 'sp-contributions-newbies' )->text(),
                        'contribs',