forked from yolabingo/dotcms-htmx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
search-results-htmx.vtl
120 lines (107 loc) · 4.22 KB
/
search-results-htmx.vtl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
##SETTING VARIABLES =========
#set($exclude = "-mimeType:*css* -mimeType:*js* -mimeType:*plain -mimeType:*jpg -mimeType:*png -mimeType:*jpeg -mimeType:*javascript* -mimeType:*velocity*")
#set($urlList = $contents.getEmptyList())
#if ($UtilMethods.isSet($request.getParameter("q")))
#set($q = $request.getParameter("q"))
#set($qUrl = "q=$!{q}")
#end
#set($show = 10)
#set($page = $request.getParameter("p"))
#if(! $UtilMethods.isSet($page))
#set($page = 0)
#end
#set($page = $math.add($page, 0))
#if($page < 0)
#set($page = 0)
#end
#set($offset = $math.mul($page, $show))
#set($end = $math.mul($math.add($page,1), $show))
#if($UtilMethods.isSet($request.getParameter("q")))
## QUERY =============
#set($runQ = $q.replaceAll("\"", ""))
#set($newQ = "")
#if(!$runQ.contains("+"))
#foreach($xx in $runQ.split(" "))
#set($newQ = " $newQ +(content:$xx title:$xx $xx*) ")
#end
#set($runQ = "$newQ")
#end
#if($UtilMethods.isSet($mimeType))
#set($runQ = "$runQ +mimeType:$mimeType")
#end
#if($UtilMethods.isSet($keyword))
#if($keyword.contains(" "))
#set($runQ = "$runQ +keywords:${esc.q}$keyword${esc.q}")
#else
#set($runQ = "$runQ +keywords:$keyword")
#end
#end
#if($UtilMethods.isSet($modifiedOn))
#set($runQ = "$runQ +modified:$modifiedOn")
#end
#set($runQ = "$runQ $exclude")
##CALLING SEARCH VIEWTOOL =======
##set($indexToSearch = "Site Search")
## null for the first argument searches the 'default' index
#set($pagedsearchresults = $sitesearch.search($indexToSearch, $!runQ, $offset, $end))
#set($totalsearchresults = $sitesearch.search($indexToSearch, $!runQ, 0, 5000))
##PAGINATION VARIABLES =============
##set($numberOfPages = $math.div($pagedsearchresults.totalResults,$show))
#set($numberOfPages = $math.div($pagedsearchresults.totalHits,$show))
#set($intPages = $math.toInteger($numberOfPages))
#if($intPages < $numberOfPages)
#set($numberOfPages = $math.add($intPages, 1))
#end
#end
#if($page == 0)
#if($totalsearchresults.results.size() > 0)
<p class="results-info">We found <b>$totalsearchresults.results.size()</b> results in your search</p>
#else
<p class="results-info">No results found</p>
#end
#end
#if($pagedsearchresults.results.size() > 0)
#if($page == 0)
<div class="row">
<div class="col-lg-9">
<ul class="search-results">
#end
#set($i =0)
#set($nextpage = $math.add($page,1))
#set($htmxgetnextpage = "")
#set($Q = '"')
#if ($nextpage < $numberOfPages)
##HTMX - FETCH NEXT PAGE IF THERE IS ONE
#set($htmxscrollattr = ' hx-trigger="revealed" hx-swap="afterend" hx-get="/search/search-results')
#set($htmxscrollquerystring = "?${qUrl}&p=${nextpage}")
#set($htmxgetnextpage = "$htmxscrollattr$htmxscrollquerystring$Q")
#end
#foreach($result in $pagedsearchresults.results)
##PRINTING EACH SEARCH RESULT
#set($i =$math.add($i, 1))
<li${htmxgetnextpage}>
#set($htmxgetnextpage = "")
<a class="search-title" href="$result.uri">$result.title</a>
<a class="url" href="$result.uri">http://$result.url</a>
#foreach($highlight in $result.highlights)
<div class="resultSummary">$highlight...</div>
#break
#end
<div class="group-sm">
<div class="resultsNum"><b>${result.highlights.size()} match(es)</b> in document</div>
<!-- <div class="resultsMod">modified: $result.modified</div> -->
</div>
#if($i==$show)
#break
#end
</li>
#end
<span class="htmx-indicator">
<img src="/application/themes/travel/images/spinner.gif"/> Searching...
</span>
#if($page == 0)
</ul>
</div>
</div>
#end
#end