0 Votes

Wiki source code of AdministrationJSON

Last modified by Ryan C on 2025/03/06 17:59

Show last authors
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}}