Changes for page Macros

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

From version 2.360
edited by Jip-jan Alunkel
on January 31, 16:17
Change comment: Update document after refactoring.
To version 2.343
edited by Jip-jan Alunkel
on January 02, 12:46
Change comment: Update document after refactoring.

Summary

Details

Page properties
Content
... ... @@ -169,7 +169,6 @@
169 169   #elseif($elementType == "radio")
170 170   #end
171 171   </label>
172 - <input name="${elementDataObj.id}" type="hidden" value="0"#if($elementDataObj.data-create-xobj) data-create-xobj="${elementDataObj.data-create-xobj}"#end#if($elementDataObj.data-xobj-classname) data-xobj-classname="${elementDataObj.data-xobj-classname}"#end#if($elementDataObj.data-xobj-fieldname) data-xobj-fieldname="${elementDataObj.data-xobj-fieldname}"#end>
173 173   </span>
174 174   </span>
175 175   </p>
... ... @@ -180,29 +180,102 @@
180 180  #end
181 181  
182 182  #macro(createSelectElement $O_elementData $O_tagName)
183 - #set($currentSpaceName = $services.model.resolveDocument('', 'default', $doc.documentReference.lastSpaceReference).parent.getName())
184 - <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}">
182 + #set($tpage = $xwiki.getDocument("${docref}"))## aanpassen: soms wijkt de titel af van de (custom) documentnaam.
183 + #set($tparentReference = $services.model.resolveDocument('', 'default', $doc.documentReference.lastSpaceReference).parent)
184 + #set($tparentTitle = $tparentReference.getName())
185 +$tparentTitle
186 + <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-parent-space) data-parent-space="${O_elementData.data-parent-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}">
185 185   #if($O_elementData.placeholder)
186 - #if($O_elementData.select-json && !$O_elementData.select-json.keySet().contains($O_elementData.value))
188 + #if($O_elementData.select-json && $O_elementData.select-json.keySet().contains($O_elementData.value))
189 + #else
187 187   <option value="" disabled=""#if(!$O_elementData.value) selected=""#end hidden="hidden">${O_elementData.placeholder}</option>
188 188   #end
189 189   #end
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 + #set($mydoc = $xwiki.getDocument('assets.pagemaker.classes.pagemakerClass'))
194 + #if($mydoc.isNew() && $hasProgramming)
195 + #set ($myinternaldoc = $mydoc.getDocument())
196 + #set ($myclass = $myinternaldoc.getXClass())
197 + #set ($discard = $myclass.addTextField("pmSpaceOrder", "pageMaker space order", 10))
198 + #set ($discard = $mydoc.save())
199 199   #end
200 + #set($removedNr = 0)
200 200  
201 - ## Loop through the JSON data to create the options.
202 - #foreach($key in $json.keySet())
203 - <option value="$key">$json[$key]</option>
202 + #if($O_elementData.select-space-reference)
203 + #set($space = $O_elementData.select-space-reference)
204 + #set($codespace = "")
205 + #if($xwiki.getSpaces().contains("${space}.${space}Code"))
206 + #set($codespace = "${space}Code")
207 + #elseif($xwiki.getSpaces().contains("${space}.Code"))
208 + #set($codespace = "Code")
209 + #elseif($xwiki.getSpaces().contains("${space}.code"))
210 + #set($codespace = "code")
211 + #end
212 +
213 + #if(!$isGuest)
214 + ## Add XObjects to current child spaces so the spaces can be queried on the XObject to generate the select options.
215 + #set($nameExcludeRef = $codespace)
216 + #set($spaceAbsRef = $space.replaceAll('([%_!])', '!$1'))
217 + #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"))
218 + #set($result_add_xobj = $query_add_xobj.bindValue('space', $spaceAbsRef).bindValue('nameExclude', $nameExcludeRef).addFilter('unique').execute())
219 + #foreach($item in $result_add_xobj)
220 + #set($doc = $xwiki.getDocument("${space}.${item}.WebHome"))
221 + #set($rightXObj = $doc.getObject("assets.pagemaker.classes.pagemakerClass", true))
222 + #set($discard = $rightXObj.set('pmSpaceOrder', $foreach.count))
223 + #set($discard = $doc.save())
224 + #end
225 + #end
226 +
227 + #set($spaceExcludeRef = $space.replaceAll('([%_!])', '!$1').concat(".${codespace}"))
228 + #set($spaceLikeRef = $space.replaceAll('([%_!])', '!$1').concat('.%'))
229 + #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"))
230 + #set($result = $query.bindValue('space', $spaceLikeRef).bindValue('spaceExclude', $spaceExcludeRef).addFilter('unique').execute())
231 +
232 + ## Generate the select options from all child spaces that have the 'assets.pagemaker.pagemakerClass' XClass.
233 + ## The order is still random but the JSON can be extracted from the console with the 'select-spaces-to-json' attribute.
234 + #foreach($item in $result)
235 + #set($doc = $xwiki.getDocument($item))
236 + <option value="$doc.space">$doc.getTitle()</option>
237 + #end
238 + #elseif($O_elementData.select-json)
239 + #set($json = {})
240 + #if($O_elementData.select-json.keySet())
241 + #set($json = $O_elementData.select-json)
242 + #else
243 + #set($jsondoc = $xwiki.getDocument($O_elementData.select-json))
244 + #set($jsoncontent = $jsontool.fromString($jsontool.serialize($jsondoc.getContent())))
245 + #set($json = $jsontool.parse($jsoncontent))
246 + #end
247 + #foreach($key in $json.keySet())
248 + #if(!$isGuest && $O_elementData.select-json-to-spaces == "true")
249 + #set($spaceDocTitle = $json.get($key))
250 + #set($spaceDoc = $xwiki.getDocument("${key}.WebHome")) ## Fetch doc or create one if it does not exist by this name.
251 + #set($spaceXObj = $spaceDoc.getObject("assets.pagemaker.classes.pagemakerClass", true)) ## Get or create the needed object.
252 + #set($order_error = ($spaceXObj.getProperty('pmSpaceOrder').value != $foreach.count))
253 + #set($title_error = ($spaceDoc.getTitle() != $spaceDocTitle))
254 + #if($spaceDoc.isNew()) ## Doc did not exist so spaceDoc needs a title and a default locale.
255 + #set($discard = $spaceDoc.setTitle($spaceDocTitle)) ## Title.
256 + #set($discard = $spaceDoc.setDefaultLocale("en")) ## Locale.
257 + #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value.
258 + #set($discard = $spaceDoc.save())
259 + #else
260 + #if($title_error) ## Doc did exist but the title did not match with the JSON value.
261 + #set($discard = $spaceDoc.setTitle($spaceDocTitle))
262 + #end
263 + #if($order_error) ## Either the property does not exist or the value is incorrect.
264 + #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value.
265 + #end
266 + #if($title_error || $order_error) ## Save only if changed
267 + #set($discard = $spaceDoc.save())
268 + #end
269 + #end
270 + #end
271 + <option value="$key"#if($O_elementData.value=="$key") selected="selected"#end>$json[$key]</option>
272 + #end
204 204   #end
205 205   </select>
275 + #if($removedNr > 0)
276 + $removedNr pages had the XObject <span class="terminal">${removeXObj}</span> removed.
277 + #end
206 206  #end
207 207  #macro(createTextElement $O_elementData $O_tagName)
208 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>
... ... @@ -213,7 +213,6 @@
213 213  #macro(createAddressElement $O_elementData $O_tagName)
214 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 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 - <input type="hidden" id="city" name="city" value="" data-create-xobj="${O_elementData.data-create-xobj}" data-xobj-classname="${O_elementData.data-xobj-classname}" data-xobj-fieldname="city">
217 217  #end
218 218  #macro(createNumberElement $O_elementData $O_tagName)
219 219   <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>
... ... @@ -240,7 +240,8 @@
240 240   <input type="url" class="form-control full" name="${O_elementData.id}" id="${O_elementData.id}"#if($O_elementData.value) value="$O_elementData.value"#end 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>
241 241  #end
242 242  #macro(createCheckboxElement $O_elementData)
243 - <input type="checkbox" name="${O_elementData.id}"#if($O_elementData.value=="1") checked="checked"#end value="1" id="${O_elementData.id}"#if($O_elementData.data-opener) data-opener="${O_elementData.data-opener}"#end#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-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.aria-label) aria-label="${O_elementData.aria-label}"#end>$O_elementData.label
314 + <input type="checkbox" name="${O_elementData.id}"#if($O_elementData.value=="1") checked="checked"#end value="1" id="${O_elementData.id}"#if($O_elementData.data-opener) data-opener="${O_elementData.data-opener}"#end#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
315 + <input name="${O_elementData.id}" type="hidden"#if($O_elementData.value=="1") value="0"#else value="1"#end>
244 244  #end
245 245  #macro(createTextareaElement $O_elementData $O_tagName)
246 246  
... ... @@ -269,24 +269,14 @@
269 269   </div>
270 270  #end
271 271  #macro(createSubmit $O_submit)
272 - <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
273 -
274 - #if(${O_submit.clean} == "true")
275 - #if ($xcontext.user != 'XWiki.XWikiGuest')
276 - <input type="submit" class="btn btn-primary" id="${O_submit.id}" name="${O_submit.id}" value="${O_submit.button-text}" />
277 - #else
278 - <a data-toggle="modal" data-target="#displayLogin" href="#" class="btn btn-primary">$services.localization.render('login')</a>
279 - #end
280 -
281 - #else
282 282   <div class="clearfix">
283 283   <p class="alert alert-warning alert-button-float-right">
284 284   <span class="alert-button pull-right">
285 - #if ($xcontext.user != 'XWiki.XWikiGuest')
347 + #if ($xcontext.user != 'XWiki.XWikiGuest')
286 286   <input type="submit" class="btn btn-primary" id="${O_submit.id}" name="${O_submit.id}" value="${O_submit.button-text}" />
287 - #else
349 + #else
288 288   <a data-toggle="modal" data-target="#displayLogin" href="#" class="btn btn-primary">$services.localization.render('login')</a>
289 - #end
351 + #end
290 290   </span>
291 291   <span class="alert-text">
292 292   ${O_submit.help-block}
... ... @@ -293,7 +293,6 @@
293 293   </span>
294 294   </p>
295 295   </div>
296 - #end
297 297  #end
298 298  #macro(getUser)
299 299   #set($user = '')