Fixed: search options get lost after clicking on a specific result type (#7501).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6201 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
2072669769
commit
389c7779e6
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006 Jean-Philippe Lang
|
# Copyright (C) 2006-2011 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -24,8 +24,8 @@ class SearchController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@question = params[:q] || ""
|
@question = params[:q] || ""
|
||||||
@question.strip!
|
@question.strip!
|
||||||
@all_words = params[:all_words] || (params[:submit] ? false : true)
|
@all_words = params[:all_words] ? params[:all_words].present? : true
|
||||||
@titles_only = !params[:titles_only].nil?
|
@titles_only = params[:titles_only] ? params[:titles_only].present? : false
|
||||||
|
|
||||||
projects_to_search =
|
projects_to_search =
|
||||||
case params[:scope]
|
case params[:scope]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# redMine - project management software
|
# Redmine - project management software
|
||||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
# Copyright (C) 2006-2011 Jean-Philippe Lang
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU General Public License
|
# modify it under the terms of the GNU General Public License
|
||||||
|
@ -57,7 +57,7 @@ module SearchHelper
|
||||||
c = results_by_type[t]
|
c = results_by_type[t]
|
||||||
next if c == 0
|
next if c == 0
|
||||||
text = "#{type_label(t)} (#{c})"
|
text = "#{type_label(t)} (#{c})"
|
||||||
links << link_to(text, :q => params[:q], :titles_only => params[:title_only], :all_words => params[:all_words], :scope => params[:scope], t => 1)
|
links << link_to(text, :q => params[:q], :titles_only => params[:titles_only], :all_words => params[:all_words], :scope => params[:scope], t => 1)
|
||||||
end
|
end
|
||||||
('<ul>' + links.map {|link| content_tag('li', link)}.join(' ') + '</ul>') unless links.empty?
|
('<ul>' + links.map {|link| content_tag('li', link)}.join(' ') + '</ul>') unless links.empty?
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,9 @@
|
||||||
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
|
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
|
||||||
<%= javascript_tag "Field.focus('search-input')" %>
|
<%= javascript_tag "Field.focus('search-input')" %>
|
||||||
<%= project_select_tag %>
|
<%= project_select_tag %>
|
||||||
|
<%= hidden_field_tag 'all_words', '', :id => nil %>
|
||||||
<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
|
<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
|
||||||
|
<%= hidden_field_tag 'titles_only', '', :id => nil %>
|
||||||
<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
|
<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -29,7 +29,7 @@ class SearchControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_search_all_projects
|
def test_search_all_projects
|
||||||
get :index, :q => 'recipe subproject commit', :submit => 'Search'
|
get :index, :q => 'recipe subproject commit', :all_words => ''
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'index'
|
assert_template 'index'
|
||||||
|
|
||||||
|
@ -50,6 +50,8 @@ class SearchControllerTest < ActionController::TestCase
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'index'
|
assert_template 'index'
|
||||||
|
|
||||||
|
assert_equal true, assigns(:all_words)
|
||||||
|
assert_equal false, assigns(:titles_only)
|
||||||
assert assigns(:results).include?(Issue.find(8))
|
assert assigns(:results).include?(Issue.find(8))
|
||||||
assert assigns(:results).include?(Issue.find(5))
|
assert assigns(:results).include?(Issue.find(5))
|
||||||
assert_tag :dt, :attributes => { :class => /issue closed/ },
|
assert_tag :dt, :attributes => { :class => /issue closed/ },
|
||||||
|
@ -57,7 +59,7 @@ class SearchControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_search_project_and_subprojects
|
def test_search_project_and_subprojects
|
||||||
get :index, :id => 1, :q => 'recipe subproject', :scope => 'subprojects', :submit => 'Search'
|
get :index, :id => 1, :q => 'recipe subproject', :scope => 'subprojects', :all_words => ''
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'index'
|
assert_template 'index'
|
||||||
assert assigns(:results).include?(Issue.find(1))
|
assert assigns(:results).include?(Issue.find(1))
|
||||||
|
@ -88,7 +90,8 @@ class SearchControllerTest < ActionController::TestCase
|
||||||
|
|
||||||
def test_search_all_words
|
def test_search_all_words
|
||||||
# 'all words' is on by default
|
# 'all words' is on by default
|
||||||
get :index, :id => 1, :q => 'recipe updating saving'
|
get :index, :id => 1, :q => 'recipe updating saving', :all_words => '1'
|
||||||
|
assert_equal true, assigns(:all_words)
|
||||||
results = assigns(:results)
|
results = assigns(:results)
|
||||||
assert_not_nil results
|
assert_not_nil results
|
||||||
assert_equal 1, results.size
|
assert_equal 1, results.size
|
||||||
|
@ -96,7 +99,8 @@ class SearchControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_search_one_of_the_words
|
def test_search_one_of_the_words
|
||||||
get :index, :id => 1, :q => 'recipe updating saving', :submit => 'Search'
|
get :index, :id => 1, :q => 'recipe updating saving', :all_words => ''
|
||||||
|
assert_equal false, assigns(:all_words)
|
||||||
results = assigns(:results)
|
results = assigns(:results)
|
||||||
assert_not_nil results
|
assert_not_nil results
|
||||||
assert_equal 3, results.size
|
assert_equal 3, results.size
|
||||||
|
@ -104,19 +108,30 @@ class SearchControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_search_titles_only_without_result
|
def test_search_titles_only_without_result
|
||||||
get :index, :id => 1, :q => 'recipe updating saving', :all_words => '1', :titles_only => '1', :submit => 'Search'
|
get :index, :id => 1, :q => 'recipe updating saving', :titles_only => '1'
|
||||||
results = assigns(:results)
|
results = assigns(:results)
|
||||||
assert_not_nil results
|
assert_not_nil results
|
||||||
assert_equal 0, results.size
|
assert_equal 0, results.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_search_titles_only
|
def test_search_titles_only
|
||||||
get :index, :id => 1, :q => 'recipe', :titles_only => '1', :submit => 'Search'
|
get :index, :id => 1, :q => 'recipe', :titles_only => '1'
|
||||||
|
assert_equal true, assigns(:titles_only)
|
||||||
results = assigns(:results)
|
results = assigns(:results)
|
||||||
assert_not_nil results
|
assert_not_nil results
|
||||||
assert_equal 2, results.size
|
assert_equal 2, results.size
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_search_content
|
||||||
|
Issue.update_all("description = 'This is a searchkeywordinthecontent'", "id=1")
|
||||||
|
|
||||||
|
get :index, :id => 1, :q => 'searchkeywordinthecontent', :titles_only => ''
|
||||||
|
assert_equal false, assigns(:titles_only)
|
||||||
|
results = assigns(:results)
|
||||||
|
assert_not_nil results
|
||||||
|
assert_equal 1, results.size
|
||||||
|
end
|
||||||
|
|
||||||
def test_search_with_invalid_project_id
|
def test_search_with_invalid_project_id
|
||||||
get :index, :id => 195, :q => 'recipe'
|
get :index, :id => 195, :q => 'recipe'
|
||||||
assert_response 404
|
assert_response 404
|
||||||
|
|
Loading…
Reference in New Issue