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
|
<?php
/*
** Zabbix
** Copyright (C) 2001-2019 Zabbix SIA
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** 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 General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
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 label position (LABEL_POSITION_LEFT or LABEL_POSITION_RIGHT).
*
* @var int
*/
private $label_position = self::LABEL_POSITION_RIGHT;
private $unchecked_value = null;
public function __construct($name = 'checkbox', $value = '1') {
parent::__construct('checkbox', $name, $value);
$this->setChecked(false);
$this->addClass(ZBX_STYLE_CHECKBOX_RADIO);
}
/**
* Check or uncheck the checkbox.
*
* @param bool $checked
*
* @return CCheckBox
*/
public function setChecked($checked) {
if ($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->unchecked_value = $value;
return $this;
}
public function toString($destroy = true) {
$unchecked = '';
if ($this->unchecked_value !== null) {
$unchecked = (new CVar($this->getName(), $this->unchecked_value))
->removeId()
->setEnabled(!$this->getAttribute('disabled'))
->toString();
}
$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);
return $unchecked.parent::toString($destroy).($label->toString(true));
}
}
|