Code source wiki de #if("$!{request.text}"=="")$msg.get("xe.search.lucene")#else$msg.get("xe.search.lucene.results", [$request.text])#end
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{velocity}} | ||
| 2 | $xwiki.jsfx.use("uicomponents/search/search.js", true)## | ||
| 3 | $xwiki.ssfx.use("uicomponents/search/search.css", true)## | ||
| 4 | ## Disable the document extra data: comments, attachments, history... | ||
| 5 | #set($docextras = []) | ||
| 6 | ## =================== | ||
| 7 | ## Lucene search | ||
| 8 | ## =================== | ||
| 9 | ## Inputs : $request.text | ||
| 10 | ## Outputs : $list, $isScored | ||
| 11 | ## =================== | ||
| 12 | ## Uncomment this line to overload the maximum list of wiki where to search (also the one listed in the wikis combobox) | ||
| 13 | ## #set($allwikinamelist = ["xwiki", "wiki1", "wiki2"]) | ||
| 14 | ## | ||
| 15 | ## Uncomment this line to overload the wikis where to search | ||
| 16 | ## #set($wikinames = "xwiki,wiki,wiki") | ||
| 17 | ## | ||
| 18 | ## Uncomment this line to overload the languages to search | ||
| 19 | ## #set($languages = "default,en,de") | ||
| 20 | #set ($rssmode = ("$!request.xpage" == 'plain')) | ||
| 21 | ## --------------- | ||
| 22 | ## Space filtering | ||
| 23 | ## --------------- | ||
| 24 | #set($extraClause = '') | ||
| 25 | #set($selectedSpace = "$!request.space") | ||
| 26 | #if($selectedSpace != '' && !$blacklistedSpaces.contains($selectedSpace)) | ||
| 27 | #set($extraClause = " AND web:${selectedSpace}") | ||
| 28 | #end | ||
| 29 | ## ---------------------------------------------------------------------- | ||
| 30 | ## Exclude Blacklisted spaces ($blacklistedSpaces is set in xwikivars.vm) | ||
| 31 | ## Also exclude WebPreferences. | ||
| 32 | ## ---------------------------------------------------------------------- | ||
| 33 | #foreach ($blacklistedSpace in $blacklistedSpaces) | ||
| 34 | #set ($extraClause = " AND NOT web:${blacklistedSpace}${extraClause}") | ||
| 35 | #end | ||
| 36 | #if(!$hasAdmin && !$isAdvancedUser) | ||
| 37 | #set ($extraClause = " AND NOT name:WebPreferences${extraClause}") | ||
| 38 | #end | ||
| 39 | ## --------------- | ||
| 40 | ## Space macros | ||
| 41 | ## --------------- | ||
| 42 | #macro(spaceoption $space $selectedSpace) | ||
| 43 | <option value="${space}" #if($selectedSpace == $space)selected="selected"#end>$space</option> | ||
| 44 | #end | ||
| 45 | #macro(spaceselect $selectedSpace $spaces) | ||
| 46 | <select name="space" title="$msg.get('xe.search.bar.spaces.title')"> | ||
| 47 | <option value="" #if($selectedSpace == '')selected="selected"#end>$msg.get('xe.search.bar.spaces.all')</option> | ||
| 48 | #foreach($space in $xwiki.spaces) | ||
| 49 | #if (!$blacklistedSpaces.contains($space)) | ||
| 50 | #spaceoption($space $selectedSpace) | ||
| 51 | #end | ||
| 52 | #end | ||
| 53 | </select> | ||
| 54 | #end | ||
| 55 | ## --------------- | ||
| 56 | ## Wikis filtering | ||
| 57 | ## --------------- | ||
| 58 | #set($wikinamelist = []) | ||
| 59 | #if(!$wikinames) | ||
| 60 | #set($wikinametable = $request.getParameterValues("wikinames")) | ||
| 61 | #if(!$wikinametable || $request.wikinames == "") | ||
| 62 | #set($wikinametable = $allwikinamelist) | ||
| 63 | #end | ||
| 64 | #set($wikinames = "") | ||
| 65 | #foreach($wikiname in $wikinametable) | ||
| 66 | #set($ok = $wikinamelist.add($wikiname)) | ||
| 67 | #if($wikinames != "") | ||
| 68 | #set($wikinames = $wikinames + ",") | ||
| 69 | #end | ||
| 70 | #set($wikinames = $wikinames + $wikiname) | ||
| 71 | #end | ||
| 72 | #else | ||
| 73 | #set($wikinametable = $wikinames.split(", ")) | ||
| 74 | #foreach($wikiname in $wikinametable) | ||
| 75 | #set($ok = $wikinamelist.add($wikiname)) | ||
| 76 | #end | ||
| 77 | #end | ||
| 78 | ## | ||
| 79 | #if($xwiki.isVirtualMode()) | ||
| 80 | #if(!$allwikinamelist) | ||
| 81 | #set($currentwikiname = $context.database) | ||
| 82 | #set($ok = $context.setDatabase($context.mainWikiName)) | ||
| 83 | #set($allwikilist = $xwiki.searchDocuments(", BaseObject as obj, StringProperty as prop where doc.fullName=obj.name and obj.className='XWiki.XWikiServerClass' and prop.id.id=obj.id and prop.id.name='server'")) | ||
| 84 | #set($ok = $context.setDatabase($currentwikiname)) | ||
| 85 | ## | ||
| 86 | #set($allwikinamelist = []) | ||
| 87 | #foreach($wiki in $allwikilist) | ||
| 88 | #set($ok = $allwikinamelist.add($wiki.substring(17).toLowerCase())) | ||
| 89 | #end | ||
| 90 | #if(!$allwikinamelist.contains($context.mainWikiName)) | ||
| 91 | #set($ok = $allwikinamelist.add($context.mainWikiName)) | ||
| 92 | #end | ||
| 93 | #end | ||
| 94 | ## --------------- | ||
| 95 | ## Wikis macros | ||
| 96 | ## --------------- | ||
| 97 | #macro(wikinamesoption $wikiname $wikinamelist) | ||
| 98 | <option value="$wikiname" #if($wikinamelist.contains($wikiname))selected="selected"#end>$wikiname</option> | ||
| 99 | #end | ||
| 100 | #macro(wikinamesselect $allwikinamelist $wikinamelist) | ||
| 101 | <select name="wikinames"> | ||
| 102 | <option value="" selected="selected">All</option> | ||
| 103 | #foreach($wikiname in $allwikinamelist) | ||
| 104 | #wikinamesoption($wikiname $wikinamelist) | ||
| 105 | #end | ||
| 106 | </select> | ||
| 107 | #end | ||
| 108 | #else | ||
| 109 | #if($wikinames == "") | ||
| 110 | #set($wikinames = $context.mainWikiName) | ||
| 111 | #end | ||
| 112 | #end | ||
| 113 | ## --------------- | ||
| 114 | ## Query preparation | ||
| 115 | ## --------------- | ||
| 116 | #set($text = "$!request.getParameter('text')") | ||
| 117 | #set($query = $text) | ||
| 118 | #set($utext = $util.encodeURI($query)) | ||
| 119 | #set($defaultItemsPerPage = 30) | ||
| 120 | #set($itemsPerPage = $util.parseInt("$!{request.perPage}")) | ||
| 121 | #if($itemsPerPage <= 0) | ||
| 122 | #set($itemsPerPage = $defaultItemsPerPage) | ||
| 123 | #end | ||
| 124 | ## --------------- | ||
| 125 | ## Query form | ||
| 126 | ## --------------- | ||
| 127 | #if(!$rssmode) | ||
| 128 | {{html}} | ||
| 129 | <form action="" method="get" id="searchBar"> | ||
| 130 | <div class="centered"> | ||
| 131 | <label for="text" class="hidden">$msg.get('xe.search.query')</label> | ||
| 132 | <input type="text" id="text" name="text" class="searchQuery #if($text == '') defaultText#end" #if($text == '') value="$msg.get('xe.search.bar.query.tip')" #else value="$xwiki.getXMLEncoded(${text})" #end title="$msg.get('xe.search.bar.query.title')"/> | ||
| 133 | #spaceselect($selectedSpace $spaces) | ||
| 134 | <input type="submit" class="searchButton" value="$msg.get('xe.search.bar.submit')" title="$msg.get('xe.search.bar.submit.title')"/> | ||
| 135 | <div class="searchHelp">$msg.get('xe.search.bar.queryTip')</div> | ||
| 136 | </div> | ||
| 137 | </form> | ||
| 138 | {{/html}} | ||
| 139 | #end | ||
| 140 | ## --------------- | ||
| 141 | ## Results processing | ||
| 142 | ## --------------- | ||
| 143 | #if($query != '') | ||
| 144 | #set($lucene = $xwiki.getPlugin("lucene")) | ||
| 145 | #if($lucene) | ||
| 146 | ## --------------- | ||
| 147 | ## Lucene search | ||
| 148 | ## --------------- | ||
| 149 | #set($searchresults = $lucene.getSearchResults("${query}${extraClause}", $wikinames, $!languages, $xwiki)) | ||
| 150 | #if($searchresults.getHitcount() > 0) | ||
| 151 | ## ----------------- | ||
| 152 | ## Pagination (top) | ||
| 153 | ## ----------------- | ||
| 154 | #if(!$rssmode) | ||
| 155 | #set($paginationParameters = {'url' : $doc.getURL('view', "text=${query}&space=${selectedSpace}"), 'totalItems' : $searchresults.getHitcount(), 'defaultItemsPerPage' : $defaultItemsPerPage, 'position': 'top'}) | ||
| 156 | {{html}} | ||
| 157 | #pagination($paginationParameters) | ||
| 158 | {{/html}} | ||
| 159 | #end | ||
| 160 | ## ----------------- | ||
| 161 | ## Display results | ||
| 162 | ## ----------------- | ||
| 163 | #set($firstIndex = "$!{paginationParameters.firstItem}") | ||
| 164 | #if($firstIndex == '') | ||
| 165 | #set($firstIndex = "$!request.getParameter('firstIndex')") | ||
| 166 | #if($firstIndex == '') | ||
| 167 | #set($firstIndex = '0') | ||
| 168 | #end | ||
| 169 | #end | ||
| 170 | #set($firstIndex = $util.parseInt($firstIndex)) | ||
| 171 | #set($firstIndex = $firstIndex + 1) | ||
| 172 | #set($results = $searchresults.getResults("$firstIndex", "$itemsPerPage")) | ||
| 173 | #if ($rssmode) | ||
| 174 | #set ($list = $util.arrayList) | ||
| 175 | #foreach ($item in $results) | ||
| 176 | #if ($item.type != "attachment") | ||
| 177 | #set ($ok = $list.add(0, "${item.web}.${item.name}")) | ||
| 178 | #end | ||
| 179 | #end | ||
| 180 | #set ($feed = $xwiki.feed.getDocumentFeed($list, $util.getHashMap())) | ||
| 181 | #set ($feedURI = $doc.getExternalURL("view")) | ||
| 182 | #set ($discard = $feed.setLink($feedURI)) | ||
| 183 | #set ($discard = $feed.setUri($feedURI)) | ||
| 184 | #set ($discard = $feed.setAuthor('XWiki')) | ||
| 185 | #set ($discard = $feed.setTitle($msg.get('xe.search.rss', [$text]))) | ||
| 186 | #set ($discard = $feed.setDescription($msg.get('xe.search.rss', [$text]))) | ||
| 187 | #set ($discard = $feed.setLanguage($context.language)) | ||
| 188 | #set ($discard = $feed.setCopyright($xwiki.getXWikiPreference('copyright'))) | ||
| 189 | $xwiki.feed.getFeedOutput($feed, 'rss_2.0') | ||
| 190 | #else | ||
| 191 | #set ($list = $results) | ||
| 192 | #set ($isScored = true) | ||
| 193 | {{include document="XWiki.Results"/}} | ||
| 194 | #end | ||
| 195 | ## ----------------- | ||
| 196 | ## Pagination (bottom) | ||
| 197 | ## ----------------- | ||
| 198 | #if(!$rssmode) | ||
| 199 | #set($paginationParameters.position = 'bottom') | ||
| 200 | {{html}} | ||
| 201 | #pagination($paginationParameters) | ||
| 202 | {{/html}} | ||
| 203 | ## --------------- | ||
| 204 | ## RSS link | ||
| 205 | ## --------------- | ||
| 206 | #if($selectedSpace == '') | ||
| 207 | #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=rdf&text=${utext}" )) | ||
| 208 | #else | ||
| 209 | #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=rdf&space=${selectedSpace}&text=${utext}")) | ||
| 210 | #end | ||
| 211 | {{html}} | ||
| 212 | <a href="${rssURL}"><img src="$xwiki.getSkinFile("icons/silk/feed.gif")" alt="RSS icon"/>$msg.get("xe.search.rss", ["[$query]"])</a> | ||
| 213 | {{/html}} | ||
| 214 | #end | ||
| 215 | #end | ||
| 216 | #else | ||
| 217 | |||
| 218 | {{error}}$msg.get('xe.search.plugin.notfound')){{/error}} | ||
| 219 | #end | ||
| 220 | #end | ||
| 221 | #if (!$rssmode) | ||
| 222 | ## --------------- | ||
| 223 | ## Rebuild processing | ||
| 224 | ## --------------- | ||
| 225 | #set($lucene = $xwiki.getPlugin("lucene")) | ||
| 226 | #if($lucene) | ||
| 227 | #set($doRebuild = "$!{request.getParameter('rebuild')}") | ||
| 228 | #if($doRebuild == "yes") | ||
| 229 | #set($documentCount = $lucene.rebuildIndex()) | ||
| 230 | #if(${documentCount} >= 0) | ||
| 231 | |||
| 232 | {{info}}$msg.get("xe.search.rebuild.started"){{/info}} | ||
| 233 | #elseif(${documentCount} == -1) | ||
| 234 | |||
| 235 | {{error}}$msg.get("xe.search.rebuild.rights"){{/error}} | ||
| 236 | |||
| 237 | #elseif(${documentCount} == -2) | ||
| 238 | |||
| 239 | {{error}}$msg.get("xe.search.rebuild.inprogress"){{/error}} | ||
| 240 | #else | ||
| 241 | |||
| 242 | {{error}}$msg.get("xe.search.rebuild.failed"){{/error}} | ||
| 243 | #end | ||
| 244 | #else## !doRebuild | ||
| 245 | ## --------------- | ||
| 246 | ## Queue & rebuild option | ||
| 247 | ## --------------- | ||
| 248 | #set ($queuesize = $xwiki.lucene.getQueueSize()) | ||
| 249 | #if ($queuesize > 2) | ||
| 250 | #set($info1 = $msg.get('xe.search.rebuild.currently', [${queuesize}])) | ||
| 251 | #else | ||
| 252 | #set($info1 = $msg.get('xe.search.index.uptodate')) | ||
| 253 | #end | ||
| 254 | #if($hasAdmin) | ||
| 255 | #set($info2 = " [[$msg.get('xe.search.index.rebuild')>>${doc.space}.${doc.name}?rebuild=yes]].") | ||
| 256 | #else | ||
| 257 | #set($info2 = "") | ||
| 258 | #end | ||
| 259 | |||
| 260 | {{info}}${info1}${info2}{{/info}} | ||
| 261 | #end## doRebuild | ||
| 262 | #set($defaultSearch = "[[$msg.get('xe.search.default.engine')>>WebSearch?text=$utext]]") | ||
| 263 | |||
| 264 | {{warning}}$msg.get('xe.search.lucene.experimental', [$defaultSearch]){{/warning}} | ||
| 265 | |||
| 266 | #else## !lucene exists | ||
| 267 | #set($defaultSearch = "[[$msg.get('xe.search.default.engine')>>WebSearch?text=$utext]]") | ||
| 268 | |||
| 269 | {{warning}}$msg.get('xe.search.plugin.notenabled', [$defaultSearch]){{/warning}} | ||
| 270 | #end## lucene exists | ||
| 271 | #end## !$rssmode | ||
| 272 | {{/velocity}} |