wiki.techinc.nl/includes/htmlform/fields/HTMLInfoField.php
dreamyjazz 2f022f4843 HTMLInfoField: Ensure ID is included for the 'info' field.
Ensure that the ID is included in the generated label field for
the 'info' type (which is defined in HTMLInfoField.php).
This is needed for a OOUI conversion in the CheckUser extension,
as a JS script relies on an ID being present for a element that
only the 'info' type suits.

Change-Id: If4724e6699aa3ec076817a7c4727cbff184b94e7
2022-06-07 11:51:16 +00:00

126 lines
2.8 KiB
PHP

<?php
/**
* An information field (text blob), not a proper input.
* @stable to extend
*/
class HTMLInfoField extends HTMLFormField {
/**
* @stable to call
*
* @param array $info
* In addition to the usual HTMLFormField parameters, this can take the following fields:
* - default: the value (text) of the field. Unlike other form field types, HTMLInfoField can
* take a closure as a default value, which will be evaluated with $info as its only parameter.
* - raw: if true, the value won't be escaped.
* - rawrow: if true, the usual wrapping of form fields (e.g. into a table row + cell when
* display mode is table) will not happen and the value must contain it already.
*/
public function __construct( $info ) {
$info['nodata'] = true;
parent::__construct( $info );
}
/**
* @inheritDoc
* @stable to override
*/
public function getDefault() {
$default = parent::getDefault();
if ( $default instanceof Closure ) {
$default = $default( $this->mParams );
}
return $default;
}
/**
* @inheritDoc
* @stable to override
*/
public function getInputHTML( $value ) {
return !empty( $this->mParams['raw'] ) ? $value : htmlspecialchars( $value );
}
/**
* @inheritDoc
* @stable to override
*/
public function getInputOOUI( $value ) {
if ( !empty( $this->mParams['raw'] ) ) {
$value = new OOUI\HtmlSnippet( $value );
}
return new OOUI\LabelWidget( [
'label' => $value,
'id' => $this->mID
] );
}
/**
* @inheritDoc
* @stable to override
*/
public function getTableRow( $value ) {
if ( !empty( $this->mParams['rawrow'] ) ) {
return $value;
}
return parent::getTableRow( $value );
}
/**
* @stable to override
* @param string $value
* @return string
* @since 1.20
*/
public function getDiv( $value ) {
if ( !empty( $this->mParams['rawrow'] ) ) {
return $value;
}
return parent::getDiv( $value );
}
/**
* @stable to override
* @param string $value
* @return string
* @since 1.20
*/
public function getRaw( $value ) {
if ( !empty( $this->mParams['rawrow'] ) ) {
return $value;
}
return parent::getRaw( $value );
}
/**
* @stable to override
* @param mixed $value If not FieldLayout or subclass has been deprecated.
* @return OOUI\FieldLayout
* @since 1.32
*/
public function getOOUI( $value ) {
if ( !empty( $this->mParams['rawrow'] ) ) {
if ( !( $value instanceof OOUI\FieldLayout ) ) {
wfDeprecatedMsg( __METHOD__ . ": 'default' parameter as a string when using " .
"'rawrow' was deprecated in MediaWiki 1.32 (must be a FieldLayout or subclass)",
'1.32' );
}
return $value;
}
return parent::getOOUI( $value );
}
/**
* @inheritDoc
* @stable to override
*/
protected function needsLabel() {
return false;
}
}