Commit 807a3009809fb22a6182f1f556afee127c1558b8

Authored by AntonioTerceiro
1 parent cf1a2316

ActionItem341: remembering search options from one search to another


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1731 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/public/search_controller.rb
@@ -13,6 +13,10 @@ class SearchController < ApplicationController @@ -13,6 +13,10 @@ class SearchController < ApplicationController
13 13
14 def load_search_assets 14 def load_search_assets
15 @search_in = SEARCH_IN 15 @search_in = SEARCH_IN
  16 + @searching = {}
  17 + @search_in.each do |key, name|
  18 + @searching[key] = params[:find_in].nil? || params[:find_in].empty? || params[:find_in].include?(key.to_s)
  19 + end
16 end 20 end
17 21
18 def prepare_filter 22 def prepare_filter
@@ -54,7 +58,7 @@ class SearchController < ApplicationController @@ -54,7 +58,7 @@ class SearchController < ApplicationController
54 @results = {} 58 @results = {}
55 @names = {} 59 @names = {}
56 SEARCH_IN.each do |key, description| 60 SEARCH_IN.each do |key, description|
57 - @results[key] = @finder.send(key, @filtered_query) if params[:find_in].nil? || params[:find_in].empty? || params[:find_in].include?(key.to_s) 61 + @results[key] = @finder.send(key, @filtered_query) if @searching[key]
58 @names[key] = gettext(description) 62 @names[key] = gettext(description)
59 end 63 end
60 end 64 end
app/views/search/_search_form.rhtml
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 <% @search_in.map { |t,n| [t,gettext(n)] } . 26 <% @search_in.map { |t,n| [t,gettext(n)] } .
27 sort_by(&:last).each do |thing, name| %> 27 sort_by(&:last).each do |thing, name| %>
28 <li> 28 <li>
29 - <%= labelled_check_box name, 'find_in[]', thing.to_s, true %> 29 + <%= labelled_check_box name, 'find_in[]', thing.to_s, @searching[thing.to_sym] %>
30 </li> 30 </li>
31 <% end %> 31 <% end %>
32 </ul> 32 </ul>
test/functional/search_controller_test.rb
@@ -550,5 +550,13 @@ class SearchControllerTest &lt; Test::Unit::TestCase @@ -550,5 +550,13 @@ class SearchControllerTest &lt; Test::Unit::TestCase
550 550
551 assert_includes assigns(:results)[:people], p 551 assert_includes assigns(:results)[:people], p
552 end 552 end
  553 +
  554 + should 'keep asset selection for new searches' do
  555 + get :index, :query => 'a sample query', :find_in => [ 'people', 'communities' ]
  556 + assert_tag :tag => 'input', :attributes => { :name => 'find_in[]', :value => 'people', :checked => 'checked' }
  557 + assert_tag :tag => 'input', :attributes => { :name => 'find_in[]', :value => 'communities', :checked => 'checked' }
  558 + assert_no_tag :tag => 'input', :attributes => { :name => 'find_in[]', :value => 'enterprises', :checked => 'checked' }
  559 + assert_no_tag :tag => 'input', :attributes => { :name => 'find_in[]', :value => 'products', :checked => 'checked' }
  560 + end
553 561
554 end 562 end