1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-03-11 19:53:07 +00:00

* project filter added on query

* query validity check on issues list export

git-svn-id: http://redmine.rubyforge.org/svn/branches/work@94 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2006-12-16 12:31:19 +00:00
parent 7b0dca2d6d
commit e0ee6a17fc
2 changed files with 33 additions and 24 deletions

View File

@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ProjectsController < ApplicationController
layout 'base', :except => :export_issues_pdf
layout 'base'
before_filter :find_project, :authorize, :except => [ :index, :list, :add ]
before_filter :require_admin, :only => [ :add, :destroy ]
@ -208,27 +208,7 @@ class ProjectsController < ApplicationController
sort_init 'issues.id', 'desc'
sort_update
if params[:query_id]
@query = @project.queries.find(params[:query_id])
else
if params[:set_filter] or !session[:query] or session[:query].project_id != @project.id
# 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
session[:query] = @query
else
@query = session[:query]
end
end
retrieve_query
@results_per_page_options = [ 15, 25, 50, 100 ]
if params[:per_page] and @results_per_page_options.include? params[:per_page].to_i
@ -255,7 +235,8 @@ class ProjectsController < ApplicationController
sort_init 'issues.id', 'desc'
sort_update
@query = session[:query] || Query.new
retrieve_query
render :action => 'list_issues' and return unless @query.valid?
@issues = Issue.find :all, :order => sort_clause,
:include => [ :author, :status, :tracker, :project, :custom_values ],
@ -288,7 +269,8 @@ class ProjectsController < ApplicationController
sort_init 'issues.id', 'desc'
sort_update
@query = session[:query] || Query.new
retrieve_query
render :action => 'list_issues' and return unless @query.valid?
@issues = Issue.find :all, :order => sort_clause,
:include => [ :author, :status, :tracker, :project, :custom_values ],
@ -296,6 +278,7 @@ class ProjectsController < ApplicationController
@options_for_rfpdf ||= {}
@options_for_rfpdf[:file_name] = "export.pdf"
render :layout => false
end
def move_issues
@ -503,4 +486,29 @@ private
rescue
redirect_to :action => 'list'
end
# Retrieve query from session or build a new query
def retrieve_query
if params[:query_id]
@query = @project.queries.find(params[:query_id])
else
if params[:set_filter] or !session[:query] or session[:query].project_id != @project.id
# 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
session[:query] = @query
else
@query = session[:query]
end
end
end
end

View File

@ -123,6 +123,7 @@ class Query < ActiveRecord::Base
def statement
sql = "1=1"
sql << " AND issues.project_id=%d" % project.id if project
filters.each_key do |field|
v = values_for field
next unless v and !v.empty?