From: tjhunt Date: Wed, 18 Mar 2009 07:08:18 +0000 (+0000) Subject: formslib: MDL-15827 disabledif option to repeat_elements did not work if you depend... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=414f7bee6b3b03ee9dbcb7fc45ede02c3ce8c628;p=moodle.git formslib: MDL-15827 disabledif option to repeat_elements did not work if you depend on another repeated element. Patch thanks to Matthieu Nué. --- diff --git a/lib/formslib.php b/lib/formslib.php index 731e776800..2e5e1d7245 100644 --- a/lib/formslib.php +++ b/lib/formslib.php @@ -746,15 +746,17 @@ class moodleform { $mform->addElement('hidden', $repeathiddenname, $repeats); //value not to be overridden by submitted value $mform->setConstants(array($repeathiddenname=>$repeats)); - for ($i=0; $i<$repeats; $i++) { + $namecloned = array(); + for ($i = 0; $i < $repeats; $i++) { foreach ($elementobjs as $elementobj){ $elementclone = fullclone($elementobj); $name = $elementclone->getName(); - if (!empty($name)){ + $namecloned[] = $name; + if (!empty($name)) { $elementclone->setName($name."[$i]"); } - if (is_a($elementclone, 'HTML_QuickForm_header')){ - $value=$elementclone->_text; + if (is_a($elementclone, 'HTML_QuickForm_header')) { + $value = $elementclone->_text; $elementclone->setValue(str_replace('{no}', ($i+1), $value)); } else { @@ -785,6 +787,12 @@ class moodleform { $mform->setHelpButton($realelementname, $params); break; case 'disabledif' : + foreach ($namecloned as $num => $name){ + if ($params[0] == $name){ + $params[0] = $params[0]."[$i]"; + break; + } + } $params = array_merge(array($realelementname), $params); call_user_func_array(array(&$mform, 'disabledIf'), $params); break;