diff options
Diffstat (limited to 'includes/htmlform/HTMLTextField.php')
-rw-r--r-- | includes/htmlform/HTMLTextField.php | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/includes/htmlform/HTMLTextField.php b/includes/htmlform/HTMLTextField.php new file mode 100644 index 00000000..10bc67f0 --- /dev/null +++ b/includes/htmlform/HTMLTextField.php @@ -0,0 +1,65 @@ +<?php + +class HTMLTextField extends HTMLFormField { + function getSize() { + return isset( $this->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; + } + + # @todo Enforce pattern, step, required, readonly on the server side as + # well + $allowedParams = array( + 'min', + 'max', + 'pattern', + 'title', + 'step', + 'placeholder', + 'list', + 'maxlength', + 'tabindex', + 'disabled', + 'required', + 'autofocus', + 'multiple', + 'readonly' + ); + + $attribs += $this->getAttributes( $allowedParams ); + + # 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. + $type = 'text'; + 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 ); + } +} |