From c62f0a396b3800b53756505732269de0ccc48384 Mon Sep 17 00:00:00 2001 From: Davo Smith Date: Tue, 19 Dec 2017 10:47:54 +0000 Subject: [PATCH 1/2] MDL-61061 formslib: add data-groupname to groups to fix hideIf rules --- lib/formslib.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/formslib.php b/lib/formslib.php index 77efbe95d04..8f74784fb13 100644 --- a/lib/formslib.php +++ b/lib/formslib.php @@ -2833,13 +2833,13 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ // switch next two lines for ol li containers for form items. // $this->_elementTemplates=array('default'=>"\n\t\t".'
  • {error}
    {element}
  • '); $this->_elementTemplates = array( - 'default' => "\n\t\t".'
    {help}
    {error}
    {element}
    ', + 'default' => "\n\t\t".'
    {help}
    {error}
    {element}
    ', - 'actionbuttons' => "\n\t\t".'
    {element}
    ', + 'actionbuttons' => "\n\t\t".'
    {element}
    ', - 'fieldset' => "\n\t\t".'
    {help}
    {error}
    {element}
    ', + 'fieldset' => "\n\t\t".'
    {help}
    {error}
    {element}
    ', - 'static' => "\n\t\t".'
    {label}{req}{advancedimg} {help}
    {error}
    {element}
    ', + 'static' => "\n\t\t".'
    {label}{req}{advancedimg} {help}
    {error}
    {element}
    ', 'warning' => "\n\t\t".'
    {element}
    ', @@ -2962,6 +2962,7 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ } $html = str_replace('{id}', $group->getAttribute('id'), $html); $html = str_replace('{name}', $group->getName(), $html); + $html = str_replace('{groupname}', 'data-groupname="'.$group->getName().'"', $html); $html = str_replace('{typeclass}', 'fgroup', $html); $html = str_replace('{type}', 'group', $html); $html = str_replace('{class}', $group->getAttribute('class'), $html); @@ -3029,6 +3030,7 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{ $html = str_replace('{typeclass}', 'f' . $element->getType(), $html); $html = str_replace('{type}', $element->getType(), $html); $html = str_replace('{name}', $element->getName(), $html); + $html = str_replace('{groupname}', '', $html); $html = str_replace('{class}', $element->getAttribute('class'), $html); $emptylabel = ''; if ($element->getLabel() == '') { From d5cd1496ce22f48713c85e46ee883c74ce246c2e Mon Sep 17 00:00:00 2001 From: Davo Smith Date: Tue, 19 Dec 2017 10:48:46 +0000 Subject: [PATCH 2/2] MDL-61061 formslib: make sure hideIf rules hide labels within groups --- lib/form/form.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/form/form.js b/lib/form/form.js index 59f3ac6a051..50f59604b9b 100644 --- a/lib/form/form.js +++ b/lib/form/form.js @@ -282,6 +282,8 @@ if (typeof M.form.dependencyManager === 'undefined') { var els = this.elementsByName(name, true); els.each(function(node) { var e = node.ancestor('.fitem', true); + var label = null, + id = null; if (e) { // Cope with differences between clean and boost themes. if (e.hasClass('fitem_fgroup')) { @@ -298,6 +300,22 @@ if (typeof M.form.dependencyManager === 'undefined') { e.setStyles({ display: (hidden) ? 'none' : '' }); + + // Hide/unhide the label as well. + id = node.get('id'); + if (id) { + label = Y.all('label[for="' + id + '"]'); + if (label) { + if (hidden) { + label.setAttribute('hidden', 'hidden'); + } else { + label.removeAttribute('hidden'); + } + label.setStyles({ + display: (hidden) ? 'none' : '' + }); + } + } } }); },