From 6ffabb260b60497a732b9b46610ec9fd0f9f71f9 Mon Sep 17 00:00:00 2001 From: Ajayrahul P Date: Sat, 12 Mar 2016 19:13:04 +0530 Subject: [PATCH] Convert Special:WhatLinksHere from XML form to OOUI form Bug: T117754 Change-Id: I902269c4dbf4147d291c98e61dbdad1d99bd3732 --- includes/specials/SpecialWhatlinkshere.php | 128 ++++++++------------- languages/i18n/en.json | 8 +- 2 files changed, 50 insertions(+), 86 deletions(-) diff --git a/includes/specials/SpecialWhatlinkshere.php b/includes/specials/SpecialWhatlinkshere.php index baa55f098a..b4ea73214a 100644 --- a/includes/specials/SpecialWhatlinkshere.php +++ b/includes/specials/SpecialWhatlinkshere.php @@ -75,7 +75,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $this->target = Title::newFromText( $opts->getValue( 'target' ) ); if ( !$this->target ) { if ( !$this->including() ) { - $out->addHTML( $this->whatlinkshereForm() ); + $this->buildForm(); } return; @@ -200,12 +200,8 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { ) { if ( 0 == $level ) { if ( !$this->including() ) { - $out->addHTML( $this->whatlinkshereForm() ); + $this->buildForm(); - // Show filters only if there are links - if ( $hidelinks || $hidetrans || $hideredirs || $hideimages ) { - $out->addHTML( $this->getFilterPanel() ); - } $errMsg = is_int( $namespace ) ? 'nolinkshere-ns' : 'nolinkshere'; $out->addWikiMsg( $errMsg, $this->target->getPrefixedText() ); $out->setStatusCode( 404 ); @@ -269,8 +265,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { if ( $level == 0 ) { if ( !$this->including() ) { - $out->addHTML( $this->whatlinkshereForm() ); - $out->addHTML( $this->getFilterPanel() ); + $this->buildForm(); $out->addWikiMsg( 'linkshere', $this->target->getPrefixedText() ); $prevnext = $this->getPrevNext( $prevId, $nextId ); @@ -444,7 +439,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { return $this->msg( 'viewprevnext' )->rawParams( $prev, $next, $nums )->escaped(); } - function whatlinkshereForm() { + protected function buildForm() { // We get nicer value from the title object $this->opts->consumeValue( 'target' ); // Reset these for new requests @@ -455,88 +450,57 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $nsinvert = $this->opts->consumeValue( 'invert' ); # Build up the form - $f = Xml::openElement( 'form', [ 'action' => wfScript() ] ); - # Values that should not be forgotten - $f .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ); - foreach ( $this->opts->getUnconsumedValues() as $name => $value ) { - $f .= Html::hidden( $name, $value ); - } - - $f .= Xml::fieldset( $this->msg( 'whatlinkshere' )->text() ); - - # Target input (.mw-searchInput enables suggestions) - $f .= Xml::inputLabel( $this->msg( 'whatlinkshere-page' )->text(), 'target', - 'mw-whatlinkshere-target', 40, $target, [ 'class' => 'mw-searchInput' ] ); + $hiddenFields = [ + 'title' => $this->getPageTitle()->getPrefixedDBkey(), + ]; - $f .= ' '; + $formDescriptor = [ + 'target' => [ + 'type' => 'title', + 'name' => 'target', + 'label-message' => 'whatlinkshere-page', + 'default' => $this->opts->getValue( 'target' ), + ], - # Namespace selector - $f .= Html::namespaceSelector( - [ - 'selected' => $namespace, - 'all' => '', - 'label' => $this->msg( 'namespace' )->text() - ], [ + 'namespace' => [ + 'type' => 'namespaceselect', 'name' => 'namespace', - 'id' => 'namespace', - 'class' => 'namespaceselector', - ] - ); - - $f .= ' ' . - Xml::checkLabel( - $this->msg( 'invert' )->text(), - 'invert', - 'nsinvert', - $nsinvert, - [ 'title' => $this->msg( 'tooltip-whatlinkshere-invert' )->text() ] - ); - - $f .= ' '; - - # Submit - $f .= Xml::submitButton( $this->msg( 'whatlinkshere-submit' )->text() ); - - # Close - $f .= Xml::closeElement( 'fieldset' ) . Xml::closeElement( 'form' ) . "\n"; - - return $f; - } - - /** - * Create filter panel - * - * @return string HTML fieldset and filter panel with the show/hide links - */ - function getFilterPanel() { - $show = $this->msg( 'show' )->escaped(); - $hide = $this->msg( 'hide' )->escaped(); - - $changed = $this->opts->getChangedValues(); - unset( $changed['target'] ); // Already in the request title + 'label-message' => 'namespace', + 'all' => '', + ], + + 'invert' => [ + 'type' => 'check', + 'name' => 'invert', + 'label-message' => 'invert', + 'default' => false, + ], + ]; - $links = []; - $types = [ 'hidetrans', 'hidelinks', 'hideredirs' ]; - if ( $this->target->getNamespace() == NS_FILE ) { - $types[] = 'hideimages'; + $filters = [ 'hidetrans', 'hidelinks', 'hideredirs' ]; + if ( $this->target instanceof Title && + $this->target->getNamespace() == NS_FILE ) { + $filters[] = 'hideimages'; } - // Combined message keys: 'whatlinkshere-hideredirs', 'whatlinkshere-hidetrans', - // 'whatlinkshere-hidelinks', 'whatlinkshere-hideimages' - // To be sure they will be found by grep - foreach ( $types as $type ) { - $chosen = $this->opts->getValue( $type ); - $msg = $chosen ? $show : $hide; - $overrides = [ $type => !$chosen ]; - $links[] = $this->msg( "whatlinkshere-{$type}" )->rawParams( - $this->makeSelfLink( $msg, array_merge( $changed, $overrides ) ) )->escaped(); + foreach ( $filters as $filter ) { + $formDescriptor[$filter] = [ + 'type' => 'check', + 'name' => $filter, + 'label' => $this->msg( 'whatlinkshere-' . $filter ), + 'value' => false, + ]; } - return Xml::fieldset( - $this->msg( 'whatlinkshere-filters' )->text(), - $this->getLanguage()->pipeList( $links ) - ); + $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() ) + ->addHiddenFields( $hiddenFields ) + ->setWrapperLegendMsg( 'whatlinkshere' ) + ->setSubmitTextMsg( 'whatlinkshere-submit' ) + ->setAction( $this->getPageTitle()->getLocalURL() ) + ->setMethod( 'get' ) + ->prepareForm() + ->displayForm( false ); } /** diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 10072b9e2b..e7fa4c767f 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -2290,10 +2290,10 @@ "whatlinkshere-prev": "{{PLURAL:$1|previous|previous $1}}", "whatlinkshere-next": "{{PLURAL:$1|next|next $1}}", "whatlinkshere-links": "← links", - "whatlinkshere-hideredirs": "$1 redirects", - "whatlinkshere-hidetrans": "$1 transclusions", - "whatlinkshere-hidelinks": "$1 links", - "whatlinkshere-hideimages": "$1 file links", + "whatlinkshere-hideredirs": "Hide redirects", + "whatlinkshere-hidetrans": "Hide transclusions", + "whatlinkshere-hidelinks": "Hide links", + "whatlinkshere-hideimages": "Hide file links", "whatlinkshere-filters": "Filters", "whatlinkshere-submit": "Go", "autoblockid": "Autoblock #$1", -- 2.20.1