1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
|
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
class CCheckBox extends CInput {
/**
* Constant for putting label text before the checkbox.
*/
const LABEL_POSITION_LEFT = 0;
/**
* Constant for putting label text after the checkbox.
*/
const LABEL_POSITION_RIGHT = 1;
/**
* Checkbox label.
*
* @var string
*/
private $label = '';
/**
* Checkbox name.
*
* @var string
*/
private $name = '';
/**
* Checkbox value.
*
* @var string
*/
private $value = '';
/**
* Checked or unchecked state of checkbox.
*
* @var bool
*/
private $checked = false;
/**
* Checkbox label position (LABEL_POSITION_LEFT or LABEL_POSITION_RIGHT).
*
* @var int
*/
private $label_position = self::LABEL_POSITION_RIGHT;
/**
* Checkbox title.
*
* @var string|null
*/
private $title = null;
public function __construct($name = 'checkbox', $value = '1') {
$this->name = $name;
$this->value = $value;
parent::__construct('checkbox', $this->name, $this->value);
$this->setChecked(false);
$this->addClass(ZBX_STYLE_CHECKBOX_RADIO);
}
/**
* Check or uncheck the checkbox.
*
* @param bool $checked
*
* @return CCheckBox
*/
public function setChecked($checked) {
$this->checked = $checked;
if ($this->checked) {
$this->attributes['checked'] = 'checked';
}
else {
$this->removeAttribute('checked');
}
return $this;
}
/**
* Set the label for the checkbox.
*
* @param string $label
*
* @return CCheckBox
*/
public function setLabel($label) {
$this->label = $label;
return $this;
}
/**
* Get the label for the checkbox.
*
* @return string
*/
public function getLabel() {
return $this->label;
}
/**
* Set the label position for the checkbox.
*
* If $label_position is LABEL_POSITION_LEFT, then label text goes before the span that draws the checkbox:
* <input ...><label ...>$label<span></span></label>
*
* If $label_position is LABEL_POSITION_RIGHT, then label text goes after the span that draws the checkbox:
* <input ...><label ...><span></span>$label</label>
*
* @param int $label_position One of LABEL_POSITION_LEFT or LABEL_POSITION_RIGHT.
*
* @return CCheckBox
*/
public function setLabelPosition($label_position) {
$this->label_position = $label_position;
return $this;
}
/**
* Allow to set value for not checked checkbox.
*
* @param string $value Value for unchecked state.
*
* @return CCheckBox
*/
public function setUncheckedValue($value) {
$this->setAttribute('unchecked-value', $value);
return $this;
}
/**
* Set the title for the checkbox.
*
* @param string $title
*
* @return CCheckBox
*/
public function setTitle($title) {
$this->title = $title;
return $this;
}
public function toString($destroy = true) {
$elements = ($this->label_position === self::LABEL_POSITION_LEFT)
? [$this->label, new CSpan()]
: [new CSpan(), $this->label];
$label = (new CLabel($elements, $this->getId()))
->addClass($this->label_position === self::LABEL_POSITION_LEFT ? 'label-pos-left' : null)
->setTitle($this->title);
return parent::toString($destroy).$label->toString();
}
}
|