Wiki-Quellcode von Neues Wiki erstellen

Zuletzt geändert von Holger Engels am 2024/05/03 12:07

Zeige letzte Bearbeiter
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="btn btn-xs number #if($currentStepNumber==$number)step-active#end">$number</span> <span class="name #if($currentStepNumber==$number)step-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 = $numbertool.toNumber($mathtool.mul($percent, 100)).intValue())
543 <div class="ui-progress-bar green" style="width:${percent}%" id="wikicreation-progress-bar"></div>
544 </div>
545 </div>
546 #end
547 #set($hasErrors = $status.logTail.hasLogLevel('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(!$hasErrors || $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.logTail, $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 = !$hasErrors)
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&section=XWiki.AddExtensions&${queryString.substring(1)}")##
680 #end
681 {{/velocity}}