| 
							- <?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;
 -         [$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();
 -         }
 -     }
 - }
 
 
  |