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 13  
14 14 def load_search_assets
15 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 20 end
17 21  
18 22 def prepare_filter
... ... @@ -54,7 +58,7 @@ class SearchController < ApplicationController
54 58 @results = {}
55 59 @names = {}
56 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 62 @names[key] = gettext(description)
59 63 end
60 64 end
... ...
app/views/search/_search_form.rhtml
... ... @@ -26,7 +26,7 @@
26 26 <% @search_in.map { |t,n| [t,gettext(n)] } .
27 27 sort_by(&:last).each do |thing, name| %>
28 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 30 </li>
31 31 <% end %>
32 32 </ul>
... ...
test/functional/search_controller_test.rb
... ... @@ -550,5 +550,13 @@ class SearchControllerTest &lt; Test::Unit::TestCase
550 550  
551 551 assert_includes assigns(:results)[:people], p
552 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 562 end
... ...