Wiki-Quellcode von ColorThemePropertyDisplayer
Zuletzt geändert von Daniel Herrmann am 2025/06/22 18:45
Zeige letzte Bearbeiter
| author | version | line-number | content |
|---|---|---|---|
| 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) | ||
| 94 | #error($services.localization.render('admin.colorthemes.invalidtheme', $escapetool.xml($value))) | ||
| 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}} |