# Zdrojový kód wiki VelocityMacros

Naposledy upravil David Brazda 06.11.2020 11:45
Export
Office Formats
Export do PDF
Other Formats
Export do HTML

Show last authors

author | version | line-number | content
--- | --- | --- | ---
1 | {{velocity output="false"}}
2 | #macro (getAppReference)
3 | #set ($appLocalRef = $doc.getValue('dataSpaceName'))
4 | #if ("$!appLocalRef" != '')
5 | ## Between 6.3M2 (XWIKI-11249) and 7.3RC1 (XWIKI-12741).
6 | #set ($appReference = $services.model.resolveSpace($appLocalRef))
7 | #else
8 | ## Possible locations:
9 | ## 1. same space (<6.2M1, XWIKI-8757)
10 | ## 2. sibling space (between 6.2M1 and 6.3M2)
11 | ## 3. grand parent space (7.3RC1+)
12 | #set ($appReferences = [
13 | $doc.documentReference.parent,
14 | $services.model.createSpaceReference($stringtool.removeEnd($doc.documentReference.name, 'TemplateProvider'),
15 | $doc.documentReference.parent.parent),
16 | $doc.documentReference.parent.parent
17 | ])
18 | #foreach ($item in $appReferences)
19 | #set ($appReference = $item)
20 | #if ($xwiki.getDocument($appReference).getObject($appDescriptorClassName))
21 | #break
22 | #end
23 | #end
24 | #end
25 | #end
26 |
27 | #macro (getAppTitle)
28 | #getAppReference
29 | #set ($appTitle = $xwiki.getDocument($appReference).plainTitle)
30 | #end
31 |
32 | #macro (getExpectedAppClassReference $appName $appReference)
33 | #set ($expectedClassName = "$!{appName}Class")
34 | #set ($expectedClassLocations = [
35 | $services.model.createSpaceReference('Code', $appReference),
36 | $services.model.createSpaceReference("${appReference.name}Code", $appReference.parent),
37 | $appReference
38 | ])
39 | #set ($found = false)
40 | #foreach ($expectedClassLocation in $expectedClassLocations)
41 | #set ($expectedClassReference = $services.model.createDocumentReference($expectedClassName,
42 | $expectedClassLocation))
43 | #if ($xwiki.exists($expectedClassReference))
44 | #set ($found = true)
45 | #break
46 | #end
47 | #end
48 | #if (!$found)
49 | #set ($expectedClassReference = $NULL)
50 | #end
51 | #end
52 |
53 | #macro (getAppClassReference $appHomePage)
54 | #set ($appName = $appHomePage.pageReference.name)
55 | #set ($appReference = $appHomePage.documentReference.parent)
56 | ## Look for the application class in the expected location.
57 | #getExpectedAppClassReference($appName $appReference)
58 | #if ($expectedClassReference)
59 | #set ($classReference = $expectedClassReference)
60 | #else
61 | ## The application was probably moved or renamed.
62 | ## The configured class reference is relative to the application home page (holding the application descriptor).
63 | #set ($configuredClassReference = $services.model.resolveDocument("$!appHomePage.getValue('class')",
64 | $appHomePage.documentReference))
65 | #set ($previousAppName = $stringtool.removeEnd($configuredClassReference.name, 'Class'))
66 | ## Look for a class with the previous name in the current location.
67 | #getExpectedAppClassReference($previousAppName $appReference)
68 | #if ($expectedClassReference)
69 | #set ($classReference = $expectedClassReference)
70 | #else
71 | ## Use the configured class.
72 | #set ($classReference = $configuredClassReference)
73 | #end
74 | #end
75 | #end
76 | {{/velocity}}

Můj Deník
XWiki Debian 12.9