setId(zbx_formatDomId($name)); $this->setAttribute('name', $name); $this->value = $value; $this->addItems($items); // Prevent Firefox remembering selected option on page refresh. $this->setAttribute('autocomplete', 'off'); $this->setAttribute('multiple', 'multiple'); $this->setAttribute('size', $size); } public function setValue($value = null) { $this->value = $value; return $this; } public function addItems(array $items) { foreach ($items as $value => $caption) { $selected = (strcmp($value, $this->value) == 0); parent::addItem(new CListBoxItem($value, $caption, $selected)); } return $this; } public function addItem($value, $caption = '', $selected = null, $enabled = true, $class = null) { if ($value instanceof CListBoxItem) { parent::addItem($value); } else { if (is_null($selected)) { $selected = false; if (is_array($this->value)) { if (str_in_array($value, $this->value)) { $selected = true; } } elseif (strcmp($value, $this->value) == 0) { $selected = true; } } else { $selected = true; } $citem = new CListBoxItem($value, $caption, $selected, $enabled); if ($class !== null) { $citem->addClass($class); } parent::addItem($citem); } return $this; } /** * Enable or disable readonly mode for the element. * * @param bool $value * * @return self */ public function setReadonly($value) { if ($value) { $this->setAttribute('readonly', 'readonly'); $this->setAttribute('tabindex', '-1'); } else { $this->removeAttribute('readonly'); $this->removeAttribute('tabindex'); } return $this; } /** * Enable or disable the element. * * @param $value */ public function setEnabled($value) { if ($value) { $this->removeAttribute('disabled'); } else { $this->setAttribute('disabled', 'disabled'); } return $this; } /** * Set with of the element. * * @param int $value Width in pixels of the element. * * @return self */ public function setWidth($value) { $this->addStyle('width: '.$value.'px;'); return $this; } }