public function generate()
{
$arrOptions = array();
$strClass = 'tl_select';
if ($this->multiple) {
$this->strName .= '[]';
$strClass = 'tl_mselect';
}
// Add an empty option if there are none
if (empty($this->arrOptions)) {
$this->arrOptions = array(array('value' => '', 'label' => '-'));
}
foreach ($this->arrOptions as $strKey => $arrOption) {
if (isset($arrOption['value'])) {
$arrOptions[] = sprintf('<option value="%s"%s>%s</option>', \StringUtil::specialchars($arrOption['value']), $this->isSelected($arrOption), $arrOption['label']);
} else {
$arrOptgroups = array();
foreach ($arrOption as $arrOptgroup) {
$arrOptgroups[] = sprintf('<option value="%s"%s>%s</option>', \StringUtil::specialchars($arrOptgroup['value']), $this->isSelected($arrOptgroup), $arrOptgroup['label']);
}
$arrOptions[] = sprintf('<optgroup label=" %s">%s</optgroup>', \StringUtil::specialchars($strKey), implode('', $arrOptgroups));
}
}
// Chosen
if ($this->chosen) {
$strClass .= ' tl_chosen';
}
return sprintf('%s<select name="%s" id="ctrl_%s" class="%s%s"%s onfocus="Backend.getScrollOffset()">%s</select>%s', $this->multiple ? '<input type="hidden" name="' . rtrim($this->strName, '[]') . '" value="">' : '', $this->strName, $this->strId, $strClass, $this->strClass != '' ? ' ' . $this->strClass : '', $this->getAttributes(), implode('', $arrOptions), $this->wizard);
}