diff options
author | Eric Davis <edavis@littlestreamsoftware.com> | 2010-04-27 15:28:52 +0000 |
---|---|---|
committer | Eric Davis <edavis@littlestreamsoftware.com> | 2010-04-27 15:28:52 +0000 |
commit | df7edb843bf903a8c9a9d1d8ccf661f16ce31f98 (patch) | |
tree | 145fac0df3e5463148c9641a02b6a1b51450dff3 /app/helpers/queries_helper.rb | |
parent | dfc448030d179ea80e68ce327bbd04cfb0c17d98 (diff) | |
download | redmine-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.rb | 34 |
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 |