Wiki-Quellcode von ColorThemePropertyDisplayer

Zuletzt geändert von Daniel Herrmann am 2025/06/22 18:45

Verstecke letzte Bearbeiter
admin 1.1 1 {{velocity}}
2 ################################
3 ## Globals
4 ################################
5 #set ($isSubWiki = $services.wiki.currentWikiId != $services.wiki.mainWikiId)
6 #set ($flamingoThemesFromThisWiki = [])
7 #set ($flamingoThemesFromMainWiki = [])
8 #set ($colibriThemesFromThisWiki = [])
9 #set ($colibriThemesFromMainWiki = [])
10 #getFlamingoThemes($services.wiki.currentWikiId, $flamingoThemesFromThisWiki)
11 #getColibriThemes ($services.wiki.currentWikiId, $colibriThemesFromThisWiki )
12 #if ($isSubWiki)
13 #getFlamingoThemes($services.wiki.mainWikiId, $flamingoThemesFromMainWiki)
14 #getColibriThemes ($services.wiki.mainWikiId, $colibriThemesFromMainWiki )
15 ## Enable the JavaScript for subwiki only
16 #set ($discard = $xwiki.jsx.use('XWiki.ColorThemePropertyDisplayer'))
17 #end
18 #set ($currentScope = 'local')
19 #if ("$!value" != '' && $services.model.resolveDocument($value).wikiReference.name == $services.wiki.mainWikiId)
20 #set ($currentScope = 'global')
21 #end
22 ################################
23 ## Get Flamingo themes
24 ################################
25 #macro(getFlamingoThemes $wiki $return)
26 #set ($results = [])
27 #set ($xwql = "from doc.object(FlamingoThemesCode.ThemeClass) obj WHERE doc.fullName <> 'FlamingoThemesCode.ThemeTemplate' ORDER BY doc.name")
28 #getThemesFromQuery ($xwql, $wiki, $results)
29 #set ($return = $NULL)
30 #setVariable ("$return", $results)
31 #end
32 ################################
33 ## Get Colibri themes
34 ################################
35 #macro(getColibriThemes $wiki $return)
36 #set ($results = [])
37 #set ($xwql = "from doc.object(ColorThemes.ColorThemeClass) obj WHERE doc.fullName <> 'ColorThemes.ColorThemeTemplate' ORDER BY doc.name")
38 #getThemesFromQuery ($xwql, $wiki, $results)
39 #set ($return = $NULL)
40 #setVariable ("$return" $results)
41 #end
42 ################################
43 ## Get themes from a query
44 ################################
45 #macro(getThemesFromQuery $xwql $wiki $return)
46 #set ($wikiReference = $services.model.createWikiReference($wiki))
47 #set ($themes = $services.query.xwql($xwql).setWiki($wiki).execute())
48 #set ($themesRef = [])
49 #foreach ($theme in $themes)
50 #set ($themeRef = $services.model.resolveDocument($theme, 'default', $wikiReference))
51 #if ($services.security.authorization.hasAccess('view', $xcontext.userReference, $themeRef))
52 #set ($discard = $themesRef.add($themeRef))
53 #end
54 #end
55 #set ($return = $NULL)
56 #setVariable("$return" $themesRef)
57 #end
58 ################################
59 ## Display an <option> line
60 ################################
61 #macro(displayLine $themeRef $scope)
62 #set($themeDoc = $xwiki.getDocument($themeRef))
63 #if ($scope == 'local')
64 #set($fullName = $services.model.serialize($themeRef, 'local'))
65 #else
66 #set($fullName = $services.model.serialize($themeRef, 'default'))
67 #end
68 <option value="$fullName"#if ($fullName.equals($value)) selected="selected"#end>
69 $themeDoc.plainTitle
70 #if ($isSubWiki && $scope == 'local')
71 ($themeRef.wikiReference.name)
72 #end
73 </option>
74 #end
75 ################################
76 ## Display lines for a skin
77 ################################
78 #macro(displaySkinLines $themesRef $name $scope)
79 #if (!$themesRef.isEmpty())
80 <optgroup label="$name" data-scope="$scope">
81 #foreach ($themeRef in $themesRef)
82 #displayLine($themeRef, $scope)
83 #end
84 </optgroup>
85 #end
86 #end
87 ################################
88 ## Displayer
89 ################################
90 {{html}}
91 <div class="XWikiColorThemeDisplayer">
92 #set ($colorThemeExists = $xwiki.exists($services.model.resolveDocument($value)))
93 #if ("$!value" != '' && !$colorThemeExists)
Daniel Herrmann 2.1 94 #error($services.localization.render('admin.colorthemes.invalidtheme', $escapetool.xml($value)))
admin 1.1 95 #end
96
97 #if ($isSubWiki && (!$flamingoThemesFromMainWiki.isEmpty() || !$colibriThemesFromMainWiki.isEmpty()))
98 <ul class="nav nav-tabs" role="tablist">
99 <li role="presentation" #if ($currentScope=='local')class="active"#end><a href="#local" role="tab" data-toggle="tab" data-scope="local">$escapetool.xml($services.localization.render('admin.colorthemes.local'))</a></li>
100 <li role="presentation" #if ($currentScope=='global')class="active"#end><a href="#global" role="tab" data-toggle="tab" data-scope="global">$escapetool.xml($services.localization.render('admin.colorthemes.global'))</a></li>
101 </ul>
102 #end
103
104 <select name="${prefix}${name}" id="${prefix}${name}" data-current-scope="$currentScope">
105 #if (!$colorThemeExists)
106 <option value="$!escapetool.xml($value)" selected="selected">---</option>
107 #else
108 <option value=""#if ("$!value" == '')selected="selected"#end>---</option>
109 #end
110 #displaySkinLines($flamingoThemesFromThisWiki, $services.localization.render('admin.colorthemes.flamingothemes'), 'local')
111 #displaySkinLines($colibriThemesFromThisWiki, $services.localization.render('admin.colorthemes.colibrithemes'), 'local')
112 #if ($isSubWiki)
113 #displaySkinLines($flamingoThemesFromMainWiki, $services.localization.render('admin.colorthemes.flamingothemes'), 'global')
114 #displaySkinLines($colibriThemesFromMainWiki, $services.localization.render('admin.colorthemes.colibrithemes'), 'global')
115 #end
116 </select>
117 </div>
118 {{/html}}
119 {{/velocity}}
120