jenkins-bot has submitted this change and it was merged.

Change subject: Use OOUI HTMLForm for Special:Watchlist
......................................................................


Use OOUI HTMLForm for Special:Watchlist

Bug: T99256
Change-Id: I47a8649208279a4090623a3088112fcff9abc4d3
---
M autoload.php
A includes/htmlform/HTMLAdvancedSelectNamespace.php
A includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php
M includes/htmlform/HTMLCheckField.php
M includes/htmlform/HTMLForm.php
M includes/specials/SpecialWatchlist.php
M resources/Resources.php
A resources/src/mediawiki.special/mediawiki.special.watchlist.css
8 files changed, 138 insertions(+), 41 deletions(-)

Approvals:
  Legoktm: Looks good to me, approved
  Bartosz Dziewoński: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/autoload.php b/autoload.php
index a8940c4..4109740 100644
--- a/autoload.php
+++ b/autoload.php
@@ -478,6 +478,8 @@
        'GitInfo' => __DIR__ . '/includes/GitInfo.php',
        'GlobalDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
        'GlobalVarConfig' => __DIR__ . '/includes/config/GlobalVarConfig.php',
+       'HTMLAdvancedSelectNamespace' => __DIR__ . 
'/includes/htmlform/HTMLAdvancedSelectNamespace.php',
+       'HTMLAdvancedSelectNamespaceWithButton' => __DIR__ . 
'/includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php',
        'HTMLApiField' => __DIR__ . '/includes/htmlform/HTMLApiField.php',
        'HTMLAutoCompleteSelectField' => __DIR__ . 
'/includes/htmlform/HTMLAutoCompleteSelectField.php',
        'HTMLButtonField' => __DIR__ . '/includes/htmlform/HTMLButtonField.php',
diff --git a/includes/htmlform/HTMLAdvancedSelectNamespace.php 
b/includes/htmlform/HTMLAdvancedSelectNamespace.php
new file mode 100644
index 0000000..348d170
--- /dev/null
+++ b/includes/htmlform/HTMLAdvancedSelectNamespace.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Creates a Html::namespaceSelector input field with a button assigned to the 
input field.
+ * @since 1.26
+ */
+class HTMLAdvancedSelectNamespace extends HTMLSelectNamespace {
+       function getInputHTML( $value ) {
+               $allValue = ( isset( $this->mParams['all'] ) ? 
$this->mParams['all'] : '' );
+
+               return parent::getInputHTML( $value ) . '&#160;' .
+                       Xml::checkLabel(
+                               $this->msg( 'invert' )->text(),
+                               $this->mParams['invertname'],
+                               $this->mParams['invertid'],
+                               $this->mParams['invertdefault'],
+                               array( 'title' => $this->msg( 'tooltip-invert' 
)->text() )
+                       ) . '&#160;' .
+                       Xml::checkLabel(
+                               $this->msg( 'namespace_association' )->text(),
+                               $this->mParams['associatedname'],
+                               $this->mParams['associatedid'],
+                               $this->mParams['associateddefault'],
+                               array( 'title' => $this->msg( 
'tooltip-namespace_association' )->text() )
+                       );
+       }
+
+       /**
+        * Get the OOUI version of this field.
+        * @since 1.26
+        * @param string $value
+        * @return MediaWiki\\Widget\\NamespaceInputWidget A layout with all 
widget.
+        */
+       public function getInputOOUI( $value ) {
+               # There are more fields in this Widget as only one, so there 
are more values instead of only once.
+               # Filter the data from the request before creating the form to 
set the correct values to the
+               # Widget elements.
+               # Get WebRequest only, if there is an instance of HTMLForm, use 
default data instead
+               $invertdefault = false;
+               $associateddefault = false;
+               if ( $this->mParent instanceof HTMLForm ) {
+                       $request = $this->mParent->getRequest();
+                       if ( $request->getCheck( 
$this->mParams['associatedname'] ) ) {
+                               $associateddefault = true;
+                       }
+                       if ( $request->getCheck( $this->mParams['invertname'] ) 
) {
+                               $invertdefault = true;
+                       }
+               }
+
+               // Unsupported: invertid, associatedid
+               return new MediaWiki\Widget\NamespaceInputWidget( array(
+                       'valueNamespace' => $value,
+                       'nameNamespace' => $this->mName,
+                       'id' => $this->mID,
+                       'includeAllValue' => $this->mAllValue,
+                       'nameInvert' => $this->mParams['invertname'],
+                       'labelInvert' => $this->msg( 'invert' )->text(),
+                       'valueInvert' => $invertdefault,
+                       'nameAssociated' => $this->mParams['associatedname'],
+                       'valueAssociated' => $associateddefault,
+                       'labelAssociated' => $this->msg( 
'namespace_association' )->text(),
+               ) );
+       }
+}
diff --git a/includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php 
b/includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php
new file mode 100644
index 0000000..71c9509
--- /dev/null
+++ b/includes/htmlform/HTMLAdvancedSelectNamespaceWithButton.php
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Creates a Html::namespaceSelector input field with a button assigned to the 
input field.
+ */
+class HTMLAdvancedSelectNamespaceWithButton extends 
HTMLAdvancedSelectNamespace {
+       /** @var HTMLFormClassWithButton $mClassWithButton */
+       protected $mClassWithButton = null;
+
+       public function __construct( $info ) {
+               $this->mClassWithButton = new HTMLFormFieldWithButton( $info );
+               parent::__construct( $info );
+       }
+
+       public function getInputHTML( $value ) {
+               return $this->mClassWithButton->getElement( 
parent::getInputHTML( $value ) );
+       }
+}
diff --git a/includes/htmlform/HTMLCheckField.php 
b/includes/htmlform/HTMLCheckField.php
index 9666c4e..646b0d5 100644
--- a/includes/htmlform/HTMLCheckField.php
+++ b/includes/htmlform/HTMLCheckField.php
@@ -14,7 +14,7 @@
                $attr = $this->getTooltipAndAccessKey();
                $attr['id'] = $this->mID;
 
