Wiki source code of Sheet for XWikiServerClass
Last modified by Thomas Coelho (local) on 2022/05/27 15:18
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | {{velocity}} |
2 | ############################# | ||
3 | ## GLOBALS | ||
4 | ############################# | ||
5 | #set ($wikiId = $doc.documentReference.name.replaceAll('XWikiServer', '').toLowerCase()) | ||
6 | #set ($wiki = $services.wiki.getById($wikiId)) | ||
7 | #set ($descriptorObj = $doc.getObject('XWiki.XWikiServerClass')) | ||
8 | #set ($templateObj = $doc.getObject('WikiManager.WikiTemplateClass')) | ||
9 | #set ($aliases = $doc.getObjects('XWiki.XWikiServerClass')) | ||
10 | ############################# | ||
11 | ## CONTROLLER | ||
12 | ############################# | ||
13 | #controller() | ||
14 | #macro(controller) | ||
15 | #if ($doc.fullName == "XWiki.XWikiServerClassSheet" || $doc.fullName == "XWiki.XWikiServerClassTemplate") | ||
16 | = Document "$doc.documentReference.name" = | ||
17 | #elseif ($request.action == 'create' && "$!request.domain" != '' && $request.domain.trim().length() > 0) | ||
18 | #createAlias() | ||
19 | #elseif ($request.action == 'delete' && "$!request.domain" != '' && $request.domain.trim().length() > 0) | ||
20 | #deleteAlias() | ||
21 | #elseif ($xcontext.action == 'edit') | ||
22 | #edit() | ||
23 | #else | ||
24 | #view() | ||
25 | #end | ||
26 | #end | ||
27 | ############################# | ||
28 | ## VIEW | ||
29 | ############################# | ||
30 | #macro(view) | ||
31 | #set($adminPageRef = $services.model.createDocumentReference($wiki.id, 'XWiki', 'XWikiPreferences')) | ||
32 | #set($adminPageLink = "[[$services.localization.render('platform.wiki.sheet.descriptor.admin')>>$adminPageRef]]") | ||
33 | {{translation key="platform.wiki.sheet.descriptor" parameters="${wiki.id},${adminPageLink}"/}} $adminPageLink | ||
34 | |||
35 | {{toc /}} | ||
36 | #displaySettings() | ||
37 | #displayAliases() | ||
38 | #createAliasForm() | ||
39 | #end | ||
40 | ############################# | ||
41 | ## EDIT | ||
42 | ############################# | ||
43 | #macro(edit) | ||
44 | {{toc /}} | ||
45 | #displaySettings() | ||
46 | #displayAliases() | ||
47 | #end | ||
48 | ############################# | ||
49 | ## CREATE ALIAS | ||
50 | ############################# | ||
51 | #macro(createAlias) | ||
52 | #if (!${services.csrf.isTokenValid("$!{request.getParameter('form_token')}")}) | ||
53 | |||
54 | {{error}}{{translation key="notallowed"/}}{{/error}} | ||
55 | |||
56 | #elseif (!$wiki.aliases.contains($request.domain)) | ||
57 | #set ($alias = $doc.newObject("XWiki.XWikiServerClass")) | ||
58 | #set ($discard = $alias.set("server", $request.domain)) | ||
59 | #set ($discard = $alias.set("homepage", "Main.WebHome")) | ||
60 | #set ($discard = $doc.save()) | ||
61 | $response.sendRedirect($doc.getURL()) | ||
62 | #else | ||
63 | |||
![]() |
2.1 | 64 | {{error}}{{translation key="platform.wiki.sheet.erroraliasalreadynotexists" parameters="~"${services.rendering.escape($escapetool.java($request.domain), 'xwiki/2.1')}~""/}}{{/error}} |
![]() |
1.1 | 65 | |
66 | #end | ||
67 | #end | ||
68 | ############################# | ||
69 | ## DELETE ALIAS | ||
70 | ############################# | ||
71 | #macro(deleteAlias) | ||
72 | #if (!${services.csrf.isTokenValid("$!{request.getParameter('form_token')}")}) | ||
73 | |||
74 | {{error}}{{translation key="notallowed"/}}{{/error}} | ||
75 | |||
76 | #elseif ($wiki.aliases.contains($request.domain)) | ||
77 | #set ($alias = $doc.getObject('XWiki.XWikiServerClass', 'server', $request.domain)) | ||
78 | #set ($removed = $doc.removeObject($alias)) | ||
79 | #set ($discard = $doc.save()) | ||
80 | $response.sendRedirect($doc.getURL()) | ||
81 | #else | ||
82 | |||
![]() |
2.1 | 83 | {{error}}{{translation key="platform.wiki.sheet.erroraliasdoesnotexists" parameters="~"${services.rendering.escape($escapetool.java($request.domain), 'xwiki/2.1')}~""/}}{{/error}} |
![]() |
1.1 | 84 | |
85 | #end | ||
86 | #end | ||
87 | ############################# | ||
88 | ## DISPLAY SETTINGS | ||
89 | ############################# | ||
90 | #macro(displaySettings) | ||
91 | (% id="HWikiProperties" %) | ||
92 | = {{translation key="platform.wiki.sheet.title.settings"/}} = | ||
93 | {{html wiki="true" clean="false"}} | ||
94 | <div class="xform"> | ||
95 | <dl> | ||
96 | #displayField('wikiprettyname', $descriptorObj) | ||
97 | #displayField('owner', $descriptorObj) | ||
98 | #displayField('secure', $descriptorObj) | ||
99 | #displayField('port', $descriptorObj) | ||
100 | #displayField('iswikitemplate', $templateObj) | ||
101 | #displayField('server', $descriptorObj) | ||
102 | #displayField('description', $descriptorObj) | ||
103 | #displayField('homepage', $descriptorObj, "#homePagePicker($descriptorObj)") | ||
104 | </dl> | ||
105 | </div> | ||
106 | {{/html}} | ||
107 | #end | ||
108 | ############################# | ||
109 | ## DISPLAY FIELD | ||
110 | ############################# | ||
111 | #macro(displayField $fieldName $object $customDisplay) | ||
112 | #if ("$!object" != '') | ||
113 | <dt> | ||
114 | #if ($xcontext.action=='edit') | ||
115 | <label for="${object.xWikiClass.name}_${object.number}_${fieldName}"> | ||
116 | #else | ||
117 | <label> | ||
118 | #end | ||
119 | {{translation key="platform.wiki.sheet.prop.${fieldName}" /}}: | ||
120 | </label> | ||
121 | <span class="xHint">{{translation key="platform.wiki.sheet.desc.${fieldName}" /}}</span> | ||
122 | </dt> | ||
123 | <dd>#if ("$!customDisplay" != '')$customDisplay#else$object.get($fieldName)#end</dd> | ||
124 | #end | ||
125 | #end | ||
126 | #macro (homePagePicker $object) | ||
127 | #if ($xcontext.action == 'edit') | ||
128 | ## The wiki descriptor is stored on the main wiki so we need to configure the page picker to give suggestions from | ||
129 | ## the corresponding wiki (not from the main wiki). | ||
130 | #set ($id = "${object.xWikiClass.name}_${object.number}_homepage") | ||
131 | #set ($homePagePickerParams = { | ||
132 | 'id': $id, | ||
133 | 'name': $id, | ||
134 | 'value': $object.getValue('homepage'), | ||
135 | 'data-search-scope': "wiki:$wikiId" | ||
136 | }) | ||
137 | #pagePicker($homePagePickerParams) | ||
138 | #end | ||
139 | #end | ||
140 | ############################# | ||
141 | ## DISPLAY ALIASES | ||
142 | ############################# | ||
143 | #macro(displayAliases) | ||
144 | (% id="HWikiViewAliases" %) | ||
145 | = {{translation key="platform.wiki.sheet.title.viewaliases"/}} = | ||
146 | {{translation key="platform.wiki.sheet.aliases"/}} | ||
147 | #if ($aliases.size() > 1) | ||
148 | #foreach ($alias in $aliases) | ||
149 | #if ($foreach.count > 1) | ||
150 | == $alias.display('server', 'view') == | ||
151 | {{html wiki="true" clean="false"}} | ||
152 | <div class="xform"> | ||
153 | <dl> | ||
154 | #displayField('description', $alias) | ||
155 | #displayField('homepage', $alias) | ||
156 | </dl> | ||
157 | </div> | ||
158 | {{/html}} | ||
159 | #if ($xcontext.action == 'view') | ||
160 | #deleteButton($alias) | ||
161 | #end | ||
162 | #end | ||
163 | #end | ||
164 | #end | ||
165 | #end | ||
166 | ############################# | ||
167 | ## DELETE ALIAS BUTTON | ||
168 | ############################# | ||
169 | #macro(deleteButton $alias) | ||
170 | #if($xcontext.action == 'view') | ||
171 | |||
172 | {{html}} | ||
173 | <form method="get" action="$doc.getURL('view')"> | ||
174 | <fieldset> | ||
175 | <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> | ||
176 | <input type="hidden" name="action" value="delete"/> | ||
177 | <input type="hidden" name="domain" value="$alias.server"/> | ||
178 | <input type="submit" class="button" value="$services.localization.render('delete')"/> | ||
179 | </fieldset> | ||
180 | </form> | ||
181 | {{/html}} | ||
182 | |||
183 | #end | ||
184 | #end | ||
185 | ############################# | ||
186 | ## CREATE ALIAS FORM | ||
187 | ############################# | ||
188 | #macro(createAliasForm) | ||
189 | (% id="HWikiCreateNewAlias" %) | ||
190 | = {{translation key="platform.wiki.sheet.title.createnewalias"/}} = | ||
191 | |||
192 | {{html}} | ||
193 | <form method="get" action="$doc.getURL('view')"> | ||
194 | <fieldset> | ||
195 | <input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" /> | ||
196 | <input type="hidden" name="action" value="create"/> | ||
197 | <label for="inputdomain">$services.localization.render('platform.wiki.sheet.prop.server')</label>: | ||
198 | <input id="inputdomain" type="text" name="domain" class="wikialiasinput"/> | ||
199 | <input type="submit" class="button" value="$services.localization.render('create')"/> | ||
200 | </fieldset> | ||
201 | </form> | ||
202 | {{/html}} | ||
203 | |||
204 | #end | ||
205 | {{/velocity}} |