From dd691eca89de3db2623cfd94b2b523c0c8feaf1c Mon Sep 17 00:00:00 2001 From: Phantom42 Date: Fri, 9 Dec 2016 23:20:07 +0200 Subject: [PATCH] Fix links problem on Special:Search Fix bug that most links on Special:Search did not have text rendered Also restore some changes from commit f736c3709a54be33f808e8d12f85707b90763165 where Linker::link() usage was replaced by LinkRenderer This reverts commit 791d5319bff0be23c3ea474a84d42ed788355688 Change-Id: Id25d1b1acd0dcafc47511b2db3782e5d441f3731 --- includes/specials/SpecialRecentchanges.php | 5 +- includes/specials/SpecialRevisiondelete.php | 4 +- includes/specials/SpecialSearch.php | 62 +++++++++++++++---- .../SpecialUncategorizedcategories.php | 2 +- includes/specials/SpecialUnwatchedpages.php | 8 ++- includes/specials/SpecialWhatlinkshere.php | 22 +++++-- 6 files changed, 78 insertions(+), 25 deletions(-) diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php index 2a93159b3b..8530eb10f1 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -665,12 +665,11 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } unset( $value ); - $text = htmlspecialchars( $title ); if ( $active ) { - $text = '' . $text . ''; + $title = new HtmlArmor( '' . htmlspecialchars( $title ) . '' ); } - return Linker::linkKnown( $this->getPageTitle(), $text, [], $params ); + return $this->getLinkRenderer()->makeKnownLink( $this->getPageTitle(), $title, [], $params ); } /** diff --git a/includes/specials/SpecialRevisiondelete.php b/includes/specials/SpecialRevisiondelete.php index 8780c5692e..4b0fa008b6 100644 --- a/includes/specials/SpecialRevisiondelete.php +++ b/includes/specials/SpecialRevisiondelete.php @@ -466,9 +466,9 @@ class SpecialRevisionDelete extends UnlistedSpecialPage { Xml::closeElement( 'form' ) . "\n"; // Show link to edit the dropdown reasons if ( $this->getUser()->isAllowed( 'editinterface' ) ) { - $link = Linker::linkKnown( + $link = $this->getLinkRenderer()->makeKnownLink( $this->msg( 'revdelete-reason-dropdown' )->inContentLanguage()->getTitle(), - $this->msg( 'revdelete-edit-reasonlist' )->escaped(), + $this->msg( 'revdelete-edit-reasonlist' )->text(), [], [ 'action' => 'edit' ] ); diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 9f83832e13..727179af7d 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -499,9 +499,16 @@ class SpecialSearch extends SpecialPage { } $stParams = array_merge( $params, $this->powerSearchOptions() ); - $suggest = Linker::linkKnown( + $linkRenderer = $this->getLinkRenderer(); + + $snippet = $textMatches->getSuggestionSnippet() ?: null; + if ( $snippet !== null ) { + $snippet = new HtmlArmor( $snippet ); + } + + $suggest = $linkRenderer->makeKnownLink( $this->getPageTitle(), - $textMatches->getSuggestionSnippet() ?: null, + $snippet, [ 'id' => 'mw-search-DYM-suggestion' ], $stParams ); @@ -535,18 +542,25 @@ class SpecialSearch extends SpecialPage { } $stParams = array_merge( $params, $this->powerSearchOptions() ); - $rewritten = Linker::linkKnown( + $linkRenderer = $this->getLinkRenderer(); + + $snippet = $textMatches->getQueryAfterRewriteSnippet() ?: null; + if ( $snippet !== null ) { + $snippet = new HtmlArmor( $snippet ); + } + + $rewritten = $linkRenderer->makeKnownLink( $this->getPageTitle(), - $textMatches->getQueryAfterRewriteSnippet() ?: null, + $snippet, [ 'id' => 'mw-search-DYM-rewritten' ], $stParams ); $stParams['search'] = $term; $stParams['runsuggestion'] = 0; - $original = Linker::linkKnown( + $original = $linkRenderer->makeKnownLink( $this->getPageTitle(), - htmlspecialchars( $term ), + $term, [ 'id' => 'mw-search-DYM-original' ], $stParams ); @@ -766,7 +780,13 @@ class SpecialSearch extends SpecialPage { Hooks::run( 'ShowSearchHitTitle', [ &$link_t, &$titleSnippet, $result, $terms, $this, &$query ] ); - $link = Linker::linkKnown( + $linkRenderer = $this->getLinkRenderer(); + + if ( $titleSnippet !== null ) { + $titleSnippet = new HtmlArmor( $titleSnippet ); + } + + $link = $linkRenderer->makeKnownLink( $link_t, $titleSnippet, [ 'data-serp-pos' => $position ], // HTML attributes @@ -800,9 +820,13 @@ class SpecialSearch extends SpecialPage { $redirectText = null; } + if ( $redirectText !== null ) { + $redirectText = new HtmlArmor( $redirectText ); + } + $redirect = "" . $this->msg( 'search-redirect' )->rawParams( - Linker::linkKnown( $redirectTitle, $redirectText ) )->text() . + $linkRenderer->makeKnownLink( $redirectTitle, $redirectText ) )->text() . ""; } @@ -812,9 +836,13 @@ class SpecialSearch extends SpecialPage { $sectionText = null; } + if ( $sectionText !== null ) { + $sectionText = new HtmlArmor( $sectionText ); + } + $section = "" . $this->msg( 'search-section' )->rawParams( - Linker::linkKnown( $sectionTitle, $sectionText ) )->text() . + $linkRenderer->makeKnownLink( $sectionTitle, $sectionText ) )->text() . ""; } @@ -971,6 +999,8 @@ class SpecialSearch extends SpecialPage { return ''; } + $linkRenderer = $this->getLinkRenderer(); + $title = $result->getTitle(); $titleSnippet = $result->getTitleSnippet(); @@ -979,7 +1009,11 @@ class SpecialSearch extends SpecialPage { $titleSnippet = null; } - $link = Linker::linkKnown( + if ( $titleSnippet !== null ) { + $titleSnippet = new HtmlArmor( $titleSnippet ); + } + + $link = $linkRenderer->makeKnownLink( $title, $titleSnippet ); @@ -993,9 +1027,13 @@ class SpecialSearch extends SpecialPage { $redirectText = null; } + if ( $redirectText !== null ) { + $redirectText = new HtmlArmor( $redirectText ); + } + $redirect = "" . $this->msg( 'search-redirect' )->rawParams( - Linker::linkKnown( $redirectTitle, $redirectText ) )->text() . + $linkRenderer->makeKnownLink( $redirectTitle, $redirectText ) )->text() . ""; } @@ -1013,7 +1051,7 @@ class SpecialSearch extends SpecialPage { } // "more results" link (special page stuff could be localized, but we might not know target lang) $searchTitle = Title::newFromText( $title->getInterwiki() . ":Special:Search" ); - $searchLink = Linker::linkKnown( + $searchLink = $linkRenderer->makeKnownLink( $searchTitle, $this->msg( 'search-interwiki-more' )->text(), [], diff --git a/includes/specials/SpecialUncategorizedcategories.php b/includes/specials/SpecialUncategorizedcategories.php index 1cc40a9e90..86d8f89c52 100644 --- a/includes/specials/SpecialUncategorizedcategories.php +++ b/includes/specials/SpecialUncategorizedcategories.php @@ -42,6 +42,6 @@ class UncategorizedCategoriesPage extends UncategorizedPagesPage { $title = Title::makeTitle( NS_CATEGORY, $result->title ); $text = $title->getText(); - return Linker::linkKnown( $title, htmlspecialchars( $text ) ); + return $this->getLinkRenderer()->makeKnownLink( $title, $text ); } } diff --git a/includes/specials/SpecialUnwatchedpages.php b/includes/specials/SpecialUnwatchedpages.php index ae375b2d70..96878a38aa 100644 --- a/includes/specials/SpecialUnwatchedpages.php +++ b/includes/specials/SpecialUnwatchedpages.php @@ -116,10 +116,12 @@ class UnwatchedpagesPage extends QueryPage { $text = $wgContLang->convert( $nt->getPrefixedText() ); - $plink = Linker::linkKnown( $nt, htmlspecialchars( $text ) ); - $wlink = Linker::linkKnown( + $linkRenderer = $this->getLinkRenderer(); + + $plink = $linkRenderer->makeKnownLink( $nt, $text ); + $wlink = $linkRenderer->makeKnownLink( $nt, - $this->msg( 'watch' )->escaped(), + $this->msg( 'watch' )->text(), [ 'class' => 'mw-watch-link' ], [ 'action' => 'watch' ] ); diff --git a/includes/specials/SpecialWhatlinkshere.php b/includes/specials/SpecialWhatlinkshere.php index 1ead290f2a..439b6ab3cb 100644 --- a/includes/specials/SpecialWhatlinkshere.php +++ b/includes/specials/SpecialWhatlinkshere.php @@ -327,7 +327,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $query = []; } - $link = Linker::linkKnown( + $link = $this->getLinkRenderer()->makeKnownLink( $nt, null, $row->page_is_redirect ? [ 'class' => 'mw-redirect' ] : [], @@ -376,9 +376,15 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $title = $this->getPageTitle(); } + $linkRenderer = $this->getLinkRenderer(); + + if ( $text !== null ) { + $text = new HtmlArmor( $text ); + } + // always show a "<- Links" link $links = [ - 'links' => Linker::linkKnown( + 'links' => $linkRenderer->makeKnownLink( $title, $text, [], @@ -393,7 +399,11 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { // check, if the content model is editable through action=edit ContentHandler::getForTitle( $target )->supportsDirectEditing() ) { - $links['edit'] = Linker::linkKnown( + if ( $editText !== null ) { + $editText = new HtmlArmor( $editText ); + } + + $links['edit'] = $linkRenderer->makeKnownLink( $target, $editText, [], @@ -406,7 +416,11 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { } function makeSelfLink( $text, $query ) { - return Linker::linkKnown( + if ( $text !== null ) { + $text = new HtmlArmor( $text ); + } + + return $this->getLinkRenderer()->makeKnownLink( $this->selfTitle, $text, [], -- 2.20.1