Changes for page Macros

Last modified by Jip-jan Alunkel on April 15, 18:09

From version 2.102
edited by Jip-jan Alunkel
on June 28, 22:29
Change comment: Update document after refactoring.
To version 2.110
edited by Jip-jan Alunkel
on July 02, 22:09
Change comment: Update document after refactoring.

Summary

Details

Page properties
Content
... ... @@ -44,7 +44,7 @@
44 44   #end
45 45   #if($elementTagName == "select" || $elementTagName == "input" || $elementTagName == "textarea")
46 46   <p${requiredCSSClass}${makeFocusable}>
47 - <label for="${elementDataObj.id}_${elementTagName}">
47 + <label for="${elementDataObj.id}">
48 48   $elementDataObj.label
49 49   <span class="input-wrap${addedCSSClass}">
50 50   #if($elementTagName == "select")
... ... @@ -115,7 +115,7 @@
115 115  #end
116 116  
117 117  #macro(createSelectElement $O_elementData $O_tagName)
118 - <select class="form-select form-control"#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end data-set-space="${O_elementData.data-set-space}"#if($O_elementData.select-spaces-json) data-select-spaces-json="true"#end name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}">
118 + <select class="form-select form-control"#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end data-set-space="${O_elementData.data-set-space}"#if($O_elementData.select-spaces-json) data-select-spaces-json="true"#end name="${O_elementData.id}" id="${O_elementData.id}">
119 119   #if($O_elementData.placeholder)
120 120   <option value="" disabled="" selected="" hidden="hidden">${O_elementData.placeholder}</option>
121 121   #end
... ... @@ -139,26 +139,27 @@
139 139   #set($codespace = "code")
140 140   #end
141 141  
142 - #set($nameExcludeRef = $codespace)
143 - #set($spaceAbsRef = $space.replaceAll('([%_!])', '!$1'))
144 - #set($query_add_xobj = $services.query.xwql("select space.name from XWikiSpace as space where space.parent = :space and space.name <> :nameExclude and space.name <> 'WebPreferences' order by space.name"))
142 + #if(!$isGuest)
143 + ## Add XObjects to current child spaces so the spaces can be queried on the XObject to generate the select options.
144 + #set($nameExcludeRef = $codespace)
145 + #set($spaceAbsRef = $space.replaceAll('([%_!])', '!$1'))
146 + #set($query_add_xobj = $services.query.xwql("select space.name from XWikiSpace as space where space.parent = :space and space.name <> :nameExclude and space.name <> 'WebPreferences' order by space.name"))
147 + #set($result_add_xobj = $query_add_xobj.bindValue('space', $spaceAbsRef).bindValue('nameExclude', $nameExcludeRef).addFilter('unique').execute())
148 + #foreach($item in $result_add_xobj)
149 + #set($doc = $xwiki.getDocument("${space}.${item}.WebHome"))
150 + #set($rightXObj = $doc.getObject("assets.pagemaker.pagemakerClass", true))
151 + #set($discard = $rightXObj.set('pmSpaceOrder', $foreach.count))
152 + #set($discard = $doc.save())
153 + #end
154 + #end
145 145  
146 - #* Add XObjects to current child spaces so the spaces can be queried on the XObject to generate the select options.
147 - #set($result_add_xobj = $query_add_xobj.bindValue('space', $spaceAbsRef).bindValue('nameExclude', $nameExcludeRef).addFilter('unique').execute())
148 - #foreach($item in $result_add_xobj)
149 - #set($doc = $xwiki.getDocument("${space}.${item}.WebHome"))
150 - #set($rightXObj = $doc.getObject("assets.pagemaker.pagemakerClass", true))
151 - #set($discard = $rightXObj.set('pmSpaceOrder', $foreach.count))
152 - #set($discard = $doc.save())
153 - #end*#
154 -
155 155   #set($spaceExcludeRef = $space.replaceAll('([%_!])', '!$1').concat(".${codespace}"))
156 156   #set($spaceLikeRef = $space.replaceAll('([%_!])', '!$1').concat('.%'))
157 157   #set($query = $services.query.xwql("from doc.object(assets.pagemaker.pagemakerClass) met where doc.space like :space and doc.space <> :spaceExclude and doc.name <> 'WebPreferences' order by met.pmSpaceOrder asc"))
159 + #set($result = $query.bindValue('space', $spaceLikeRef).bindValue('spaceExclude', $spaceExcludeRef).addFilter('unique').execute())
158 158  
159 159   ## Generate the select options from all child spaces that have the 'assets.pagemaker.pagemakerClass' XClass.
160 160   ## The order is still random but the JSON can be extracted from the console with the 'select-spaces-json' attribute.
161 - #set($result = $query.bindValue('space', $spaceLikeRef).bindValue('spaceExclude', $spaceExcludeRef).addFilter('unique').execute())
162 162   #foreach($item in $result)
163 163   #set($doc = $xwiki.getDocument($item))
164 164   <option value="$doc.space">$doc.getTitle()</option>
... ... @@ -167,27 +167,29 @@
167 167   #set($json = $O_elementData.select-json)
168 168   #foreach($key in $json.keySet())
169 169   #set($spaceDocTitle = $json.get($key))
170 - #set($spaceDoc = $xwiki.getDocument("${key}.WebHome")) ## Fetch doc or create one if it does not exist by this name.
171 - #set($spaceXObj = $spaceDoc.getObject("assets.pagemaker.pagemakerClass", true)) ## Get or create the needed object.
172 - #set($order_error = ($spaceXObj.getProperty('pmSpaceOrder').value != $foreach.count))
173 - #set($title_error = ($spaceDoc.getTitle() != $spaceDocTitle))
174 - #if($spaceDoc.isNew()) ## Doc did not exist so spaceDoc needs a title and a default locale.
175 - #set($discard = $spaceDoc.setTitle($spaceDocTitle)) ## Title.
176 - #set($discard = $spaceDoc.setDefaultLocale("en")) ## Locale.
177 - #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value.
178 - #set($discard = $spaceDoc.save())
179 - #else
180 - #if($title_error) ## Doc did exist but the title did not match with the JSON value.
181 - #set($discard = $spaceDoc.setTitle($spaceDocTitle))
182 - #end
183 - #if($order_error) ## Either the property does not exist or the value is incorrect.
171 + #if(!$isGuest)
172 + #set($spaceDoc = $xwiki.getDocument("${key}.WebHome")) ## Fetch doc or create one if it does not exist by this name.
173 + #set($spaceXObj = $spaceDoc.getObject("assets.pagemaker.pagemakerClass", true)) ## Get or create the needed object.
174 + #set($order_error = ($spaceXObj.getProperty('pmSpaceOrder').value != $foreach.count))
175 + #set($title_error = ($spaceDoc.getTitle() != $spaceDocTitle))
176 + #if($spaceDoc.isNew()) ## Doc did not exist so spaceDoc needs a title and a default locale.
177 + #set($discard = $spaceDoc.setTitle($spaceDocTitle)) ## Title.
178 + #set($discard = $spaceDoc.setDefaultLocale("en")) ## Locale.
184 184   #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value.
185 - #end
186 - #if($title_error || $order_error) ## Save only if changed
187 187   #set($discard = $spaceDoc.save())
181 + #else
182 + #if($title_error) ## Doc did exist but the title did not match with the JSON value.
183 + #set($discard = $spaceDoc.setTitle($spaceDocTitle))
184 + #end
185 + #if($order_error) ## Either the property does not exist or the value is incorrect.
186 + #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value.
187 + #end
188 + #if($title_error || $order_error) ## Save only if changed
189 + #set($discard = $spaceDoc.save())
190 + #end
188 188   #end
189 189   #end
190 - <option value="$key">$json.get($key)</option>
193 + <option value="$key">$spaceDocTitle</option>
191 191   #end
192 192   #end
193 193   </select>
... ... @@ -196,37 +196,37 @@
196 196   #end
197 197  #end
198 198  #macro(createTextElement $O_elementData $O_tagName)
199 - <input type="text" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" autocomplete="off"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-query-type) data-query-type="${O_elementData.data-query-type}"#end#if($O_elementData.data-query-list-type) data-query-list-type="${O_elementData.data-query-list-type}"#end#if($O_elementData.data-query-list-header) data-query-list-header="${O_elementData.data-query-list-header}"#end#if($O_elementData.data-query-list-contents) data-query-list-contents="${O_elementData.data-query-list-contents}"#end#if($O_elementData.data-query-list-editable) data-query-list-editable="${O_elementData.data-query-list-editable}"#end#if($O_elementData.data-create-page) data-create-page="${O_elementData.data-create-page}"#end#if($O_elementData.data-query-scope) data-query-scope="${O_elementData.data-query-scope}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
202 + <input type="text" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}"#if($O_elementData.value) value="$O_elementData.value"#end autocomplete="off"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-query-type) data-query-type="${O_elementData.data-query-type}"#end#if($O_elementData.data-query-list-type) data-query-list-type="${O_elementData.data-query-list-type}"#end#if($O_elementData.data-query-list-header) data-query-list-header="${O_elementData.data-query-list-header}"#end#if($O_elementData.data-query-list-contents) data-query-list-contents="${O_elementData.data-query-list-contents}"#end#if($O_elementData.data-query-list-editable) data-query-list-editable="${O_elementData.data-query-list-editable}"#end#if($O_elementData.data-create-page) data-create-page="${O_elementData.data-create-page}"#end#if($O_elementData.data-query-scope) data-query-scope="${O_elementData.data-query-scope}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
200 200  #end
201 201  #macro(createNumberElement $O_elementData $O_tagName)
202 - <input type="number" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" autocomplete="off" min="0" pattern="[0-9]*[.,]?[0-9]+" data-decimals="${O_elementData.data-decimals}" step="${O_elementData.decimal-step}"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-query-type) data-query-type="${O_elementData.data-query-type}"#end#if($O_elementData.data-query-list-type) data-query-list-type="${O_elementData.data-query-list-type}"#end#if($O_elementData.data-query-list-header) data-query-list-header="${O_elementData.data-query-list-header}"#end#if($O_elementData.data-query-list-contents) data-query-list-contents="${O_elementData.data-query-list-contents}"#end#if($O_elementData.data-query-list-editable) data-query-list-editable="${O_elementData.data-query-list-editable}"#end#if($O_elementData.data-create-page) data-create-page="${O_elementData.data-create-page}"#end#if($O_elementData.data-query-scope) data-query-scope="${O_elementData.data-query-scope}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
205 + <input type="number" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}" autocomplete="off" min="0" pattern="[0-9]*[.,]?[0-9]+" data-decimals="${O_elementData.data-decimals}" step="${O_elementData.decimal-step}"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-query-type) data-query-type="${O_elementData.data-query-type}"#end#if($O_elementData.data-query-list-type) data-query-list-type="${O_elementData.data-query-list-type}"#end#if($O_elementData.data-query-list-header) data-query-list-header="${O_elementData.data-query-list-header}"#end#if($O_elementData.data-query-list-contents) data-query-list-contents="${O_elementData.data-query-list-contents}"#end#if($O_elementData.data-query-list-editable) data-query-list-editable="${O_elementData.data-query-list-editable}"#end#if($O_elementData.data-create-page) data-create-page="${O_elementData.data-create-page}"#end#if($O_elementData.data-query-scope) data-query-scope="${O_elementData.data-query-scope}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
203 203  #end
204 204  #macro(createEmailElement $O_elementData $O_tagName)
205 - <input type="email" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" autocomplete="off" pattern="^[A-Za-z0-9._+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,63}$"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
208 + <input type="email" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}" autocomplete="off" pattern="^[A-Za-z0-9._+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,63}$"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
206 206  #end
207 207  #macro(createPasswordElement $O_elementData $O_tagName)
208 - <input type="password" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" autocomplete="off"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end>
211 + <input type="password" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}" autocomplete="off"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end>
209 209  #end
210 210  #macro(createDateElement $O_elementData $O_tagName)
211 - <input type="date" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}"#if($O_elementData.date-min) min="${O_elementData.date-min}"#end#if($O_elementData.date-max) max="${O_elementData.date-max}"#end autocomplete="off" aria-describedby="${O_elementData.id}_helpBlock" #if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end #if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
214 + <input type="date" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}"#if($O_elementData.date-min) min="${O_elementData.date-min}"#end#if($O_elementData.date-max) max="${O_elementData.date-max}"#end autocomplete="off" aria-describedby="${O_elementData.id}_helpBlock" #if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end #if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
212 212  #end
213 213  #macro(createColorElement $O_elementData $O_tagName)
214 - <input type="color" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" value="#fffffe" autocomplete="off" aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
217 + <input type="color" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}" value="#fffffe" autocomplete="off" aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
215 215  #end
216 216  #macro(createRangeElement $O_elementData $O_tagName)
217 - <input type="range" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" min="${O_elementData.range-min}" max="${O_elementData.range-max}"#if($O_elementData.range-step) step="${O_elementData.range-step}"#end autocomplete="off" aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
220 + <input type="range" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}" min="${O_elementData.range-min}" max="${O_elementData.range-max}"#if($O_elementData.range-step) step="${O_elementData.range-step}"#end autocomplete="off" aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
218 218  #end
219 219  #macro(createTelElement $O_elementData $O_tagName)
220 - <input type="tel" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" autocomplete="off"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
223 + <input type="tel" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}" autocomplete="off"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
221 221  #end
222 222  #macro(createUrlElement $O_elementData $O_tagName)
223 - <input type="url" class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}" autocomplete="off" pattern="https?://.*"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
226 + <input type="url" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}" autocomplete="off" pattern="https?://.*"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-create-xobj) data-create-xobj="${O_elementData.data-create-xobj}"#end#if($O_elementData.data-xobj-classname) data-xobj-classname="${O_elementData.data-xobj-classname}"#end#if($O_elementData.data-xobj-fieldname) data-xobj-fieldname="${O_elementData.data-xobj-fieldname}"#end>
224 224  #end
225 225  #macro(createCheckboxElement $O_elementData)
226 226   <input type="checkbox" name="${O_elementData.id}" id="${O_elementData.id}"#if($O_elementData.data-opener) data-opener="${O_elementData.data-opener}"#end value="${O_elementData.value}"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end>$O_elementData.label
227 227  #end
228 228  #macro(createTextareaElement $O_elementData $O_tagName)
229 - <textarea class="form-control full" name="${O_elementData.id}_${O_tagName}" id="${O_elementData.id}_${O_tagName}"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end#if($O_elementData.textarea-rows) rows="$O_elementData.textarea-rows"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end></textarea>
232 + <textarea class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}"#if($O_elementData.placeholder) placeholder="${O_elementData.placeholder}"#end#if($O_elementData.textarea-rows) rows="$O_elementData.textarea-rows"#end aria-describedby="${O_elementData.id}_helpBlock"#if($O_elementData.required == "true") aria-required="true" required="required" data-error-response-type="${O_elementData.data-error-response-type}"#else aria-required="false"#end#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end></textarea>
230 230  #end
231 231  #macro(createExpandStart $opener $value)
232 232   <div id="${opener.id}_section_#if($value)${value}#else${opener.value}#end" class="togglee">