diff options
author | Robert Speicher <rspeicher@gmail.com> | 2012-08-13 20:49:18 -0400 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2012-08-13 20:49:18 -0400 |
commit | 5a90d044f7fddf28b4dc3cd541315bce862f2866 (patch) | |
tree | 0bef091d9205dbf2026f01f6530224d0d3db4938 | |
parent | b1ea0b3c01f6d68834957a5f88b04329651802cc (diff) | |
download | gitlab-ce-5a90d044f7fddf28b4dc3cd541315bce862f2866.tar.gz |
Allow filtering by issues with no assigned... assignee
Continues #1222
-rw-r--r-- | app/controllers/issues_controller.rb | 7 | ||||
-rw-r--r-- | app/helpers/issues_helper.rb | 4 | ||||
-rw-r--r-- | app/views/issues/index.html.haml | 2 | ||||
-rw-r--r-- | spec/requests/issues_spec.rb | 17 |
4 files changed, 28 insertions, 2 deletions
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index e7396be2619..889a7d98033 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -144,14 +144,19 @@ class IssuesController < ApplicationController else @project.issues.opened end - @issues = @issues.where(assignee_id: params[:assignee_id]) if params[:assignee_id].present? @issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present? @issues = @issues.includes(:author, :project).order("updated_at") + # Filter by specific assignee_id (or lack thereof)? + if params[:assignee_id].present? + @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id])) + end + # Filter by specific milestone_id (or lack thereof)? if params[:milestone_id].present? @issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id])) end + @issues end diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 53ceec471ad..452611fefbd 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -42,4 +42,8 @@ module IssuesHelper def unassigned_milestone OpenStruct.new(id: 0, title: 'Unspecified') end + + def unassigned_issue + OpenStruct.new(id: 0, name: 'Unassigned') + end end diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 5ce097f5553..fbc2fe7dc05 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -49,7 +49,7 @@ .right = form_tag project_issues_path(@project), method: :get, class: :right do = select_tag(:label_name, options_for_select(issue_tags, params[:label_name]), prompt: "Labels") - = select_tag(:assignee_id, options_from_collection_for_select(@project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee") + = select_tag(:assignee_id, options_from_collection_for_select([unassigned_issue] + @project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee") = select_tag(:milestone_id, options_from_collection_for_select([unassigned_milestone] + @project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), prompt: "Milestone") = hidden_field_tag :f, params[:f] .clearfix diff --git a/spec/requests/issues_spec.rb b/spec/requests/issues_spec.rb index 1acac7d94cc..15ee5d174a0 100644 --- a/spec/requests/issues_spec.rb +++ b/spec/requests/issues_spec.rb @@ -102,6 +102,7 @@ describe "Issues" do @issue = Issue.first @issue.milestone = Factory(:milestone, project: project) + @issue.assignee = nil @issue.save end @@ -120,5 +121,21 @@ describe "Issues" do page.should_not have_content 'barbaz' page.should_not have_content 'gitlab' end + + it "should allow filtering by issues with no specified assignee" do + visit project_issues_path(project, assignee_id: '0') + + page.should have_content 'foobar' + page.should_not have_content 'barbaz' + page.should_not have_content 'gitlab' + end + + it "should allow filtering by a specified assignee" do + visit project_issues_path(project, assignee_id: @user.id) + + page.should_not have_content 'foobar' + page.should have_content 'barbaz' + page.should have_content 'gitlab' + end end end |