mParams[ 'size' ] ) ? $this->mParams[ 'size' ] : 45;
}
function getInputHTML( $value ) {
$attribs = array(
'id' => $this->mID,
'name' => $this->mName,
'size' => $this->getSize(),
'value' => $value,
) + $this->getTooltipAndAccessKey();
if ( $this->mClass !== '' ) {
$attribs[ 'class' ] = $this->mClass;
}
if ( ! empty( $this->mParams[ 'disabled' ] ) ) {
$attribs[ 'disabled' ] = 'disabled';
}
# TODO: Enforce pattern, step, required, readonly on the server side as
# well
$allowedParams = array(
'min',
'max',
'pattern',
'title',
'step',
'placeholder',
'list',
'maxlength'
);
foreach ( $allowedParams as $param ) {
if ( isset( $this->mParams[ $param ] ) ) {
$attribs[ $param ] = $this->mParams[ $param ];
}
}
foreach ( array( 'required', 'autofocus', 'multiple', 'readonly' ) as $param ) {
if ( isset( $this->mParams[ $param ] ) ) {
$attribs[ $param ] = '';
}
}
# Implement tiny differences between some field variants
# here, rather than creating a new class for each one which
# is essentially just a clone of this one.
if ( isset( $this->mParams[ 'type' ] ) ) {
switch( $this->mParams[ 'type' ] ) {
case 'email':
$attribs[ 'type' ] = 'email';
break;
case 'int':
$attribs[ 'type' ] = 'number';
break;
case 'float':
$attribs[ 'type' ] = 'number';
$attribs[ 'step' ] = 'any';
break;
# Pass through
case 'password':
case 'file':
$attribs[ 'type' ] = $this->mParams[ 'type' ];
break;
}
}
return Html::element( 'input', $attribs );
}
}