* @author Bertrand Mansion
* @copyright 2001-2009 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version CVS: $Id: text.php,v 1.7 2009/04/04 21:34:04 avb Exp $
* @link http://pear.php.net/package/HTML_QuickForm
*/
/**
* HTML class for a text field
*
* @category HTML
* @package HTML_QuickForm
* @author Adam Daniel
* @author Bertrand Mansion
* @version Release: 3.2.11
* @since 1.0
*/
class HTML_QuickForm_text extends HTML_QuickForm_input
{
/**
* Class constructor
*
* @param string $elementName (optional)Input field name attribute
* @param string $elementLabel (optional)Input field label
* @param mixed $attributes (optional)Either a typical HTML attribute string
* or an associative array
* @since 1.0
* @access public
* @return void
*/
public function __construct(
$elementName = null,
$elementLabel = null,
$attributes = []
) {
if (is_string($attributes) && empty($attributes)) {
$attributes = [];
}
if (is_array($attributes) || empty($attributes)) {
$classFromAttributes = isset($attributes['class']) ? $attributes['class'] : '';
$attributes['class'] = $classFromAttributes.' form-control';
}
$inputSize = isset($attributes['input-size']) ? $attributes['input-size'] : null;
$this->setInputSize($inputSize);
$columnsSize = isset($attributes['cols-size']) ? $attributes['cols-size'] : null;
$this->setColumnsSize($columnsSize);
$icon = isset($attributes['icon']) ? $attributes['icon'] : null;
$this->setIcon($icon);
if (!empty($inputSize)) {
unset($attributes['input-size']);
}
if (!empty($icon)) {
unset($attributes['icon']);
}
parent::__construct($elementName, $elementLabel, $attributes);
$this->_persistantFreeze = true;
$this->setType('text');
}
/**
* Show an icon at the left side of an input
* @return string
*/
public function getIconToHtml()
{
$icon = $this->getIcon();
if (empty($icon)) {
return '';
}
return '
';
}
/**
* @param string $layout
*
* @return string
*/
public function getTemplate($layout)
{
$size = $this->calculateSize();
$attributes = $this->getAttributes();
switch ($layout) {
case FormValidator::LAYOUT_INLINE:
return '
{element}
';
break;
case FormValidator::LAYOUT_HORIZONTAL:
return '
{icon}
{element}
{label_2}
{error}
{label_3}
';
break;
case FormValidator::LAYOUT_BOX_NO_LABEL:
if (isset($attributes['custom']) && $attributes['custom'] == true) {
$template = '
{icon}
{element}
';
} else {
$template = '
{icon}
{element}
';
}
return $template;
break;
}
}
/**
* Sets size of text field
*
* @param string $size Size of text field
* @since 1.3
* @access public
* @return void
*/
public function setSize($size)
{
$this->updateAttributes(array('size' => $size));
}
/**
* Sets maxlength of text field
*
* @param string $maxlength Maximum length of text field
* @since 1.3
* @access public
* @return void
*/
public function setMaxlength($maxlength)
{
$this->updateAttributes(array('maxlength' => $maxlength));
}
/**
* @return string
*/
public function toHtml()
{
if ($this->isFrozen()) {
return $this->getFrozenHtml();
} else {
return '_getAttrString($this->_attributes).' />';
}
}
}