Version 2.1 by Admin on 2010/03/02

Show last authors
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 <label for="text" class="hidden">$msg.get('xe.search.query')</label>
37 <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')"/>
38 #spaceselect($selectedSpace $spaces)
39 <input type="submit" class="searchButton" value="$msg.get('xe.search.bar.submit')" title="$msg.get('xe.search.bar.submit.title')"/>
40 </div>
41 </form>
42 {{/html}}
43 ##
44 #set($space = $selectedSpace)
45 #set($datedlist = $util.arrayList)
46 #if("$!text" == '')
47 ## No search
48 #else
49 #set($text = $text.replaceAll("'", "''").replaceAll("%", "\\%"))
50 #set($nbitems = 50)
51 ## ----------------------------------------------------------------------
52 ## Exclude Blacklisted spaces ($blacklistedSpaces is set in xwikivars.vm)
53 ## Also exclude WebPreferences.
54 ## ----------------------------------------------------------------------
55 #set ($webClause = '')
56 #foreach ($blacklistedSpace in $blacklistedSpaces)
57 #set ($webClause = "${webClause} doc.space <> '$blacklistedSpace' and")
58 #end
59 #if(!$hasAdmin && !$isAdvancedUser)
60 #set ($webClause = "${webClause} doc.name<>'WebPreferences' and")
61 #end
62 ## -----------------------------------------------------------
63 ## Display only a given space if $request.space is defined
64 ## -----------------------------------------------------------
65 #if("$!space" != '')
66 #set ($webClause = "${webClause} doc.space='$space' and")
67 #end
68 #macro(addelement $item $list)
69 #if($xwiki.hasAccessLevel('view', $context.user, "${context.database}:${item}"))
70 #set($itemdoc = $xwiki.getDocument($item))
71 ## All items will be sorted by the date; since the list is obtained from several queries, we can't order in the HQL.
72 ## Prefix all item names with the date for sorting the combined results.
73 #set($sdate = $xwiki.formatDate($itemdoc.date, 'yyyyMMddHHmmss'))
74 #set($sitem = "${sdate}${item}")
75 #if(!$list.contains($sitem))
76 #set($discard = $list.add($sitem))
77 #end
78 #end
79 #end
80 ## -----------------------------------------------------------
81 ## Search in the page names
82 ## -----------------------------------------------------------
83 #set ($sql = "where $webClause upper(doc.fullName) like upper('%$!text%') order by doc.date desc")
84 #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
85 #addelement($item $datedlist)
86 #end
87 ## -----------------------------------------------------------
88 ## Search in page content
89 ## -----------------------------------------------------------
90 #set ($sql = "where $webClause upper(doc.content) like upper('%$!text%') order by doc.date desc")
91 #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
92 #addelement($item $datedlist)
93 #end
94 ## -----------------------------------------------------------
95 ## Search in text fields (simple String properties)
96 ## -----------------------------------------------------------
97 #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%')")
98 #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
99 #addelement($item $datedlist)
100 #end
101 ## -----------------------------------------------------------
102 ## Search in big text fields (textarea properties)
103 ## -----------------------------------------------------------
104 #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%')")
105 #foreach ($item in $xwiki.searchDocuments($sql , $nbitems, 0))
106 #addelement($item $datedlist)
107 #end
108 #end
109 #set($list = $util.arrayList)
110 #foreach($item in $util.sort($datedlist))
111 ## datedlist contains items prefixed with the date; strip the date from the actual item name:
112 #set($ok = $list.add(0, $item.substring(14)))
113 #end
114 #if ("$!utext" != '')
115 #if($rssmode)
116 #set ($feed = $xwiki.feed.getDocumentFeed($list, $util.getHashMap()))
117 #set ($feedURI = $doc.getExternalURL("view"))
118 #set ($discard = $feed.setLink($feedURI))
119 #set ($discard = $feed.setUri($feedURI))
120 #set ($discard = $feed.setAuthor('XWiki'))
121 #set ($discard = $feed.setTitle($msg.get('xe.search.rss', [$text])))
122 #set ($discard = $feed.setDescription($msg.get('xe.search.rss', [$text])))
123 #set ($discard = $feed.setLanguage($context.language))
124 #set ($discard = $feed.setCopyright($xwiki.getXWikiPreference('copyright')))
125 $xwiki.feed.getFeedOutput($feed, $xwiki.getXWikiPreference('feed_type', 'rss_2.0'))
126 #else
127 {{include document="XWiki.Results"/}}
128 #if($selectedSpace == '')
129 #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=plain&amp;outputSyntax=plain&amp;text=${utext}" ))
130 #else
131 #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=plain&amp;outputSyntax=plain&space=${selectedSpace}&text=${utext}"))
132 #end
133 {{html}}
134 <a href="${rssURL}"><img src="$xwiki.getSkinFile("icons/silk/feed.gif")" alt="RSS icon"/>$msg.get("xe.search.rss", ["[$text]"])</a>
135 {{/html}}
136 #set($luceneSearch = "[[Main.LuceneSearch?text=$!utext]]")
137 {{info}}$msg.get('xe.search.lucene.try', [$luceneSearch]){{/info}}
138 #end
139 #end
140 {{velocity}}

Get Connected