mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 17:06:53 +02:00
MDL-30335 formslib: fix repeat_elements for groups that don't appendName
This commit is contained in:
parent
f71e41691a
commit
fa2fa5c698
1 changed files with 29 additions and 12 deletions
|
@ -900,6 +900,29 @@ abstract class moodleform {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper used by {@link repeat_elements()}.
|
||||||
|
* @param int $i the index of this element.
|
||||||
|
* @param HTML_QuickForm_element $elementclone
|
||||||
|
*/
|
||||||
|
function repeat_elements_fix_clone($i, $elementclone, &$namecloned) {
|
||||||
|
$name = $elementclone->getName();
|
||||||
|
$namecloned[] = $name;
|
||||||
|
|
||||||
|
if (!empty($name)) {
|
||||||
|
$elementclone->setName($name."[$i]");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_a($elementclone, 'HTML_QuickForm_header')) {
|
||||||
|
$value = $elementclone->_text;
|
||||||
|
$elementclone->setValue(str_replace('{no}', ($i+1), $value));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$value=$elementclone->getLabel();
|
||||||
|
$elementclone->setLabel(str_replace('{no}', ($i+1), $value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to add a repeating group of elements to a form.
|
* Method to add a repeating group of elements to a form.
|
||||||
*
|
*
|
||||||
|
@ -942,19 +965,13 @@ abstract class moodleform {
|
||||||
for ($i = 0; $i < $repeats; $i++) {
|
for ($i = 0; $i < $repeats; $i++) {
|
||||||
foreach ($elementobjs as $elementobj){
|
foreach ($elementobjs as $elementobj){
|
||||||
$elementclone = fullclone($elementobj);
|
$elementclone = fullclone($elementobj);
|
||||||
$name = $elementclone->getName();
|
$this->repeat_elements_fix_clone($i, $elementclone, $namecloned);
|
||||||
$namecloned[] = $name;
|
|
||||||
if (!empty($name)) {
|
|
||||||
$elementclone->setName($name."[$i]");
|
|
||||||
}
|
|
||||||
if (is_a($elementclone, 'HTML_QuickForm_header')) {
|
|
||||||
$value = $elementclone->_text;
|
|
||||||
$elementclone->setValue(str_replace('{no}', ($i+1), $value));
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$value=$elementclone->getLabel();
|
|
||||||
$elementclone->setLabel(str_replace('{no}', ($i+1), $value));
|
|
||||||
|
|
||||||
|
if ($elementclone instanceof HTML_QuickForm_group && !$elementclone->_appendName) {
|
||||||
|
foreach ($elementclone->getElements() as $el) {
|
||||||
|
$this->repeat_elements_fix_clone($i, $el, $namecloned);
|
||||||
|
}
|
||||||
|
$elementclone->setLabel(str_replace('{no}', $i + 1, $elementclone->getLabel()));
|
||||||
}
|
}
|
||||||
|
|
||||||
$mform->addElement($elementclone);
|
$mform->addElement($elementclone);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue