summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-05-08 12:46:15 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-05-08 12:46:15 +0000
commitdf0a49ff14474dd2230a823f57e95aa9d3b1cd71 (patch)
tree8cf5eff97f9ae378cccdf041135d5b0d1f364392
parent50429d0819e41ea01837fccb7a878f0d878e5f6c (diff)
downloadredmine-df0a49ff14474dd2230a823f57e95aa9d3b1cd71.tar.gz
redmine-df0a49ff14474dd2230a823f57e95aa9d3b1cd71.zip
"me" value is now available in queries for "assigned to" and "author" filters.
When executing the query, it is replaced by the currently logged in user. git-svn-id: http://redmine.rubyforge.org/svn/trunk@520 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/feeds_controller.rb2
-rw-r--r--app/controllers/projects_controller.rb3
-rw-r--r--app/controllers/queries_controller.rb1
-rw-r--r--app/models/query.rb21
-rw-r--r--lang/bg.yml1
-rw-r--r--lang/de.yml1
-rw-r--r--lang/en.yml1
-rw-r--r--lang/es.yml1
-rw-r--r--lang/fr.yml1
-rw-r--r--lang/it.yml1
-rw-r--r--lang/ja.yml1
-rw-r--r--lang/pt-br.yml1
-rw-r--r--lang/pt.yml1
-rw-r--r--lang/zh.yml1
14 files changed, 33 insertions, 4 deletions
diff --git a/app/controllers/feeds_controller.rb b/app/controllers/feeds_controller.rb
index 9314db5e3..214f80c95 100644
--- a/app/controllers/feeds_controller.rb
+++ b/app/controllers/feeds_controller.rb
@@ -37,6 +37,7 @@ class FeedsController < ApplicationController
def issues
if @project && params[:query_id]
query = Query.find(params[:query_id])
+ query.executed_by = @user
# ignore query if it's not valid
query = nil unless query.valid?
# override with query conditions
@@ -56,6 +57,7 @@ class FeedsController < ApplicationController
def history
if @project && params[:query_id]
query = Query.find(params[:query_id])
+ query.executed_by = @user
# ignore query if it's not valid
query = nil unless query.valid?
# override with query conditions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 82468c21a..e90196495 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -647,11 +647,12 @@ private
def retrieve_query
if params[:query_id]
@query = @project.queries.find(params[:query_id])
+ @query.executed_by = logged_in_user
session[:query] = @query
else
if params[:set_filter] or !session[:query] or session[:query].project_id != @project.id
# Give it a name, required to be valid
- @query = Query.new(:name => "_")
+ @query = Query.new(:name => "_", :executed_by => logged_in_user)
@query.project = @project
if params[:fields] and params[:fields].is_a? Array
params[:fields].each do |field|
diff --git a/app/controllers/queries_controller.rb b/app/controllers/queries_controller.rb
index 7f7f01fd3..abafd19d4 100644
--- a/app/controllers/queries_controller.rb
+++ b/app/controllers/queries_controller.rb
@@ -42,6 +42,7 @@ class QueriesController < ApplicationController
private
def find_query
@query = Query.find(params[:id])
+ @query.executed_by = logged_in_user
@project = @query.project
# check if user is allowed to manage queries (same permission as add_query)
authorize('projects', 'add_query')
diff --git a/app/models/query.rb b/app/models/query.rb
index e26e6a68e..026e79ea9 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -21,6 +21,7 @@ class Query < ActiveRecord::Base
serialize :filters
attr_protected :project, :user
+ attr_accessor :executed_by
validates_presence_of :name, :on => :save
@@ -59,6 +60,11 @@ class Query < ActiveRecord::Base
self.is_public = true
end
+ def executed_by=(user)
+ @executed_by = user
+ set_language_if_valid(user.language) if user
+ end
+
def validate
filters.each_key do |field|
errors.add label_for(field), :activerecord_error_blank unless
@@ -81,8 +87,12 @@ class Query < ActiveRecord::Base
"due_date" => { :type => :date, :order => 12 } }
unless project.nil?
# project specific filters
- @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :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] } }
+ user_values = []
+ user_values << ["<< #{l(:label_me)} >>", "me"] if executed_by
+ user_values += @project.users.collect{|s| [s.name, s.id.to_s] }
+
+ @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values }
+ @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values }
@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?
@@ -162,7 +172,7 @@ class Query < ActiveRecord::Base
end
filters.each_key do |field|
next if field == "subproject_id"
- v = values_for field
+ v = values_for(field).clone
next unless v and !v.empty?
sql = sql + " AND " unless sql.empty?
@@ -179,6 +189,11 @@ class Query < ActiveRecord::Base
db_field = field
end
+ # "me" value subsitution
+ if %w(assigned_to_id author_id).include?(field)
+ v.push(executed_by ? executed_by.id.to_s : "0") if v.delete("me")
+ end
+
case operator_for field
when "="
sql = sql + "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
diff --git a/lang/bg.yml b/lang/bg.yml
index e63672cdb..fb8e4b8dc 100644
--- a/lang/bg.yml
+++ b/lang/bg.yml
@@ -384,6 +384,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: Вход
button_submit: Изпращане
diff --git a/lang/de.yml b/lang/de.yml
index 3b3ef2af2..fa4125391 100644
--- a/lang/de.yml
+++ b/lang/de.yml
@@ -384,6 +384,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: Einloggen
button_submit: OK
diff --git a/lang/en.yml b/lang/en.yml
index 887ce6992..2e1ff6e1b 100644
--- a/lang/en.yml
+++ b/lang/en.yml
@@ -384,6 +384,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: Login
button_submit: Submit
diff --git a/lang/es.yml b/lang/es.yml
index 78ade511d..56d251426 100644
--- a/lang/es.yml
+++ b/lang/es.yml
@@ -384,6 +384,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: Conexión
button_submit: Someter
diff --git a/lang/fr.yml b/lang/fr.yml
index f843a64ad..3da0c1cef 100644
--- a/lang/fr.yml
+++ b/lang/fr.yml
@@ -384,6 +384,7 @@ label_start_to_end: début à fin
label_stay_logged_in: Rester connecté
label_disabled: désactivé
label_show_completed_versions: Voire les versions passées
+label_me: moi
button_login: Connexion
button_submit: Soumettre
diff --git a/lang/it.yml b/lang/it.yml
index ce70d9b23..1f61077c9 100644
--- a/lang/it.yml
+++ b/lang/it.yml
@@ -384,6 +384,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: Login
button_submit: Invia
diff --git a/lang/ja.yml b/lang/ja.yml
index 4066e869b..45acde369 100644
--- a/lang/ja.yml
+++ b/lang/ja.yml
@@ -385,6 +385,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: ログイン
button_submit: 変更
diff --git a/lang/pt-br.yml b/lang/pt-br.yml
index 5a2e9f5cd..6f127a4ca 100644
--- a/lang/pt-br.yml
+++ b/lang/pt-br.yml
@@ -384,6 +384,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: Login
button_submit: Enviar
diff --git a/lang/pt.yml b/lang/pt.yml
index 25fc40a3b..0809b3588 100644
--- a/lang/pt.yml
+++ b/lang/pt.yml
@@ -384,6 +384,7 @@ label_start_to_end: inícia ao fim
label_stay_logged_in: Rester connecté
label_disabled: désactivé
label_show_completed_versions: Voire les versions passées
+label_me: me
button_login: Login
button_submit: Enviar
diff --git a/lang/zh.yml b/lang/zh.yml
index bf3469679..4e8e3f38b 100644
--- a/lang/zh.yml
+++ b/lang/zh.yml
@@ -387,6 +387,7 @@ label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
label_show_completed_versions: Show completed versions
+label_me: me
button_login: 登录
button_submit: 提交