Wiki source code of AdminWikiDescriptorSheet

Last modified by Thomas Coelho (local) on 2022/04/20 16:10

Hide last authors
Thomas Coelho (local) 1.1 1 {{velocity}}
2 #if ($hasGlobalAdmin)
3 #set ($descriptor = $services.wiki.currentWikiDescriptor)
4 #set ($sheetDocName = 'AdminWikiDescriptorSheet')
5 #set ($sheetDocFullName = "WikiManager.${sheetDocName}")
6 ##
7 #if ($request.ajax == 'true' && $xcontext.action == 'get')
8 ##
9 ## Handle AJAX requests.
10 ##
11 #set ($prettyName = "$!request.prettyName")
12 #set ($description = "$!request.description")
13 #set ($owner = "$!request.owner")
14 #set ($homepage = "$!request.homepage")
15 #if ("$!homepage" != '' && $services.csrf.isTokenValid("$!{request.form_token}"))
16 #if ("$!owner" != '')
17 ## There is a security check in $services.wiki.saveDescriptor() to avoid an admin who is not the current owner
18 ## to take the ownership of the wiki.
19 ## So we can fill the descriptor safely.
20 #set ($discard = $descriptor.setOwnerId($owner))
21 #end
22 #set ($discard = $descriptor.setPrettyName($prettyName))
23 #set ($discard = $descriptor.setDescription($description))
24 #set ($homepageReference = $services.model.resolveDocument($homepage))
25 #set ($discard = $descriptor.setMainPageReference($homepageReference))
26 ##
27 #set ($discard = $services.wiki.saveDescriptor($descriptor))
28 #if ($services.wiki.lastError)
29 $response.setStatus(500)
30 #set ($responseText = $!{services.wiki.lastError.message})
31 #if ("$!responseText" == '')
32 #set ($responseText = $!{services.wiki.lastError.class})
33 #end
34 $responseText
35 #end
36 #else
37 $response.setStatus(400)
38 #if (!$services.csrf.isTokenValid("$!{request.form_token}"))
39 $services.localization.render('platform.wiki.admin.wiki.csrfInvalidError')
40 #else
41 $services.localization.render('platform.wiki.admin.wiki.requiredFieldsError')
42 #end
43 #end
44 #else
45 ##
46 ## Display the UI.
47 ##
48 #set ($discard = $xwiki.jsfx.use('js/xwiki/actionbuttons/actionButtons.js', true))
49 ## In case of conflict issue we want to display the diff properly
50 #set ($discard = $xwiki.ssfx.use('uicomponents/viewers/diff.css', true))
51 #set ($discard = $xwiki.jsfx.use('uicomponents/viewers/diff.js'))
52 #if ($doc.documentReference.name != $sheetDocName)
53 #set ($discard = $xwiki.jsx.use($sheetDocFullName))
54 #set ($discard = $xwiki.ssx.use($sheetDocFullName))
55 #end
56 {{html}}
57 <div class='xform'>
58 <form method='post' action="$xwiki.getURL($sheetDocFullName, 'get', 'outputSyntax=plain')">
59 <fieldset>
60 <dl>
61 <dt>
62 <label for='prettyName'>$services.localization.render('platform.wiki.sheet.prop.wikiprettyname')</label>
63 <span class='xHint'>$services.localization.render('platform.wiki.sheet.desc.wikiprettyname')</span>
64 </dt>
65 <dd>
66 <input id='prettyName' name='prettyName' type='text' size='30' value="$!{escapetool.xml($descriptor.prettyName)}" />
67 </dd>
68
69 <dt>
70 <label for='description'>$services.localization.render('platform.wiki.sheet.prop.description')</label>
71 <span class='xHint'>$services.localization.render('platform.wiki.sheet.desc.description')</span>
72 </dt>
73 <dd>
74 <textarea id='description' name='description'>$!{escapetool.xml($descriptor.description)}</textarea>
75 </dd>
76
77 <dt>
78 <label for='homepage'>
79 $services.localization.render('platform.wiki.sheet.prop.homepage') <span class="xRequired">$services.localization.render('core.validation.required')</span>
80 </label>
81 <span class='xHint'>$services.localization.render('platform.wiki.sheet.desc.homepage')</span>
82 </dt>
83 <dd>
84 #if ($descriptor.mainPageReference)
85 #set ($homepage = $services.model.serialize($descriptor.mainPageReference, 'local'))
86 #else
87 #set ($homepage = '')
88 #end
89 #set ($pagePickerParams = {
90 'id': 'homepage',
91 'name': 'homepage',
92 'value': $homepage
93 })
94 #pagePicker($pagePickerParams)
95 </dd>
96
97 ## Only show the owner change form element if the current user is the current owner or a global admin (has edit on the wiki's descriptor document).
98 #set ($currentUserString = $services.model.serialize($xcontext.userReference, 'default'))
99 #set ($descriptorReference = $services.model.createDocumentReference($services.wiki.mainWikiId, 'XWiki', "XWikiServer${stringtool.capitalize($descriptor.id)}"))
100 #set ($descriptorFullName = $services.model.serialize($descriptorReference))
101 #set ($hasEditOnDescriptor = $xwiki.hasAccessLevel('edit', $currentUserString, $descriptorFullName))
102 #if ($currentUserString == "$!{services.wiki.currentWikiDescriptor.ownerId}" || $hasEditOnDescriptor)
103 <dt>
104 <label for='owner'>
105 $services.localization.render('platform.wiki.sheet.prop.owner') <span class="xRequired">$services.localization.render('core.validation.required')</span>
106 </label>
107 <span class='xHint'>$services.localization.render('platform.wiki.sheet.desc.owner')</span>
108 </dt>
109 <dd>
110 #set ($userPickerParams = {
111 'id': 'owner',
112 'name': 'owner',
113 'value': $descriptor.ownerId
114 })
115 #userPicker(false $userPickerParams)
116 </dd>
117
118 <dd class='warning'>
119 <label for='owner'>
120 <span class='xErrorMsg'>$services.localization.render('platform.wiki.admin.wiki.ownerWarning')</span>
121 </label>
122 </dd>
123 #end
124
125 </dl>
126 </fieldset>
127
128 <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
129
130 <span class="buttonwrapper">
131 <input name='action_saveandcontinue' type='submit' class='button' value="$services.localization.render('admin.save')" />
132 </span>
133 </form>
134 </div>
135 {{/html}}
136 #end
137 #else
138 {{html}}
139 #xwikimessageboxstart($services.localization.render('error') $services.localization.render('notallowed'))
140 #xwikimessageboxend()
141 {{/html}}
142 #end
143 {{/velocity}}
144