VM_global_library.vm 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. #**
  2. * Global macros used by other templates.
  3. * This file must be named VM_global_library.vm
  4. * in order for Velocity to find it.
  5. *#
  6. #macro(param $key)$request.params.get($key)#end
  7. #macro(url_root)/solr#end
  8. ## TODO: s/url_for_solr/url_for_core/ and s/url_root/url_for_solr/
  9. #macro(core_name)$request.core.name#end
  10. #macro(url_for_solr)#{url_root}#if($request.core.name != "")/$request.core.name#end#end
  11. #macro(url_for_home)#url_for_solr/browse#end
  12. #macro(q)&q=$!{esc.url($params.get('q'))}#end
  13. #macro(fqs $p)#foreach($fq in $p)#if($velocityCount>1)&#{end}fq=$esc.url($fq)#end#end
  14. #macro(debug)#if($request.params.get('debugQuery'))&debugQuery=true#end#end
  15. #macro(boostPrice)#if($request.params.get('bf') == 'price')&bf=price#end#end
  16. #macro(annotate)#if($request.params.get('annotateBrowse'))&annotateBrowse=true#end#end
  17. #macro(annTitle $msg)#if($annotate == true)title="$msg"#end#end
  18. #macro(spatial)#if($request.params.get('sfield'))&sfield=store#end#if($request.params.get('pt'))&pt=$request.params.get('pt')#end#if($request.params.get('d'))&d=$request.params.get('d')#end#end
  19. #macro(qOpts)#set($queryOpts = $request.params.get("queryOpts"))#if($queryOpts && $queryOpts != "")&queryOpts=$queryOpts#end#end
  20. #macro(group)#if($request.params.getBool("group") == true)&group=true#end#if($request.params.get("group.field"))#foreach($grp in $request.params.getParams('group.field'))&group.field=$grp#end#end#end
  21. #macro(sort $p)#if($p)#foreach($s in $p)&sort=$esc.url($s)#end#end#end
  22. #macro(lensNoQ)?#if($request.params.getParams('fq') and $list.size($request.params.getParams('fq')) > 0)&#fqs($request.params.getParams('fq'))#end#sort($request.params.getParams('sort'))#debug#boostPrice#annotate#spatial#qOpts#group#end
  23. #macro(lens)#lensNoQ#q#end
  24. #macro(url_for_lens)#{url_for_home}#lens#end
  25. #macro(url_for_start $start)#url_for_home#lens&start=$start#end
  26. #macro(url_for_filters $p)#url_for_home?#q#boostPrice#spatial#qOpts#if($list.size($p) > 0)&#fqs($p)#end#debug#end
  27. #macro(url_for_nested_facet_query $field)#url_for_home#lens&fq=$esc.url($field)#end
  28. ## TODO: convert to use {!raw f=$field}$value (with escaping of course)
  29. #macro(url_for_facet_filter $field $value)#url_for_home#lens&fq=#if($value!=$null)$esc.url($field):%22$esc.url($value)%22#else-$esc.url($field):[*+TO+*]#end#end
  30. #macro(url_for_facet_date_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
  31. #macro(url_for_facet_range_filter $field $value)#url_for_home#lens&fq=$esc.url($field):$esc.url($value)#end
  32. #macro(link_to_previous_page $text)
  33. #if($page.current_page_number > 1)
  34. #set($prev_start = $page.start - $page.results_per_page)
  35. <a class="prev-page" href="#url_for_start($prev_start)">$text</a>
  36. #end
  37. #end
  38. #macro(link_to_next_page $text)
  39. #if($page.current_page_number < $page.page_count)
  40. #set($next_start = $page.start + $page.results_per_page)
  41. <a class="next-page" href="#url_for_start($next_start)">$text</a>
  42. #end
  43. #end
  44. #macro(link_to_page $page_number $text)
  45. #if($page_number == $page.current_page_number)
  46. $text
  47. #else
  48. #if($page_number <= $page.page_count)
  49. #set($page_start = $page_number * $page.results_per_page - $page.results_per_page)
  50. <a class="page" href="#url_for_start($page_start)">$text</a>
  51. #end
  52. #end
  53. #end
  54. #macro(display_facet_query $field, $display, $fieldName)
  55. #if($field.size() > 0)
  56. <span class="facet-field">$display</span>
  57. <ul>
  58. #foreach ($facet in $field)
  59. #if ($facet.value > 0)
  60. #set($facetURL = "#url_for_nested_facet_query($facet.key)")
  61. #if ($facetURL != '')
  62. <li><a href="$facetURL">$facet.key</a> ($facet.value)</li>
  63. #end
  64. #end
  65. #end
  66. </ul>
  67. #end
  68. #end
  69. #macro(display_facet_range $field, $display, $fieldName, $start, $end, $gap, $before, $after)
  70. <span class="facet-field">$display</span>
  71. <ul>
  72. #if($before && $before != "")
  73. #set($value = "[* TO " + "#format_value($start)" + "}")
  74. #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
  75. <li><a href="$facetURL">Less than #format_value($start)</a> ($before)</li>
  76. #end
  77. #foreach ($facet in $field)
  78. #set($rangeEnd = "#range_get_to_value($facet.key, $gap)")
  79. #set($value = "[" + $facet.key + " TO " + $rangeEnd + "}")
  80. #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
  81. #if ($facetURL != '')
  82. <li><a href="$facetURL">$facet.key - #format_value($rangeEnd)</a> ($facet.value)</li>
  83. #end
  84. #end
  85. #if($end && $end != "" && $after > 0)
  86. #set($value = "[" + "#format_value($end)" + " TO *}")
  87. #set($facetURL = "#url_for_facet_range_filter($fieldName, $value)")
  88. <li><a href="$facetURL">More than #format_value($end)</a> ($after)</li>
  89. #end
  90. </ul>
  91. #end
  92. ## $pivots is a list of facet_pivot
  93. #macro(display_facet_pivot $pivots, $display)
  94. #if($pivots.size() > 0)
  95. <span class="facet-field">$display</span>
  96. <ul>
  97. #foreach ($pivot in $pivots)
  98. #foreach ($entry in $pivot.value)
  99. <a href="#url_for_facet_filter($entry.field, $entry.value)">$entry.field::#if($entry.value!=$null)$entry.value#else<em>missing</em>#end</a> ($entry.count)
  100. <ul>
  101. #foreach($nest in $entry.pivot)
  102. <li>
  103. #if($nest.value != $null)
  104. <a href="#url_for_facet_filter($entry.field, $entry.value)&fq=$esc.url($nest.field):%22$esc.url($nest.value)%22">$nest.field::$nest.value</a>
  105. #else
  106. <a href="#url_for_facet_filter($entry.field, $entry.value)&fq=-$esc.url($nest.field):[*+TO+*]">$nest.field::<em>missing</em></a>
  107. #end
  108. ($nest.count)
  109. </li>
  110. #end
  111. </ul>
  112. #end
  113. #end
  114. </ul>
  115. #end
  116. #end
  117. #macro(field $f)
  118. #if($response.response.highlighting.get($docId).get($f).get(0))
  119. #set($pad = "")
  120. #foreach($v in $response.response.highlighting.get($docId).get($f))
  121. $pad$v##
  122. #set($pad = " ... ")
  123. #end
  124. #else
  125. #foreach($v in $doc.getFieldValues($f))
  126. $v##
  127. #end
  128. #end
  129. #end
  130. #macro(utc_date $theDate)
  131. $date.format("yyyy-MM-dd'T'HH:mm:ss'Z'",$theDate,$date.getLocale(),$date.getTimeZone().getTimeZone("UTC"))##
  132. #end
  133. #macro(format_value $val)
  134. #if(${val.class.name} == "java.util.Date")
  135. #utc_date($val)##
  136. #else
  137. $val##
  138. #end
  139. #end
  140. #macro(range_get_to_value $inval, $gapval)
  141. #if(${gapval.class.name} == "java.lang.String")
  142. $inval$gapval##
  143. #elseif(${gapval.class.name} == "java.lang.Float" || ${inval.class.name} == "java.lang.Float")
  144. $math.toDouble($math.add($inval,$gapval))##
  145. #else
  146. $math.add($inval,$gapval)##
  147. #end
  148. #end