diff options
author | Robert Speicher <rspeicher@gmail.com> | 2012-08-13 09:38:00 +0400 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2012-08-13 09:38:00 +0400 |
commit | b1ea0b3c01f6d68834957a5f88b04329651802cc (patch) | |
tree | 4d096406f77c660c30770de3937f8f582f5f5e39 /app | |
parent | 28d903858e1ba491bcb75a5534db9eea1acdeaf0 (diff) |
Allow filtering by issues with no assigned milestone
Closes #1222
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/issues_controller.rb | 6 | ||||
-rw-r--r-- | app/helpers/issues_helper.rb | 6 | ||||
-rw-r--r-- | app/views/issues/index.html.haml | 2 |
3 files changed, 12 insertions, 2 deletions
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index a7958b1effa..e7396be2619 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -145,9 +145,13 @@ class IssuesController < ApplicationController end @issues = @issues.where(assignee_id: params[:assignee_id]) if params[:assignee_id].present? - @issues = @issues.where(milestone_id: params[:milestone_id]) if params[:milestone_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 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 177ba0c2c90..53ceec471ad 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -36,4 +36,10 @@ module IssuesHelper def issue_tags @project.issues.tag_counts_on(:labels).map(&:name) end + + # Returns a fake Milestone-like object that can be used in a + # <tt>select_tag</tt> to allow filtering by issues with no assigned milestone + def unassigned_milestone + OpenStruct.new(id: 0, title: 'Unspecified') + end end diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index f3c743f75c3..5ce097f5553 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -50,7 +50,7 @@ = 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(:milestone_id, options_from_collection_for_select(@project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), prompt: "Milestone") + = 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 |