Diff
Modified: trunk/app/controllers/search_controller.rb (2123 => 2124)
--- trunk/app/controllers/search_controller.rb 2009-03-16 15:53:25 UTC (rev 2123)
+++ trunk/app/controllers/search_controller.rb 2009-03-17 12:41:59 UTC (rev 2124)
@@ -135,9 +135,34 @@
@results = []
if SOLR_ENABLE && address@hidden
- @results = User.multi_solr_search(@query, :limit => 100,
- :models => [User, Workflow, Blob, Network, Pack]).results
+
+ categories = Conf.search_categories - ['all']
+
+ # Hack for renamed models
+ index = categories.index("groups"); categories[index] = "networks" unless index.nil?
+ index = categories.index("files"); categories[index] = "blobs" unless index.nil?
+
+ models = categories.map do |category| eval(category.singularize.camelize) end
+
+ @results = User.multi_solr_search(@query, :limit => 100, :models => models).results
+ @total_count = @results.length
+
+ @infos = []
+
+ models.each do |model|
+
+ model_results = @results.select do |r| r.instance_of?(model) end
+
+ if (model_results.length > 0)
+ @infos.push({
+ :model => model,
+ :results => model_results,
+ :total_count => model.count_by_solr(@query)
+ })
+ end
+ end
+
@users_found_total_count = User.count_by_solr(@query)
@workflows_found_total_count = Workflow.count_by_solr(@query)
@blobs_found_total_count = Blob.count_by_solr(@query)
Modified: trunk/app/helpers/application_helper.rb (2123 => 2124)
--- trunk/app/helpers/application_helper.rb 2009-03-16 15:53:25 UTC (rev 2123)
+++ trunk/app/helpers/application_helper.rb 2009-03-17 12:41:59 UTC (rev 2124)
@@ -880,7 +880,14 @@
end
def visible_name(entity)
- type = ( entity.instance_of?(String) ) ? entity : entity.class.to_s
+ if (entity.instance_of?(String))
+ type = entity
+ elsif (entity.class == Class)
+ type = entity.to_s
+ else
+ type = entity.class.to_s
+ end
+
case type
when "Blob"
return "File"
Modified: trunk/app/views/search/show.rhtml (2123 => 2124)
--- trunk/app/views/search/show.rhtml 2009-03-16 15:53:25 UTC (rev 2123)
+++ trunk/app/views/search/show.rhtml 2009-03-17 12:41:59 UTC (rev 2124)
@@ -5,67 +5,30 @@
<h1>Search Results</h1>
<p class="box_standout" style="font-size: 108%; margin-bottom: 1em;">
- <b>Search keywords: </b>
- <%= h @query -%>
+ <b>Search keywords: </b>
+ <%= h @query -%>
</p>
-<% if @results.empty? %>
+<% if @total_count == 0 %>
<p class="none_text">No search results.</p>
<% else %>
- <%= view_privileges_notice %>
- <br/>
-
- <div id="tabsContainer" class="tabsContainer"></div>
-
- <% unless @users.empty? %>
- <div class="tabContainer">
- <div class="tabTitle">Users (<%= @users.length -%><% if @users.length < @users_found_total_count %> of <%= @users_found_total_count -%><% end %>)</div>
- <div class="tabContent">
- <%= render :partial => "users/table", :locals => { :collection => @users, :query => @query } %>
- </div>
- </div>
- <% end %>
-
- <% unless @networks.empty? %>
- <div class="tabContainer">
- <div class="tabTitle">Groups (<%= @networks.length -%><% if @networks.length < @networks_found_total_count %> of <%= @networks_found_total_count -%><% end %>)</div>
- <div class="tabContent">
- <%= render :partial => "networks/table", :locals => { :collection => @networks, :query => @query } %>
- </div>
- </div>
- <% end %>
+ <%= view_privileges_notice %>
+ <br/>
- <% unless @workflows.empty? %>
- <div class="tabContainer">
- <div class="tabTitle">Workflows (<%= @workflows.length -%><% if @workflows.length < @workflows_found_total_count %> of <%= @workflows_found_total_count -%><% end %>)</div>
- <div class="tabContent">
- <%= render :partial => "workflows/table", :locals => { :collection => @workflows, :query => @query } %>
- </div>
- </div>
- <% end %>
-
- <% unless @blobs.empty? %>
- <div class="tabContainer">
- <div class="tabTitle">Files (<%= @blobs.length -%><% if @blobs.length < @blobs_found_total_count %> of <%= @blobs_found_total_count -%><% end %>)</div>
- <div class="tabContent">
- <%= render :partial => "blobs/table", :locals => { :collection => @blobs, :query => @query } %>
- </div>
- </div>
- <% end %>
-
- <% unless @packs.empty? %>
- <div class="tabContainer">
- <div class="tabTitle">Packs (<%= @packs.length -%><% if @packs.length < @packs_found_total_count %> of <%= @packs_found_total_count -%><% end %>)</div>
- <div class="tabContent">
- <%= render :partial => "packs/table", :locals => { :collection => @packs, :query => @query } %>
- </div>
- </div>
- <% end %>
+ <div id="tabsContainer" class="tabsContainer"></div>
+ <% @infos.each do |info| %>
+ <div class="tabContainer">
+ <div class="tabTitle"><%= visible_name(info[:model]).pluralize %> (<%= info[:results].length -%><% if info[:results].length < info[:total_count] %> of <%= info[:total_count ] -%><% end %>)</div>
+ <div class="tabContent">
+ <%= render :partial => "#{info[:model].to_s.underscore.pluralize}/table", :locals => { :collection => info[:results], :query => @query } %>
+ </div>
+ </div>
+ <% end %>
+
<% end %>
<br />
-