Código fuente wiki de VelocityMacros
Última modificación por Administrator el 2024/06/06 11:39
Mostrar los últimos autores
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}} |