Skip to content

Commit

Permalink
Refactored search results
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas von Deyen committed Nov 1, 2011
1 parent 582d1ae commit 8c17a82
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 40 deletions.
1 change: 1 addition & 0 deletions app/controllers/pages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def perform_search
{:limit => :all},
{:conditions => ["public = ?", true]}
)
@search_results = (@text_search_results + @rtf_search_results).sort{ |y, x| x.ferret_score <=> y.ferret_score }
end

def find_first_public(page)
Expand Down
87 changes: 47 additions & 40 deletions app/views/elements/_searchresult_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,42 +1,49 @@
<div class="searchresult" id="<%= element_dom_id(element) %>" <%= element_preview_code(element) -%>>

<%= form_tag show_page_path(:urlname => "suche", :lang => @page.language_code), :method => :get do %>
<%= text_field_tag "query", params[:query], :class => 'field' %>
<%= submit_tag _("search"), :name => nil %>
<%- end -%>
<%- if !@text_search_results.blank? || !@rtf_search_results.blank? -%>

<h2>
<%= t('alchemy.search.result_heading', :query => h(params[:query]), :count => @rtf_search_results.length + @text_search_results.length) %>
</h2>

<%- all_results = (@text_search_results + @rtf_search_results).sort{|y, x| x.ferret_score <=> y.ferret_score} -%>

<div class="search_results">
<ol>
<%- all_results.each do |result| -%>
<%- element = Content.find_by_essence_id_and_essence_type(result.id, result.class.to_s).element -%>
<%- page = element.nil? ? nil : element.page -%>
<li>
<%= _('Excerpt') %>:
<%= raw result.highlight(params[:query], {
:field => (result.class == EssenceRichtext ? :stripped_body : :body),
:num_excerpts => 1,
:pre_tag => "<strong>",
:post_tag => "</strong>"
}) %><br/>
<%- unless page.nil? -%>
<span class="search_result_site"><%= _('Page') %>: </span><%= link_to page.urlname, show_page_path(:urlname => page.urlname, :lang => page.language) %>
<%- end -%>
</li>
<%- end -%>
</ol>
</div>

<%- elsif !params[:query].blank? -%>

<h2><%= t('alchemy.search.no_results') %></h2>

<%- end -%>

<%= form_tag show_page_path(:urlname => "suche", :lang => @page.language_code), :method => :get do %>
<%= text_field_tag "query", params[:query], :class => 'field' %>
<%= submit_tag _("search"), :name => nil %>
<%- end -%>
<%- if !@search_results.blank? -%>

<h2>
<%= t('alchemy.search.result_heading') % { :query => h(params[:query]), :count => @search_results.count } %>
</h2>

<div class="search_results">
<ul>
<%- @search_results.each do |result| -%>
<%- element = Content.find_by_essence_id_and_essence_type(result.id, result.class.to_s).element -%>
<%- page = element.nil? ? nil : element.page -%>
<li>
<%- unless page.nil? -%>
<h3>
<span class="search_result_site"><%= _('Page') %>:</span>
<%- if multi_language? -%>
<%= link_to page.name, show_page_path(:urlname => page.urlname, :lang => page.language_code) %>
<span class="search_result_language">(<%= page.language_code.upcase %>)</span>
<%- else -%>
<%= link_to page.name, show_page_path(:urlname => page.urlname) %>
<%- end -%>
</h3>
<%- end -%>
<h4><%= _('Excerpt') %>:</h4>
<%- result.highlight(
"*#{params[:query]}*", {
:field => (result.class == EssenceRichtext ? :stripped_body : :body)
}
).each do |highlight| -%>
<p><%= sanitize highlight %></p>
<%- end -%>
</li>
<%- end -%>
</ul>
</div>

<%- elsif !params[:query].blank? -%>

<h2><%= t('alchemy.search.no_results') %></h2>

<%- end -%>
</div>

0 comments on commit 8c17a82

Please sign in to comment.