@@ -37,6 +37,7 class FeedsController < ApplicationController | |||
|
37 | 37 | def issues |
|
38 | 38 | if @project && params[:query_id] |
|
39 | 39 | query = Query.find(params[:query_id]) |
|
40 | query.executed_by = @user | |
|
40 | 41 | # ignore query if it's not valid |
|
41 | 42 | query = nil unless query.valid? |
|
42 | 43 | # override with query conditions |
@@ -56,6 +57,7 class FeedsController < ApplicationController | |||
|
56 | 57 | def history |
|
57 | 58 | if @project && params[:query_id] |
|
58 | 59 | query = Query.find(params[:query_id]) |
|
60 | query.executed_by = @user | |
|
59 | 61 | # ignore query if it's not valid |
|
60 | 62 | query = nil unless query.valid? |
|
61 | 63 | # override with query conditions |
@@ -647,11 +647,12 private | |||
|
647 | 647 | def retrieve_query |
|
648 | 648 | if params[:query_id] |
|
649 | 649 | @query = @project.queries.find(params[:query_id]) |
|
650 | @query.executed_by = logged_in_user | |
|
650 | 651 | session[:query] = @query |
|
651 | 652 | else |
|
652 | 653 | if params[:set_filter] or !session[:query] or session[:query].project_id != @project.id |
|
653 | 654 | # Give it a name, required to be valid |
|
654 | @query = Query.new(:name => "_") | |
|
655 | @query = Query.new(:name => "_", :executed_by => logged_in_user) | |
|
655 | 656 | @query.project = @project |
|
656 | 657 | if params[:fields] and params[:fields].is_a? Array |
|
657 | 658 | params[:fields].each do |field| |
@@ -42,6 +42,7 class QueriesController < ApplicationController | |||
|
42 | 42 | private |
|
43 | 43 | def find_query |
|
44 | 44 | @query = Query.find(params[:id]) |
|
45 | @query.executed_by = logged_in_user | |
|
45 | 46 | @project = @query.project |
|
46 | 47 | # check if user is allowed to manage queries (same permission as add_query) |
|
47 | 48 | authorize('projects', 'add_query') |
@@ -21,6 +21,7 class Query < ActiveRecord::Base | |||
|
21 | 21 | serialize :filters |
|
22 | 22 | |
|
23 | 23 | attr_protected :project, :user |
|
24 | attr_accessor :executed_by | |
|
24 | 25 | |
|
25 | 26 | validates_presence_of :name, :on => :save |
|
26 | 27 | |
@@ -59,6 +60,11 class Query < ActiveRecord::Base | |||
|
59 | 60 | self.is_public = true |
|
60 | 61 | end |
|
61 | 62 | |
|
63 | def executed_by=(user) | |
|
64 | @executed_by = user | |
|
65 | set_language_if_valid(user.language) if user | |
|
66 | end | |
|
67 | ||
|
62 | 68 | def validate |
|
63 | 69 | filters.each_key do |field| |
|
64 | 70 | errors.add label_for(field), :activerecord_error_blank unless |
@@ -81,8 +87,12 class Query < ActiveRecord::Base | |||
|
81 | 87 | "due_date" => { :type => :date, :order => 12 } } |
|
82 | 88 | unless project.nil? |
|
83 | 89 | # project specific filters |
|
84 | @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => @project.users.collect{|s| [s.name, s.id.to_s] } } | |
|
85 | @available_filters["author_id"] = { :type => :list, :order => 5, :values => @project.users.collect{|s| [s.name, s.id.to_s] } } | |
|
90 | user_values = [] | |
|
91 | user_values << ["<< #{l(:label_me)} >>", "me"] if executed_by | |
|
92 | user_values += @project.users.collect{|s| [s.name, s.id.to_s] } | |
|
93 | ||
|
94 | @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } | |
|
95 | @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } | |
|
86 | 96 | @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } } |
|
87 | 97 | @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.versions.collect{|s| [s.name, s.id.to_s] } } |
|
88 | 98 | unless @project.children.empty? |
@@ -162,7 +172,7 class Query < ActiveRecord::Base | |||
|
162 | 172 | end |
|
163 | 173 | filters.each_key do |field| |
|
164 | 174 | next if field == "subproject_id" |
|
165 |
v = values_for |
|
|
175 | v = values_for(field).clone | |
|
166 | 176 | next unless v and !v.empty? |
|
167 | 177 | |
|
168 | 178 | sql = sql + " AND " unless sql.empty? |
@@ -179,6 +189,11 class Query < ActiveRecord::Base | |||
|
179 | 189 | db_field = field |
|
180 | 190 | end |
|
181 | 191 | |
|
192 | # "me" value subsitution | |
|
193 | if %w(assigned_to_id author_id).include?(field) | |
|
194 | v.push(executed_by ? executed_by.id.to_s : "0") if v.delete("me") | |
|
195 | end | |
|
196 | ||
|
182 | 197 | case operator_for field |
|
183 | 198 | when "=" |
|
184 | 199 | sql = sql + "#{db_table}.#{db_field} IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" |
@@ -384,6 +384,7 label_start_to_end: start to end | |||
|
384 | 384 | label_stay_logged_in: Stay logged in |
|
385 | 385 | label_disabled: disabled |
|
386 | 386 | label_show_completed_versions: Show completed versions |
|
387 | label_me: me | |
|
387 | 388 | |
|
388 | 389 | button_login: Вход |
|
389 | 390 | button_submit: Изпращане |
@@ -384,6 +384,7 label_start_to_end: start to end | |||
|
384 | 384 | label_stay_logged_in: Stay logged in |
|
385 | 385 | label_disabled: disabled |
|
386 | 386 | label_show_completed_versions: Show completed versions |
|
387 | label_me: me | |
|
387 | 388 | |
|
388 | 389 | button_login: Einloggen |
|
389 | 390 | button_submit: OK |
@@ -384,6 +384,7 label_start_to_end: start to end | |||
|
384 | 384 | label_stay_logged_in: Stay logged in |
|
385 | 385 | label_disabled: disabled |
|
386 | 386 | label_show_completed_versions: Show completed versions |
|
387 | label_me: me | |
|
387 | 388 | |
|
388 | 389 | button_login: Login |
|
389 | 390 | button_submit: Submit |
@@ -384,6 +384,7 label_start_to_end: start to end | |||
|
384 | 384 | label_stay_logged_in: Stay logged in |
|
385 | 385 | label_disabled: disabled |
|
386 | 386 | label_show_completed_versions: Show completed versions |
|
387 | label_me: me | |
|
387 | 388 | |
|
388 | 389 | button_login: Conexión |
|
389 | 390 | button_submit: Someter |
@@ -384,6 +384,7 label_start_to_end: début à fin | |||
|
384 | 384 | label_stay_logged_in: Rester connecté |
|
385 | 385 | label_disabled: désactivé |
|
386 | 386 | label_show_completed_versions: Voire les versions passées |
|
387 | label_me: moi | |
|
387 | 388 | |
|
388 | 389 | button_login: Connexion |
|
389 | 390 | button_submit: Soumettre |
@@ -384,6 +384,7 label_start_to_end: start to end | |||
|
384 | 384 | label_stay_logged_in: Stay logged in |
|
385 | 385 | label_disabled: disabled |
|
386 | 386 | label_show_completed_versions: Show completed versions |
|
387 | label_me: me | |
|
387 | 388 | |
|
388 | 389 | button_login: Login |
|
389 | 390 | button_submit: Invia |
@@ -385,6 +385,7 label_start_to_end: start to end | |||
|
385 | 385 | label_stay_logged_in: Stay logged in |
|
386 | 386 | label_disabled: disabled |
|
387 | 387 | label_show_completed_versions: Show completed versions |
|
388 | label_me: me | |
|
388 | 389 | |
|
389 | 390 | button_login: ログイン |
|
390 | 391 | button_submit: 変更 |
@@ -384,6 +384,7 label_start_to_end: start to end | |||
|
384 | 384 | label_stay_logged_in: Stay logged in |
|
385 | 385 | label_disabled: disabled |
|
386 | 386 | label_show_completed_versions: Show completed versions |
|
387 | label_me: me | |
|
387 | 388 | |
|
388 | 389 | button_login: Login |
|
389 | 390 | button_submit: Enviar |
General Comments 0
You need to be logged in to leave comments.
Login now