Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2012-08-13 09:38:00 +0400
committerRobert Speicher <rspeicher@gmail.com>2012-08-13 09:38:00 +0400
commitb1ea0b3c01f6d68834957a5f88b04329651802cc (patch)
tree4d096406f77c660c30770de3937f8f582f5f5e39 /app
parent28d903858e1ba491bcb75a5534db9eea1acdeaf0 (diff)
Allow filtering by issues with no assigned milestone
Closes #1222
Diffstat (limited to 'app')
-rw-r--r--app/controllers/issues_controller.rb6
-rw-r--r--app/helpers/issues_helper.rb6
-rw-r--r--app/views/issues/index.html.haml2
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