-               $attr += $this->getAttributes( array( 'disabled', 'tabindex' ) 
);
+               $attr += $this->getAttributes( array( 'disabled', 'tabindex', 
'title' ) );
 
                if ( $this->mClass !== '' ) {
                        $attr['class'] = $this->mClass;
diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php
index a56b398..b10d789 100644
--- a/includes/htmlform/HTMLForm.php
+++ b/includes/htmlform/HTMLForm.php
@@ -140,6 +140,8 @@
                'selectandother' => 'HTMLSelectAndOtherField',
                'namespaceselect' => 'HTMLSelectNamespace',
                'namespaceselectwithbutton' => 'HTMLSelectNamespaceWithButton',
+               'advancednamespaceselect' => 'HTMLAdvancedSelectNamespace',
+               'advancednamespaceselectwithbutton' => 
'HTMLAdvancedSelectNamespaceWithButton',
                'tagfilter' => 'HTMLTagFilter',
                'submit' => 'HTMLSubmitField',
                'hidden' => 'HTMLHiddenField',
diff --git a/includes/specials/SpecialWatchlist.php 
b/includes/specials/SpecialWatchlist.php
index 20f5776..211798e 100644
--- a/includes/specials/SpecialWatchlist.php
+++ b/includes/specials/SpecialWatchlist.php
@@ -396,6 +396,8 @@
         */
        public function doHeader( $opts, $numRows ) {
                $user = $this->getUser();
+               $out = $this->getOutput();
+               $out->addModules( 'mediawiki.special.watchlist' );
 
                $this->getOutput()->addSubtitle(
                        $this->msg( 'watchlistfor2', $user->getName() )
@@ -450,39 +452,34 @@
                $form .= $wlInfo;
                $form .= $cutofflinks;
                $form .= $lang->pipeList( $links ) . "\n";
-               $form .= "<hr />\n<p>";
-               $form .= Html::namespaceSelector(
-                       array(
-                               'selected' => $opts['namespace'],
-                               'all' => '',
-                               'label' => $this->msg( 'namespace' )->text()
-                       ), array(
+               $form .= "<hr />\n";
+               $out->addHtml( $form );
+
+               $formDescriptor = array(
+                       'namespace' => array(
+                               'class' => 
'HTMLAdvancedSelectNamespaceWithButton',
+                               'label-message' => 'namespace',
+                               'default' => $opts['namespace'],
                                'name' => 'namespace',
                                'id' => 'namespace',
-                               'class' => 'namespaceselector',
-                       )
-               ) . '&#160;';
-               $form .= Xml::checkLabel(
-                       $this->msg( 'invert' )->text(),
-                       'invert',
-                       'nsinvert',
-                       $opts['invert'],
-                       array( 'title' => $this->msg( 'tooltip-invert' 
)->text() )
-               ) . '&#160;';
-               $form .= Xml::checkLabel(
-                       $this->msg( 'namespace_association' )->text(),
-                       'associated',
-                       'nsassociated',
-                       $opts['associated'],
-                       array( 'title' => $this->msg( 
'tooltip-namespace_association' )->text() )
-               ) . '&#160;';
-               $form .= Xml::submitButton( $this->msg( 'allpagessubmit' 
)->text() ) . "</p>\n";
-               foreach ( $hiddenFields as $key => $value ) {
-                       $form .= Html::hidden( $key, $value ) . "\n";
-               }
+                               'invertdefault' => $opts['invert'],
+                               'invertname' => 'invert',
+                               'invertid' => 'nsinvert',
+                               'associateddefault' => $opts['associated'],
+                               'associatedname' => 'associated',
+                               'associatedid' => 'nsassociated',
+                               'buttondefault' => $this->msg( 'allpagessubmit' 
)->text(),
+                       ),
+               );
+               $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, 
$this->getContext() );
+               $htmlForm->suppressDefaultSubmit();
+               $htmlForm->addHiddenFields( $hiddenFields );
+               $htmlForm->prepareForm()->displayForm( false );
+
+               $form = '';
                $form .= Xml::closeElement( 'fieldset' ) . "\n";
                $form .= Xml::closeElement( 'form' ) . "\n";
-               $this->getOutput()->addHTML( $form );
+               $out->addHtml( $form );
 
                $this->setBottomText( $opts );
        }
@@ -491,6 +488,7 @@
                $nondefaults = $opts->getChangedValues();
                $form = "";
                $user = $this->getUser();
+               $out = $this->getOutput();
 
                $dbr = $this->getDB();
                $numItems = $this->countItems( $dbr );
@@ -513,19 +511,25 @@
                }
                $form .= "</p>";
 
