summaryrefslogtreecommitdiffstats
path: root/app/helpers/queries_helper.rb
diff options
context:
space:
mode:
authorEric Davis <edavis@littlestreamsoftware.com>2010-04-27 15:28:52 +0000
committerEric Davis <edavis@littlestreamsoftware.com>2010-04-27 15:28:52 +0000
commitdf7edb843bf903a8c9a9d1d8ccf661f16ce31f98 (patch)
tree145fac0df3e5463148c9641a02b6a1b51450dff3 /app/helpers/queries_helper.rb
parentdfc448030d179ea80e68ce327bbd04cfb0c17d98 (diff)
downloadredmine-df7edb843bf903a8c9a9d1d8ccf661f16ce31f98.tar.gz
redmine-df7edb843bf903a8c9a9d1d8ccf661f16ce31f98.zip
Refactor: move method to helper.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3691 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/helpers/queries_helper.rb')
-rw-r--r--app/helpers/queries_helper.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb
index 997e5ff5a..594c8a79a 100644
--- a/app/helpers/queries_helper.rb
+++ b/app/helpers/queries_helper.rb
@@ -63,4 +63,38 @@ module QueriesHelper
h(value)
end
end
+
+ # Retrieve query from session or build a new query
+ def retrieve_query
+ if !params[:query_id].blank?
+ cond = "project_id IS NULL"
+ cond << " OR project_id = #{@project.id}" if @project
+ @query = Query.find(params[:query_id], :conditions => cond)
+ @query.project = @project
+ session[:query] = {:id => @query.id, :project_id => @query.project_id}
+ sort_clear
+ else
+ if api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil)
+ # Give it a name, required to be valid
+ @query = Query.new(:name => "_")
+ @query.project = @project
+ if params[:fields] and params[:fields].is_a? Array
+ params[:fields].each do |field|
+ @query.add_filter(field, params[:operators][field], params[:values][field])
+ end
+ else
+ @query.available_filters.keys.each do |field|
+ @query.add_short_filter(field, params[field]) if params[field]
+ end
+ end
+ @query.group_by = params[:group_by]
+ @query.column_names = params[:query] && params[:query][:column_names]
+ session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names}
+ else
+ @query = Query.find_by_id(session[:query][:id]) if session[:query][:id]
+ @query ||= Query.new(:name => "_", :project => @project, :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
+ @query.project = @project
+ end
+ end
+ end
end