Commit 9ea382dedb5ed7f22f408c4d86a0dfadd5c8ddc4
1 parent
92828c21
Exists in
master
and in
23 other branches
ActionItem354: created simple and advanced search
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1840 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
6 changed files
with
24 additions
and
29 deletions
Show diff stats
app/controllers/public/search_controller.rb
| ... | ... | @@ -29,8 +29,8 @@ class SearchController < ApplicationController |
| 29 | 29 | end |
| 30 | 30 | |
| 31 | 31 | def check_search_whole_site |
| 32 | - if params[:search_whole_site] == 'yes' | |
| 33 | - redirect_to params.merge(:category_path => [], :search_whole_site => nil) | |
| 32 | + if params[:search_whole_site_yes] or params[:search_whole_site] == 'yes' | |
| 33 | + redirect_to params.merge(:category_path => [], :search_whole_site => nil, :search_whole_site_yes => nil) | |
| 34 | 34 | end |
| 35 | 35 | end |
| 36 | 36 | ... | ... |
app/models/category.rb
app/views/search/_display_results.rhtml
| 1 | 1 | <div id="search-results" class="<%= 'only-one-result-box' if @results.size == 1 %>"> |
| 2 | 2 | |
| 3 | -<% if @category && !@query.blank? %> | |
| 4 | -<div id="search-whole-site"> | |
| 5 | -<%= link_to _('Search for "%s" in the whole site') % @query, | |
| 6 | - :controller => 'search', :action => 'index', :category_path => [], :query => @query %> | |
| 7 | -</div> | |
| 8 | -<% end %> | |
| 9 | - | |
| 10 | 3 | <% |
| 11 | - pos2 = :odd # allow to format in a two colons layout | |
| 12 | - pos3 = 3 # allow to format in a thre colons layout | |
| 4 | + pos2 = :odd # allow to format in a two columns layout | |
| 5 | + pos3 = 3 # allow to format in a thre columns layout | |
| 13 | 6 | %> |
| 14 | 7 | <% @results.each do |name,results| %> |
| 15 | 8 | <% | ... | ... |
app/views/search/_search_form.rhtml
| ... | ... | @@ -7,20 +7,13 @@ |
| 7 | 7 | <%= text_field_tag 'query', @query, :id => ( lightbox? ? 'popup-search-input' : '' ), :size => 50 %> |
| 8 | 8 | <%= javascript_tag '$("popup-search-input").focus()' if lightbox? %> |
| 9 | 9 | </span> |
| 10 | - <%= submit_button(:search, _('Search')) %> | |
| 10 | + <%= submit_button(:search, _('Search'), :name => :search_whole_site_no) %> | |
| 11 | + <% if @category %> | |
| 12 | + <%= submit_button(:search, _('Search in whole site'), :name => :search_whole_site_yes) %> | |
| 13 | + <% end %> | |
| 11 | 14 | </div> |
| 12 | 15 | |
| 13 | - <% if @category %> | |
| 14 | - <div class="search-options search-in"> | |
| 15 | - <h4><%= _('Search in:') %></h4> | |
| 16 | - <div> | |
| 17 | - <%= labelled_radio_button _('Only in %s') % @category.name, :search_whole_site, 'no', true %> | |
| 18 | - <%= labelled_radio_button _('Whole site'), :search_whole_site, 'yes' %> | |
| 19 | - </div> | |
| 20 | - </div><!-- fim class="search-options" --> | |
| 21 | - <% end %> | |
| 22 | - | |
| 23 | - <div class="search-options search-for"> | |
| 16 | + <div class="search-options search-for" id='advanced-search-options' style="display: <%= simple_search ? 'none' : 'block' %>"> | |
| 24 | 17 | <h4><%= _('Search for:') %></h4> |
| 25 | 18 | <ul> |
| 26 | 19 | <% @search_in.map { |t,n| [t,gettext(n)] } . |
| ... | ... | @@ -33,6 +26,13 @@ |
| 33 | 26 | <br style="clear:both" /> |
| 34 | 27 | </div><!-- fim class="search-options" --> |
| 35 | 28 | |
| 29 | + <% if simple_search %> | |
| 30 | + <%= link_to_function(_('Advanced search'), nil, :id => 'advanced_search_link') do |page| | |
| 31 | + page['advanced_search_link'].hide | |
| 32 | + page['advanced-search-options'].toggle | |
| 33 | + end %> | |
| 34 | + <% end %> | |
| 35 | + | |
| 36 | 36 | <% if lightbox?; button_bar do %> |
| 37 | 37 | <%= lightbox_close_button _('Close') %> |
| 38 | 38 | <% end; end %> | ... | ... |
app/views/search/index.rhtml
| 1 | 1 | <h1> <%=h @category ? (_('Search results for "%{query}" in "%{category}"') % { :query => @query, :category => @category.name}) : (_('Search results for "%s"') % @query) %> </h1> |
| 2 | 2 | |
| 3 | +<%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search"), :simple_search => true } %> | |
| 4 | + | |
| 3 | 5 | <%= render :partial => 'display_results' %> |
| 4 | 6 | |
| 5 | -<%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search") } %> | |
| 6 | 7 | <br style="clear:both" /> |
| 7 | - | ... | ... |
test/functional/search_controller_test.rb
| ... | ... | @@ -393,8 +393,8 @@ class SearchControllerTest < Test::Unit::TestCase |
| 393 | 393 | Category.create!(:name => 'sub', :environment => Environment.default, :parent => parent) |
| 394 | 394 | |
| 395 | 395 | get :popup, :category_path => [ 'cat', 'sub'] |
| 396 | - assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'search_whole_site', :value => 'yes' } | |
| 397 | - assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'search_whole_site', :value => 'no', :checked => 'checked' } | |
| 396 | + assert_tag :tag => 'input', :attributes => { :type => 'submit', :name => 'search_whole_site_yes' } | |
| 397 | + assert_tag :tag => 'input', :attributes => { :type => 'submit', :name => 'search_whole_site_no' } | |
| 398 | 398 | end |
| 399 | 399 | |
| 400 | 400 | should 'search in whole site when told so' do |
| ... | ... | @@ -534,9 +534,9 @@ class SearchControllerTest < Test::Unit::TestCase |
| 534 | 534 | } |
| 535 | 535 | end |
| 536 | 536 | |
| 537 | - should 'offer link to do the same search as before in general context' do | |
| 537 | + should 'offer button search in the whole site' do | |
| 538 | 538 | get :index, :category_path => [ 'my-category' ], :query => 'a sample search' |
| 539 | - assert_tag :tag => 'a', :attributes => { :href => "/search?query=a+sample+search" }, :content => 'Search for "a sample search" in the whole site' | |
| 539 | + assert_tag :tag => 'input', :attributes => { :type => 'submit', :name => 'search_whole_site_yes' } | |
| 540 | 540 | end |
| 541 | 541 | |
| 542 | 542 | should 'display only category name in "search results for ..." title' do |
| ... | ... | @@ -562,6 +562,7 @@ class SearchControllerTest < Test::Unit::TestCase |
| 562 | 562 | assert_includes assigns(:results)[:people], p |
| 563 | 563 | end |
| 564 | 564 | |
| 565 | + # FIXME how do test link_to_remote? | |
| 565 | 566 | should 'keep asset selection for new searches' do |
| 566 | 567 | get :index, :query => 'a sample query', :find_in => [ 'people', 'communities' ] |
| 567 | 568 | assert_tag :tag => 'input', :attributes => { :name => 'find_in[]', :value => 'people', :checked => 'checked' } | ... | ... |