Toggle navigation
Log-in
Home
Page Index
User Index
Application Index
Global
Wiki Index
Browse Wikis
Create a new wiki
Wiki source code of
Create a new wiki
Last modified by eaminov on 2016/12/16 00:07
Hide line numbers
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: <p 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: </p> 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: #displayFlavorPicker('flavor', $defaultFlavor, false, 'xwiki-createwiki-flavor-picker', true) 228: </div> 229: <div class="xwiki-createwiki-tab #if($currentTab=='templates')active#{else}hidden#end" id="templates-tab"> 230: #displayTemplateFields($templates) 231: </div> 232: </div> 233: </dd> 234: </dl> 235: #else 236: ## There is a default UI configured, so we do not display the flavor picker 237: <dl> 238: <dt> 239: #if ($templates.size() > 0) 240: <label for="template">$services.localization.render('platform.wiki.create.wizard.template.label')</label> 241: <span class="xHint">$services.localization.render('platform.wiki.create.wizard.desc.newTemplateHint')</span> 242: #else 243: <label>$services.localization.render('platform.wiki.create.wizard.template.label')</label> 244: #end 245: </dt> 246: <dd> 247: #displayTemplateFields($templates) 248: </dd> 249: </dl> 250: #end 251: ### END OF WIZARD SECOND HALF 252: </div> 253: ### END OF WIZARD BODY 254: </div> 255: <div class="clearfloats"></div> 256: #wizardFooter('', 'members', '') 257: </form> 258: {{/html}} 259: #end 260: ################################## 261: ## STEP MEMBERS 262: ## 263: ## The members step is the lasy 264: ################################## 265: #macro(stepMembers) 266: #set($discard = $xwiki.ssfx.use('uicomponents/wizard/wizard.css', true)) 267: {{html}} 268: <form class="xform" method="post" action="$doc.getURL()"> 269: #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.users'), 2) 270: ### WIZARD BODY ### 271: <div class="wizard-body"> 272: ### FIRST STEP VALUES 273: <input type="hidden" name="wikiprettyname" value="$!escapetool.xml($request.getParameter('wikiprettyname'))" /> 274: <input type="hidden" name="wikiname" value="$!escapetool.xml($request.wikiname)" /> 275: <input type="hidden" name="wikialias" value="$!escapetool.xml($request.wikialias)" /> 276: <input type="hidden" name="description" value="$!escapetool.xml($request.getParameter('description'))" /> 277: <input type="hidden" name="template" value="$!escapetool.xml($request.template)" /> 278: <input type="hidden" name="flavor" value="$!escapetool.xml($request.flavor)" /> 279: <input type="hidden" name="set_as_template" value="$!escapetool.xml($request.set_as_template)" /> 280: <input type="hidden" name="form_token" value="$!escapetool.xml($services.csrf.getToken())" /> 281: #userPicker_import(true) 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: <input type="text" id="owner" name="ownerId" value="$!value" class="suggestUsers"/> 298: </dd> 299: </dl> 300: #else 301: <input id="owner" name="ownerId" type="hidden" value="${xcontext.mainWikiName}:${xcontext.user}"/> 302: #end 303: ### USERS SCOPE ### 304: <dl> 305: <dt> 306: <label for="userScope">$services.localization.render('platform.wiki.create.wizard.userScope.label')</label> 307: <span class="xHint">$services.localization.render('platform.wiki.create.wizard.userScope.hint')</span> 308: </dt> 309: <dd> 310: #set($value = $escapetool.xml($request.getParameter('userScope'))) 311: #set ($wikiUserClassDocument = $xwiki.getDocument('WikiManager.WikiUserClass')) 312: #set ($wikiUserClass = $wikiUserClassDocument.getxWikiClass()) 313: #set ($userScopeProperty = $wikiUserClass.get('userScope')) 314: #set ($userScopePropertyValues = '') 315: #set ($userScopePropertyValues = $userScopeProperty.getListValues()) 316: #set ($userScopeDetailsMap = $userScopeProperty.getMapValues()) 317: #foreach ($userScopeValue in $userScopePropertyValues) 318: #set ($userScopeValueId = "userScope_${foreach.index}") 319: <div> 320: <label for="$userScopeValueId"> 321: #set($checked = '') 322: #if($request.getParameter('userScope') == $userScopeValue || ("$!request.getParameter('userScope')"=='' && $foreach.index==0)) 323: #set($checked = 'checked="checked"') 324: #end 325: <input type="radio" id="$userScopeValueId" name="userScope" value="$userScopeValue" $checked/> 326: $services.localization.render("${wikiUserClassDocument.fullName}_${userScopeProperty.name}_${userScopeDetailsMap.get($userScopeValue).getValue()}") 327: </label> 328: </div> 329: #end 330: </dd> 331: </dl> 332: ### END OF WIZARD FIRST HALF 333: </div> 334: ### WIZARD SECOND HALF 335: <div class="half"> 336: ### MEMBERSHIP TYPE 337: #set ($membershipTypeProperty = $wikiUserClass.get('membershipType')) 338: #set ($membershipTypeValues = '') 339: #set ($membershipTypeValues = $membershipTypeProperty.getListValues()) 340: #set ($membershipTypeDetailsMap = $membershipTypeProperty.getMapValues()) 341: <dl> 342: <dt> 343: <label>$services.localization.render('platform.wiki.prop.membershipType.label')</label> 344: <span class='xHint'>$services.localization.render('platform.wiki.prop.membershipType.hint')</span> 345: </dt> 346: <dd> 347: #foreach ($membershipTypeValue in $membershipTypeValues) 348: #set ($membershipTypeValueId = "membershipType_${foreach.index}") 349: <div> 350: <label for="$membershipTypeValueId"> 351: #set($checked = '') 352: #if($request.getParameter('membershipType') == $membershipTypeValue || ("$!request.getParameter('membershipType')"=='' && $foreach.index==0)) 353: #set($checked = 'checked="checked"') 354: #end 355: <input type="radio" id="$membershipTypeValueId" name="membershipType" value="$membershipTypeValue" $checked/> 356: $services.localization.render("${wikiUserClassDocument.fullName}_${membershipTypeProperty.name}_${membershipTypeDetailsMap.get($membershipTypeValue).getValue()}") 357: </label> 358: </div> 359: #end 360: </dd> 361: </dl> 362: ### MEMBERS 363: <dl> 364: <dt> 365: <label for="members">$services.localization.render('platform.wiki.create.members')</label> 366: <span class="xHint">$services.localization.render('platform.wiki.create.wizard.desc.members')</span> 367: </dt> 368: <dd> 369: #set($listMembers = '') 370: #set($sep = '') 371: #foreach($m in $request.getParameterValues('members')) 372: #set($listMembers = "${listMembers}${sep}$!escapetool.xml($m)") 373: #set($sep = ',') 374: #end 375: <input type="text" id="members" name="members" value="$listMembers" class="suggestUsers multipleSelection"/> 376: </dd> 377: </dl> 378: ### END OF WIZARD SECOND HALF 379: </div> 380: ### END OF WIZARD BODY 381: </div> 382: <div class="clearfloats"></div> 383: #wizardFooter('type', '', 'create') 384: </form> 385: {{/html}} 386: #end 387: ################################## 388: ## GET REQUEST LIST 389: ## 390: ## Get the values for user pickers with multiple selection 391: ################################## 392: #macro(getRequestList $paramlist $paramname) 393: #set ($paramtable = []) 394: #set ($paramtable = $request.getParameterValues($paramname)) 395: #if ($paramtable && $paramlist) 396: #set ($ok = $paramlist.clear()) 397: #foreach($paramvalue in $paramtable) 398: #set ($ok = $paramlist.add($paramvalue)) 399: #end 400: #end 401: #end 402: ################################## 403: ## CREATE 404: ## 405: ## The final step that eventually create the wiki 406: ################################## 407: #macro(create) 408: ## Job Status 409: #set ($state = $services.wiki.creationjob.getJobStatus($request.wikiname).state) 410: ## If a deleted wiki had the same name, the job status may still be there (with a 'FINISHED' status) 411: ## So we have to check if the wiki really exists 412: #if ($state == 'FINISHED' && !$services.wiki.exists($request.wikiname)) 413: ## If not, consider that the new job has not been launched yet 414: #set($state = 'NONE') 415: #end 416: ## CSRF checkFailed to execute the [velocity] macro. Click on this m 417: #if (!$services.csrf.isTokenValid($request.form_token)) 418: {{warning}} 419: {{translation key="platform.wiki.csrf.error" /}} 420: {{/warning}} 421: 422: #stepMembers() 423: #elseif("$!state" != '' && $state != 'NONE') 424: #creation() 425: #else 426: #createWiki() 427: #end 428: #end 429: ################################## 430: ## CREATE WIKI 431: ## 432: ## The macro that finaly starts the wiki creation job 433: ################################## 434: #macro(createWiki) 435: #set($wikialias = $request.wikialias) 436: #if("$!wikialias" == '') 437: #set($wikialias = $request.wikiname) 438: #end 439: #set($wikiCreationRequest = $services.wiki.creationjob.newWikiCreationRequest()) 440: #set($discard = $wikiCreationRequest.setWikiId($request.wikiname)) 441: #set($discard = $wikiCreationRequest.setAlias($wikialias)) 442: #set($discard = $wikiCreationRequest.setPrettyName($request.wikiprettyname)) 443: #set($discard = $wikiCreationRequest.setDescription($request.description)) 444: #if("$!request.set_as_template" != '') 445: #set($discard = $wikiCreationRequest.setTemplate(true)) 446: #else 447: #set($discard = $wikiCreationRequest.setTemplate(false)) 448: #end 449: #set($ownerId = $request.ownerId) 450: #if("$!ownerId" == '') 451: ## If the ownerId is null, then set the current user 452: #set($ownerId = $services.model.serialize($xcontext.userReference, 'default')) 453: #else 454: #set($ownerId = $services.model.serialize($services.model.resolveDocument($ownerId), 'default')) 455: #end 456: #set($discard = $wikiCreationRequest.setOwnerId($ownerId)) 457: #set($discard = $wikiCreationRequest.setUserScope($request.userScope)) 458: #set($discard = $wikiCreationRequest.setMembershipType($request.membershipType)) 459: #set($discard = $wikiCreationRequest.setFailOnExist(true)) 460: #if("$!request.template" != '' && $request.template != 'xwikinotemplate') 461: ## Create a wiki from a template 462: #set($discard = $wikiCreationRequest.setWikiSource('template')) 463: #set($discard = $wikiCreationRequest.setTemplateId($request.template)) 464: #elseif("$!request.flavor" != '' && $request.flavor != 'noFlavor') 465: ## Create a wiki from an extension 466: #set($discard = $wikiCreationRequest.setWikiSource('extension')) 467: #set($flavorExtension = $request.flavor.split(':::')) 468: #set($discard = $wikiCreationRequest.setExtensionId($flavorExtension[0], $flavorExtension[1])) 469: #elseif($services.distribution.hasWikiDefaultUIExtension()) 470: ## Default action when a default UI is configured for subwikis 471: #set($discard = $wikiCreationRequest.setWikiSource('extension')) 472: #set($discard = $wikiCreationRequest.setExtensionId($services.wiki.creationjob.defaultWikiExtensionId)) 473: #end 474: ## Members 475: #if ($request.userScope != 'local_only') 476: #set ($members = []) 477: #getRequestList($members 'members') 478: ## Remove empty strings from the list of members (the user picker submits by default an empty string). 479: #set ($discard = $members.removeAll([''])) 480: #if ("$!members" != '' && $members.size() > 0) 481: #set ($globalMembers = []) 482: ## Enforce global users 483: #foreach ($member in $members) 484: #set($discard = $globalMembers.add($services.model.serialize($services.model.resolveDocument($member), 'default'))) 485: #end 486: ## Add the members 487: #set ($discard = $wikiCreationRequest.setMembers($globalMembers)) 488: #end 489: #end 490: ## Start the creation job 491: #set($job = $services.wiki.creationjob.createWiki($wikiCreationRequest)) 492: #if (!$job) 493: {{error}}$services.localization.render('platform.wiki.create.error', [$request.wikiname, $services.wiki.creationjob.lastError]){{/error}} 494: #else 495: #creation() 496: #end 497: #end 498: ################################## 499: ## ADD MEMBERS AS HIDDEN INPUT 500: ################################## 501: #macro(addMembersAsHiddenInput) 502: ### MEMBERS VALUES 503: #set ($members = []) 504: #getRequestList($members 'members') 505: #set($membersValue = '') 506: #foreach($m in $members) 507: #if($m != '') 508: <input type="hidden" name="members" value="$!escapetool.xml($m)" /> 509: #end 510: #end 511: #end 512: ################################## 513: ## CREATION 514: ## 515: ## This step display a progess bar during 516: ## the wiki creation 517: ################################## 518: #macro(creation) 519: #set ($discard = $xwiki.ssfx.use('uicomponents/wizard/wizard.css', true)) 520: #set ($discard = $xwiki.ssfx.use('uicomponents/logging/logging.css', true)) 521: #set ($discard = $xwiki.jsfx.use('uicomponents/logging/logging.js', true)) 522: #set ($status = $services.wiki.creationjob.getJobStatus($request.wikiname)) 523: {{html}} 524: <form class="xform" method="post" action="$doc.getURL()"> 525: <input type="hidden" name="wikiId" id="wikiId" value="$!escapetool.xml($request.wikiname)" /> 526: <input type="hidden" name="csrf" id="csrf" value="$!escapetool.xml($services.csrf.getToken())" /> 527: #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.creation')) 528: <div class="wizard-body"> 529: #if ($status.state != 'FINISHED') 530: <div class="ui-progress" id="ui-progress"> 531: $services.localization.render('platform.wiki.create.wizard.step.creation.wait') 532: <div class="ui-progress-background"> 533: #set ($percent = $status.progress.offset) 534: ## There is no progress information if the job was scheduled but hasn't started yet. 535: #if (!$percent) 536: #set ($percent = 0) 537: #end 538: #set ($percent = $mathtool.toInteger($mathtool.mul($percent, 100))) 539: <div class="ui-progress-bar green" style="width:${percent}%" id="wikicreation-progress-bar"></div> 540: </div> 541: </div> 542: #end 543: <p class="successmessage box #if($status.error || $state != 'FINISHED')hidden#end" id="successMessage"> 544: $services.localization.render('platform.wiki.create.wizard.step.creation.complete', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) 545: </p> 546: <p class="errormessage box #if(!$$status.error || $state != 'FINISHED')hidden#end" id="errorMessage"> 547: $services.localization.render('platform.wiki.create.wizard.step.creation.error', ["<strong>$escapetool.xml($request.wikiname)</strong>"]) 548: </p> 549: </div> 550: ## Log 551: #template('logging_macros.vm') 552: #template('extension.vm') 553: ## Hack to be able to use macros from extension.vm that are supposed to be used inside Extension Manager 554: #set($olddoc = $doc) 555: #set($doc = $xwiki.getDocument('XWiki.AddExtensions')) 556: #set($loading = $status.state != 'FINISHED') 557: <div id="creation-log"> 558: #printLogs($status.log, $loading) 559: </div> 560: #set($doc = $olddoc) 561: #if($status.state == 'FINISHED') 562: #if ($status.error) 563: #set($finalizeHidden = true) 564: #set($cleanUpHidden = false) 565: #else 566: #set($finalizeHidden = false) 567: #set($cleanUpHidden = true) 568: #end 569: #else 570: #set($finalizeHidden = true) 571: #set($cleanUpHidden = true) 572: #end 573: #wizardFooter('', '', '', 'finalize', $finalizeHidden, 'cleanUp', $cleanUpHidden) 574: </form> 575: {{/html}} 576: #end 577: ################################## 578: ## FINALIZE 579: ## 580: ## Just go the the created wiki 581: ################################## 582: #macro(finalize) 583: #set($wikiDescriptor = $services.wiki.getById($request.wikiId)) 584: $response.sendRedirect($xwiki.getURL($wikiDescriptor.mainPageReference)) 585: #end 586: ################################## 587: ## CLEAN UP 588: ## 589: ## Delete the wiki if errors has occured 590: ################################## 591: #macro(cleanUp) 592: #set($discard = $xwiki.ssfx.use('uicomponents/wizard/wizard.css', true)) 593: #if("$!request.deleteOk" == '') 594: #if ($services.csrf.isTokenValid($request.csrf)) 595: #set($wikiId = $request.wikiId) 596: #set($ok = $services.wiki.deleteWiki($wikiId)) 597: $response.sendRedirect($doc.getURL('view', "step=cleanUp&deleteOk=$ok&wikiId=$wikiId")) 598: #else 599: {{html}} 600: #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.cleaningUp')) 601: <form action="$doc.getURL()" method="post"> 602: <div class="wizard-body"> 603: <p>$services.localization.render('platform.wiki.create.wizard.step.cleaningUp.confirmmessage', ["<strong>$request.wikiId</strong>"])</p> 604: <input type="hidden" name="csrf" value="$!escapetool.xml($services.csrf.getToken())" /> 605: <input type="hidden" name="wikiId" value="$!escapetool.xml($request.wikiId)" /> 606: <div class="wizard-footer buttons"> 607: <span class="buttonwrapper"> 608: <button value="cleanUp" title="Confirm" name="step" id="cleanUp" class="button">$services.localization.render('platform.wiki.create.wizard.step.cleaningUp.confirm')</button> 609: </span> 610: </div> 611: </div> 612: </form> 613: {{/html}} 614: #end 615: #else 616: #set($wikiId = $request.wikiId) 617: {{html}} 618: #wizardHeader($services.localization.render('platform.wiki.create.wizard.step.cleaningUp')) 619: <div class="wizard-body"> 620: #if($request.deleteOk) 621: <p class="successmessage box"> 622: $services.localization.render('platform.wiki.create.wizard.step.cleaningup.success', ["<strong>$wikiId</strong>"]) 623: </p> 624: #else 625: <p class="errormessage box"> 626: $services.localization.render('platform.wiki.create.wizard.step.cleaningup.error', ["<strong>$wikiId</strong>"]) 627: </p> 628: #end 629: </div> 630: </form> 631: {{/html}} 632: #end 633: #end 634: #macro (getExtensionURL $extensionId $extensionVersion $extraParams) 635: #set ($parameters = {}) 636: ## 637: #if ($extraParams) 638: #set ($discard = $parameters.putAll($extraParams)) 639: #end 640: ## 641: #if ($extensionId) 642: #set ($discard = $parameters.put('extensionId', $extensionId)) 643: #elseif ($request.extensionId) 644: #set ($discard = $parameters.put('extensionId', $request.extensionId)) 645: #end 646: ## 647: #if ($extensionVersion) 648: #set ($discard = $parameters.put('extensionVersion', $extensionVersion)) 649: #elseif ($request.extensionVersion) 650: #set ($discard = $parameters.put('extensionVersion', $request.extensionVersion)) 651: #end 652: ## 653: #if ($request.extensionNamespace) 654: #set ($discard = $parameters.put('extensionNamespace', $request.extensionNamespace)) 655: #end 656: ## 657: #if ($xback) 658: #set ($discard = $parameters.put('xback', $xback)) 659: #elseif ($request.xback) 660: #set ($discard = $parameters.put('xback', $request.xback)) 661: #end 662: ## 663: #if ($request.section) 664: #set ($discard = $parameters.put('section', $request.section)) 665: #end 666: ## 667: #set ($queryString = '') 668: #foreach ($entry in $parameters.entrySet()) 669: #set ($queryString = "$queryString&$escapetool.url($entry.key)=$escapetool.url($entry.value)") 670: #end 671: $xwiki.getURL('XWiki.XWikiPreferences', 'admin', "editor=globaladmin§ion=XWiki.AddExtensions&${queryString.substring(1)}")## 672: #end 673: {{/velocity}}