Wiki-Quellcode von LinkNameStrategyHelper
Zuletzt geändert von Daniel Herrmann am 2025/09/20 09:53
Zeige letzte Bearbeiter
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{template name="hierarchy_macros.vm"/}} | ||
| 2 | |||
| 3 | {{velocity output="false"}} | ||
| 4 | #macro (computeInfoFromReference $reference $result) | ||
| 5 | #set ($title = $reference.name) | ||
| 6 | #set ($options = { | ||
| 7 | 'excludeSelf': false, | ||
| 8 | 'limit': 4 | ||
| 9 | }) | ||
| 10 | #getHierarchyPath($reference $path $options) | ||
| 11 | #getHierarchyPathLabels($path $labels $options) | ||
| 12 | #set ($location = $stringtool.join($labels, ' / ')) | ||
| 13 | #setVariable("$result" $location) | ||
| 14 | #end | ||
| 15 | |||
| 16 | #macro (handleValidationRequest) | ||
| 17 | #set ($requestedReference = $services.model.resolveDocument($request.input, 'default')) | ||
| 18 | #if ($xwiki.exists($requestedReference)) | ||
| 19 | #set ($answer = { | ||
| 20 | 'validated': true, | ||
| 21 | 'validation': 'exists', | ||
| 22 | 'input': $request.input | ||
| 23 | }) | ||
| 24 | #elseif ($services.modelvalidation.isValid($requestedReference)) | ||
| 25 | #set ($answer = { | ||
| 26 | 'validated': true, | ||
| 27 | 'validation': 'name', | ||
| 28 | 'input': $request.input | ||
| 29 | }) | ||
| 30 | #else | ||
| 31 | #set ($answer = { | ||
| 32 | 'validated': false, | ||
| 33 | 'input': $request.input | ||
| 34 | }) | ||
| 35 | #end | ||
| 36 | #jsonResponse($answer) | ||
| 37 | #end | ||
| 38 | |||
| 39 | #macro (handleSuggestionRequest) | ||
| 40 | #set ($isAdvanced = $services.user.properties.type == 'ADVANCED') | ||
| 41 | #set ($result = []) | ||
| 42 | #set ($requestedReference = $services.model.resolveDocument($request.input, 'default')) | ||
| 43 | #if ($xwiki.exists($requestedReference)) | ||
| 44 | #set ($location = $NULL) | ||
| 45 | #computeInfoFromReference($requestedReference $location) | ||
| 46 | #set ($discard = $result.add({ | ||
| 47 | 'reference': $services.model.serialize($requestedReference, 'default'), | ||
| 48 | 'type': 'exactMatch', | ||
| 49 | 'location': $location, | ||
| 50 | 'title': $xwiki.getDocument($requestedReference).displayTitle | ||
| 51 | })) | ||
| 52 | #else | ||
| 53 | #if ($isAdvanced) | ||
| 54 | #set ($cleanRequestedReference = $services.modelvalidation.transformEntityReference($requestedReference)) | ||
| 55 | #set ($location = $NULL) | ||
| 56 | #computeInfoFromReference($cleanRequestedReference $location) | ||
| 57 | #set ($discard = $result.add({ | ||
| 58 | 'reference': $services.model.serialize($cleanRequestedReference, 'default'), | ||
| 59 | 'type': 'fullyResolvedInput', | ||
| 60 | 'location': $location | ||
| 61 | })) | ||
| 62 | #end | ||
| 63 | #set ($parentReference = $services.model.resolveDocument($request.base)) | ||
| 64 | #set ($requestedName = $request.input) | ||
| 65 | #set ($transformedName = $services.modelvalidation.transformName($requestedName)) | ||
| 66 | #set ($spaceReference = $services.model.createSpaceReference($transformedName, $parentReference.lastSpaceReference)) | ||
| 67 | #set ($documentReference = $services.model.createDocumentReference('WebHome', $spaceReference)) | ||
| 68 | #set ($location = $NULL) | ||
| 69 | #computeInfoFromReference($documentReference $location) | ||
| 70 | #set ($discard = $result.add({ | ||
| 71 | 'reference': $services.model.serialize($documentReference, 'default'), | ||
| 72 | 'type': 'resolvedInSpace', | ||
| 73 | 'location': $location | ||
| 74 | })) | ||
| 75 | #end | ||
| 76 | #jsonResponse($result) | ||
| 77 | #end{{/velocity}} | ||
| 78 | {{velocity}}#if ($xcontext.action == 'get' && $request.input != '' && $request.action != '') | ||
| 79 | #if ($request.action == 'suggest') | ||
| 80 | #handleSuggestionRequest() | ||
| 81 | #elseif ($request.action == 'validate') | ||
| 82 | #handleValidationRequest() | ||
| 83 | #end | ||
| 84 | #else | ||
| 85 | Technical page to help using the name strategy when suggesting links. | ||
| 86 | #end{{/velocity}} |