results.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. {% extends "oscar/base.html" %}
  2. {% macro search_form_attrs(pageno) -%}
  3. {%- for category in selected_categories -%}<input type="hidden" name="category_{{ category }}" value="1"/>{%- endfor -%}
  4. <input type="hidden" name="q" value="{{ q|e }}" />{{- "" -}}
  5. <input type="hidden" name="pageno" value="{{ pageno }}" />{{- "" -}}
  6. <input type="hidden" name="time_range" value="{{ time_range }}" />{{- "" -}}
  7. <input type="hidden" name="language" value="{{ current_language }}" />{{- "" -}}
  8. {% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" />{% endif -%}
  9. {%- endmacro %}
  10. {% macro engine_data_form(engine_data) -%}
  11. {% for engine_name, kv_data in engine_data.items() %}
  12. {% for k, v in kv_data.items() %}
  13. <input type="hidden" name="engine_data-{{ engine_name }}-{{ k|e }}" value="{{ v|e }}" />
  14. {% endfor %}
  15. {% endfor %}
  16. {%- endmacro %}
  17. {%- macro search_url() %}{{ url_for('search', _external=True) }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}{% if time_range %}&amp;time_range={{ time_range }}{% endif %}{% if current_language != 'all' %}&amp;language={{ current_language }}{% endif %}{% endmacro -%}
  18. {% block title %}{{ q|e }} - {% endblock %}
  19. {% block meta %}{{" "}}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ search_url() }}&amp;format=rss">{% endblock %}
  20. {% block content %}
  21. {% include 'oscar/search.html' %}
  22. <div class="row">
  23. <div class="col-sm-4 col-sm-push-8" id="sidebar_results">
  24. {% if number_of_results != '0' -%}
  25. <p><small>{{ _('Number of results') }}: {{ number_of_results }}</small></p>
  26. {%- endif %}
  27. {% if unresponsive_engines and results|length >= 1 -%}
  28. <div class="alert alert-danger fade in" role="alert">
  29. <p>{{ _('Engines cannot retrieve results') }}:</p>
  30. {%- for engine_name, error_type in unresponsive_engines -%}
  31. <p>{{- '' -}}
  32. {{- engine_name }} (
  33. <a href="{{ url_for('stats', engine=engine_name|e) }}" title="{{ _('View error logs and submit a bug report') }}">
  34. {{- error_type -}}
  35. </a> ){{- '' -}}
  36. </p>
  37. {%- endfor -%}
  38. </div>
  39. {%- endif %}
  40. {% if infoboxes -%}
  41. {% for infobox in infoboxes %}
  42. {% include 'oscar/infobox.html' %}{{- "\n\n" -}}
  43. {% endfor %}
  44. {%- endif %}
  45. {% if suggestions %}
  46. <div class="panel panel-default">
  47. <div class="panel-heading">
  48. <h4 class="panel-title">{{ _('Suggestions') }}</h4>
  49. </div>
  50. <div class="panel-body">
  51. {% for suggestion in suggestions %}
  52. <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item">
  53. {% if current_language != 'all' %}
  54. <input type="hidden" name="language" value="{{ current_language }}">
  55. {% endif %}
  56. {% if time_range %}
  57. <input type="hidden" name="time_range" value="{{ time_range }}">
  58. {% endif %}
  59. <input type="hidden" name="q" value="{{ suggestion.url }}">
  60. <button type="submit" class="btn btn-default btn-xs">{{ suggestion.title }}</button>
  61. </form>
  62. {% endfor %}
  63. </div>
  64. </div>
  65. {%- endif %}
  66. <div class="panel panel-default hidden-xs">
  67. <div class="panel-heading">{{- "" -}}
  68. <h4 class="panel-title">{{ _('Links') }}</h4>{{- "" -}}
  69. </div>
  70. <div class="panel-body">
  71. <form role="form">{{- "" -}}
  72. <div class="form-group">{{- "" -}}
  73. <label for="search_url">{{ _('Search URL') }}</label>{{- "" -}}
  74. <input id="search_url" type="url" class="form-control select-all-on-click cursor-text" name="search_url" value="{{ search_url() }}" readonly>{{- "" -}}
  75. </div>{{- "" -}}
  76. </form>
  77. {% if search_formats %}
  78. <label>{{ _('Download results') }}</label>
  79. <div class="clearfix"></div>
  80. {% for output_type in search_formats %}
  81. <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} result_download">
  82. {{- search_form_attrs(pageno) -}}
  83. <input type="hidden" name="format" value="{{ output_type }}">{{- "" -}}
  84. <button type="submit" class="btn btn-default">{{ output_type }}</button>{{- "" -}}
  85. </form>
  86. {% endfor %}
  87. <div class="clearfix"></div>
  88. {% if 'rss' in search_formats %}
  89. <br /><label><a href="{{ search_url() }}&amp;format=rss">{{ _('RSS subscription') }}</a></label>
  90. {% endif %}
  91. <div class="clearfix"></div>
  92. {% endif %}
  93. </div>
  94. </div>
  95. </div><!-- /#sidebar_results -->
  96. <div class="col-sm-8 col-sm-pull-4" id="main_results">
  97. <h1 class="sr-only">{{ _('Search results') }}</h1>
  98. {% if corrections -%}
  99. <div class="result">
  100. <div class="clearfix">
  101. <span class="result_header text-muted form-inline pull-left suggestion_item">{{ _('Try searching for:') }}</span>
  102. {% for correction in corrections -%}
  103. <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" role="navigation" class="form-inline pull-left suggestion_item">{{- "" -}}
  104. {% if current_language != 'all' %}
  105. <input type="hidden" name="language" value="{{ current_language }}">
  106. {% endif %}
  107. {% if time_range %}
  108. <input type="hidden" name="time_range" value="{{ time_range }}">
  109. {% endif %}
  110. <input type="hidden" name="q" value="{{ correction.url }}">{{- "" -}}
  111. <button type="submit" class="btn btn-default btn-xs">{{ correction.title }}</button>{{- "" -}}
  112. </form>
  113. {% endfor %}
  114. </div>
  115. </div>
  116. {%- endif %}
  117. {% if answers -%}
  118. {%- for answer in answers.values() %}
  119. <div class="result well">
  120. {% if answer.url %}
  121. <a href="{{ answer.url }}">{{ answer.answer }}</a>
  122. {% else %}
  123. <span>{{ answer.answer }}</span>
  124. {% endif %}
  125. </div>
  126. {%- endfor %}
  127. {%- endif %}
  128. {% for result in results -%}
  129. <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}{% for e in result.engines %} {{ e }}{% endfor %}">
  130. {%- set index = loop.index -%}
  131. {%- if result.template -%}
  132. {% include get_result_template('oscar', result['template']) %}
  133. {%- else -%}
  134. {% include 'oscar/result_templates/default.html' %}
  135. {%- endif -%}
  136. </div>
  137. {% endfor %}
  138. {% if not results and not answers -%}
  139. {% include 'oscar/messages/no_results.html' %}
  140. {% endif %}
  141. <div class="clearfix"></div>
  142. {% if paging -%}
  143. {% if rtl %}
  144. <div id="pagination">
  145. <div class="pull-left">{{- "" -}}
  146. <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
  147. {{- search_form_attrs(pageno+1) -}}
  148. {{- engine_data_form(engine_data) -}}
  149. <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-backward"></span> {{ _('next page') }}</button>{{- "" -}}
  150. </form>{{- "" -}}
  151. </div>
  152. <div class="pull-right">{{- "" -}}
  153. <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
  154. {{- search_form_attrs(pageno-1) -}}
  155. {{- engine_data_form(engine_data) -}}
  156. <button type="submit" class="btn btn-default" {% if pageno == 1 %}disabled{% endif %}><span class="glyphicon glyphicon-forward"></span> {{ _('previous page') }}</button>{{- "" -}}
  157. </form>{{- "" -}}
  158. </div>
  159. </div><!-- /#pagination -->
  160. <div class="clearfix"></div>
  161. {% else %}
  162. <div id="pagination">
  163. <div class="pull-left">{{- "" -}}
  164. <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
  165. {{- search_form_attrs(pageno-1) -}}
  166. {{- engine_data_form(engine_data) -}}
  167. <button type="submit" class="btn btn-default" {% if pageno == 1 %}disabled{% endif %}><span class="glyphicon glyphicon-backward"></span> {{ _('previous page') }}</button>{{- "" -}}
  168. </form>{{- "" -}}
  169. </div>
  170. <div class="pull-right">{{- "" -}}
  171. <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
  172. {{- search_form_attrs(pageno+1) -}}
  173. {{- engine_data_form(engine_data) -}}
  174. <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-forward"></span> {{ _('next page') }}</button>{{- "" -}}
  175. </form>{{- "" -}}
  176. </div>
  177. </div><!-- /#pagination -->
  178. <div class="clearfix"></div>
  179. {% endif %}
  180. {% endif %}
  181. </div><!-- /#main_results -->
  182. </div>
  183. {% endblock %}