Wiki source code of AdministrationJSON
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{velocity wiki="false"}} | ||
2 | #set ($nameStrategyManager = $services.modelvalidation.manager) | ||
3 | #set ($replaceCharacterConfig = $services.modelvalidation.replaceCharacterEntityNameValidationConfiguration) | ||
4 | #set ($configurationPageReference = $services.model.resolveDocument("XWiki.EntityNameValidation.Configuration")) | ||
5 | #set ($configurationPage = $xwiki.getDocument($configurationPageReference)) | ||
6 | #set ($replacementMap = $replaceCharacterConfig.getCharacterReplacementMap()) | ||
7 | |||
8 | #macro (getReplacementMap) | ||
9 | #set ($rowList = $replacementMap.entrySet()) | ||
10 | #setVariable("$json" { | ||
11 | "totalrows": $rowList.size(), | ||
12 | "matchingtags": {}, | ||
13 | "tags" : [], | ||
14 | "returnedrows": $rowList.size(), | ||
15 | "offset": 1, | ||
16 | "reqNo": $numbertool.toNumber($request.reqNo), | ||
17 | "rows": [] | ||
18 | }) | ||
19 | #foreach ($row in $rowList) | ||
20 | #set($replacementCharacter = $row.getValue()) | ||
21 | #if ($replacementCharacter == "" || !$replacementCharacter) | ||
22 | #set($replacementCharacter = $services.localization.render('entitynamevalidation.replacementCharacter.emptyReplacementCharacter')) | ||
23 | #end | ||
24 | #set ($delete_url = $doc.getURL("get", $escapetool.url({ | ||
25 | "outputSyntax": "plain", | ||
26 | "action": "removeCharacter", | ||
27 | "forbiddenCharacter": $row.getKey(), | ||
28 | "form_token": $services.csrf.token | ||
29 | }))) | ||
30 | #set ($rowJson = { | ||
31 | "doc_viewable": true, | ||
32 | "forbiddenCharacter": $row.getKey(), | ||
33 | "replacementCharacter": $replacementCharacter, | ||
34 | "doc_delete_url": $delete_url | ||
35 | }) | ||
36 | #set($discard = $json.rows.add($rowJson)) | ||
37 | #end | ||
38 | #end | ||
39 | |||
40 | #macro (transformMapInLists $forbiddenCharactersList $replacementCharactersList) | ||
41 | #foreach ($entry in $replacementMap.entrySet()) | ||
42 | #set ($discard = $forbiddenCharactersList.add($entry.getKey())) | ||
43 | #set ($discard = $replacementCharactersList.add($entry.getValue())) | ||
44 | #end | ||
45 | #end | ||
46 | |||
47 | #macro (addForbiddenCharacter $forbiddenCharacter $replacementCharacter) | ||
48 | #set ($discard = $replacementMap.put($forbiddenCharacter, $replacementCharacter)) | ||
49 | #saveMapChanges() | ||
50 | #end | ||
51 | |||
52 | #macro (removeForbiddenCharacter $forbiddenCharacter) | ||
53 | #set ($discard = $replacementMap.remove($forbiddenCharacter)) | ||
54 | #saveMapChanges() | ||
55 | #end | ||
56 | |||
57 | #macro (saveMapChanges) | ||
58 | #set ($forbiddenCharactersList = []) | ||
59 | #set ($replacementCharactersList = []) | ||
60 | #transformMapInLists($forbiddenCharactersList $replacementCharactersList) | ||
61 | #set($configObject = $configurationPage.getObject('XWiki.EntityNameValidation.ConfigurationClass')) | ||
62 | #set($discard = $configObject.getProperty("replaceCharacters.forbiddenCharacters").getProperty().setList($forbiddenCharactersList)) | ||
63 | #set($discard = $configObject.getProperty("replaceCharacters.replacementCharacters").getProperty().setList($replacementCharactersList)) | ||
64 | #set($discard = $configurationPage.save()) | ||
65 | #setVariable("$json" { | ||
66 | "success": true | ||
67 | }) | ||
68 | #set($discard = $nameStrategyManager.resetStrategies()) | ||
69 | #end | ||
70 | |||
71 | #if ($request.outputSyntax == "plain") | ||
72 | #if ("$!request.action" == "") | ||
73 | #getReplacementMap() | ||
74 | #elseif ($services.csrf.isTokenValid($request.form_token)) | ||
75 | #if ($request.action == "addCharacter" && "$request.forbiddenCharacter" != "") | ||
76 | #addForbiddenCharacter($request.forbiddenCharacter $request.replacementCharacter) | ||
77 | #elseif ($request.action == "removeCharacter" && "$request.forbiddenCharacter" != "") | ||
78 | #removeForbiddenCharacter($request.forbiddenCharacter) | ||
79 | #else | ||
80 | #setVariable("$json" { | ||
81 | "success": false, | ||
82 | "reason": "Unknown action" | ||
83 | }) | ||
84 | $response.setStatus(404) | ||
85 | #end | ||
86 | #else | ||
87 | #setVariable("$json" { | ||
88 | "success": false, | ||
89 | "reason": "Wrong CSRF" | ||
90 | }) | ||
91 | $response.setStatus(403) | ||
92 | #end | ||
93 | #jsonResponse($json) | ||
94 | #end | ||
95 | {{/velocity}} |