Changes for page Macros
Last modified by Jip-jan Alunkel on April 15, 18:09
From version 2.331
edited by Jip-jan Alunkel
on August 31, 20:24
on August 31, 20:24
Change comment:
Update document after refactoring.
To version 2.346
edited by Jip-jan Alunkel
on January 02, 15:29
on January 02, 15:29
Change comment:
Update document after refactoring.
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -64,7 +64,7 @@ 64 64 #if($elementType == "select") 65 65 #set($spanCSSClass = " select-wrap") 66 66 #set($elementTagName = "select") 67 - #elseif($elementType == "text" || $elementType == "number" || $elementType == "range" || $elementType == "email" || $elementType == "password" || $elementType == "date" || $elementType == "tel" || $elementType == "url" || $elementType == "color") 67 + #elseif($elementType == "text" || $elementType == "number" || $elementType == "range" || $elementType == "email" || $elementType == "password" || $elementType == "date" || $elementType == "tel" || $elementType == "url" || $elementType == "color" || $elementType == "address") 68 68 #set($elementTagName = "input") 69 69 #elseif($elementType == "checkbox" || $elementType == "radio") 70 70 #set($spanCSSClass = " checkradio") ... ... @@ -116,6 +116,8 @@ 116 116 #createTelElement($elementDataObj $elementType) 117 117 #elseif($elementType == "url") 118 118 #createUrlElement($elementDataObj $elementType) 119 + #elseif($elementType == "address") 120 + #createAddressElement($elementDataObj $elementType) 119 119 #elseif($elementType == "captcha") 120 120 #createCaptcha($elementDataObj) 121 121 #end ... ... @@ -177,7 +177,8 @@ 177 177 #end 178 178 179 179 #macro(createSelectElement $O_elementData $O_tagName) 180 - <select class="form-select form-control"#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-opener) data-opener="${O_elementData.data-opener}"#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.data-set-space}) data-set-space="${O_elementData.data-set-space}"#end#if($O_elementData.data-select-spaces-to-json) data-select-spaces-to-json="${O_elementData.data-select-spaces-to-json}"#end name="${O_elementData.id}" id="${O_elementData.id}"> 182 + #set($currentSpaceName = $services.model.resolveDocument('', 'default', $doc.documentReference.lastSpaceReference).parent.getName()) 183 + <select class="form-select form-control"#if($O_elementData.aria-label) aria-label="${O_elementData.aria-label}"#end#if($O_elementData.data-opener) data-opener="${O_elementData.data-opener}"#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.data-set-space}) data-set-space="${O_elementData.data-set-space}" data-parent-space="${currentSpaceName}"#end name="${O_elementData.id}" id="${O_elementData.id}"> 181 181 #if($O_elementData.placeholder) 182 182 #if($O_elementData.select-json && $O_elementData.select-json.keySet().contains($O_elementData.value)) 183 183 #else ... ... @@ -184,98 +184,33 @@ 184 184 <option value="" disabled=""#if(!$O_elementData.value) selected=""#end hidden="hidden">${O_elementData.placeholder}</option> 185 185 #end 186 186 #end 187 - #set($mydoc = $xwiki.getDocument('assets.pagemaker.classes.pagemakerClass')) 188 - #if($mydoc.isNew() && $hasProgramming) 189 - #set ($myinternaldoc = $mydoc.getDocument()) 190 - #set ($myclass = $myinternaldoc.getXClass()) 191 - #set ($discard = $myclass.addTextField("pmSpaceOrder", "pageMaker space order", 10)) 192 - #set ($discard = $mydoc.save()) 190 + 191 + ## Get the JSON data. 192 + #set($json = {}) 193 + #if($O_elementData.select-json.keySet()) 194 + #set($json = $O_elementData.select-json) 195 + #else 196 + #set($jsondoc = $xwiki.getDocument($O_elementData.select-json)) 197 + #set($jsoncontent = $jsontool.fromString($jsontool.serialize($jsondoc.getContent()))) 198 + #set($json = $jsontool.parse($jsoncontent)) 193 193 #end 194 - #set($removedNr = 0) 195 195 196 - #if($O_elementData.select-space-reference) 197 - #set($space = $O_elementData.select-space-reference) 198 - #set($codespace = "") 199 - #if($xwiki.getSpaces().contains("${space}.${space}Code")) 200 - #set($codespace = "${space}Code") 201 - #elseif($xwiki.getSpaces().contains("${space}.Code")) 202 - #set($codespace = "Code") 203 - #elseif($xwiki.getSpaces().contains("${space}.code")) 204 - #set($codespace = "code") 205 - #end 206 - 207 - #if(!$isGuest) 208 - ## Add XObjects to current child spaces so the spaces can be queried on the XObject to generate the select options. 209 - #set($nameExcludeRef = $codespace) 210 - #set($spaceAbsRef = $space.replaceAll('([%_!])', '!$1')) 211 - #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")) 212 - #set($result_add_xobj = $query_add_xobj.bindValue('space', $spaceAbsRef).bindValue('nameExclude', $nameExcludeRef).addFilter('unique').execute()) 213 - #foreach($item in $result_add_xobj) 214 - #set($doc = $xwiki.getDocument("${space}.${item}.WebHome")) 215 - #set($rightXObj = $doc.getObject("assets.pagemaker.classes.pagemakerClass", true)) 216 - #set($discard = $rightXObj.set('pmSpaceOrder', $foreach.count)) 217 - #set($discard = $doc.save()) 218 - #end 219 - #end 220 - 221 - #set($spaceExcludeRef = $space.replaceAll('([%_!])', '!$1').concat(".${codespace}")) 222 - #set($spaceLikeRef = $space.replaceAll('([%_!])', '!$1').concat('.%')) 223 - #set($query = $services.query.xwql("from doc.object(assets.pagemaker.classes.pagemakerClass) met where doc.space like :space and doc.space <> :spaceExclude and doc.name <> 'WebPreferences' order by met.pmSpaceOrder asc")) 224 - #set($result = $query.bindValue('space', $spaceLikeRef).bindValue('spaceExclude', $spaceExcludeRef).addFilter('unique').execute()) 225 - 226 - ## Generate the select options from all child spaces that have the 'assets.pagemaker.pagemakerClass' XClass. 227 - ## The order is still random but the JSON can be extracted from the console with the 'select-spaces-to-json' attribute. 228 - #foreach($item in $result) 229 - #set($doc = $xwiki.getDocument($item)) 230 - <option value="$doc.space">$doc.getTitle()</option> 231 - #end 232 - #elseif($O_elementData.select-json) 233 - #set($json = {}) 234 - #if($O_elementData.select-json.keySet()) 235 - #set($json = $O_elementData.select-json) 236 - #else 237 - #set($jsondoc = $xwiki.getDocument($O_elementData.select-json)) 238 - #set($jsoncontent = $jsontool.fromString($jsontool.serialize($jsondoc.getContent()))) 239 - #set($json = $jsontool.parse($jsoncontent)) 240 - #end 241 - #foreach($key in $json.keySet()) 242 - #if(!$isGuest && $O_elementData.select-json-to-spaces == "true") 243 - #set($spaceDocTitle = $json.get($key)) 244 - #set($spaceDoc = $xwiki.getDocument("${key}.WebHome")) ## Fetch doc or create one if it does not exist by this name. 245 - #set($spaceXObj = $spaceDoc.getObject("assets.pagemaker.classes.pagemakerClass", true)) ## Get or create the needed object. 246 - #set($order_error = ($spaceXObj.getProperty('pmSpaceOrder').value != $foreach.count)) 247 - #set($title_error = ($spaceDoc.getTitle() != $spaceDocTitle)) 248 - #if($spaceDoc.isNew()) ## Doc did not exist so spaceDoc needs a title and a default locale. 249 - #set($discard = $spaceDoc.setTitle($spaceDocTitle)) ## Title. 250 - #set($discard = $spaceDoc.setDefaultLocale("en")) ## Locale. 251 - #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value. 252 - #set($discard = $spaceDoc.save()) 253 - #else 254 - #if($title_error) ## Doc did exist but the title did not match with the JSON value. 255 - #set($discard = $spaceDoc.setTitle($spaceDocTitle)) 256 - #end 257 - #if($order_error) ## Either the property does not exist or the value is incorrect. 258 - #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value. 259 - #end 260 - #if($title_error || $order_error) ## Save only if changed 261 - #set($discard = $spaceDoc.save()) 262 - #end 263 - #end 264 - #end 201 + ## Loop through the JSON data to create the options. 202 + #foreach($key in $json.keySet()) 265 265 <option value="$key"#if($O_elementData.value=="$key") selected="selected"#end>$json[$key]</option> 266 - #end 267 267 #end 268 268 </select> 269 - #if($removedNr > 0) 270 - $removedNr pages had the XObject <span class="terminal">${removeXObj}</span> removed. 271 - #end 272 272 #end 273 273 #macro(createTextElement $O_elementData $O_tagName) 274 - <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-pattern) data-pattern="${O_elementData.data-pattern}"#end#if($O_elementData.data-auto-first-capital) data-auto-first-capital="${O_elementData.data-auto-first-capital}"#end#if($O_elementData.data-query-type) data-query-type="${O_elementData.data-query-type}" data-query-reference="${O_elementData.data-query-reference}"#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#if($O_elementData.data-ajax-check) data-ajax-check="${O_elementData.data-ajax-check}"#end#if($O_elementData.data-modal-input) data-modal-input="${O_elementData.data-modal-input}"#end#if($O_elementData.data-default-value) data-default-value="${O_elementData.data-default-value}"#end> 208 + <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-pattern) data-pattern="${O_elementData.data-pattern}"#end#if($O_elementData.data-auto-first-capital) data-auto-first-capital="${O_elementData.data-auto-first-capital}"#end#if($O_elementData.data-query-type) data-query-type="${O_elementData.data-query-type}" data-query-reference="${O_elementData.data-query-reference}"#end#if($O_elementData.data-page-name) data-page-name="${O_elementData.data-page-name}"#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-set-space}) data-set-space="${O_elementData.data-set-space}"#end#if($O_elementData.data-parent-space) data-parent-space="${O_elementData.data-parent-space}"#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#if($O_elementData.data-ajax-check) data-ajax-check="${O_elementData.data-ajax-check}"#end#if($O_elementData.data-modal-input) data-modal-input="${O_elementData.data-modal-input}"#end#if($O_elementData.data-default-value) data-default-value="${O_elementData.data-default-value}"#end> 275 275 #if($O_elementData.data-modal-input) 276 276 <a href="#" class="btn btn-default" data-toggle="modal" data-target="#${O_elementData.id}Modal">Create</a> 277 277 #end 278 278 #end 213 +#macro(createAddressElement $O_elementData $O_tagName) 214 + <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-pattern) data-pattern="${O_elementData.data-pattern}"#end#if($O_elementData.data-auto-first-capital) data-auto-first-capital="${O_elementData.data-auto-first-capital}"#end#if($O_elementData.data-query-type) data-query-type="${O_elementData.data-query-type}" data-query-reference="${O_elementData.data-query-reference}"#end#if($O_elementData.data-page-name) data-page-name="${O_elementData.data-page-name}"#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#if($O_elementData.data-ajax-check) data-ajax-check="${O_elementData.data-ajax-check}"#end#if($O_elementData.data-modal-input) data-modal-input="${O_elementData.data-modal-input}"#end#if($O_elementData.data-default-value) data-default-value="${O_elementData.data-default-value}"#end> 215 + <input type="hidden" id="latlong" name="latlong" value="" data-create-xobj="${O_elementData.data-create-xobj}" data-xobj-classname="${O_elementData.data-xobj-classname}" data-xobj-fieldname="latlong"> 216 +#end 279 279 #macro(createNumberElement $O_elementData $O_tagName) 280 280 <input type="number" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}"#if($O_elementData.value) value="$O_elementData.value"#end 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> 281 281 #end