112a4e4d1SAndreas Gohr<?php 2*9d01c1d9SSatoshi Sahara 312a4e4d1SAndreas Gohrnamespace dokuwiki\Form; 412a4e4d1SAndreas Gohr 512a4e4d1SAndreas Gohr/** 612a4e4d1SAndreas Gohr * Class CheckableElement 712a4e4d1SAndreas Gohr * 812a4e4d1SAndreas Gohr * For Radio- and Checkboxes 912a4e4d1SAndreas Gohr * 107ec97767SGerrit Uitslag * @package dokuwiki\Form 1112a4e4d1SAndreas Gohr */ 12*9d01c1d9SSatoshi Saharaclass CheckableElement extends InputElement 13*9d01c1d9SSatoshi Sahara{ 1412a4e4d1SAndreas Gohr /** 1512a4e4d1SAndreas Gohr * @param string $type The type of this element 1612a4e4d1SAndreas Gohr * @param string $name The name of this form element 1712a4e4d1SAndreas Gohr * @param string $label The label text for this element 1812a4e4d1SAndreas Gohr */ 19*9d01c1d9SSatoshi Sahara public function __construct($type, $name, $label) 20*9d01c1d9SSatoshi Sahara { 2112a4e4d1SAndreas Gohr parent::__construct($type, $name, $label); 2212a4e4d1SAndreas Gohr // default value is 1 2312a4e4d1SAndreas Gohr $this->attr('value', 1); 2412a4e4d1SAndreas Gohr } 2512a4e4d1SAndreas Gohr 2612a4e4d1SAndreas Gohr /** 2712a4e4d1SAndreas Gohr * Handles the useInput flag and sets the checked attribute accordingly 2812a4e4d1SAndreas Gohr */ 29*9d01c1d9SSatoshi Sahara protected function prefillInput() 30*9d01c1d9SSatoshi Sahara { 3112a4e4d1SAndreas Gohr global $INPUT; 3212a4e4d1SAndreas Gohr list($name, $key) = $this->getInputName(); 3312a4e4d1SAndreas Gohr $myvalue = $this->val(); 3412a4e4d1SAndreas Gohr 3512a4e4d1SAndreas Gohr if (!$INPUT->has($name)) return; 3612a4e4d1SAndreas Gohr 3712a4e4d1SAndreas Gohr if ($key === null) { 3812a4e4d1SAndreas Gohr // no key - single value 3912a4e4d1SAndreas Gohr $value = $INPUT->str($name); 4012a4e4d1SAndreas Gohr if ($value == $myvalue) { 4112a4e4d1SAndreas Gohr $this->attr('checked', 'checked'); 4212a4e4d1SAndreas Gohr } else { 4312a4e4d1SAndreas Gohr $this->rmattr('checked'); 4412a4e4d1SAndreas Gohr } 4512a4e4d1SAndreas Gohr } else { 4612a4e4d1SAndreas Gohr // we have an array, there might be several values in it 4712a4e4d1SAndreas Gohr $input = $INPUT->arr($name); 4812a4e4d1SAndreas Gohr if (isset($input[$key])) { 4912a4e4d1SAndreas Gohr $this->rmattr('checked'); 5012a4e4d1SAndreas Gohr 5112a4e4d1SAndreas Gohr // values seem to be in another sub array 5212a4e4d1SAndreas Gohr if (is_array($input[$key])) { 5312a4e4d1SAndreas Gohr $input = $input[$key]; 5412a4e4d1SAndreas Gohr } 5512a4e4d1SAndreas Gohr 5612a4e4d1SAndreas Gohr foreach ($input as $value) { 5712a4e4d1SAndreas Gohr if ($value == $myvalue) { 5812a4e4d1SAndreas Gohr $this->attr('checked', 'checked'); 5912a4e4d1SAndreas Gohr } 6012a4e4d1SAndreas Gohr } 6112a4e4d1SAndreas Gohr } 6212a4e4d1SAndreas Gohr } 6312a4e4d1SAndreas Gohr } 6412a4e4d1SAndreas Gohr 6512a4e4d1SAndreas Gohr} 66