Merge "Return HtmlArmor for Search ResultSet snippets"
This commit is contained in:
commit
cab00f54ab
4 changed files with 34 additions and 10 deletions
|
|
@ -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() ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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 '';
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in a new issue