Wiki source code of #if("$!{request.text}"=="")$msg.get("xe.search.web")#else$msg.get("xe.search.web.results", [$request.text])#end
Version 1.1 by Admin on 2009/09/09
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{velocity}} | ||
2 | $xwiki.jsfx.use("uicomponents/search/search.js", false)## | ||
3 | $xwiki.ssfx.use("uicomponents/search/search.css", true)## | ||
4 | ## Disable the document extra data: comments, attachments, history... | ||
5 | #set($docextras = []) | ||
6 | #set ($rssmode = ("$!request.xpage" == 'plain')) | ||
7 | ## --------------- | ||
8 | ## Space filtering | ||
9 | ## --------------- | ||
10 | #set($spaces = $xwiki.spaces) | ||
11 | #set($selectedSpace = "$!request.space") | ||
12 | ## --------------- | ||
13 | ## Space macros | ||
14 | ## --------------- | ||
15 | #macro(spaceoption $space $selectedSpace) | ||
16 | <option value="${space}" #if($selectedSpace == $space)selected="selected"#end>$space</option> | ||
17 | #end | ||
18 | #macro(spaceselect $selectedSpace $spaces) | ||
19 | <select name="space" title="$msg.get('xe.search.bar.spaces.title')"> | ||
20 | <option value="" #if($selectedSpace == '')selected="selected"#end>$msg.get('xe.search.bar.spaces.all')</option> | ||
21 | #foreach($space in $spaces) | ||
22 | #if (!$blacklistedSpaces.contains($space)) | ||
23 | #spaceoption($space $selectedSpace) | ||
24 | #end | ||
25 | #end | ||
26 | </select> | ||
27 | #end | ||
28 | ## | ||
29 | ## | ||
30 | #set($text = "$!request.getParameter('text')") | ||
31 | #set($utext = $util.encodeURI($text)) | ||
32 | ## | ||
33 | {{html}} | ||
34 | <form action="" id="searchBar"> | ||
35 | <div class="centered"> | ||
36 | <input type="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')"/> | ||
37 | #spaceselect($selectedSpace $spaces) | ||
38 | <input type="submit" class="searchButton" value="$msg.get('xe.search.bar.submit')" title="$msg.get('xe.search.bar.submit.title')"/> | ||
39 | </div> | ||
40 | </form> | ||
41 | {{/html}} | ||
42 | ## | ||
43 | #set($space = $selectedSpace) | ||
44 | #set($datedlist = $util.arrayList) | ||
45 | #if("$!text" == '') | ||
46 | ## No search | ||
47 | #else | ||
48 | #set($text = $text.replaceAll("'", "''").replaceAll("%", "\\%")) | ||
49 | #set($nbitems = 50) | ||
50 | ## ---------------------------------------------------------------------- | ||
51 | ## Exclude Blacklisted spaces ($blacklistedSpaces is set in xwikivars.vm) | ||
52 | ## Also exclude WebPreferences. | ||
53 | ## ---------------------------------------------------------------------- | ||
54 | #set ($webClause = '') | ||
55 | #foreach ($blacklistedSpace in $blacklistedSpaces) | ||
56 | #set ($webClause = "${webClause} doc.space <> '$blacklistedSpace' and") | ||
57 | #end | ||
58 | #if(!$hasAdmin && !$isAdvancedUser) | ||
59 | #set ($webClause = "${webClause} doc.name<>'WebPreferences' and") | ||
60 | #end | ||
61 | ## ----------------------------------------------------------- | ||
62 | ## Display only a given space if $request.space is defined | ||
63 | ## ----------------------------------------------------------- | ||
64 | #if("$!space" != '') | ||
65 | #set ($webClause = "${webClause} doc.space='$space' and") | ||
66 | #end | ||
67 | #macro(addelement $item $list) | ||
68 | #if($xwiki.hasAccessLevel('view', $context.user, "${context.database}:${item}")) | ||
69 | #set($itemdoc = $xwiki.getDocument($item)) | ||
70 | ## All items will be sorted by the date; since the list is obtained from several queries, we can't order in the HQL. | ||
71 | ## Prefix all item names with the date for sorting the combined results. | ||
72 | #set($sdate = $xwiki.formatDate($itemdoc.date, 'yyyyMMddHHmmss')) | ||
73 | #set($sitem = "${sdate}${item}") | ||
74 | #if(!$list.contains($sitem)) | ||
75 | #set($discard = $list.add($sitem)) | ||
76 | #end | ||
77 | #end | ||
78 | #end | ||
79 | ## ----------------------------------------------------------- | ||
80 | ## Search in the page names | ||
81 | ## ----------------------------------------------------------- | ||
82 | #set ($sql = "where $webClause upper(doc.fullName) like upper('%$!text%') order by doc.date desc") | ||
83 | #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0)) | ||
84 | #addelement($item $datedlist) | ||
85 | #end | ||
86 | ## ----------------------------------------------------------- | ||
87 | ## Search in page content | ||
88 | ## ----------------------------------------------------------- | ||
89 | #set ($sql = "where $webClause upper(doc.content) like upper('%$!text%') order by doc.date desc") | ||
90 | #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0)) | ||
91 | #addelement($item $datedlist) | ||
92 | #end | ||
93 | ## ----------------------------------------------------------- | ||
94 | ## Search in text fields (simple String properties) | ||
95 | ## ----------------------------------------------------------- | ||
96 | #set($sql= ", BaseObject as obj, StringProperty as prop where $webClause obj.name=doc.fullName and prop.id.id = obj.id and upper(prop.value) like upper('%$!text%')") | ||
97 | #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0)) | ||
98 | #addelement($item $datedlist) | ||
99 | #end | ||
100 | ## ----------------------------------------------------------- | ||
101 | ## Search in big text fields (textarea properties) | ||
102 | ## ----------------------------------------------------------- | ||
103 | #set($sql= ", BaseObject as obj, LargeStringProperty as prop where $webClause obj.name=doc.fullName and prop.id.id = obj.id and upper(prop.value) like upper('%$!text%')") | ||
104 | #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0)) | ||
105 | #addelement($item $datedlist) | ||
106 | #end | ||
107 | #end | ||
108 | #set($list = $util.arrayList) | ||
109 | #foreach($item in $util.sort($datedlist)) | ||
110 | ## datedlist contains items prefixed with the date; strip the date from the actual item name: | ||
111 | #set($ok = $list.add(0, $item.substring(14))) | ||
112 | #end | ||
113 | #if ("$!utext" != '') | ||
114 | #if($rssmode) | ||
115 | #set ($feed = $xwiki.feed.getDocumentFeed($list, $util.getHashMap())) | ||
116 | #set ($feedURI = $doc.getExternalURL("view")) | ||
117 | #set ($discard = $feed.setLink($feedURI)) | ||
118 | #set ($discard = $feed.setUri($feedURI)) | ||
119 | #set ($discard = $feed.setAuthor('XWiki')) | ||
120 | #set ($discard = $feed.setTitle($msg.get('xe.search.rss', [$text]))) | ||
121 | #set ($discard = $feed.setDescription($msg.get('xe.search.rss', [$text]))) | ||
122 | #set ($discard = $feed.setLanguage($context.language)) | ||
123 | #set ($discard = $feed.setCopyright($xwiki.getXWikiPreference('copyright'))) | ||
124 | $xwiki.feed.getFeedOutput($feed, $xwiki.getXWikiPreference('feed_type', 'rss_2.0')) | ||
125 | #else | ||
126 | {{include document="XWiki.Results"/}} | ||
127 | #if($selectedSpace == '') | ||
128 | #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=plain&outputSyntax=plain&text=${utext}" )) | ||
129 | #else | ||
130 | #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=plain&outputSyntax=plain&space=${selectedSpace}&text=${utext}")) | ||
131 | #end | ||
132 | {{html}} | ||
133 | <a href="${rssURL}"><img src="$xwiki.getSkinFile("icons/silk/feed.gif")" alt="RSS icon"/>$msg.get("xe.search.rss", ["[$text]"])</a> | ||
134 | {{/html}} | ||
135 | #set($luceneSearch = "[[Main.LuceneSearch?text=$!utext]]") | ||
136 | {{info}}$msg.get('xe.search.lucene.try', [$luceneSearch]){{/info}} | ||
137 | #end | ||
138 | #end | ||
139 | {{velocity}} |