MDL-65217 form: option to randomise element ids

This commit is contained in:
Marina Glancy 2019-04-09 15:40:52 +02:00
parent 521989ec56
commit f82c9d8d06
2 changed files with 6 additions and 0 deletions

View File

@ -163,6 +163,8 @@ abstract class moodleform {
* @param string $target target frame for form submission. You will rarely use this. Don't use
* it if you don't need to as the target attribute is deprecated in xhtml strict.
* @param mixed $attributes you can pass a string of html attributes here or an array.
* Special attribute 'data-random-ids' will randomise generated elements ids. This
* is necessary when there are several forms on the same page.
* @param bool $editable
* @param array $ajaxformdata Forms submitted via ajax, must pass their data here, instead of relying on _GET and _POST.
*/

View File

@ -384,6 +384,10 @@ class HTML_QuickForm_element extends HTML_Common
switch ($event) {
case 'createElement':
static::__construct($arg[0], $arg[1], $arg[2], $arg[3], $arg[4]);
if ($caller->getAttribute('data-random-ids') && !$this->getAttribute('id')) {
$this->_generateId();
$this->updateAttributes(array('id' => $this->getAttribute('id') . '_' . random_string()));
}
break;
case 'addElement':
$this->onQuickFormEvent('createElement', $arg, $caller);