Wiki-Quellcode von LinkNameStrategyHelper

Version 2.1 von Daniel Herrmann am 2025/07/19 16:48

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