Show last authors
1 {{velocity output="false"}}
2 #macro (databaseSearchForm)
3 {{html clean="false"}}
4 <form action="$doc.getURL()" id="searchBar">
5 <div>
6 <label for="text" class="hidden">$services.localization.render('search.page.query.label')</label>
7 <input type="text" id="text" name="text" class="searchQuery" value="$!escapetool.xml($request.text)"
8 title="$services.localization.render('search.page.bar.query.title')"
9 placeholder="$services.localization.render('search.page.bar.query.tip')" />
10 <input type="text" name="space" class="suggestSpaces" value="$!escapetool.xml($request.space)"
11 placeholder="$services.localization.render('search.page.bar.spaces.title')" />
12 <span class='buttonwrapper'>
13 <input type="submit" class="searchButton button"
14 value="$services.localization.render('search.page.bar.submit')"
15 title="$services.localization.render('search.page.bar.submit.title')" />
16 </span>
17 </div>
18 </form>
19 {{/html}}
20 #end
21
22 #macro (databaseAddResults $statement $params $map)
23 #set ($query = $services.query.hql("$statement order by doc.date desc").addFilter('hidden').setLimit(50))
24 #foreach ($entry in $params.entrySet())
25 #set ($query = $query.bindValue($entry.key, $entry.value))
26 #end
27 #foreach ($localDocRef in $query.execute())
28 #set ($documentReference = $services.model.resolveDocument($localDocRef))
29 #if ($services.security.authorization.hasAccess('view', $documentReference))
30 #set ($discard = $map.put($documentReference, $xwiki.getDocument($documentReference)))
31 #end
32 #end
33 #end
34
35 #macro (databaseSearch $text $list)
36 #set ($results = {})
37 #set ($matchLocation = '')
38 #set ($params = {
39 'text': "%$text.replaceAll('([%_!])', '!$1')%"
40 })
41 ## Search in the specified location, if $request.space is defined
42 #set ($space = $request.space)
43 #if ("$!space" != '')
44 #set ($matchLocation = "(doc.space = :space or doc.space like :spacePrefix escape '!') and")
45 #set ($params.space = $space)
46 #set ($spaceReference = $services.model.resolveSpace($space))
47 #set ($documentReference = $services.model.createDocumentReference('x', $spaceReference))
48 #set ($params.spacePrefix = $stringtool.removeEnd($services.model.serialize($documentReference), 'x'))
49 #set ($params.spacePrefix = "$params.spacePrefix.replaceAll('([%_!])', '!$1')%")
50 #end
51 ## Search in the page names
52 #databaseAddResults(", XWikiSpace as space where $matchLocation space.reference = doc.space and ((doc.name <> 'WebHome' and upper(doc.name) like upper(:text) escape '!') or (doc.name = 'WebHome' and upper(space.name) like upper(:text) escape '!'))" $params $results)
53 ## Search in page content
54 #databaseAddResults("where $matchLocation upper(doc.content) like upper(:text) escape '!'" $params $results)
55 ## Search in text fields (simple String properties)
56 #databaseAddResults(", BaseObject as obj, StringProperty as prop where $matchLocation obj.name = doc.fullName and prop.id.id = obj.id and upper(prop.value) like upper(:text) escape '!'" $params $results)
57 ## Search in big text fields (textarea properties)
58 #databaseAddResults(", BaseObject as obj, LargeStringProperty as prop where $matchLocation obj.name = doc.fullName and prop.id.id = obj.id and upper(prop.value) like upper(:text) escape '!'" $params $results)
59 #set ($discard = $list.addAll($sorttool.sort($results, ['date'])))
60 #end
61 {{/velocity}}
62
63 {{velocity}}
64 #set ($rssMode = $xcontext.action == 'get' || "$!request.xpage" == 'plain')
65 #if (!$rssMode)
66 #set ($discard = $xwiki.ssfx.use('uicomponents/search/search.css', true))
67 ## Disable the document extra data: comments, attachments, history...
68 #set ($displayDocExtra = false)
69 #databaseSearchForm
70 #end
71 #set ($text = "$!request.text")
72 #if ($text != '')
73 #set ($list = [])
74 #databaseSearch($text $list)
75 #if ($rssMode)
76 #set ($feed = $xwiki.feed.getDocumentFeed($list, {}))
77 #set ($feedURI = $doc.getExternalURL("view"))
78 #set ($discard = $feed.setLink($feedURI))
79 #set ($discard = $feed.setUri($feedURI))
80 #set ($discard = $feed.setAuthor('XWiki'))
81 #set ($discard = $feed.setTitle($services.localization.render('search.rss', [$text])))
82 #set ($discard = $feed.setDescription($services.localization.render('search.rss', [$text])))
83 #set ($discard = $feed.setLanguage("$xcontext.locale"))
84 #set ($discard = $feed.setCopyright($xwiki.getXWikiPreference('copyright')))
85 #set ($discard = $response.setContentType('application/rss+xml'))
86 {{{$xwiki.feed.getFeedOutput($feed, $xwiki.getXWikiPreference('feed_type', 'rss_2.0'))}}}
87 #else
88 {{include reference="XWiki.Results"/}}
89
90 {{html clean="false"}}
91 #set ($rssURL = $doc.getURL('get', $escapetool.url({
92 'outputSyntax': 'plain',
93 'space': $space,
94 'text': $text
95 })))
96 <a href="$rssURL" class="hasIcon iconRSS">
97 $services.localization.render('search.rss', ["[$escapetool.xml($text)]"])
98 </a>
99 {{/html}}
100 #end
101 #end
102 {{/velocity}}

Tips

You can click on the arrows next to the breadcrumb elements to quickly navigate to sibling and children pages.

My Recent Modifications

Need help?

If you need help with XWiki you can contact: