summaryrefslogtreecommitdiffstats
path: root/app/helpers/queries_helper.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-07-12 17:40:19 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-07-12 17:40:19 +0000
commitbeb5e6039166dadc8efccb65feb0f7ee450c9558 (patch)
tree291bd88733f83345216020cc9cc00b8ec0a145f2 /app/helpers/queries_helper.rb
parent7c6757c81a04a4351063ffd764a1afd53209d09d (diff)
downloadredmine-beb5e6039166dadc8efccb65feb0f7ee450c9558.tar.gz
redmine-beb5e6039166dadc8efccb65feb0f7ee450c9558.zip
Makes spent time queries savable (#14790).
git-svn-id: http://svn.redmine.org/redmine/trunk@15639 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/helpers/queries_helper.rb')
-rw-r--r--app/helpers/queries_helper.rb21
1 files changed, 11 insertions, 10 deletions
diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb
index 0bea000db..f24e51327 100644
--- a/app/helpers/queries_helper.rb
+++ b/app/helpers/queries_helper.rb
@@ -204,26 +204,27 @@ module QueriesHelper
end
# Retrieve query from session or build a new query
- def retrieve_query
- if !params[:query_id].blank?
+ def retrieve_query(klass=IssueQuery, use_session=true)
+ session_key = klass.name.underscore.to_sym
+
+ if params[:query_id].present?
cond = "project_id IS NULL"
cond << " OR project_id = #{@project.id}" if @project
- @query = IssueQuery.where(cond).find(params[:query_id])
+ @query = klass.where(cond).find(params[:query_id])
raise ::Unauthorized unless @query.visible?
@query.project = @project
- session[:query] = {:id => @query.id, :project_id => @query.project_id}
+ session[session_key] = {:id => @query.id, :project_id => @query.project_id} if use_session
sort_clear
- elsif api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil)
+ elsif api_request? || params[:set_filter] || !use_session || session[session_key].nil? || session[session_key][:project_id] != (@project ? @project.id : nil)
# Give it a name, required to be valid
- @query = IssueQuery.new(:name => "_")
- @query.project = @project
+ @query = klass.new(:name => "_", :project => @project)
@query.build_from_params(params)
- session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names, :totalable_names => @query.totalable_names}
+ session[session_key] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names, :totalable_names => @query.totalable_names} if use_session
else
# retrieve from session
@query = nil
- @query = IssueQuery.find_by_id(session[:query][:id]) if session[:query][:id]
- @query ||= IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names], :totalable_names => session[:query][:totalable_names])
+ @query = klass.find_by_id(session[session_key][:id]) if session[session_key][:id]
+ @query ||= klass.new(:name => "_", :filters => session[session_key][:filters], :group_by => session[session_key][:group_by], :column_names => session[session_key][:column_names], :totalable_names => session[session_key][:totalable_names])
@query.project = @project
end
end