]> git.mjollnir.org Git - moodle.git/commitdiff
formslib: MDL-15827 disabledif option to repeat_elements did not work if you depend...
authortjhunt <tjhunt>
Wed, 18 Mar 2009 07:08:18 +0000 (07:08 +0000)
committertjhunt <tjhunt>
Wed, 18 Mar 2009 07:08:18 +0000 (07:08 +0000)
Patch thanks to Matthieu NuĂ©.

lib/formslib.php

index 731e776800c06388f90733504c3565a9f542953e..2e5e1d724545e5dd57785009e7cc591f393cb872 100644 (file)
@@ -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;