1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-06 15:41:33 +00:00
redmine/app/views/search/index.html.erb
Jean-Philippe Lang 2fe806a4a4 Rewrites search engine to properly paginate results (#18631).
Instead of counting and retrieving results based on their timestamps, we now load all result ids then load the appropriate results by their ids. This also brings a 2x performance improvement as we search tokens in one of the 2 queries only.

git-svn-id: http://svn.redmine.org/redmine/trunk@13739 e93f8b46-1217-0410-a6f0-8f06a7374b81
2014-12-12 20:49:31 +00:00

57 lines
2.0 KiB
Plaintext

<h2><%= l(:label_search) %></h2>
<div class="box">
<%= form_tag({}, :method => :get, :id => 'search-form') do %>
<%= label_tag "search-input", l(:description_search), :class => "hidden-for-sighted" %>
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
<%= project_select_tag %>
<%= hidden_field_tag 'all_words', '', :id => nil %>
<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
<%= hidden_field_tag 'titles_only', '', :id => nil %>
<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
</p>
<p id="search-types">
<% @object_types.each do |t| %>
<label><%= check_box_tag t, 1, @scope.include?(t) %> <%= link_to type_label(t), "#" %></label>
<% end %>
</p>
<p><%= submit_tag l(:button_submit) %></p>
<% end %>
</div>
<% if @results %>
<div id="search-results-counts">
<%= render_results_by_type(@result_count_by_type) unless @scope.size == 1 %>
</div>
<h3><%= l(:label_result_plural) %> (<%= @result_count %>)</h3>
<dl id="search-results">
<% @results.each do |e| %>
<dt class="<%= e.event_type %>">
<%= content_tag('span', h(e.project), :class => 'project') unless @project == e.project %>
<%= link_to(highlight_tokens(e.event_title.truncate(255), @tokens), e.event_url) %>
</dt>
<dd><span class="description"><%= highlight_tokens(e.event_description, @tokens) %></span>
<span class="author"><%= format_time(e.event_datetime) %></span></dd>
<% end %>
</dl>
<% end %>
<% if @result_pages %>
<p class="pagination"><%= pagination_links_full @result_pages, @result_count, :per_page_links => false %></p>
<% end %>
<% html_title(l(:label_search)) -%>
<%= javascript_tag do %>
$("#search-types a").click(function(e){
e.preventDefault();
$("#search-types input[type=checkbox]").prop('checked', false);
$(this).siblings("input[type=checkbox]").prop('checked', true);
if ($("#search-input").val() != "") {
$("#search-form").submit();
}
});
<% end %>