Wiki source code of AdministrationJSON
Last modified by superadmin on 2025/05/22 17:44
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 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}} |