MDL-62550 core_form: bring back the form item unique ids to fix js fails
authorJake Dallimore <jake@moodle.com>
Thu, 9 Aug 2018 02:54:08 +0000 (10:54 +0800)
committerJake Dallimore <jake@moodle.com>
Wed, 9 Jan 2019 03:34:26 +0000 (11:34 +0800)
This id matches the id seen on the clean theme elements and is needed by
the forms js.

lib/outputrenderers.php
theme/boost/templates/core_form/element-template.mustache
theme/boost/upgrade.txt

index 7181ffe..6ccfa79 100644 (file)
@@ -4509,6 +4509,22 @@ EOD;
                     }
                 }
 
+                // Generate the form element wrapper ids and names to pass to the template.
+                // This differs between group and non-group elements.
+                if ($element->getType() === 'group') {
+                    // Group element.
+                    // The id will be something like 'fgroup_id_NAME'. E.g. fgroup_id_mygroup.
+                    $elementcontext['wrapperid'] = $elementcontext['id'];
+
+                    // Ensure group elements pass through the group name as the element name so the id_error_{{element.name}} is
+                    // properly set in the template.
+                    $elementcontext['name'] = $elementcontext['groupname'];
+                } else {
+                    // Non grouped element.
+                    // Creates an id like 'fitem_id_NAME'. E.g. fitem_id_mytextelement.
+                    $elementcontext['wrapperid'] = 'fitem_' . $elementcontext['id'];
+                }
+
                 $context = array(
                     'element' => $elementcontext,
                     'label' => $label,
index 05ac446..80b7e08 100644 (file)
         "advanced": false,
         "error": null,
         "element": {
+            "wrapperid": "fitem_id_fullname",
             "id": "id_fullname",
             "name": "fullname"
         }
     }
 }}
-<div class="form-group row {{#error}}has-danger{{/error}} fitem {{#element.emptylabel}}femptylabel{{/element.emptylabel}} {{#advanced}}advanced{{/advanced}} {{{element.extraclasses}}}" {{#element.groupname}}data-groupname="{{.}}"{{/element.groupname}}>
+<div id="{{element.wrapperid}}" class="form-group row {{#error}}has-danger{{/error}} fitem {{#element.emptylabel}}femptylabel{{/element.emptylabel}} {{#advanced}}advanced{{/advanced}} {{{element.extraclasses}}}" {{#element.groupname}}data-groupname="{{.}}"{{/element.groupname}}>
     <div class="col-md-3">
         <span class="float-sm-right text-nowrap">
             {{#required}}<abbr class="initialism text-danger" title="{{#str}}required{{/str}}">{{#pix}}req, core, {{#str}}required{{/str}}{{/pix}}</abbr>{{/required}}
index ea2ecd0..dddf8fd 100644 (file)
@@ -1,6 +1,14 @@
 This file describes API changes in /theme/boost
 information provided here is intended especially for theme designers.
 
+=== 3.7 ===
+
+Form element template
+---------------------
+A 'wrapperid' has been added to 'templates/core_form/element-template.mustache' to restore unique ids
+on Boost form element wrappers. This restores the same unique element ids seen on elements in BS2
+themes, which were mistakenly dropped when introducing the Boost theme.
+
 === 3.5 ===
 
 The Boost theme now uses Bootstrap 4 Stable (BS4S).