Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
HTMLFormFieldWithButton
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 4
132
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
56
 getInputHTML
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 getInputOOUI
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
6
 getElement
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\HTMLForm\Field;
4
5use MediaWiki\Html\Html;
6use 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 */
15class 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 */
93class_alias( HTMLFormFieldWithButton::class, 'HTMLFormFieldWithButton' );