From e332589f80929ab9feb4195579e3321256724691 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sun, 2 Sep 2018 20:31:38 +0000 Subject: [PATCH 2/6] Filter after projects --- app/models/project_query.rb | 4 ++++ app/models/query.rb | 2 +- test/functional/projects_controller_test.rb | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/models/project_query.rb b/app/models/project_query.rb index ca8e9fb82..41ab49363 100644 --- a/app/models/project_query.rb +++ b/app/models/project_query.rb @@ -20,6 +20,7 @@ class ProjectQuery < Query self.queried_class = Project + self.view_permission = :search_project self.available_columns = [] @@ -31,6 +32,9 @@ class ProjectQuery < Query def initialize_available_filters add_available_filter "status", :type => :list, :values => lambda { project_statuses_values } + add_available_filter("id", + :type => :list, :values => lambda { project_values }, :label => :field_project + ) add_available_filter "name", :type => :text add_available_filter "description", :type => :text add_available_filter "is_public", diff --git a/app/models/query.rb b/app/models/query.rb index dc7553966..bd2f2ef66 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -904,7 +904,7 @@ class Query < ActiveRecord::Base end end - if field == 'project_id' + if field == 'project_id' || (self.type == 'ProjectQuery' && field == 'id') if v.delete('mine') v += User.current.memberships.map(&:project_id).map(&:to_s) end diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 63159ab90..41ed49785 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -56,6 +56,25 @@ class ProjectsControllerTest < Redmine::ControllerTest assert_select 'feed>entry', :count => Project.visible(User.current).count end + def test_index_with_project_filter_is_my_projects + @request.session[:user_id] = 2 + + get :index, :params => { + :f => ['id'], + :op => {'id' => '='}, + :v => {'id' => ['mine']} + } + + assert_response :success + + assert_select 'div#projects-index ul' do + assert_select 'a.project', 3 + assert_select 'a', :text => 'eCookbook' + assert_select 'a', :text => 'OnlineStore' + assert_select 'a', :text => 'Private child of eCookbook' + end + end + def test_autocomplete_js get :autocomplete, :params => { :format => 'js', -- 2.22.0