* Radio checkbox fields.
*/
class HTMLRadioField extends HTMLFormField {
- function validate( $value, $alldata ) {
+ /**
+ * @param array $params
+ * In adition to the usual HTMLFormField parameters, this can take the following fields:
+ * - flatlist: If given, the options will be displayed on a single line (wrapping to following
+ * lines if necessary), rather than each one on a line of its own. This is desirable mostly
+ * for very short lists of concisely labelled options.
+ */
+ public function __construct( $params ) {
+ parent::__construct( $params );
+
+ if ( isset( $params['flatlist'] ) ) {
+ $this->mClass .= ' mw-htmlform-flatlist';
+ }
+ }
+
+ public function validate( $value, $alldata ) {
$p = parent::validate( $value, $alldata );
if ( $p !== true ) {
}
if ( !is_string( $value ) && !is_int( $value ) ) {
- return false;
+ return $this->msg( 'htmlform-required' );
}
$validOptions = HTMLFormField::flattenOptions( $this->getOptions() );
if ( in_array( strval( $value ), $validOptions, true ) ) {
return true;
} else {
- return $this->msg( 'htmlform-select-badoption' )->parse();
+ return $this->msg( 'htmlform-select-badoption' );
}
}
*
* @return string
*/
- function getInputHTML( $value ) {
+ public function getInputHTML( $value ) {
$html = $this->formatOptions( $this->getOptions(), strval( $value ) );
return $html;
}
- function getInputOOUI( $value ) {
+ public function getInputOOUI( $value ) {
$options = [];
foreach ( $this->getOptions() as $label => $data ) {
$options[] = [
) );
}
- function formatOptions( $options, $value ) {
+ protected function shouldInfuseOOUI() {
+ return true;
+ }
+
+ public function formatOptions( $options, $value ) {
global $wgUseMediaWikiUIEverywhere;
$html = '';
$html .= Html::rawElement( 'h1', [], $label ) . "\n";
$html .= $this->formatOptions( $info, $value );
} else {
- $id = Sanitizer::escapeId( $this->mID . "-$info" );
+ $id = Sanitizer::escapeIdForAttribute( $this->mID . "-$info" );
$classes = [ 'mw-htmlform-flatlist-item' ];
if ( $wgUseMediaWikiUIEverywhere || $this->mParent instanceof VFormHTMLForm ) {
$classes[] = 'mw-ui-radio';