1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace dokuwiki\Form;
- /**
- * Class CheckableElement
- *
- * For Radio- and Checkboxes
- *
- * @package dokuwiki\Form
- */
- class CheckableElement extends InputElement
- {
- /**
- * @param string $type The type of this element
- * @param string $name The name of this form element
- * @param string $label The label text for this element
- */
- public function __construct($type, $name, $label)
- {
- parent::__construct($type, $name, $label);
- // default value is 1
- $this->attr('value', 1);
- }
- /**
- * Handles the useInput flag and sets the checked attribute accordingly
- */
- protected function prefillInput()
- {
- global $INPUT;
- list($name, $key) = $this->getInputName();
- $myvalue = $this->val();
- if (!$INPUT->has($name)) return;
- if ($key === null) {
- // no key - single value
- $value = $INPUT->str($name);
- if ($value == $myvalue) {
- $this->attr('checked', 'checked');
- } else {
- $this->rmattr('checked');
- }
- } else {
- // we have an array, there might be several values in it
- $input = $INPUT->arr($name);
- if (isset($input[$key])) {
- $this->rmattr('checked');
- // values seem to be in another sub array
- if (is_array($input[$key])) {
- $input = $input[$key];
- }
- foreach ($input as $value) {
- if ($value == $myvalue) {
- $this->attr('checked', 'checked');
- }
- }
- }
- }
- }
- /**
- * The HTML representation of this element wrapped in a label
- * Note: allow HTML tags in label text
- *
- * @return string
- */
- public function toHTML()
- {
- if ($this->label) {
- return '<label '. buildAttributes($this->label->attrs()) .'>'.DOKU_LF
- . $this->mainElementHTML() .DOKU_LF
- .'<span>'. $this->label->val() .'</span>'.DOKU_LF
- .'</label>';
- } else {
- return $this->mainElementHTML();
- }
- }
- }
|