added back "subproject" filter on issue list

git-svn-id: http://redmine.rubyforge.org/svn/trunk@350 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2007-03-19 20:31:02 +00:00
parent 59e3802c74
commit dfb81dd89c
8 changed files with 24 additions and 9 deletions

View File

@ -45,6 +45,7 @@ class Query < ActiveRecord::Base
@@operators_by_filter_type = { :list => [ "=", "!" ], @@operators_by_filter_type = { :list => [ "=", "!" ],
:list_status => [ "o", "=", "!", "c", "*" ], :list_status => [ "o", "=", "!", "c", "*" ],
:list_optional => [ "=", "!", "!*", "*" ], :list_optional => [ "=", "!", "!*", "*" ],
:list_one_or_more => [ "*", "=" ],
:date => [ "<t+", ">t+", "t+", "t", ">t-", "<t-", "t-" ], :date => [ "<t+", ">t+", "t+", "t", ">t-", "<t-", "t-" ],
:date_past => [ ">t-", "<t-", "t-", "t" ], :date_past => [ ">t-", "<t-", "t-", "t" ],
:text => [ "~", "!~" ] } :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["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["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] } } @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 # remove category filter if no category defined
@available_filters.delete "category_id" if @available_filters["category_id"][:values].empty? @available_filters.delete "category_id" if @available_filters["category_id"][:values].empty?
end end
@ -124,8 +128,19 @@ class Query < ActiveRecord::Base
def statement def statement
sql = "1=1" sql = "1=1"
sql << " AND #{Issue.table_name}.project_id=%d" % project.id if project 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| filters.each_key do |field|
next if field == "subproject_id"
v = values_for field v = values_for field
next unless v and !v.empty? next unless v and !v.empty?
sql = sql + " AND " unless sql.empty? sql = sql + " AND " unless sql.empty?

View File

