$fieldType = get_class( $this );
$helpText = $this->getHelpText();
- $field = new OOUI\FieldLayout( $inputField, array(
+ $config = array(
'classes' => array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass ),
'align' => $this->getLabelAlignOOUI(),
'label' => $this->getLabel(),
'help' => $helpText !== null ? new OOUI\HtmlSnippet( $helpText ) : null,
'infusable' => $infusable,
- ) );
+ );
+ $field = $this->getFieldLayoutOOUI( $inputField, $config );
return $field . $errors;
}
return 'top';
}
+ /**
+ * Get a FieldLayout (or subclass thereof) to wrap this field in when using OOUI output.
+ * @return OOUI\FieldLayout|OOUI\ActionFieldLayout
+ */
+ protected function getFieldLayoutOOUI( $inputField, $config ) {
+ if ( isset( $this->mClassWithButton ) ) {
+ $buttonWidget = $this->mClassWithButton->getInputOOUI( '' );
+ return new OOUI\ActionFieldLayout( $inputField, $buttonWidget, $config );
+ }
+ return new OOUI\FieldLayout( $inputField, $config );
+ }
+
/**
* Get the complete raw fields for the input, including help text,
* labels, and whatever.
/** @var string $mButtonType Value for the button in this field */
protected $mButtonValue;
+ /** @var string $mButtonType Value for the button in this field */
+ protected $mButtonFlags = array( 'primary', 'progressive' );
+
public function __construct( $info ) {
if ( isset( $info['buttonclass'] ) ) {
$this->mButtonClass = $info['buttonclass'];
if ( isset( $info['buttontype'] ) ) {
$this->mButtonType = $info['buttontype'];
}
+ if ( isset( $info['buttonflags'] ) ) {
+ $this->mButtonFlags = $info['buttonflags'];
+ }
parent::__construct( $info );
}
return Html::input( $this->mButtonName, $this->mButtonValue, $this->mButtonType, $attr );
}
+ public function getInputOOUI( $value ) {
+ return new OOUI\ButtonInputWidget( array(
+ 'name' => $this->mButtonName,
+ 'value' => $this->mButtonValue,
+ 'type' => $this->mButtonType,
+ 'label' => $this->mButtonValue,
+ 'flags' => $this->mButtonFlags,
+ ) );
+ }
+
/**
* Combines the passed element with a button.
* @param String $element Element to combine the button with.