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