Version 1.1 by Admin on 2009/09/09

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 <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&amp;outputSyntax=plain&amp;text=${utext}" ))
129 #else
130 #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=plain&amp;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}}

Get Connected