Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 42 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 1 |
HTMLSizeFilterField | |
0.00% |
0 / 41 |
|
0.00% |
0 / 6 |
110 | |
0.00% |
0 / 1 |
getSize | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getInputHTML | |
0.00% |
0 / 22 |
|
0.00% |
0 / 1 |
12 | |||
getInputWidget | |
0.00% |
0 / 11 |
|
0.00% |
0 / 1 |
6 | |||
getOOUIModules | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
loadDataFromRequest | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
needsLabel | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace MediaWiki\HTMLForm\Field; |
4 | |
5 | use MediaWiki\Request\WebRequest; |
6 | use MediaWiki\Widget\SizeFilterWidget; |
7 | use MediaWiki\Xml\Xml; |
8 | |
9 | /** |
10 | * A size filter field for use on query-type special pages. It looks a bit like: |
11 | * |
12 | * (o) Min size ( ) Max size: [ ] bytes |
13 | * |
14 | * Minimum size limits are represented using a positive integer, while maximum |
15 | * size limits are represented using a negative integer. |
16 | * |
17 | * @stable to extend |
18 | * |
19 | */ |
20 | class HTMLSizeFilterField extends HTMLIntField { |
21 | |
22 | protected bool $mSelectMin = true; |
23 | |
24 | public function getSize() { |
25 | return $this->mParams['size'] ?? 9; |
26 | } |
27 | |
28 | public function getInputHTML( $value ) { |
29 | $attribs = []; |
30 | if ( !empty( $this->mParams['disabled'] ) ) { |
31 | $attribs['disabled'] = 'disabled'; |
32 | } |
33 | |
34 | $html = Xml::radioLabel( |
35 | $this->msg( 'minimum-size' )->text(), |
36 | $this->mName . '-mode', |
37 | 'min', |
38 | $this->mID . '-mode-min', |
39 | $this->mSelectMin, |
40 | $attribs |
41 | ); |
42 | $html .= "\u{00A0}" . Xml::radioLabel( |
43 | $this->msg( 'maximum-size' )->text(), |
44 | $this->mName . '-mode', |
45 | 'max', |
46 | $this->mID . '-mode-max', |
47 | !$this->mSelectMin, |
48 | $attribs |
49 | ); |
50 | $html .= "\u{00A0}" . parent::getInputHTML( $value ? abs( $value ) : '' ); |
51 | $html .= "\u{00A0}" . $this->msg( 'pagesize' )->parse(); |
52 | |
53 | return $html; |
54 | } |
55 | |
56 | /** |
57 | * @inheritDoc |
58 | * @stable to override |
59 | */ |
60 | protected function getInputWidget( $params ) { |
61 | $this->mParent->getOutput()->addModuleStyles( 'mediawiki.widgets.SizeFilterWidget.styles' ); |
62 | |
63 | // negative numbers represent "max", positive numbers represent "min" |
64 | $value = $params['value']; |
65 | $params['value'] = $value ? abs( $value ) : ''; |
66 | |
67 | return new SizeFilterWidget( [ |
68 | 'selectMin' => $this->mSelectMin, |
69 | 'textinput' => $params, |
70 | 'radioselectinput' => [ |
71 | 'name' => $this->mName . '-mode', |
72 | 'disabled' => !empty( $this->mParams['disabled'] ), |
73 | ], |
74 | ] ); |
75 | } |
76 | |
77 | protected function getOOUIModules() { |
78 | return [ 'mediawiki.widgets.SizeFilterWidget' ]; |
79 | } |
80 | |
81 | /** |
82 | * @param WebRequest $request |
83 | * |
84 | * @return int |
85 | */ |
86 | public function loadDataFromRequest( $request ) { |
87 | $size = abs( $request->getInt( $this->mName, $this->getDefault() ) ); |
88 | |
89 | // negative numbers represent "max", positive numbers represent "min" |
90 | if ( $request->getRawVal( $this->mName . '-mode' ) === 'max' ) { |
91 | $this->mSelectMin = false; |
92 | return -$size; |
93 | } else { |
94 | return $size; |
95 | } |
96 | } |
97 | |
98 | protected function needsLabel() { |
99 | return false; |
100 | } |
101 | } |
102 | |
103 | /** @deprecated class alias since 1.42 */ |
104 | class_alias( HTMLSizeFilterField::class, 'HTMLSizeFilterField' ); |