Wiki-Quellcode von LinkNameStrategyHelper

Zuletzt geändert von Daniel Herrmann am 2025/09/20 09:53

Zeige letzte Bearbeiter
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}}