Merge "Return HtmlArmor for Search ResultSet snippets"

This commit is contained in:
jenkins-bot 2019-12-13 08:27:35 +00:00 committed by Gerrit Code Review
commit cab00f54ab
4 changed files with 34 additions and 10 deletions

View file

@ -133,13 +133,13 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
$apiResult->addValue( [ 'query', 'searchinfo' ],
'suggestion', $matches->getSuggestionQuery() );
$apiResult->addValue( [ 'query', 'searchinfo' ],
'suggestionsnippet', $matches->getSuggestionSnippet() );
'suggestionsnippet', HtmlArmor::getHtml( $matches->getSuggestionSnippet() ) );
}
if ( isset( $searchInfo['rewrittenquery'] ) && $matches->hasRewrittenQuery() ) {
$apiResult->addValue( [ 'query', 'searchinfo' ],
'rewrittenquery', $matches->getQueryAfterRewrite() );
$apiResult->addValue( [ 'query', 'searchinfo' ],
'rewrittenquerysnippet', $matches->getQueryAfterRewriteSnippet() );
'rewrittenquerysnippet', HtmlArmor::getHtml( $matches->getQueryAfterRewriteSnippet() ) );
}
}

View file

@ -54,7 +54,7 @@ interface ISearchResultSet extends \Countable, \IteratorAggregate {
public function getQueryAfterRewrite();
/**
* @return string|null Same as self::getQueryAfterRewrite(), but in HTML
* @return HtmlArmor|string|null Same as self::getQueryAfterRewrite(), but in HTML
* and with changes highlighted. Null when the query was not rewritten.
*/
public function getQueryAfterRewriteSnippet();
@ -73,7 +73,7 @@ interface ISearchResultSet extends \Countable, \IteratorAggregate {
public function getSuggestionQuery();
/**
* @return string HTML highlighted suggested query, '' if none
* @return HtmlArmor|string HTML highlighted suggested query, '' if none
*/
public function getSuggestionSnippet();

View file

@ -107,8 +107,9 @@ class SearchResultSet extends BaseSearchResultSet {
}
/**
* @return string|null Same as self::getQueryAfterRewrite(), but in HTML
* and with changes highlighted. Null when the query was not rewritten.
* @return HtmlArmor|string|null Same as self::getQueryAfterRewrite(), but
* with changes highlighted if HtmlArmor is returned. Null when the query
* was not rewritten.
*/
public function getQueryAfterRewriteSnippet() {
return null;
@ -132,7 +133,7 @@ class SearchResultSet extends BaseSearchResultSet {
}
/**
* @return string HTML highlighted suggested query, '' if none
* @return HtmlArmor|string HTML highlighted suggested query, '' if none
*/
public function getSuggestionSnippet() {
return '';

View file

@ -2,7 +2,6 @@
namespace MediaWiki\Widget\Search;
use HtmlArmor;
use ISearchResultSet;
use SpecialSearch;
@ -55,9 +54,21 @@ class DidYouMeanWidget {
$linkRenderer = $this->specialSearch->getLinkRenderer();
$snippet = $resultSet->getQueryAfterRewriteSnippet();
if ( $snippet === '' || $snippet === null ) {
// This should never happen. But if it did happen we would render
// links as `Special:Search` which is even more useless. Since this
// was only documented but not enforced previously emit a
// deprecation warning and in the future we can simply fail on bad
// inputs
wfDeprecated(
get_class( $resultSet ) . '::getQueryAfterRewriteSnippet returning empty snippet',
'1.34'
);
$snippet = $resultSet->getQueryAfterRewrite();
}
$rewritten = $linkRenderer->makeKnownLink(
$this->specialSearch->getPageTitle(),
$snippet ? new HtmlArmor( $snippet ) : null,
$snippet,
[ 'id' => 'mw-search-DYM-rewritten' ],
$stParams
);
@ -92,9 +103,21 @@ class DidYouMeanWidget {
$stParams = array_merge( $params, $this->specialSearch->powerSearchOptions() );
$snippet = $resultSet->getSuggestionSnippet();
if ( $snippet === '' || $snippet === null ) {
// This should never happen. But if it did happen we would render
// links as `Special:Search` which is even more useless. Since this
// was only documented but not enforced previously emit a
// deprecation warning and in the future we can simply fail on bad
// inputs
wfDeprecated(
get_class( $resultSet ) . '::getSuggestionSnippet returning empty snippet',
'1.34'
);
$snippet = $resultSet->getSuggestionSnippet();
}
$suggest = $this->specialSearch->getLinkRenderer()->makeKnownLink(
$this->specialSearch->getPageTitle(),
$snippet ? new HtmlArmor( $snippet ) : null,
$snippet,
[ 'id' => 'mw-search-DYM-suggestion' ],
$stParams
);