diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-07-12 17:40:19 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-07-12 17:40:19 +0000 |
commit | beb5e6039166dadc8efccb65feb0f7ee450c9558 (patch) | |
tree | 291bd88733f83345216020cc9cc00b8ec0a145f2 /app/helpers/queries_helper.rb | |
parent | 7c6757c81a04a4351063ffd764a1afd53209d09d (diff) | |
download | redmine-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.rb | 21 |
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 |