diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-03-19 20:31:02 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-03-19 20:31:02 +0000 |
commit | dfb81dd89c504daec22a26f0020b8c376609304f (patch) | |
tree | 5b80d6fab478c478938760c04e7da46c6f2255d5 /app | |
parent | 59e3802c7476591cfa1d50c2008ecf9e67e75828 (diff) | |
download | redmine-dfb81dd89c504daec22a26f0020b8c376609304f.tar.gz redmine-dfb81dd89c504daec22a26f0020b8c376609304f.zip |
added back "subproject" filter on issue list
git-svn-id: http://redmine.rubyforge.org/svn/trunk@350 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/models/query.rb | 19 | ||||
-rw-r--r-- | app/views/queries/_filters.rhtml | 2 |
2 files changed, 18 insertions, 3 deletions
diff --git a/app/models/query.rb b/app/models/query.rb index fbf48927a..fcfad6839 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -45,6 +45,7 @@ class Query < ActiveRecord::Base @@operators_by_filter_type = { :list => [ "=", "!" ], :list_status => [ "o", "=", "!", "c", "*" ], :list_optional => [ "=", "!", "!*", "*" ], + :list_one_or_more => [ "*", "=" ], :date => [ "<t+", ">t+", "t+", "t", ">t-", "<t-", "t-" ], :date_past => [ ">t-", "<t-", "t-", "t" ], :text => [ "~", "!~" ] } @@ -83,6 +84,9 @@ class Query < ActiveRecord::Base @available_filters["author_id"] = { :type => :list, :order => 5, :values => @project.users.collect{|s| [s.name, s.id.to_s] } } @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } } @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.versions.collect{|s| [s.name, s.id.to_s] } } + unless @project.children.empty? + @available_filters["subproject_id"] = { :type => :list_one_or_more, :order => 13, :values => @project.children.collect{|s| [s.name, s.id.to_s] } } + end # remove category filter if no category defined @available_filters.delete "category_id" if @available_filters["category_id"][:values].empty? end @@ -123,9 +127,20 @@ class Query < ActiveRecord::Base end def statement - sql = "1=1" - sql << " AND #{Issue.table_name}.project_id=%d" % project.id if project + sql = "1=1" + if has_filter?("subproject_id") + subproject_ids = [] + if operator_for("subproject_id") == "=" + subproject_ids = values_for("subproject_id").each(&:to_i) + else + subproject_ids = project.children.collect{|p| p.id} + end + sql << " AND #{Issue.table_name}.project_id IN (%d,%s)" % [project.id, subproject_ids.join(",")] if project + else + sql << " AND #{Issue.table_name}.project_id=%d" % project.id if project + end filters.each_key do |field| + next if field == "subproject_id" v = values_for field next unless v and !v.empty? sql = sql + " AND " unless sql.empty? diff --git a/app/views/queries/_filters.rhtml b/app/views/queries/_filters.rhtml index aa64dbb8f..0314e30b5 100644 --- a/app/views/queries/_filters.rhtml +++ b/app/views/queries/_filters.rhtml @@ -74,7 +74,7 @@ function toggle_multi_select(field) { <td valign="top"> <div id="div_values_<%= field %>"> <% case options[:type] - when :list, :list_optional, :list_status %> + when :list, :list_optional, :list_status, :list_one_or_more %> <select <%= "multiple=true" if query.values_for(field) and query.values_for(field).length > 1 %> name="values[<%= field %>][]" id="values_<%= field %>" class="select-small" style="vertical-align: top;"> <%= options_for_select options[:values], query.values_for(field) %> </select> |