Código fuente wiki de Macros

Versión 2.107 por Jip-jan Alunkel el junio 28, 23:45

Mostrar los últimos autores
1 {{velocity}}
2 #macro(createFormStart $id $product)
3 <form action="" id="${id}" method="post" class="pagemaker" data-form-product="${product}" novalidate="novalidate">
4 #end
5 #macro(createFormEnd)
6 <div role="alert" class="form-response-output form-validation-errors" style="display: none">
7 <p>
8 $services.localization.render('pagemaker.line.global_error_msg')
9 </p>
10 </div>
11 <div role="alert" class="form-response-output form-validation-ok" style="display: none">
12 <p>
13 $services.localization.render('pagemaker.line.global_ok_msg')
14 </p>
15 </div>
16 </form>
17 #end
18 #macro(createFormElement $elementDataObj)
19 #set($elementType = $elementDataObj.type)
20 #set($elementTagName = '')
21 #set($requiredCSSClass = '')
22 #set($makeFocusable = '')
23 #set($addedCSSClass = '')
24 #set($hint = '')
25 #set($placeholder = '')
26 #if($elementDataObj.required == 'true')
27 #set($requiredCSSClass = ' class="required"')
28 #end
29 #if($elementDataObj.data-query-type)
30 #set($makeFocusable = ' tabindex="-1"')
31 #end
32 #if($elementType == "select")
33 #set($addedCSSClass = " select-wrap")
34 #set($elementTagName = "select")
35 #elseif($elementType == "text" || $elementType == "number" || $elementType == "range" || $elementType == "email" || $elementType == "password" || $elementType == "date" || $elementType == "tel" || $elementType == "url" || $elementType == "color")
36 #set($elementTagName = "input")
37 #elseif($elementType == "checkbox" || $elementType == "radio")
38 #set($addedCSSClass = " checkradio")
39 #set($elementTagName = "checkradio")
40 #elseif($elementType == "textarea")
41 #set($elementTagName = "textarea")
42 #else
43 #set($hint = "This type of element does not exist, read the manual for more information about element types.")
44 #end
45 #if($elementTagName == "select" || $elementTagName == "input" || $elementTagName == "textarea")
46 <p${requiredCSSClass}${makeFocusable}>
47 <label for="${elementDataObj.id}_${elementTagName}">
48 $elementDataObj.label
49 <span class="input-wrap${addedCSSClass}">
50 #if($elementTagName == "select")
51 #createSelectElement($elementDataObj $elementTagName)
52 #elseif($elementTagName == "textarea")
53 #createTextareaElement($elementDataObj $elementTagName)
54 #else
55 #if($elementType == "text")
56 #createTextElement($elementDataObj $elementType)
57 #elseif($elementType == "number")
58 #if(!$elementDataObj.data-decimals)#set($elementDataObj.data-decimals = 0)#end
59 #if(!$elementDataObj.decimals-step)#set($elementDataObj.decimals-step = 1)#end
60 #createNumberElement($elementDataObj $elementType)
61 #elseif($elementType == "email")
62 #createEmailElement($elementDataObj $elementType)
63 #elseif($elementType == "password")
64 #createPasswordElement($elementDataObj $elementType)
65 #elseif($elementType == "range")
66 #if($elementDataObj.range-minmax)
67 #set($minmax = $elementDataObj.range-minmax.split('-'))
68 #if($minmax.size() == 2)
69 #set($elementDataObj.range-min = $minmax[0])
70 #set($elementDataObj.range-max = $minmax[1])
71 #end
72 #else
73 #set($elementDataObj.range-min = 0)
74 #set($elementDataObj.range-max = 100)
75 #end
76 #createRangeElement($elementDataObj $elementType)
77 #elseif($elementType == "date")
78 #createDateElement($elementDataObj $elementType)
79 #elseif($elementType == "color")
80 #createColorElement($elementDataObj $elementType)
81 #elseif($elementType == "tel")
82 #createTelElement($elementDataObj $elementType)
83 #elseif($elementType == "url")
84 #createUrlElement($elementDataObj $elementType)
85 #end
86 #end
87 #if($elementDataObj.help-block && $elementDataObj.help-block != "")
88 <span id="${elementDataObj.id}_helpBlock" class="help-block">${elementDataObj.help-block}</span>
89 #end
90 #if($elementDataObj.required == "true")
91 <span class="required-input-field" title="Required input"></span>
92 #end
93 <span role="alert" class="form-not-valid-tip"></span>
94 </span>
95 </label>
96 </p>
97 #end
98 #if($elementTagName == "checkradio")
99 <p${requiredCSSClass}>
100 <span class="input-wrap${addedCSSClass}">
101 <span class="fieldset no-fieldset-border">
102 <label for="${elementDataObj.id}" class="strong">
103 #if($elementType == "checkbox")
104 #createCheckboxElement($elementDataObj)
105 #elseif($elementType == "radio")
106 #end
107 </label>
108 </span>
109 </span>
110 </p>
111 #end
112 #if($hint != "")
113 <p class="box errormessage">${hint}</p>
114 #end
115 #end
116
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}">
119 #if($O_elementData.placeholder)
120 <option value="" disabled="" selected="" hidden="hidden">${O_elementData.placeholder}</option>
121 #end
122 #set ($mydoc = $xwiki.getDocument('assets.pagemaker.pagemakerClass'))
123 #if($mydoc.isNew() && $hasProgramming)
124 #set ($myinternaldoc = $mydoc.getDocument())
125 #set ($myclass = $myinternaldoc.getXClass())
126 #set ($discard = $myclass.addTextField("pmSpaceOrder", "pageMaker space order", 10))
127 #set ($discard = $mydoc.save())
128 #end
129 #set($removedNr = 0)
130
131 #if($O_elementData.select-space-reference)
132 #set($space = $O_elementData.select-space-reference)
133 #set($codespace = "")
134 #if($xwiki.getSpaces().contains("${space}.${space}Code"))
135 #set($codespace = "${space}Code")
136 #elseif($xwiki.getSpaces().contains("${space}.Code"))
137 #set($codespace = "Code")
138 #elseif($xwiki.getSpaces().contains("${space}.code"))
139 #set($codespace = "code")
140 #end
141
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
155
156 #set($spaceExcludeRef = $space.replaceAll('([%_!])', '!$1').concat(".${codespace}"))
157 #set($spaceLikeRef = $space.replaceAll('([%_!])', '!$1').concat('.%'))
158 #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())
160
161 ## Generate the select options from all child spaces that have the 'assets.pagemaker.pagemakerClass' XClass.
162 ## The order is still random but the JSON can be extracted from the console with the 'select-spaces-json' attribute.
163 #foreach($item in $result)
164 #set($doc = $xwiki.getDocument($item))
165 <option value="$doc.space">$doc.getTitle()</option>
166 #end
167 #elseif($O_elementData.select-json)
168 #set($json = $O_elementData.select-json)
169 #foreach($key in $json.keySet())
170 #set($spaceDocTitle = $json.get($key))
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.
179 #set($discard = $spaceXObj.set("pmSpaceOrder", $foreach.count)) ## Set the property with the (correct) value.
180 #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
191 #end
192 #end
193 <option value="$key">$spaceDocTitle</option>
194 #end
195 #end
196 </select>
197 #if($removedNr > 0)
198 $removedNr pages had the XObject ##${removeXObj}## removed.
199 #end
200 #end
201 #macro(createTextElement $O_elementData $O_tagName)
202 <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>
203 #end
204 #macro(createNumberElement $O_elementData $O_tagName)
205 <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>
206 #end
207 #macro(createEmailElement $O_elementData $O_tagName)
208 <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>
209 #end
210 #macro(createPasswordElement $O_elementData $O_tagName)
211 <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>
212 #end
213 #macro(createDateElement $O_elementData $O_tagName)
214 <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>
215 #end
216 #macro(createColorElement $O_elementData $O_tagName)
217 <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>
218 #end
219 #macro(createRangeElement $O_elementData $O_tagName)
220 <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>
221 #end
222 #macro(createTelElement $O_elementData $O_tagName)
223 <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>
224 #end
225 #macro(createUrlElement $O_elementData $O_tagName)
226 <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>
227 #end
228 #macro(createCheckboxElement $O_elementData)
229 <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
230 #end
231 #macro(createTextareaElement $O_elementData $O_tagName)
232 <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>
233 #end
234 #macro(createExpandStart $opener $value)
235 <div id="${opener.id}_section_#if($value)${value}#else${opener.value}#end" class="togglee">
236 #end
237 #macro(createExpandEnd)
238 </div>
239 #end
240 #macro(createSubmit $O_submit)
241 <div class="clearfix">
242 <p class="alert alert-warning alert-button-float-right">
243 <span class="alert-button pull-right">
244 #if ($xcontext.user != 'XWiki.XWikiGuest')
245 <input type="submit" class="btn btn-primary" id="${O_submit.id}" name="${O_submit.id}" value="${O_submit.button-text}" />
246 #else
247 <a data-toggle="modal" data-target="#displayLogin" href="#" class="btn btn-primary">$services.localization.render('login')</a>
248 #end
249 </span>
250 <span class="alert-text">
251 ${O_submit.help-block}
252 </span>
253 </p>
254 </div>
255 #end
256 {{/velocity}}