Исходный код вики AdminWikiDescriptorSheet

Версия 1.1 от Полина Герасимова на 20.09.2024

Последние авторы
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 <input id='homepage' name='homepage' type='text' size='30' class='suggestDocuments' value="$!{escapetool.xml($homepage)}" />
90 </dd>
91
92 ## 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).
93 #set ($currentUserString = $services.model.serialize($xcontext.userReference, 'default'))
94 #set ($descriptorReference = $services.model.createDocumentReference($services.wiki.mainWikiId, 'XWiki', "XWikiServer${stringtool.capitalize($descriptor.id)}"))
95 #set ($descriptorFullName = $services.model.serialize($descriptorReference))
96 #set ($hasEditOnDescriptor = $xwiki.hasAccessLevel('edit', $currentUserString, $descriptorFullName))
97 #if ($currentUserString == "$!{services.wiki.currentWikiDescriptor.ownerId}" || $hasEditOnDescriptor)
98 <dt>
99 <label for='owner'>
100 $services.localization.render('platform.wiki.sheet.prop.owner') <span class="xRequired">$services.localization.render('core.validation.required')</span>
101 </label>
102 <span class='xHint'>$services.localization.render('platform.wiki.sheet.desc.owner')</span>
103 </dt>
104 <dd>
105 #set ($userPickerParams = {
106 'id': 'owner',
107 'name': 'owner',
108 'value': $descriptor.ownerId
109 })
110 #userPicker(false $userPickerParams)
111 </dd>
112
113 <dd class='warning'>
114 <label for='owner'>
115 <span class='xErrorMsg'>$services.localization.render('platform.wiki.admin.wiki.ownerWarning')</span>
116 </label>
117 </dd>
118 #end
119
120 </dl>
121 </fieldset>
122
123 <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
124
125 <span class="buttonwrapper">
126 <input name='action_saveandcontinue' type='submit' class='button' value="$services.localization.render('admin.save')" />
127 </span>
128 </form>
129 </div>
130 {{/html}}
131 #end
132 #else
133 {{html}}
134 #xwikimessageboxstart($services.localization.render('error') $services.localization.render('notallowed'))
135 #xwikimessageboxend()
136 {{/html}}
137 #end
138 {{/velocity}}