Wiki源代码Create a new wiki
在2022-05-25 17:59上被ybq sz修改
Show last authors
1 | {{velocity}} |
2 | ####################################################### |
3 | ## Create a new (sub)wiki - WIZARD |
4 | ## |
5 | ## This wizard let user create a new wiki. |
6 | ## The 'controller' macro call the good submacro |
7 | ## depending on the step |
8 | ## |
9 | ####################################################### |
10 | ######################### |
11 | ## STYLE |
12 | ######################### |
13 | #set($docextras = {}) |
14 | ######################### |
15 | ## PLUGINS DEPENDENCIES |
16 | ######################### |
17 | |
18 | ## If all dependencies are OK, we call the controller |
19 | #if ($services.wiki && $services.wiki.creationjob) |
20 | #controller() |
21 | #else |
22 | {{error}}{{translation key="platform.wiki.dependencies.wiki.missing"/}}{{/error}} |
23 | #end |
24 | |
25 | ################################## |
26 | ## CONTROLLER |
27 | ################################## |
28 | #macro(controller) |
29 | #if($request.step == 'members') |
30 | #stepMembers() |
31 | #elseif($request.step == 'create') |
32 | #create() |
33 | #elseif($request.step == 'cleanUp') |
34 | #cleanUp() |
35 | #elseif($request.step == 'finalize') |
36 | #finalize() |
37 | #else |
38 | ## Default step |
39 | #stepType() |
40 | #end |
41 | #end |
42 | ################################## |
43 | ## HEADER |
44 | ## |
45 | ## Display the wizard header |
46 | ################################## |
47 | #macro(wizardHeader $title $currentStepNumber) |
48 | ## Display a step name in the header |
49 | #macro(wizardHeaderStep $name $number $currentStepNumber) |
50 | <li><span class="number #if($currentStepNumber==$number)active#end">$number</span> <span class="name #if($currentStepNumber==$number)active#end">$name</span></li> |
51 | #end |
52 | |
53 | <div class="wizard-header"> |
54 | <h1><span>$title</span></h1> |
55 | #if($currentStepNumber) |
56 | <ul class="steps"> |
57 | #wizardHeaderStep($services.localization.render('platform.wiki.create.wizard.step.nameAndType.shortname'), 1, $currentStepNumber) |
58 | #wizardHeaderStep($services.localization.render('platform.wiki.create.wizard.step.users.shortname'), 2, $currentStepNumber) |
59 | </ul> |
60 | #end |
61 | <div class="clearfloats"></div> |
62 | </div> |
63 | |
64 | #end |
65 | ################################## |
66 | ## FOOTER |
67 | ## |
68 | ## Display the wizard footer |
69 | ################################## |
70 | #macro(wizardFooter $prev $next $create $finalize $finalizeHidden $cleanUp $cleanupHidden) |
71 | <div class="wizard-footer buttons"> |
72 | #if("$!prev" !='') |
73 | <span class="buttonwrapper left"> |
74 | <button value="$prev" title="$services.localization.render('platform.wiki.create.wizard.step.previous')" name="step" id="wizard-previous" class="button secondary">$services.localization.render('platform.wiki.create.wizard.step.previous')</button> |
75 | </span> |
76 | #end |
77 | #if("$!next" !='') |
78 | <span class="buttonwrapper"> |
79 | <button value="$next" title="$services.localization.render('platform.wiki.create.wizard.step.next')" name="step" id="wizard-next" class="button">$services.localization.render('platform.wiki.create.wizard.step.next')</button> |
80 | </span> |
81 | #end |
82 | #if("$!create" !='') |
83 | <span class="buttonwrapper"> |
84 | <button value="$create" title="$services.localization.render('platform.wiki.create.wizard.step.create')" name="step" id="wizard-create" class="button">$services.localization.render('platform.wiki.create.wizard.step.create')</button> |
85 | </span> |
86 | #end |
87 | #if("$!finalize" != '') |
88 | <span class="buttonwrapper"> |
89 | <button value="finalize" title="$services.localization.render('platform.wiki.create.wizard.step.creation.go')" name="step" id="finalize" class="button #if($finalizeHidden)hidden#end">$services.localization.render('platform.wiki.create.wizard.step.creation.go')</button> |
90 | </span> |
91 | #end |
92 | #if("$!cleanUp" != '') |
93 | <span class="buttonwrapper"> |
94 | <button value="cleanUp" title="$services.localization.render('platform.wiki.create.wizard.step.provisioning.cleanUp')" name="step" id="cleanUp" class="button #if($cleanupHidden)hidden#end">$services.localization.render('platform.wiki.create.wizard.step.provisioning.cleanUp')</button> |
95 | </span> |
96 | #end |
97 | </div> |
98 | #end |
99 | ################################## |
100 | ## REQUIRED |
101 | ## |
102 | ## Add a required message |
103 | ################################## |
104 | #macro(required)<span class='xRequired'>($services.localization.render('platform.wiki.form.requiredField'))</span>#end |
105 | ################################## |
106 | ## TEMPLATE FIELDS |
107 | ## |
108 | ## Display the 'template' fields |
109 | ################################## |
110 | #macro(displayTemplateFields $templates) |
111 | #if ($templates.size() > 0) |
112 | <select name="template" id="template"> |
113 | <option value="xwikinotemplate">$services.localization.render('platform.wiki.create.wizard.template.noTemplate')</option> |
114 | #foreach ($template in $templates) |
115 | #set ($name = $template.id) |
116 | #if ($stringtool.isNotBlank("$!template.prettyName")) |
117 | #set($name = "${template.prettyName} (${name})") |
118 | #end |
119 | #set($selected = '') |
120 | #if($request.template == $template.id) |
121 | #set($selected = 'selected="selected"') |
122 | #end |
123 | <option value="${template.id}" $selected>$name</option> |
124 | #end |
125 | </select> |
126 | #end |
127 | <div class="xformInline"> |
128 | #set ($isTemplate = '') |
129 | #if ("$!request.set_as_template" != '') |
130 | #set ($isTemplate = 'checked="checked"') |
131 | #end |
132 | <input type="checkbox" name="set_as_template" id="set_as_template" $isTemplate/> |
133 | <label for="set_as_template" id="label_set_as_template">$services.localization.render('platform.wiki.create.wizard.setAsTemplate.label')</label> |
134 | </div> |
135 | #end |
136 | ################################## |
137 | ## STEP TYPE |
138 | ## |
139 | ## The type is the first step on the creation |
140 | ################################## |
141 | #macro(stepType) |
142 | #set($discard = $xwiki.ssfx.use('uicomponents/wizard/wizard.css', true)) |
143 | {{html}} |
144 | <form class="xform" method="post" action="$doc.getURL()"> |
145 | #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.nameAndType'), 1) |
146 | ### WIZARD BODY ### |
147 | <div class="wizard-body"> |
148 | ### SECOND STEP VALUES |
149 | <input type="hidden" name="ownerId" value="$!escapetool.xml($request.getParameter('ownerId'))" /> |
150 | <input type="hidden" name="membershipType" value="$!escapetool.xml($request.getParameter('membershipType'))" /> |
151 | <input type="hidden" name="userScope" value="$!escapetool.xml($request.userScope)" /> |
152 | #addMembersAsHiddenInput() |
153 | ### WIZARD FIRST HALF ### |
154 | <div class="half"> |
155 | ### PRETTY NAME ### |
156 | <dl> |
157 | <dt> |
158 | <label for="prettyname">$services.localization.render('platform.wiki.prop.wikiprettyname')#required()</label> |
159 | <span class="xHint">$services.localization.render('platform.wiki.create.wizard.desc.wikiprettyname')</span> |
160 | <span id="wikiprettynamevalidation" class="xErrorMsg"></span> |
161 | </dt> |
162 | <dd> |
163 | <input size="60" id="prettyname" name="wikiprettyname" type="text" value="$!escapetool.xml($request.getParameter('wikiprettyname'))"/> |
164 | </dd> |
165 | </dl> |
166 | ### WIKI NAME ### |
167 | <dl> |
168 | <dt> |
169 | <label for="wikiname">$services.localization.render('platform.wiki.prop.wikiname')#required()</label> |
170 | <span class='xHint'>$services.localization.render('platform.wiki.create.wizard.desc.wikiname')</span> |
171 | </dt> |
172 | <dd> |
173 | <input size="60" id="wikiname" name="wikiname" type="text" value="$!escapetool.xml($request.wikiname)"/> |
174 | <span id="wikinamevalidation" class="xErrorMsg"></span> |
175 | </dd> |
176 | </dl> |
177 | ### WIKI ALIAS ### |
178 | #if(!$services.wiki.isPathMode()) |
179 | <dl> |
180 | <dt> |
181 | <label for="wikialias">$services.localization.render('platform.wiki.prop.wikialias')#required()</label> |
182 | <span class='xHint'>$services.localization.render('platform.wiki.create.wizard.desc.wikialias')</span> |
183 | </dt> |
184 | <dd> |
185 | <input size="60" id="wikialias" name="wikialias" type="text" value="$!escapetool.xml($request.wikialias)"/> |
186 | </dd> |
187 | </dl> |
188 | #end |
189 | ### DESCRIPTION ### |
190 | <dl> |
191 | <dt> |
192 | <label for="description">$services.localization.render('platform.wiki.prop.description')</label> |
193 | <span class="xHint">$services.localization.render('platform.wiki.create.wizard.desc.description')</span> |
194 | </dt> |
195 | <dd> |
196 | <textarea id="description" name="description" rows="7" cols="45">$!escapetool.xml($request.getParameter('description'))</textarea> |
197 | </dd> |
198 | </dl> |
199 | ### END OF WIZARD FIRST HALF |
200 | </div> |
201 | ### WIZARD SECOND HALF |
202 | <div class="half"> |
203 | ### TEMPLATE / FLAVOR ### |
204 | #set ($templates = $services.wiki.template.getTemplates()) |
205 | #if (!$services.distribution.hasWikiDefaultUIExtension()) |
206 | #template('flavor/macros.vm') |
207 | <dl> |
208 | <dt> |
209 | <label>$services.localization.render('platform.wiki.create.wizard.flavortemplate.label')</label> |
210 | <span class="xHint">$services.localization.render('platform.wiki.create.wizard.flavortemplate.hint')</span> |
211 | </dt> |
212 | #set ($currentTab = 'flavors') |
213 | #if ("$!request.template" != '' && $request.template != 'xwikinotemplate') |
214 | #set ($currentTab = 'templates') |
215 | #end |
216 | <dd class="flavor_template"> |
217 | <ul class="xwikitabbar"> |
218 | <li #if($currentTab=='flavors')class="active"#end><a href="#flavors">$services.localization.render('platform.wiki.create.wizard.flavortemplate.flavorTab')</a></li> |
219 | <li #if($currentTab=='templates')class="active"#end><a href="#templates">$services.localization.render('platform.wiki.create.wizard.flavortemplate.templateTab')</a></li> |
220 | </ul> |
221 | <div class="xwiki-createwiki-tabs-content"> |
222 | #set ($defaultFlavor = "$!request.flavor") |
223 | #if ($defaultFlavor == '') |
224 | #set ($defaultFlavor = 'noFlavor') |
225 | #end |
226 | <div class="xwiki-createwiki-tab #if($currentTab=='flavors')active#{else}hidden#end" id="flavors-tab"> |
227 | ## TODO: reload when the target subwiki id changes |
228 | #displayFlavorPicker('flavor', $defaultFlavor, true, 'xwiki-createwiki-flavor-picker', true, 'wiki:subwiki') |
229 | </div> |
230 | <div class="xwiki-createwiki-tab #if($currentTab=='templates')active#{else}hidden#end" id="templates-tab"> |
231 | #displayTemplateFields($templates) |
232 | </div> |
233 | </div> |
234 | </dd> |
235 | </dl> |
236 | #else |
237 | ## There is a default UI configured, so we do not display the flavor picker |
238 | <dl> |
239 | <dt> |
240 | #if ($templates.size() > 0) |
241 | <label for="template">$services.localization.render('platform.wiki.create.wizard.template.label')</label> |
242 | <span class="xHint">$services.localization.render('platform.wiki.create.wizard.desc.newTemplateHint')</span> |
243 | #else |
244 | <label>$services.localization.render('platform.wiki.create.wizard.template.label')</label> |
245 | #end |
246 | </dt> |
247 | <dd> |
248 | #displayTemplateFields($templates) |
249 | </dd> |
250 | </dl> |
251 | #end |
252 | ### END OF WIZARD SECOND HALF |
253 | </div> |
254 | ### END OF WIZARD BODY |
255 | </div> |
256 | <div class="clearfloats"></div> |
257 | #wizardFooter('', 'members', '') |
258 | </form> |
259 | {{/html}} |
260 | #end |
261 | ################################## |
262 | ## STEP MEMBERS |
263 | ## |
264 | ## The members step is the lasy |
265 | ################################## |
266 | #macro(stepMembers) |
267 | #set($discard = $xwiki.ssfx.use('uicomponents/wizard/wizard.css', true)) |
268 | {{html}} |
269 | <form class="xform" method="post" action="$doc.getURL()"> |
270 | #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.users'), 2) |
271 | ### WIZARD BODY ### |
272 | <div class="wizard-body"> |
273 | ### FIRST STEP VALUES |
274 | <input type="hidden" name="wikiprettyname" value="$!escapetool.xml($request.getParameter('wikiprettyname'))" /> |
275 | <input type="hidden" name="wikiname" value="$!escapetool.xml($request.wikiname)" /> |
276 | <input type="hidden" name="wikialias" value="$!escapetool.xml($request.wikialias)" /> |
277 | <input type="hidden" name="description" value="$!escapetool.xml($request.getParameter('description'))" /> |
278 | <input type="hidden" name="template" value="$!escapetool.xml($request.template)" /> |
279 | <input type="hidden" name="flavor" value="$!escapetool.xml($request.flavor)" /> |
280 | <input type="hidden" name="set_as_template" value="$!escapetool.xml($request.set_as_template)" /> |
281 | <input type="hidden" name="form_token" value="$!escapetool.xml($services.csrf.getToken())" /> |
282 | ### WIZARD FIRST HALF ### |
283 | <div class="half"> |
284 | ### OWNER ### |
285 | ## Make this section available only to admins, so that only admins can create wikis in the name of other users. |
286 | #if ($hasAdmin) |
287 | <dl> |
288 | <dt> |
289 | <label for="owner">$services.localization.render('platform.wiki.prop.owner') <span class="xRequired">($services.localization.render('platform.wiki.form.requiredField'))</span></label> |
290 | <span class="xHint">$services.localization.render('platform.wiki.create.wizard.desc.owner')</span> |
291 | </dt> |
292 | <dd> |
293 | #set($value = $escapetool.xml($request.getParameter('ownerId'))) |
294 | #if("$!value" == "") |
295 | #set($value = $escapetool.xml($xcontext.user)) |
296 | #end |
297 | #set ($userPickerParams = { |
298 | 'id': 'owner', |
299 | 'name': 'ownerId', |
300 | 'value': $value |
301 | }) |
302 | #userPicker(false $userPickerParams) |
303 | </dd> |
304 | </dl> |
305 | #else |
306 | <input id="owner" name="ownerId" type="hidden" value="${xcontext.mainWikiName}:${xcontext.user}"/> |
307 | #end |
308 | ### USERS SCOPE ### |
309 | <dl> |
310 | <dt> |
311 | <label for="userScope">$services.localization.render('platform.wiki.create.wizard.userScope.label')</label> |
312 | <span class="xHint">$services.localization.render('platform.wiki.create.wizard.userScope.hint')</span> |
313 | </dt> |
314 | <dd> |
315 | #set($value = $escapetool.xml($request.getParameter('userScope'))) |
316 | #set ($wikiUserClassDocument = $xwiki.getDocument('WikiManager.WikiUserClass')) |
317 | #set ($wikiUserClass = $wikiUserClassDocument.getxWikiClass()) |
318 | #set ($userScopeProperty = $wikiUserClass.get('userScope')) |
319 | #set ($userScopePropertyValues = '') |
320 | #set ($userScopePropertyValues = $userScopeProperty.getListValues()) |
321 | #set ($userScopeDetailsMap = $userScopeProperty.getMapValues()) |
322 | #foreach ($userScopeValue in $userScopePropertyValues) |
323 | #set ($userScopeValueId = "userScope_${foreach.index}") |
324 | <div> |
325 | <label for="$userScopeValueId"> |
326 | #set($checked = '') |
327 | #if($request.getParameter('userScope') == $userScopeValue || ("$!request.getParameter('userScope')"=='' && $foreach.index==0)) |
328 | #set($checked = 'checked="checked"') |
329 | #end |
330 | <input type="radio" id="$userScopeValueId" name="userScope" value="$userScopeValue" $checked/> |
331 | $services.localization.render("${wikiUserClassDocument.fullName}_${userScopeProperty.name}_${userScopeDetailsMap.get($userScopeValue).getValue()}") |
332 | </label> |
333 | </div> |
334 | #end |
335 | </dd> |
336 | </dl> |
337 | ### END OF WIZARD FIRST HALF |
338 | </div> |
339 | ### WIZARD SECOND HALF |
340 | <div class="half"> |
341 | ### MEMBERSHIP TYPE |
342 | #set ($membershipTypeProperty = $wikiUserClass.get('membershipType')) |
343 | #set ($membershipTypeValues = '') |
344 | #set ($membershipTypeValues = $membershipTypeProperty.getListValues()) |
345 | #set ($membershipTypeDetailsMap = $membershipTypeProperty.getMapValues()) |
346 | <dl> |
347 | <dt> |
348 | <label>$services.localization.render('platform.wiki.prop.membershipType.label')</label> |
349 | <span class='xHint'>$services.localization.render('platform.wiki.prop.membershipType.hint')</span> |
350 | </dt> |
351 | <dd> |
352 | #foreach ($membershipTypeValue in $membershipTypeValues) |
353 | #set ($membershipTypeValueId = "membershipType_${foreach.index}") |
354 | <div> |
355 | <label for="$membershipTypeValueId"> |
356 | #set($checked = '') |
357 | #if($request.getParameter('membershipType') == $membershipTypeValue || ("$!request.getParameter('membershipType')"=='' && $foreach.index==0)) |
358 | #set($checked = 'checked="checked"') |
359 | #end |
360 | <input type="radio" id="$membershipTypeValueId" name="membershipType" value="$membershipTypeValue" $checked/> |
361 | $services.localization.render("${wikiUserClassDocument.fullName}_${membershipTypeProperty.name}_${membershipTypeDetailsMap.get($membershipTypeValue).getValue()}") |
362 | </label> |
363 | </div> |
364 | #end |
365 | </dd> |
366 | </dl> |
367 | ### MEMBERS |
368 | <dl> |
369 | <dt> |
370 | <label for="members">$services.localization.render('platform.wiki.create.members')</label> |
371 | <span class="xHint">$services.localization.render('platform.wiki.create.wizard.desc.members')</span> |
372 | </dt> |
373 | <dd> |
374 | #set ($userPickerParams = { |
375 | 'id': 'members', |
376 | 'name': 'members', |
377 | 'value': $request.getParameterValues('members') |
378 | }) |
379 | #userPicker(true $userPickerParams) |
380 | </dd> |
381 | </dl> |
382 | ### END OF WIZARD SECOND HALF |
383 | </div> |
384 | ### END OF WIZARD BODY |
385 | </div> |
386 | <div class="clearfloats"></div> |
387 | #wizardFooter('type', '', 'create') |
388 | </form> |
389 | {{/html}} |
390 | #end |
391 | ################################## |
392 | ## GET REQUEST LIST |
393 | ## |
394 | ## Get the values for user pickers with multiple selection |
395 | ################################## |
396 | #macro(getRequestList $paramlist $paramname) |
397 | #set ($paramtable = []) |
398 | #set ($paramtable = $request.getParameterValues($paramname)) |
399 | #if ($paramtable && $paramlist) |
400 | #set ($ok = $paramlist.clear()) |
401 | #foreach($paramvalue in $paramtable) |
402 | #set ($ok = $paramlist.add($paramvalue)) |
403 | #end |
404 | #end |
405 | #end |
406 | ################################## |
407 | ## CREATE |
408 | ## |
409 | ## The final step that eventually create the wiki |
410 | ################################## |
411 | #macro(create) |
412 | ## Job Status |
413 | #set ($state = $services.wiki.creationjob.getJobStatus($request.wikiname).state) |
414 | ## If a deleted wiki had the same name, the job status may still be there (with a 'FINISHED' status) |
415 | ## So we have to check if the wiki really exists |
416 | #if ($state == 'FINISHED' && !$services.wiki.exists($request.wikiname)) |
417 | ## If not, consider that the new job has not been launched yet |
418 | #set($state = 'NONE') |
419 | #end |
420 | ## CSRF checkFailed to execute the [velocity] macro. Click on this m |
421 | #if (!$services.csrf.isTokenValid($request.form_token)) |
422 | {{warning}} |
423 | {{translation key="platform.wiki.csrf.error" /}} |
424 | {{/warning}} |
425 | |
426 | #stepMembers() |
427 | #elseif("$!state" != '' && $state != 'NONE') |
428 | #creation() |
429 | #else |
430 | #createWiki() |
431 | #end |
432 | #end |
433 | ################################## |
434 | ## CREATE WIKI |
435 | ## |
436 | ## The macro that finaly starts the wiki creation job |
437 | ################################## |
438 | #macro(createWiki) |
439 | #set($wikialias = $request.wikialias) |
440 | #if("$!wikialias" == '') |
441 | #set($wikialias = $request.wikiname) |
442 | #end |
443 | #set($wikiCreationRequest = $services.wiki.creationjob.newWikiCreationRequest()) |
444 | #set($discard = $wikiCreationRequest.setWikiId($request.wikiname)) |
445 | #set($discard = $wikiCreationRequest.setAlias($wikialias)) |
446 | #set($discard = $wikiCreationRequest.setPrettyName($request.wikiprettyname)) |
447 | #set($discard = $wikiCreationRequest.setDescription($request.description)) |
448 | #if("$!request.set_as_template" != '') |
449 | #set($discard = $wikiCreationRequest.setTemplate(true)) |
450 | #else |
451 | #set($discard = $wikiCreationRequest.setTemplate(false)) |
452 | #end |
453 | #set($ownerId = $request.ownerId) |
454 | #if("$!ownerId" == '') |
455 | ## If the ownerId is null, then set the current user |
456 | #set($ownerId = $services.model.serialize($xcontext.userReference, 'default')) |
457 | #else |
458 | #set($ownerId = $services.model.serialize($services.model.resolveDocument($ownerId), 'default')) |
459 | #end |
460 | #set($discard = $wikiCreationRequest.setOwnerId($ownerId)) |
461 | #set($discard = $wikiCreationRequest.setUserScope($request.userScope)) |
462 | #set($discard = $wikiCreationRequest.setMembershipType($request.membershipType)) |
463 | #set($discard = $wikiCreationRequest.setFailOnExist(true)) |
464 | #if("$!request.template" != '' && $request.template != 'xwikinotemplate') |
465 | ## Create a wiki from a template |
466 | #set($discard = $wikiCreationRequest.setWikiSource('template')) |
467 | #set($discard = $wikiCreationRequest.setTemplateId($request.template)) |
468 | #elseif("$!request.flavor" != '' && $request.flavor != 'noFlavor') |
469 | ## Create a wiki from an extension |
470 | #set($discard = $wikiCreationRequest.setWikiSource('extension')) |
471 | #set($flavorExtension = $request.flavor.split(':::')) |
472 | #set($discard = $wikiCreationRequest.setExtensionId($flavorExtension[0], $flavorExtension[1])) |
473 | #elseif($services.distribution.hasWikiDefaultUIExtension()) |
474 | ## Default action when a default UI is configured for subwikis |
475 | #set($discard = $wikiCreationRequest.setWikiSource('extension')) |
476 | #set($discard = $wikiCreationRequest.setExtensionId($services.wiki.creationjob.defaultWikiExtensionId)) |
477 | #end |
478 | ## Members |
479 | #if ($request.userScope != 'local_only') |
480 | #set ($members = []) |
481 | #getRequestList($members 'members') |
482 | ## Remove empty strings from the list of members (the user picker submits by default an empty string). |
483 | #set ($discard = $members.removeAll([''])) |
484 | #if ("$!members" != '' && $members.size() > 0) |
485 | #set ($globalMembers = []) |
486 | ## Enforce global users |
487 | #foreach ($member in $members) |
488 | #set($discard = $globalMembers.add($services.model.serialize($services.model.resolveDocument($member), 'default'))) |
489 | #end |
490 | ## Add the members |
491 | #set ($discard = $wikiCreationRequest.setMembers($globalMembers)) |
492 | #end |
493 | #end |
494 | ## Start the creation job |
495 | #set($job = $services.wiki.creationjob.createWiki($wikiCreationRequest)) |
496 | #if (!$job) |
497 | {{error}}$services.localization.render('platform.wiki.create.error', [$request.wikiname, $services.wiki.creationjob.lastError]){{/error}} |
498 | #else |
499 | #creation() |
500 | #end |
501 | #end |
502 | ################################## |
503 | ## ADD MEMBERS AS HIDDEN INPUT |
504 | ################################## |
505 | #macro(addMembersAsHiddenInput) |
506 | ### MEMBERS VALUES |
507 | #set ($members = []) |
508 | #getRequestList($members 'members') |
509 | #set($membersValue = '') |
510 | #foreach($m in $members) |
511 | #if($m != '') |
512 | <input type="hidden" name="members" value="$!escapetool.xml($m)" /> |
513 | #end |
514 | #end |
515 | #end |
516 | ################################## |
517 | ## CREATION |
518 | ## |
519 | ## This step display a progess bar during |
520 | ## the wiki creation |
521 | ################################## |
522 | #macro(creation) |
523 | #set ($discard = $xwiki.ssfx.use('uicomponents/wizard/wizard.css', true)) |
524 | #set ($discard = $xwiki.ssfx.use('uicomponents/logging/logging.css', true)) |
525 | #set ($discard = $xwiki.jsfx.use('uicomponents/logging/logging.js', true)) |
526 | #set ($status = $services.wiki.creationjob.getJobStatus($request.wikiname)) |
527 | {{html}} |
528 | <form class="xform" method="post" action="$doc.getURL()"> |
529 | <input type="hidden" name="wikiId" id="wikiId" value="$!escapetool.xml($request.wikiname)" /> |
530 | <input type="hidden" name="csrf" id="csrf" value="$!escapetool.xml($services.csrf.getToken())" /> |
531 | #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.creation')) |
532 | <div class="wizard-body"> |
533 | #if ($status.state != 'FINISHED') |
534 | <div class="ui-progress" id="ui-progress"> |
535 | $services.localization.render('platform.wiki.create.wizard.step.creation.wait') |
536 | <div class="ui-progress-background"> |
537 | #set ($percent = $status.progress.offset) |
538 | ## There is no progress information if the job was scheduled but hasn't started yet. |
539 | #if (!$percent) |
540 | #set ($percent = 0) |
541 | #end |
542 | #set ($percent = $mathtool.toInteger($mathtool.mul($percent, 100))) |
543 | <div class="ui-progress-bar green" style="width:${percent}%" id="wikicreation-progress-bar"></div> |
544 | </div> |
545 | </div> |
546 | #end |
547 | #set($errorlogs = $status.log.getLogs('ERROR')) |
548 | <p class="successmessage box #if($status.error || $state != 'FINISHED')hidden#end" id="successMessage"> |
549 | $services.localization.render('platform.wiki.create.wizard.step.creation.complete', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) |
550 | </p> |
551 | <p class="warningmessage box #if($errorlogs.isEmpty() || $state != 'FINISHED')hidden#end" id="errorlogMessage"> |
552 | $services.localization.render('platform.wiki.create.wizard.step.creation.errorlog', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) |
553 | </p> |
554 | <p class="errormessage box #if(!$status.error || $state != 'FINISHED')hidden#end" id="errorMessage"> |
555 | $services.localization.render('platform.wiki.create.wizard.step.creation.error', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) |
556 | </p> |
557 | </div> |
558 | ## Log |
559 | #template('logging_macros.vm') |
560 | #template('extension.vm') |
561 | ## Hack to be able to use macros from extension.vm that are supposed to be used inside Extension Manager |
562 | #set($olddoc = $doc) |
563 | #set($doc = $xwiki.getDocument('XWiki.AddExtensions')) |
564 | #set($loading = $status.state != 'FINISHED') |
565 | <div id="creation-log"> |
566 | #printLogs($status.log, $loading) |
567 | </div> |
568 | #set($doc = $olddoc) |
569 | #if($status.state == 'FINISHED') |
570 | #if ($status.error) |
571 | #set($finalizeHidden = true) |
572 | #set($cleanUpHidden = false) |
573 | #else |
574 | #set($finalizeHidden = false) |
575 | #set($cleanUpHidden = $errorlogs.isEmpty()) |
576 | #end |
577 | #else |
578 | #set($finalizeHidden = true) |
579 | #set($cleanUpHidden = true) |
580 | #end |
581 | #wizardFooter('', '', '', 'finalize', $finalizeHidden, 'cleanUp', $cleanUpHidden) |
582 | </form> |
583 | {{/html}} |
584 | #end |
585 | ################################## |
586 | ## FINALIZE |
587 | ## |
588 | ## Just go the the created wiki |
589 | ################################## |
590 | #macro(finalize) |
591 | #set($wikiDescriptor = $services.wiki.getById($request.wikiId)) |
592 | $response.sendRedirect($xwiki.getURL($wikiDescriptor.mainPageReference)) |
593 | #end |
594 | ################################## |
595 | ## CLEAN UP |
596 | ## |
597 | ## Delete the wiki if errors has occured |
598 | ################################## |
599 | #macro(cleanUp) |
600 | #set($discard = $xwiki.ssfx.use('uicomponents/wizard/wizard.css', true)) |
601 | #if("$!request.deleteOk" == '') |
602 | #if ($services.csrf.isTokenValid($request.csrf)) |
603 | #set($wikiId = $request.wikiId) |
604 | #set($ok = $services.wiki.deleteWiki($wikiId)) |
605 | $response.sendRedirect($doc.getURL('view', "step=cleanUp&deleteOk=$ok&wikiId=$wikiId")) |
606 | #else |
607 | {{html}} |
608 | #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.cleaningUp')) |
609 | <form action="$doc.getURL()" method="post"> |
610 | <div class="wizard-body"> |
611 | <p>$services.localization.render('platform.wiki.create.wizard.step.cleaningUp.confirmmessage', ["<strong>$request.wikiId</strong>"])</p> |
612 | <input type="hidden" name="csrf" value="$!escapetool.xml($services.csrf.getToken())" /> |
613 | <input type="hidden" name="wikiId" value="$!escapetool.xml($request.wikiId)" /> |
614 | <div class="wizard-footer buttons"> |
615 | <span class="buttonwrapper"> |
616 | <button value="cleanUp" title="Confirm" name="step" id="cleanUp" class="button">$services.localization.render('platform.wiki.create.wizard.step.cleaningUp.confirm')</button> |
617 | </span> |
618 | </div> |
619 | </div> |
620 | </form> |
621 | {{/html}} |
622 | #end |
623 | #else |
624 | #set($wikiId = $request.wikiId) |
625 | {{html}} |
626 | #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.cleaningUp')) |
627 | <div class="wizard-body"> |
628 | #if($request.deleteOk) |
629 | <p class="successmessage box"> |
630 | $services.localization.render('platform.wiki.create.wizard.step.cleaningup.success', ["<strong>$wikiId</strong>"]) |
631 | </p> |
632 | #else |
633 | <p class="errormessage box"> |
634 | $services.localization.render('platform.wiki.create.wizard.step.cleaningup.error', ["<strong>$wikiId</strong>"]) |
635 | </p> |
636 | #end |
637 | </div> |
638 | </form> |
639 | {{/html}} |
640 | #end |
641 | #end |
642 | #macro (getExtensionURL $extensionId $extensionVersion $extraParams) |
643 | #set ($parameters = {}) |
644 | ## |
645 | #if ($extraParams) |
646 | #set ($discard = $parameters.putAll($extraParams)) |
647 | #end |
648 | ## |
649 | #if ($extensionId) |
650 | #set ($discard = $parameters.put('extensionId', $extensionId)) |
651 | #elseif ($request.extensionId) |
652 | #set ($discard = $parameters.put('extensionId', $request.extensionId)) |
653 | #end |
654 | ## |
655 | #if ($extensionVersion) |
656 | #set ($discard = $parameters.put('extensionVersion', $extensionVersion)) |
657 | #elseif ($request.extensionVersion) |
658 | #set ($discard = $parameters.put('extensionVersion', $request.extensionVersion)) |
659 | #end |
660 | ## |
661 | #if ($request.extensionNamespace) |
662 | #set ($discard = $parameters.put('extensionNamespace', $request.extensionNamespace)) |
663 | #end |
664 | ## |
665 | #if ($xback) |
666 | #set ($discard = $parameters.put('xback', $xback)) |
667 | #elseif ($request.xback) |
668 | #set ($discard = $parameters.put('xback', $request.xback)) |
669 | #end |
670 | ## |
671 | #if ($request.section) |
672 | #set ($discard = $parameters.put('section', $request.section)) |
673 | #end |
674 | ## |
675 | #set ($queryString = '') |
676 | #foreach ($entry in $parameters.entrySet()) |
677 | #set ($queryString = "$queryString&$escapetool.url($entry.key)=$escapetool.url($entry.value)") |
678 | #end |
679 | $xwiki.getURL('XWiki.XWikiPreferences', 'admin', "editor=globaladmin§ion=XWiki.AddExtensions&${queryString.substring(1)}")## |
680 | #end |
681 | {{/velocity}} |