formslib: MDL-15827 disabledif option to repeat_elements did not work if you depend on another repeated element.
Patch thanks to Matthieu Nué.
This commit is contained in:
+12
-4
@@ -746,15 +746,17 @@ class moodleform {
|
|||||||
$mform->addElement('hidden', $repeathiddenname, $repeats);
|
$mform->addElement('hidden', $repeathiddenname, $repeats);
|
||||||
//value not to be overridden by submitted value
|
//value not to be overridden by submitted value
|
||||||
$mform->setConstants(array($repeathiddenname=>$repeats));
|
$mform->setConstants(array($repeathiddenname=>$repeats));
|
||||||
for ($i=0; $i<$repeats; $i++) {
|
$namecloned = array();
|
||||||
|
for ($i = 0; $i < $repeats; $i++) {
|
||||||
foreach ($elementobjs as $elementobj){
|
foreach ($elementobjs as $elementobj){
|
||||||
$elementclone = fullclone($elementobj);
|
$elementclone = fullclone($elementobj);
|
||||||
$name = $elementclone->getName();
|
$name = $elementclone->getName();
|
||||||
if (!empty($name)){
|
$namecloned[] = $name;
|
||||||
|
if (!empty($name)) {
|
||||||
$elementclone->setName($name."[$i]");
|
$elementclone->setName($name."[$i]");
|
||||||
}
|
}
|
||||||
if (is_a($elementclone, 'HTML_QuickForm_header')){
|
if (is_a($elementclone, 'HTML_QuickForm_header')) {
|
||||||
$value=$elementclone->_text;
|
$value = $elementclone->_text;
|
||||||
$elementclone->setValue(str_replace('{no}', ($i+1), $value));
|
$elementclone->setValue(str_replace('{no}', ($i+1), $value));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -785,6 +787,12 @@ class moodleform {
|
|||||||
$mform->setHelpButton($realelementname, $params);
|
$mform->setHelpButton($realelementname, $params);
|
||||||
break;
|
break;
|
||||||
case 'disabledif' :
|
case 'disabledif' :
|
||||||
|
foreach ($namecloned as $num => $name){
|
||||||
|
if ($params[0] == $name){
|
||||||
|
$params[0] = $params[0]."[$i]";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
$params = array_merge(array($realelementname), $params);
|
$params = array_merge(array($realelementname), $params);
|
||||||
call_user_func_array(array(&$mform, 'disabledIf'), $params);
|
call_user_func_array(array(&$mform, 'disabledIf'), $params);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user