diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-10-02 11:21:11 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-10-02 11:21:11 +0000 |
commit | b6ed06ca3c59292fd8c98e39e823aed8e65013e6 (patch) | |
tree | fda756d1266fc302a9a50d5f33fb92bcec26f9fc /app/models | |
parent | ca9aca685b78147bd370453be33c279245ed1ac7 (diff) | |
download | redmine-b6ed06ca3c59292fd8c98e39e823aed8e65013e6.tar.gz redmine-b6ed06ca3c59292fd8c98e39e823aed8e65013e6.zip |
Add the possibility to filter issues after Target Version's Status and Due Date (#23215).
Patch by Marius BALTEANU.
git-svn-id: http://svn.redmine.org/redmine/trunk@15881 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/issue_query.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index c3923940c..b0df69149 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -153,6 +153,15 @@ class IssueQuery < Query :type => :list_optional, :values => Version.sort_by_status(versions).collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s, l("version_status_#{s.status}")] } + add_available_filter "fixed_version.due_date", + :type => :date, + :name => l(:label_attribute_of_fixed_version, :name => l(:field_effective_date)) + + add_available_filter "fixed_version.status", + :type => :list, + :name => l(:label_attribute_of_fixed_version, :name => l(:field_status)), + :values => Version::VERSION_STATUSES.map{|t| [t, t] } + add_available_filter "category_id", :type => :list_optional, :values => categories.collect{|s| [s.name, s.id.to_s] } @@ -417,6 +426,22 @@ class IssueQuery < Query end end + def sql_for_fixed_version_status_field(field, operator, value) + where = sql_for_field(field, operator, value, Version.table_name, "status") + version_ids = versions(:conditions => [where]).map(&:id) + + nl = operator == "!" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' + "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" + end + + def sql_for_fixed_version_due_date_field(field, operator, value) + where = sql_for_field(field, operator, value, Version.table_name, "effective_date") + version_ids = versions(:conditions => [where]).map(&:id) + + nl = operator == "!*" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' + "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" + end + def sql_for_is_private_field(field, operator, value) op = (operator == "=" ? 'IN' : 'NOT IN') va = value.map {|v| v == '0' ? self.class.connection.quoted_false : self.class.connection.quoted_true}.uniq.join(',') |