Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 23 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
InterwikiSearchResultWidget | |
0.00% |
0 / 23 |
|
0.00% |
0 / 2 |
30 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
render | |
0.00% |
0 / 21 |
|
0.00% |
0 / 1 |
20 |
1 | <?php |
2 | |
3 | namespace MediaWiki\Search\SearchWidgets; |
4 | |
5 | use HtmlArmor; |
6 | use MediaWiki\Html\Html; |
7 | use MediaWiki\Linker\LinkRenderer; |
8 | use MediaWiki\Specials\SpecialSearch; |
9 | use SearchResult; |
10 | |
11 | /** |
12 | * Renders an enhanced interwiki result |
13 | */ |
14 | class InterwikiSearchResultWidget implements SearchResultWidget { |
15 | protected SpecialSearch $specialSearch; |
16 | protected LinkRenderer $linkRenderer; |
17 | |
18 | public function __construct( SpecialSearch $specialSearch, LinkRenderer $linkRenderer ) { |
19 | $this->specialSearch = $specialSearch; |
20 | $this->linkRenderer = $linkRenderer; |
21 | } |
22 | |
23 | /** |
24 | * @param SearchResult $result The result to render |
25 | * @param int $position The result position, including offset |
26 | * @return string HTML |
27 | */ |
28 | public function render( SearchResult $result, $position ) { |
29 | $title = $result->getTitle(); |
30 | $titleSnippet = $result->getTitleSnippet(); |
31 | $snippet = $result->getTextSnippet(); |
32 | |
33 | if ( $titleSnippet ) { |
34 | $titleSnippet = new HtmlArmor( $titleSnippet ); |
35 | } else { |
36 | $titleSnippet = null; |
37 | } |
38 | |
39 | $link = $this->linkRenderer->makeLink( $title, $titleSnippet ); |
40 | |
41 | $redirectTitle = $result->getRedirectTitle(); |
42 | $redirect = ''; |
43 | if ( $redirectTitle !== null ) { |
44 | $redirectText = $result->getRedirectSnippet(); |
45 | |
46 | if ( $redirectText ) { |
47 | $redirectText = new HtmlArmor( $redirectText ); |
48 | } else { |
49 | $redirectText = null; |
50 | } |
51 | |
52 | $redirect = Html::rawElement( 'span', [ 'class' => 'iw-result__redirect' ], |
53 | $this->specialSearch->msg( 'search-redirect' )->rawParams( |
54 | $this->linkRenderer->makeLink( $redirectTitle, $redirectText ) |
55 | )->escaped() |
56 | ); |
57 | } |
58 | |
59 | return Html::rawElement( 'div', [ 'class' => 'iw-result__title' ], $link . ' ' . $redirect ) . |
60 | Html::rawElement( 'div', [ 'class' => 'iw-result__content' ], $snippet ); |
61 | } |
62 | } |