+               $out->addHTML( $form );
+
                if ( $numItems > 0 && $showUpdatedMarker ) {
-                       $form .= Xml::openElement( 'form', array( 'method' => 
'post',
-                               'action' => 
$this->getPageTitle()->getLocalURL(),
-                               'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
-                       Xml::submitButton( $this->msg( 'enotif_reset' 
)->text(), array( 'name' => 'dummy' ) ) . "\n" .
-                       Html::hidden( 'reset', 'all' ) . "\n";
-                       foreach ( $nondefaults as $key => $value ) {
-                               $form .= Html::hidden( $key, $value ) . "\n";
-                       }
-                       $form .= Xml::closeElement( 'form' ) . "\n";
+                       $formDescriptor = array(
+                               'resetbutton' => array(
+                                       'type' => 'submit',
+                                       'name' => 'dummy',
+                                       'default' => $this->msg( 'enotif_reset' 
)->text(),
+                               ),
+                       );
+                       $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, 
$this->getContext() );
+                       $htmlForm->suppressDefaultSubmit();
+                       $htmlForm->setId( 'mw-watchlist-resetbutton' );
+                       $nondefaults['reset'] = 'all';
+                       $htmlForm->addHiddenFields( $nondefaults );
+                       $htmlForm->prepareForm()->displayForm( false );
                }
 
-               $form .= Xml::openElement( 'form', array(
+               $form = Xml::openElement( 'form', array(
                        'method' => 'post',
                        'action' => $this->getPageTitle()->getLocalURL(),
                        'id' => 'mw-watchlist-form'
@@ -538,7 +542,7 @@
 
                $form .= SpecialRecentChanges::makeLegend( $this->getContext() 
);
 
-               $this->getOutput()->addHTML( $form );
+               $out->addHTML( $form );
        }
 
        protected function showHideLink( $options, $message, $name, $value ) {
diff --git a/resources/Resources.php b/resources/Resources.php
index fb0971e..46b44a6 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -1655,6 +1655,10 @@
        'mediawiki.special.version' => array(
                'styles' => 
'resources/src/mediawiki.special/mediawiki.special.version.css',
        ),
+       'mediawiki.special.watchlist' => array(
+               'position' => 'top',
+               'styles' => 
'resources/src/mediawiki.special/mediawiki.special.watchlist.css',
+       ),
 
        /* MediaWiki Installer */
 
diff --git a/resources/src/mediawiki.special/mediawiki.special.watchlist.css 
b/resources/src/mediawiki.special/mediawiki.special.watchlist.css
new file mode 100644
index 0000000..c802f8c
--- /dev/null
+++ b/resources/src/mediawiki.special/mediawiki.special.watchlist.css
@@ -0,0 +1,4 @@
+.mw-htmlform-ooui-wrapper {
+       /* We're gonna need a bigger form! */
+       width: 60em;
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/211131
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I47a8649208279a4090623a3088112fcff9abc4d3
Gerrit-PatchSet: 23
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>
Gerrit-Reviewer: Bartosz Dziewoński <matma....@gmail.com>
Gerrit-Reviewer: Daniel Friesen <dan...@nadir-seen-fire.com>
Gerrit-Reviewer: Edokter <er...@darcoury.nl>
Gerrit-Reviewer: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>
Gerrit-Reviewer: Jack Phoenix <j...@countervandalism.net>
Gerrit-Reviewer: Jforrester <jforres...@wikimedia.org>
Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com>
Gerrit-Reviewer: Mattflaschen <mflasc...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to