wiki.techinc.nl/includes/htmlform/HTMLFormFieldWithButton.php
Bartosz Dziewoński ee5af95167 HTMLForm: Use OOUI\Element::configFromHtmlAttributes instead of rolling our own
Depends on I0e5c956b9358b510c8473b1cfe6465ea1b5c07ef in OOjs UI.

This mostly reverts dd04b31052 and parts
of e85bd04bcd.

In addition to cleanup, it fixes bugs in HTMLFormFieldWithButton
(which did not add some attributes in OOUI mode) and HTMLMultiSelectField
(which did not do the mapping, losing some attributes in OOUI mode).

Change-Id: I0d1a5288e9edb73a0c3a8431feca9fcc67b72b6a
2016-03-09 00:08:05 +00:00

75 lines
2.3 KiB
PHP

<?php
/**
* Enables HTMLFormField elements to be build with a button.
*/
class HTMLFormFieldWithButton extends HTMLFormField {
/** @var string $mButtonClass CSS class for the button in this field */
protected $mButtonClass = '';
/** @var string|integer $mButtonId Element ID for the button in this field */
protected $mButtonId = '';
/** @var string $mButtonName Name the button in this field */
protected $mButtonName = '';
/** @var string $mButtonType Type of the button in this field (e.g. button or submit) */
protected $mButtonType = 'submit';
/** @var string $mButtonType Value for the button in this field */
protected $mButtonValue;
/** @var string $mButtonType Value for the button in this field */
protected $mButtonFlags = [ 'primary', 'progressive' ];
public function __construct( $info ) {
if ( isset( $info['buttonclass'] ) ) {
$this->mButtonClass = $info['buttonclass'];
}
if ( isset( $info['buttonid'] ) ) {
$this->mButtonId = $info['buttonid'];
}
if ( isset( $info['buttonname'] ) ) {
$this->mButtonName = $info['buttonname'];
}
if ( isset( $info['buttondefault'] ) ) {
$this->mButtonValue = $info['buttondefault'];
}
if ( isset( $info['buttontype'] ) ) {
$this->mButtonType = $info['buttontype'];
}
if ( isset( $info['buttonflags'] ) ) {
$this->mButtonFlags = $info['buttonflags'];
}
parent::__construct( $info );
}
public function getInputHTML( $value ) {
$attr = [
'class' => 'mw-htmlform-submit ' . $this->mButtonClass,
'id' => $this->mButtonId,
] + $this->getAttributes( [ 'disabled', 'tabindex' ] );
return Html::input( $this->mButtonName, $this->mButtonValue, $this->mButtonType, $attr );
}
public function getInputOOUI( $value ) {
return new OOUI\ButtonInputWidget( [
'name' => $this->mButtonName,
'value' => $this->mButtonValue,
'type' => $this->mButtonType,
'label' => $this->mButtonValue,
'flags' => $this->mButtonFlags,
] + OOUI\Element::configFromHtmlAttributes(
$this->getAttributes( [ 'disabled', 'tabindex' ] )
) );
}
/**
* Combines the passed element with a button.
* @param String $element Element to combine the button with.
* @return String
*/
public function getElement( $element ) {
return $element . '&#160;' . $this->getInputHTML( '' );
}
}