Feature #29482 » 0002-Filter-after-projects.patch
| app/models/project_query.rb | ||
|---|---|---|
| 20 | 20 |
class ProjectQuery < Query |
| 21 | 21 | |
| 22 | 22 |
self.queried_class = Project |
| 23 |
self.view_permission = :search_project |
|
| 23 | 24 | |
| 24 | 25 |
self.available_columns = [] |
| 25 | 26 | |
| ... | ... | |
| 31 | 32 |
def initialize_available_filters |
| 32 | 33 |
add_available_filter "status", |
| 33 | 34 |
:type => :list, :values => lambda { project_statuses_values }
|
| 35 |
add_available_filter("id",
|
|
| 36 |
:type => :list, :values => lambda { project_values }, :label => :field_project
|
|
| 37 |
) |
|
| 34 | 38 |
add_available_filter "name", :type => :text |
| 35 | 39 |
add_available_filter "description", :type => :text |
| 36 | 40 |
add_available_filter "is_public", |
| app/models/query.rb | ||
|---|---|---|
| 904 | 904 |
end |
| 905 | 905 |
end |
| 906 | 906 | |
| 907 |
if field == 'project_id' |
|
| 907 |
if field == 'project_id' || (self.type == 'ProjectQuery' && field == 'id')
|
|
| 908 | 908 |
if v.delete('mine')
|
| 909 | 909 |
v += User.current.memberships.map(&:project_id).map(&:to_s) |
| 910 | 910 |
end |
| test/functional/projects_controller_test.rb | ||
|---|---|---|
| 56 | 56 |
assert_select 'feed>entry', :count => Project.visible(User.current).count |
| 57 | 57 |
end |
| 58 | 58 | |
| 59 |
def test_index_with_project_filter_is_my_projects |
|
| 60 |
@request.session[:user_id] = 2 |
|
| 61 | ||
| 62 |
get :index, :params => {
|
|
| 63 |
:f => ['id'], |
|
| 64 |
:op => {'id' => '='},
|
|
| 65 |
:v => {'id' => ['mine']}
|
|
| 66 |
} |
|
| 67 | ||
| 68 |
assert_response :success |
|
| 69 | ||
| 70 |
assert_select 'div#projects-index ul' do |
|
| 71 |
assert_select 'a.project', 3 |
|
| 72 |
assert_select 'a', :text => 'eCookbook' |
|
| 73 |
assert_select 'a', :text => 'OnlineStore' |
|
| 74 |
assert_select 'a', :text => 'Private child of eCookbook' |
|
| 75 |
end |
|
| 76 |
end |
|
| 77 | ||
| 59 | 78 |
def test_autocomplete_js |
| 60 | 79 |
get :autocomplete, :params => {
|
| 61 | 80 |
:format => 'js', |