Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 30 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 1 |
HTMLFormFieldWithButton | |
0.00% |
0 / 29 |
|
0.00% |
0 / 4 |
132 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 13 |
|
0.00% |
0 / 1 |
56 | |||
getInputHTML | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
2 | |||
getInputOOUI | |
0.00% |
0 / 10 |
|
0.00% |
0 / 1 |
6 | |||
getElement | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace MediaWiki\HTMLForm\Field; |
4 | |
5 | use MediaWiki\Html\Html; |
6 | use MediaWiki\HTMLForm\HTMLFormField; |
7 | |
8 | /** |
9 | * Enables HTMLFormField elements to be build with a button. |
10 | * |
11 | * TODO This class should be a trait |
12 | * |
13 | * @stable to extend |
14 | */ |
15 | class HTMLFormFieldWithButton extends HTMLFormField { |
16 | /** @var string CSS class for the button in this field */ |
17 | protected $mButtonClass = ''; |
18 | |
19 | /** @var string|int Element ID for the button in this field */ |
20 | protected $mButtonId = ''; |
21 | |
22 | /** @var string Name the button in this field */ |
23 | protected $mButtonName = ''; |
24 | |
25 | /** @var string Type of the button in this field (e.g. button or submit) */ |
26 | protected $mButtonType = 'submit'; |
27 | |
28 | /** @var string Value for the button in this field */ |
29 | protected $mButtonValue; |
30 | |
31 | /** @var string[] Value for the button in this field */ |
32 | protected $mButtonFlags = [ 'progressive' ]; |
33 | |
34 | /** |
35 | * @stable to call |
36 | * @inheritDoc |
37 | */ |
38 | public function __construct( $info ) { |
39 | if ( isset( $info['buttonclass'] ) ) { |
40 | $this->mButtonClass = $info['buttonclass']; |
41 | } |
42 | if ( isset( $info['buttonid'] ) ) { |
43 | $this->mButtonId = $info['buttonid']; |
44 | } |
45 | if ( isset( $info['buttonname'] ) ) { |
46 | $this->mButtonName = $info['buttonname']; |
47 | } |
48 | if ( isset( $info['buttondefault'] ) ) { |
49 | $this->mButtonValue = $info['buttondefault']; |
50 | } |
51 | if ( isset( $info['buttontype'] ) ) { |
52 | $this->mButtonType = $info['buttontype']; |
53 | } |
54 | if ( isset( $info['buttonflags'] ) ) { |
55 | $this->mButtonFlags = $info['buttonflags']; |
56 | } |
57 | parent::__construct( $info ); |
58 | } |
59 | |
60 | public function getInputHTML( $value ) { |
61 | $attr = [ |
62 | 'class' => 'mw-htmlform-submit ' . $this->mButtonClass, |
63 | 'id' => $this->mButtonId, |
64 | ] + $this->getAttributes( [ 'disabled', 'tabindex' ] ); |
65 | |
66 | return Html::input( $this->mButtonName, $this->mButtonValue, $this->mButtonType, $attr ); |
67 | } |
68 | |
69 | public function getInputOOUI( $value ) { |
70 | return new \OOUI\ButtonInputWidget( [ |
71 | 'name' => $this->mButtonName, |
72 | 'value' => $this->mButtonValue, |
73 | 'type' => $this->mButtonType, |
74 | 'label' => $this->mButtonValue, |
75 | 'flags' => $this->mButtonFlags, |
76 | 'id' => $this->mButtonId ?: null, |
77 | ] + \OOUI\Element::configFromHtmlAttributes( |
78 | $this->getAttributes( [ 'disabled', 'tabindex' ] ) |
79 | ) ); |
80 | } |
81 | |
82 | /** |
83 | * Combines the passed element with a button. |
84 | * @param string $element Element to combine the button with. |
85 | * @return string |
86 | */ |
87 | public function getElement( $element ) { |
88 | return $element . "\u{00A0}" . $this->getInputHTML( '' ); |
89 | } |
90 | } |
91 | |
92 | /** @deprecated class alias since 1.42 */ |
93 | class_alias( HTMLFormFieldWithButton::class, 'HTMLFormFieldWithButton' ); |