* @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: textarea.php,v 1.13 2009/04/04 21:34:04 avb Exp $
*
* @see http://pear.php.net/package/HTML_QuickForm
*/
/**
* HTML class for a textarea type field.
*
* @category HTML
* @package HTML_QuickForm
*
* @author Adam Daniel
* @author Bertrand Mansion
*
* @version Release: 3.2.11
*
* @since 1.0
*/
class HTML_QuickForm_textarea extends HTML_QuickForm_element
{
/**
* Field value.
*
* @var string
*
* @since 1.0
*/
public $_value;
/**
* Class constructor.
*
* @param string $elementName Input field name attribute
* @param string|array $label Label(s) for a field
* @param mixed $attributes Either a typical HTML attribute string or an associative array
*/
public function __construct(
$elementName = null,
$label = null,
$attributes = null
) {
$attributes['class'] = isset($attributes['class']) ? $attributes['class'] : 'form-control';
$columnsSize = isset($attributes['cols-size']) ? $attributes['cols-size'] : null;
$this->setColumnsSize($columnsSize);
parent::__construct($elementName, $label, $attributes);
$id = $this->getAttribute('id');
if (empty($id)) {
$name = $this->getAttribute('name');
$this->setAttribute('id', uniqid($name.'_'));
}
$this->_persistantFreeze = true;
$this->_type = 'textarea';
$this->_value = null;
}
/**
* Sets the input field name.
*
* @param string $name Input field name attribute
*
* @since 1.0
*/
public function setName($name)
{
$this->updateAttributes(['name' => $name]);
}
/**
* Returns the element name.
*
* @since 1.0
*
* @return string
*/
public function getName()
{
return $this->getAttribute('name');
}
/**
* Sets value for textarea element.
*
* @param string $value Value for textarea element
*
* @since 1.0
*/
public function setValue($value)
{
$this->_value = $value;
}
/**
* Returns the value of the form element.
*
* @since 1.0
*
* @return string
*/
public function getValue()
{
return $this->_value;
}
/**
* Sets height in rows for textarea element.
*
* @param string $rows Height expressed in rows
*
* @since 1.0
*/
public function setRows($rows)
{
$this->updateAttributes(['rows' => $rows]);
}
/**
* Sets width in cols for textarea element.
*
* @param string $cols Width expressed in cols
*
* @since 1.0
*/
public function setCols($cols)
{
$this->updateAttributes(['cols' => $cols]);
}
/**
* Returns the textarea element in HTML.
*
* @since 1.0
*
* @return string
*/
public function toHtml()
{
if ($this->_flagFrozen) {
return $this->getFrozenHtml();
} else {
return $this->_getTabs().
'';
}
}
/**
* Returns the value of field without HTML tags (in this case, value is changed to a mask).
*
* @since 1.0
*
* @return string
*/
public function getFrozenHtml()
{
$value = $this->getCleanValue();
if ($this->getAttribute('wrap') == 'off') {
$html = $this->_getTabs().''.$value."
\n";
} else {
$html = nl2br($value)."\n";
}
return $html.$this->_getPersistantData();
}
/**
* @param string $layout
*
* @return string
*/
public function getTemplate($layout)
{
$size = $this->getColumnsSize();
$custom = $this->getAttributes();
$this->removeAttribute('cols-size');
if (empty($size)) {
$size = [2, 8, 2];
}
switch ($layout) {
case FormValidator::LAYOUT_INLINE:
return '
{element}
';
break;
case FormValidator::LAYOUT_HORIZONTAL:
$template = '
';
if (isset($custom['data-block']) && $custom['data-block'] == true) {
$template = '
{element}
';
}
return $template;
break;
case FormValidator::LAYOUT_BOX_NO_LABEL:
return '
{icon}
{element}
';
break;
}
}
}