* 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:
1 parent
7b0dca2d6d
commit
e0ee6a17fc
2 files changed
+33
-24
No files matched your search
@@ -16,7 +16,7 @@
|
|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
class ProjectsController < ApplicationController
|
class ProjectsController < ApplicationController
|
||||||
layout 'base', :except => :export_issues_pdf
|
layout 'base'
|
||||||
before_filter :find_project, :authorize, :except => [ :index, :list, :add ]
|
before_filter :find_project, :authorize, :except => [ :index, :list, :add ]
|
||||||
before_filter :require_admin, :only => [ :add, :destroy ]
|
before_filter :require_admin, :only => [ :add, :destroy ]
|
||||||
|
|
||||||
@@ -208,27 +208,7 @@ class ProjectsController < ApplicationController
|
|||||||
sort_init 'issues.id', 'desc'
|
sort_init 'issues.id', 'desc'
|
||||||
sort_update
|
sort_update
|
||||||
|
|
||||||
if params[:query_id]
|
retrieve_query
|
||||||
@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
|
|
||||||
|
|
||||||
@results_per_page_options = [ 15, 25, 50, 100 ]
|
@results_per_page_options = [ 15, 25, 50, 100 ]
|
||||||
if params[:per_page] and @results_per_page_options.include? params[:per_page].to_i
|
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_init 'issues.id', 'desc'
|
||||||
sort_update
|
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,
|
@issues = Issue.find :all, :order => sort_clause,
|
||||||
:include => [ :author, :status, :tracker, :project, :custom_values ],
|
:include => [ :author, :status, :tracker, :project, :custom_values ],
|
||||||
@@ -288,7 +269,8 @@ class ProjectsController < ApplicationController
|
|||||||
sort_init 'issues.id', 'desc'
|
sort_init 'issues.id', 'desc'
|
||||||
sort_update
|
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,
|
@issues = Issue.find :all, :order => sort_clause,
|
||||||
:include => [ :author, :status, :tracker, :project, :custom_values ],
|
:include => [ :author, :status, :tracker, :project, :custom_values ],
|
||||||
@@ -296,6 +278,7 @@ class ProjectsController < ApplicationController
|
|||||||
|
|
||||||
@options_for_rfpdf ||= {}
|
@options_for_rfpdf ||= {}
|
||||||
@options_for_rfpdf[:file_name] = "export.pdf"
|
@options_for_rfpdf[:file_name] = "export.pdf"
|
||||||
|
render :layout => false
|
||||||
end
|
end
|
||||||
|
|
||||||
def move_issues
|
def move_issues
|
||||||
@@ -503,4 +486,29 @@ private
|
|||||||
rescue
|
rescue
|
||||||
redirect_to :action => 'list'
|
redirect_to :action => 'list'
|
||||||
end
|
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
|
end
|
||||||
@@ -123,6 +123,7 @@ class Query < ActiveRecord::Base
|
|||||||
|
|
||||||
def statement
|
def statement
|
||||||
sql = "1=1"
|
sql = "1=1"
|
||||||
|
sql << " AND issues.project_id=%d" % project.id if project
|
||||||
filters.each_key do |field|
|
filters.each_key do |field|
|
||||||
v = values_for field
|
v = values_for field
|
||||||
next unless v and !v.empty?
|
next unless v and !v.empty?
|
||||||
|
|||||||
Reference in new issue
Block a user