Wiki-Quellcode von SearchSuggestConfigSheet
Zuletzt geändert von admin am 2025/02/23 19:33
Zeige letzte Bearbeiter
| author | version | line-number | content |
|---|---|---|---|
| 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('{{', '{{') | ||
| 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}} |