Wiki-Quellcode von SearchSuggestConfigSheet

Zuletzt geändert von admin am 2025/02/23 19:33

Verstecke letzte Bearbeiter
admin 1.1 1 {{include reference="XWiki.SearchCode" /}}
2
3 {{velocity output="false"}}
4 #macro (displayObjectPropertyValue $propertyName $mode)
5 #unwrapXPropertyDisplay($doc.display($propertyName, $mode))
6 #end
7
8 #macro (displaySearchSuggestSource $source)
9 #set ($evaluatedSource = $source.evaluate())
10 #set ($icon = $source.getProperty('icon').value)
11 #if ($icon.startsWith('icon:'))
12 #set ($icon = $xwiki.getSkinFile("icons/silk/${icon.substring(5)}.png"))
13 #else
14 ## Evaluate the Velocity code for backward compatibility.
15 #set ($icon = $evaluatedSource.icon)
16 #end
17 #set ($name = $source.getProperty('name').value)
18 #if ($services.localization.get($name))
19 #set ($name = $services.localization.render($name))
20 #else
21 ## Evaluate the Velocity code for backward compatibility.
22 #set ($name = $evaluatedSource.name)
23 #end
24 #set ($style = 'source-header')
25 #if ("$source.getProperty('activated').value" == '1')
26 #set ($style = "$style activated")
27 #end
28 #if ("$source.getProperty('highlight').value" == '1')
29 #set ($style = "$style highlighted")
30 #end
31 <li class="source">
32 <div class="$style">
33 <img class="icon" src="$escapetool.xml($!icon)" alt="" />
34 <span class="limit">$escapetool.xml($!source.getProperty('resultsNumber').value)</span>
35 <span class="name">$escapetool.xml($!name)</span>
36 #if ($editing)
37 <div class="actions">
38 <a class="delete" href="$doc.getURL('objectremove', $escapetool.url({
39 'form_token': $services.csrf.token,
40 'classname': $searchSuggestSourceClassName,
41 'classid': $source.number,
42 'xredirect': $doc.getURL('edit')
43 }))">
44 $services.icon.renderHTML('cross')
45 </a>
46 </div>
47 #end
48 </div>
49 <div class="source-body hidden">
50 #set ($object = $source)
51 $sourceSheet.getRenderedContent().replace('{{', '&#123;&#123;')
52 </div>
53 </li>
54 #end
55 {{/velocity}}
56
57 {{velocity}}
58 {{html clean="false"}}
59 #set ($discard = $xwiki.ssx.use('XWiki.SearchSuggestConfigSheet'))
60 #set ($discard = $xwiki.jsx.use('XWiki.SearchSuggestConfigSheet'))
61 #set ($editing = $xcontext.action == 'admin' || $xcontext.action == 'edit' || $xcontext.action == 'inline')
62 #set ($mode = 'view')
63 #if ($editing)
64 #set ($mode = 'edit')
65 #end
66 #set($discard = $doc.use($doc.fullName))
67 <div class="xform">
68 <dl>
69 <dt>
70 <label#if ($editing) for="${doc.fullName}_0_activated"#end>
71 $doc.displayPrettyName('activated', false, false)
72 </label>
73 <span class="xHint">
74 $services.localization.render('XWiki.SearchSuggestConfig_activated.hint')
75 </span>
76 </dt>
77 <dd>#displayObjectPropertyValue('activated' $mode)</dd>
78 <dt>
79 <label>$services.localization.render('platform.search.suggestSources')</label>
80 <span class="xHint">$services.localization.render('platform.search.suggestSources.hint')</span>
81 </dt>
82 <dd>
83 #set ($searchSuggestSourceClassName = 'XWiki.SearchSuggestSourceClass')
84 ## Group sources by search engine.
85 #set ($sources = {})
86 #foreach ($source in $doc.getObjects($searchSuggestSourceClassName))
87 #set ($engine = $source.getProperty('engine').value)
88 #if ("$!engine" == '')
89 #set ($engine = 'solr')
90 #end
91 #set ($sourcesForEngine = $sources.get($engine))
92 #if (!$sourcesForEngine)
93 #set ($sourcesForEngine = [])
94 #set ($discard = $sources.put($engine, $sourcesForEngine))
95 #end
96 #set ($discard = $sourcesForEngine.add($source))
97 #end
98 ## Display the list of search engines.
99 #if ($sources.size() > 0)
100 <ul class="nav nav-tabs searchEngines" role="tablist">
101 #foreach ($engine in $collectiontool.sort($sources.keySet()))
102 <li#if ($engine == $searchEngine) class="active"#end role="presentation">
103 #set ($escapedEngine = $escapetool.xml($engine))
104 <a href="#${escapedEngine}SearchSuggestSources" aria-controls="${escapedEngine}SearchSuggestSources"
105 role="tab" data-toggle="tab">$escapedEngine</a>
106 </li>
107 #end
108 </ul>
109 #end
110 ## Display sources by search engine.
111 #set ($sourceSheet = $xwiki.getDocument('XWiki.SearchSuggestSourceSheet'))
112 <div class="tab-content">
113 #foreach ($engine in $sources.keySet())
114 ## We can't use the UL element as tab panel because we break the HTML validation tests: "Bad value 'tabpanel' for
115 ## attribute 'role' on element 'ul'". I don't understand the reason as there's no constraint on
116 ## https://www.w3.org/TR/2010/WD-wai-aria-20100916/roles#tabpanel .
117 #set ($escapedEngine = $escapetool.xml($engine))
118 <div class="tab-pane#if ($engine == $searchEngine) active#end" role="tabpanel"
119 id="${escapedEngine}SearchSuggestSources">
120 <ul class="searchSuggestSources">
121 #foreach ($source in $sources.get($engine))
122 #displaySearchSuggestSource($source)
123 #end
124 </ul>
125 </div>
126 #end
127 </div>
128 #if ($editing)
129 <ul class="searchSuggestSourceTemplate hidden">
130 #displaySearchSuggestSource({})
131 </ul>
132 <a class="addSearchSuggestSource" href="$doc.getURL('objectadd', $escapetool.url({
133 'form_token': $services.csrf.token,
134 'classname': $searchSuggestSourceClassName,
135 'xredirect': $xwiki.relativeRequestURL
136 }))">
137 $services.localization.render('platform.search.suggestAddNewSource')
138 </a>
139 #end
140 </dd>## Sources
141 </dl>
142 </div>## xform
143 {{/html}}
144 {{/velocity}}