$this->target = Title::newFromText( $opts->getValue( 'target' ) );
if ( !$this->target ) {
if ( !$this->including() ) {
- $out->addHTML( $this->whatlinkshereForm() );
+ $this->buildForm();
}
return;
) {
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 );
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 );
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
$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 );
}
/**
"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",