protected function addAttributesToRender($writer)
{
$page = $this->getPage();
$page->ensureRenderInForm($this);
if (($uid = $this->getUniqueID()) !== '') {
$writer->addAttribute('name', $uid);
}
if (($textMode = $this->getTextMode()) === TTextBoxMode::MultiLine) {
if (($rows = $this->getRows()) <= 0) {
$rows = self::DEFAULT_ROWS;
}
if (($cols = $this->getColumns()) <= 0) {
$cols = self::DEFAULT_COLUMNS;
}
$writer->addAttribute('rows', "{$rows}");
$writer->addAttribute('cols', "{$cols}");
if (!$this->getWrap()) {
$writer->addAttribute('wrap', 'off');
}
} else {
switch ($textMode) {
case TTextBoxMode::Password:
$writer->addAttribute('type', 'password');
break;
case TTextBoxMode::Color:
$writer->addAttribute('type', 'color');
break;
case TTextBoxMode::Date:
$writer->addAttribute('type', 'date');
break;
case TTextBoxMode::Datetime:
$writer->addAttribute('type', 'datetime');
break;
case TTextBoxMode::DatetimeLocal:
$writer->addAttribute('type', 'datetime-local');
break;
case TTextBoxMode::Email:
$writer->addAttribute('type', 'email');
break;
case TTextBoxMode::Month:
$writer->addAttribute('type', 'month');
break;
case TTextBoxMode::Number:
$writer->addAttribute('type', 'number');
break;
case TTextBoxMode::Range:
$writer->addAttribute('type', 'range');
break;
case TTextBoxMode::Search:
$writer->addAttribute('type', 'search');
break;
case TTextBoxMode::Tel:
$writer->addAttribute('type', 'tel');
break;
case TTextBoxMode::Time:
$writer->addAttribute('type', 'time');
break;
case TTextBoxMode::Url:
$writer->addAttribute('type', 'url');
break;
case TTextBoxMode::Week:
$writer->addAttribute('type', 'week');
break;
case TTextBoxMode::SingleLine:
default:
$writer->addAttribute('type', 'text');
break;
}
if (($text = $this->getText()) !== '' && ($textMode !== TTextBoxMode::Password || $this->getPersistPassword())) {
$writer->addAttribute('value', $text);
}
if (($act = $this->getAutoCompleteType()) !== 'None') {
if ($act === 'Disabled') {
$writer->addAttribute('autocomplete', 'off');
} else {
if ($act === 'Search') {
$writer->addAttribute('vcard_name', 'search');
} else {
if ($act === 'HomeCountryRegion') {
$writer->addAttribute('vcard_name', 'HomeCountry');
} else {
if ($act === 'BusinessCountryRegion') {
$writer->addAttribute('vcard_name', 'BusinessCountry');
} else {
if (strpos($act, 'Business') === 0) {
$act = 'Business' . '.' . substr($act, 8);
} else {
if (strpos($act, 'Home') === 0) {
$act = 'Home' . '.' . substr($act, 4);
}
}
$writer->addAttribute('vcard_name', 'vCard.' . $act);
}
}
}
}
}
if (($cols = $this->getColumns()) > 0) {
$writer->addAttribute('size', "{$cols}");
}
if (($maxLength = $this->getMaxLength()) > 0) {
$writer->addAttribute('maxlength', "{$maxLength}");
}
}
if ($this->getReadOnly()) {
$writer->addAttribute('readonly', 'readonly');
}
$isEnabled = $this->getEnabled(true);
if (!$isEnabled && $this->getEnabled()) {
// in this case parent will not render 'disabled'
$writer->addAttribute('disabled', 'disabled');
}
if ($isEnabled && $this->getEnableClientScript() && ($this->getAutoPostBack() || $textMode === TTextBoxMode::SingleLine) && $page->getClientSupportsJavaScript()) {
$this->renderClientControlScript($writer);
}
parent::addAttributesToRender($writer);
}