wiki.techinc.nl/includes/htmlform/HTMLTextField.php
Daniel A. R. Werner 62d54bed13 "spellcheck" attribute for HTMLForm "text" and "textarea"
"spellcheck" attribute requires literal "true" or "false" values and can not
just be implemented by adding it to the list of HTMLFormField::getAttributes's
$boolAttribs.

Change-Id: I5882e71af2ca64d367a1824634f61e16097e341d
2015-06-13 15:23:48 +02:00

81 lines
1.8 KiB
PHP

<?php
class HTMLTextField extends HTMLFormField {
function getSize() {
return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
}
function getSpellCheck() {
$val = isset( $this->mParams['spellcheck'] ) ? $this->mParams['spellcheck'] : null;
if( is_bool( $val ) ) {
// "spellcheck" attribute literally requires "true" or "false" to work.
return $val === true ? 'true' : 'false';
}
return null;
}
function getInputHTML( $value ) {
$attribs = array(
'id' => $this->mID,
'name' => $this->mName,
'size' => $this->getSize(),
'value' => $value,
'dir' => $this->mDir,
'spellcheck' => $this->getSpellCheck(),
) + $this->getTooltipAndAccessKey();
if ( $this->mClass !== '' ) {
$attribs['class'] = $this->mClass;
}
# @todo Enforce pattern, step, required, readonly on the server side as
# well
$allowedParams = array(
'type',
'min',
'max',
'pattern',
'title',
'step',
'placeholder',
'list',
'maxlength',
'tabindex',
'disabled',
'required',
'autofocus',
'multiple',
'readonly'
);
$attribs += $this->getAttributes( $allowedParams );
# Extract 'type'
$type = isset( $attribs['type'] ) ? $attribs['type'] : 'text';
unset( $attribs['type'] );
# 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 'int':
$type = 'number';
break;
case 'float':
$type = 'number';
$attribs['step'] = 'any';
break;
# Pass through
case 'email':
case 'password':
case 'file':
case 'url':
$type = $this->mParams['type'];
break;
}
}
return Html::input( $this->mName, $value, $type, $attribs );
}
}