'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',
--- /dev/null
+<?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 ) . ' ' .
+ Xml::checkLabel(
+ $this->msg( 'invert' )->text(),
+ $this->mParams['invertname'],
+ $this->mParams['invertid'],
+ $this->mParams['invertdefault'],
+ array( 'title' => $this->msg( 'tooltip-invert' )->text() )
+ ) . ' ' .
+ 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(),
+ ) );
+ }
+}
--- /dev/null
+<?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 ) );
+ }
+}
$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;
'selectandother' => 'HTMLSelectAndOtherField',
'namespaceselect' => 'HTMLSelectNamespace',
'namespaceselectwithbutton' => 'HTMLSelectNamespaceWithButton',
+ 'advancednamespaceselect' => 'HTMLAdvancedSelectNamespace',
+ 'advancednamespaceselectwithbutton' => 'HTMLAdvancedSelectNamespaceWithButton',
'tagfilter' => 'HTMLTagFilter',
'submit' => 'HTMLSubmitField',
'hidden' => 'HTMLHiddenField',
*/
public function doHeader( $opts, $numRows ) {
$user = $this->getUser();
+ $out = $this->getOutput();
+ $out->addModules( 'mediawiki.special.watchlist' );
$this->getOutput()->addSubtitle(
$this->msg( 'watchlistfor2', $user->getName() )
$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',
- )
- ) . ' ';
- $form .= Xml::checkLabel(
- $this->msg( 'invert' )->text(),
- 'invert',
- 'nsinvert',
- $opts['invert'],
- array( 'title' => $this->msg( 'tooltip-invert' )->text() )
- ) . ' ';
- $form .= Xml::checkLabel(
- $this->msg( 'namespace_association' )->text(),
- 'associated',
- 'nsassociated',
- $opts['associated'],
- array( 'title' => $this->msg( 'tooltip-namespace_association' )->text() )
- ) . ' ';
- $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 );
}
$nondefaults = $opts->getChangedValues();
$form = "";
$user = $this->getUser();
+ $out = $this->getOutput();
$dbr = $this->getDB();
$numItems = $this->countItems( $dbr );
}
$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'
$form .= SpecialRecentChanges::makeLegend( $this->getContext() );
- $this->getOutput()->addHTML( $form );
+ $out->addHTML( $form );
}
protected function showHideLink( $options, $message, $name, $value ) {
'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 */
--- /dev/null
+.mw-htmlform-ooui-wrapper {
+ /* We're gonna need a bigger form! */
+ width: 60em;
+}