Commit 9ea382dedb5ed7f22f408c4d86a0dfadd5c8ddc4
1 parent
92828c21
Exists in
master
and in
29 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,8 +29,8 @@ class SearchController < ApplicationController | ||
29 | end | 29 | end |
30 | 30 | ||
31 | def check_search_whole_site | 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 | end | 34 | end |
35 | end | 35 | end |
36 | 36 |
app/models/category.rb
@@ -54,6 +54,7 @@ class Category < ActiveRecord::Base | @@ -54,6 +54,7 @@ class Category < ActiveRecord::Base | ||
54 | def display_in_menu? | 54 | def display_in_menu? |
55 | # FIXME don't hardcode like this. Should be a setting of the environment, maybe | 55 | # FIXME don't hardcode like this. Should be a setting of the environment, maybe |
56 | total_items >= 10 | 56 | total_items >= 10 |
57 | + true | ||
57 | end | 58 | end |
58 | 59 | ||
59 | end | 60 | end |
app/views/search/_display_results.rhtml
1 | <div id="search-results" class="<%= 'only-one-result-box' if @results.size == 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 | <% @results.each do |name,results| %> | 7 | <% @results.each do |name,results| %> |
15 | <% | 8 | <% |
app/views/search/_search_form.rhtml
@@ -7,20 +7,13 @@ | @@ -7,20 +7,13 @@ | ||
7 | <%= text_field_tag 'query', @query, :id => ( lightbox? ? 'popup-search-input' : '' ), :size => 50 %> | 7 | <%= text_field_tag 'query', @query, :id => ( lightbox? ? 'popup-search-input' : '' ), :size => 50 %> |
8 | <%= javascript_tag '$("popup-search-input").focus()' if lightbox? %> | 8 | <%= javascript_tag '$("popup-search-input").focus()' if lightbox? %> |
9 | </span> | 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 | </div> | 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 | <h4><%= _('Search for:') %></h4> | 17 | <h4><%= _('Search for:') %></h4> |
25 | <ul> | 18 | <ul> |
26 | <% @search_in.map { |t,n| [t,gettext(n)] } . | 19 | <% @search_in.map { |t,n| [t,gettext(n)] } . |
@@ -33,6 +26,13 @@ | @@ -33,6 +26,13 @@ | ||
33 | <br style="clear:both" /> | 26 | <br style="clear:both" /> |
34 | </div><!-- fim class="search-options" --> | 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 | <% if lightbox?; button_bar do %> | 36 | <% if lightbox?; button_bar do %> |
37 | <%= lightbox_close_button _('Close') %> | 37 | <%= lightbox_close_button _('Close') %> |
38 | <% end; end %> | 38 | <% end; end %> |
app/views/search/index.rhtml
1 | <h1> <%=h @category ? (_('Search results for "%{query}" in "%{category}"') % { :query => @query, :category => @category.name}) : (_('Search results for "%s"') % @query) %> </h1> | 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 | <%= render :partial => 'display_results' %> | 5 | <%= render :partial => 'display_results' %> |
4 | 6 | ||
5 | -<%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search") } %> | ||
6 | <br style="clear:both" /> | 7 | <br style="clear:both" /> |
7 | - |
test/functional/search_controller_test.rb
@@ -393,8 +393,8 @@ class SearchControllerTest < Test::Unit::TestCase | @@ -393,8 +393,8 @@ class SearchControllerTest < Test::Unit::TestCase | ||
393 | Category.create!(:name => 'sub', :environment => Environment.default, :parent => parent) | 393 | Category.create!(:name => 'sub', :environment => Environment.default, :parent => parent) |
394 | 394 | ||
395 | get :popup, :category_path => [ 'cat', 'sub'] | 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 | end | 398 | end |
399 | 399 | ||
400 | should 'search in whole site when told so' do | 400 | should 'search in whole site when told so' do |
@@ -534,9 +534,9 @@ class SearchControllerTest < Test::Unit::TestCase | @@ -534,9 +534,9 @@ class SearchControllerTest < Test::Unit::TestCase | ||
534 | } | 534 | } |
535 | end | 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 | get :index, :category_path => [ 'my-category' ], :query => 'a sample search' | 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 | end | 540 | end |
541 | 541 | ||
542 | should 'display only category name in "search results for ..." title' do | 542 | should 'display only category name in "search results for ..." title' do |
@@ -562,6 +562,7 @@ class SearchControllerTest < Test::Unit::TestCase | @@ -562,6 +562,7 @@ class SearchControllerTest < Test::Unit::TestCase | ||
562 | assert_includes assigns(:results)[:people], p | 562 | assert_includes assigns(:results)[:people], p |
563 | end | 563 | end |
564 | 564 | ||
565 | + # FIXME how do test link_to_remote? | ||
565 | should 'keep asset selection for new searches' do | 566 | should 'keep asset selection for new searches' do |
566 | get :index, :query => 'a sample query', :find_in => [ 'people', 'communities' ] | 567 | get :index, :query => 'a sample query', :find_in => [ 'people', 'communities' ] |
567 | assert_tag :tag => 'input', :attributes => { :name => 'find_in[]', :value => 'people', :checked => 'checked' } | 568 | assert_tag :tag => 'input', :attributes => { :name => 'find_in[]', :value => 'people', :checked => 'checked' } |