myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2124] trunk/app: more on configurable searching


From: noreply
Subject: [myexperiment-hackers] [2124] trunk/app: more on configurable searching
Date: Tue, 17 Mar 2009 08:42:00 -0400 (EDT)

Revision
2124
Author
dgc
Date
2009-03-17 08:41:59 -0400 (Tue, 17 Mar 2009)

Log Message

more on configurable searching

Modified Paths

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 />
-

reply via email to

[Prev in Thread] Current Thread [Next in Thread]