Support "my bookmarks" in the search (#38459).

Patch by Go MAEDA.


git-svn-id: https://svn.redmine.org/redmine/trunk@22204 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2023-04-18 14:45:47 +00:00
parent fae39a9542
commit 1099623634
3 changed files with 16 additions and 0 deletions

View File

@@ -49,6 +49,8 @@ class SearchController < ApplicationController
nil nil
when 'my_projects' when 'my_projects'
User.current.projects User.current.projects
when 'bookmarks'
Project.where(id: User.current.bookmarked_project_ids)
when 'subprojects' when 'subprojects'
@project ? (@project.self_and_descendants.to_a) : nil @project ? (@project.self_and_descendants.to_a) : nil
else else

View File

@@ -47,6 +47,7 @@ module SearchHelper
def project_select_tag def project_select_tag
options = [[l(:label_project_all), 'all']] options = [[l(:label_project_all), 'all']]
options << [l(:label_my_projects), 'my_projects'] unless User.current.memberships.empty? options << [l(:label_my_projects), 'my_projects'] unless User.current.memberships.empty?
options << [l(:label_my_bookmarks), 'bookmarks'] unless User.current.bookmarked_project_ids.empty?
options << [l(:label_and_its_subprojects, @project.name), 'subprojects'] unless @project.nil? || @project.descendants.active.empty? options << [l(:label_and_its_subprojects, @project.name), 'subprojects'] unless @project.nil? || @project.descendants.active.empty?
options << [@project.name, ''] unless @project.nil? options << [@project.name, ''] unless @project.nil?
label_tag("scope", l(:description_project_scope), :class => "hidden-for-sighted") + label_tag("scope", l(:description_project_scope), :class => "hidden-for-sighted") +

View File

@@ -171,6 +171,19 @@ class SearchControllerTest < Redmine::ControllerTest
end end
end end
def test_search_my_bookmarks
@request.session[:user_id] = 1
get :index, :params => {:q => 'project', :scope => 'bookmarks', :all_words => ''}
assert_response :success
assert_select '#search-results' do
assert_select 'dt.issue', :count => 1
assert_select 'dt.issue', :text => /Bug #6/
assert_select 'dt.changeset', :count => 1
assert_select 'dt.changeset', :text => /Revision 4/
end
end
def test_search_project_and_subprojects def test_search_project_and_subprojects
get :index, :params => {:id => 1, :q => 'recipe subproject', :scope => 'subprojects', :all_words => ''} get :index, :params => {:id => 1, :q => 'recipe subproject', :scope => 'subprojects', :all_words => ''}
assert_response :success assert_response :success