63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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');
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 |