@ -74,7 +74,7 @@ function toggle_multi_select(field) {
<td valign="top"> <td valign="top">
<div id="div_values_<%= field %>"> <div id="div_values_<%= field %>">
<% case options[:type] <% 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;"> <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) %> <%= options_for_select options[:values], query.values_for(field) %>
</select> </select>

View File

@ -142,6 +142,7 @@ field_hide_mail: Mein email address verstecken
field_comment: Anmerkung field_comment: Anmerkung
field_url: URL field_url: URL
field_start_page: Hauptseite field_start_page: Hauptseite
field_subproject: Vorprojekt von
setting_app_title: Applikation Titel setting_app_title: Applikation Titel
setting_app_subtitle: Applikation Untertitel setting_app_subtitle: Applikation Untertitel
@ -220,7 +221,6 @@ label_authentication: Authentisierung
label_auth_source: Authentisierung Modus label_auth_source: Authentisierung Modus
label_auth_source_new: Neuer Authentisierung Modus label_auth_source_new: Neuer Authentisierung Modus
label_auth_source_plural: Authentisierung Modi label_auth_source_plural: Authentisierung Modi
label_subproject: Vorprojekt von
label_subproject_plural: Vorprojekte label_subproject_plural: Vorprojekte
label_min_max_length: Min - Max Länge label_min_max_length: Min - Max Länge
label_list: Liste label_list: Liste

View File

@ -142,6 +142,7 @@ field_hide_mail: Hide my email address
field_comment: Comment field_comment: Comment
field_url: URL field_url: URL
field_start_page: Start page field_start_page: Start page
field_subproject: Subproject
setting_app_title: Application title setting_app_title: Application title
setting_app_subtitle: Application subtitle setting_app_subtitle: Application subtitle
@ -220,7 +221,6 @@ label_authentication: Authentication
label_auth_source: Authentication mode label_auth_source: Authentication mode
label_auth_source_new: New authentication mode label_auth_source_new: New authentication mode
label_auth_source_plural: Authentication modes label_auth_source_plural: Authentication modes
label_subproject: Subproject
label_subproject_plural: Subprojects label_subproject_plural: Subprojects
label_min_max_length: Min - Max length label_min_max_length: Min - Max length
label_list: List label_list: List

View File

@ -142,6 +142,7 @@ field_hide_mail: Ocultar mi email address
field_comment: Comentario field_comment: Comentario
field_url: URL field_url: URL
field_start_page: Página principal field_start_page: Página principal
field_subproject: Proyecto secundario
setting_app_title: Título del aplicación setting_app_title: Título del aplicación
setting_app_subtitle: Subtítulo del aplicación setting_app_subtitle: Subtítulo del aplicación
@ -220,7 +221,6 @@ label_authentication: Autentificación
label_auth_source: Modo de la autentificación label_auth_source: Modo de la autentificación
label_auth_source_new: Nuevo modo de la autentificación label_auth_source_new: Nuevo modo de la autentificación
label_auth_source_plural: Modos de la autentificación label_auth_source_plural: Modos de la autentificación
label_subproject: Proyecto secundario
label_subproject_plural: Proyectos secundarios label_subproject_plural: Proyectos secundarios
label_min_max_length: Longitud mín - máx label_min_max_length: Longitud mín - máx
label_list: Lista label_list: Lista

View File

@ -142,6 +142,7 @@ field_hide_mail: Cacher mon adresse mail
field_comment: Commentaire field_comment: Commentaire
field_url: URL field_url: URL
field_start_page: Page de démarrage field_start_page: Page de démarrage
field_subproject: Sous-projet
setting_app_title: Titre de l'application setting_app_title: Titre de l'application
setting_app_subtitle: Sous-titre de l'application setting_app_subtitle: Sous-titre de l'application
@ -220,7 +221,6 @@ label_authentication: Authentification
label_auth_source: Mode d'authentification label_auth_source: Mode d'authentification
label_auth_source_new: Nouveau mode d'authentification label_auth_source_new: Nouveau mode d'authentification
label_auth_source_plural: Modes d'authentification label_auth_source_plural: Modes d'authentification
label_subproject: Sous-projet
label_subproject_plural: Sous-projets label_subproject_plural: Sous-projets
label_min_max_length: Longueurs mini - maxi label_min_max_length: Longueurs mini - maxi
label_list: Liste label_list: Liste

View File

@ -142,6 +142,7 @@ field_hide_mail: Nascondi il mio indirizzo di e-mail
field_comment: Commento field_comment: Commento
field_url: URL field_url: URL
field_start_page: Pagina principale field_start_page: Pagina principale
field_subproject: Sottoprogetto
setting_app_title: Titolo applicazione setting_app_title: Titolo applicazione
setting_app_subtitle: Sottotitolo applicazione setting_app_subtitle: Sottotitolo applicazione
@ -220,7 +221,6 @@ label_authentication: Autenticazione
label_auth_source: Modalità di autenticazione label_auth_source: Modalità di autenticazione
label_auth_source_new: Nuova modalità di autenticazione label_auth_source_new: Nuova modalità di autenticazione
label_auth_source_plural: Modalità di autenticazione label_auth_source_plural: Modalità di autenticazione
label_subproject: Sottoprogetto
label_subproject_plural: Sottoprogetti label_subproject_plural: Sottoprogetti
label_min_max_length: Lunghezza minima - massima label_min_max_length: Lunghezza minima - massima
label_list: Elenco label_list: Elenco

View File

@ -143,6 +143,7 @@ field_hide_mail: Emailアドレスを隠す
field_comment: コメント field_comment: コメント
field_url: URL field_url: URL
field_start_page: メインページ field_start_page: メインページ
field_subproject: サブプロジェクト
setting_app_title: アプリケーションのタイトル setting_app_title: アプリケーションのタイトル
setting_app_subtitle: アプリケーションのサブタイトル setting_app_subtitle: アプリケーションのサブタイトル
@ -221,7 +222,6 @@ label_authentication: 認証
label_auth_source: 認証モード label_auth_source: 認証モード
label_auth_source_new: 新しい認証モード label_auth_source_new: 新しい認証モード
label_auth_source_plural: 認証モード label_auth_source_plural: 認証モード
label_subproject: サブプロジェクト
label_subproject_plural: サブプロジェクト label_subproject_plural: サブプロジェクト
label_min_max_length: 最小値 - 最大値の長さ label_min_max_length: 最小値 - 最大値の長さ
label_list: リストから選択 label_list: リストから選択