##// END OF EJS Templates
Account information can now be sent to the user when creating an account....
Account information can now be sent to the user when creating an account. ActionMailer logger set to nil for production environment to disable email contents output in production.log git-svn-id: http://redmine.rubyforge.org/svn/trunk@546 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r540:ef39db234b40
r543:f04225321c3e
Show More
reports_controller.rb
214 lines | 9.6 KiB | text/x-ruby | RubyLexer
/ app / controllers / reports_controller.rb
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ReportsController < ApplicationController
layout 'base'
before_filter :find_project, :authorize
def issue_report
@statuses = IssueStatus.find(:all, :order => 'position')
case params[:detail]
when "tracker"
@field = "tracker_id"
@rows = Tracker.find :all, :order => 'position'
@data = issues_by_tracker
@report_title = l(:field_tracker)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540 when "version"
@field = "fixed_version_id"
@rows = @project.versions.sort
@data = issues_by_version
@report_title = l(:field_version)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 when "priority"
@field = "priority_id"
@rows = Enumeration::get_values('IPRI')
@data = issues_by_priority
@report_title = l(:field_priority)
render :template => "reports/issue_report_details"
when "category"
@field = "category_id"
@rows = @project.issue_categories
@data = issues_by_category
@report_title = l(:field_category)
render :template => "reports/issue_report_details"
when "author"
@field = "author_id"
@rows = @project.members.collect { |m| m.user }
@data = issues_by_author
@report_title = l(:field_author)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407 when "subproject"
@field = "project_id"
@rows = @project.children
@data = issues_by_subproject
@report_title = l(:field_subproject)
render :template => "reports/issue_report_details"
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 else
@queries = @project.queries.find :all, :conditions => ["is_public=? or user_id=?", true, (logged_in_user ? logged_in_user.id : 0)]
@trackers = Tracker.find(:all, :order => 'position')
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540 @versions = @project.versions.sort
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @priorities = Enumeration::get_values('IPRI')
@categories = @project.issue_categories
@authors = @project.members.collect { |m| m.user }
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407 @subprojects = @project.children
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 issues_by_tracker
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540 issues_by_version
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 issues_by_priority
issues_by_category
issues_by_author
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407 issues_by_subproject
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 @total_hours = @project.time_entries.sum(:hours)
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 render :template => "reports/issue_report"
end
end
def delays
@trackers = Tracker.find(:all)
if request.get?
@selected_tracker_ids = @trackers.collect {|t| t.id.to_s }
else
@selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array
end
@selected_tracker_ids ||= []
@raw =
ActiveRecord::Base.connection.select_all("SELECT datediff( a.created_on, b.created_on ) as delay, count(a.id) as total
FROM issue_histories a, issue_histories b, issues i
WHERE a.status_id =5
AND a.issue_id = b.issue_id
AND a.issue_id = i.id
AND i.tracker_id in (#{@selected_tracker_ids.join(',')})
AND b.id = (
SELECT min( c.id )
FROM issue_histories c
WHERE b.issue_id = c.issue_id )
GROUP BY delay") unless @selected_tracker_ids.empty?
@raw ||=[]
@x_from = 0
@x_to = 0
@y_from = 0
@y_to = 0
@sum_total = 0
@sum_delay = 0
@raw.each do |r|
@x_to = [r['delay'].to_i, @x_to].max
@y_to = [r['total'].to_i, @y_to].max
@sum_total = @sum_total + r['total'].to_i
@sum_delay = @sum_delay + r['total'].to_i * r['delay'].to_i
end
end
private
# Find project of id params[:id]
def find_project
@project = Project.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
end
def issues_by_tracker
@issues_by_tracker ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
t.id as tracker_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{Tracker.table_name} t
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.tracker_id=t.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, t.id")
end
Jean-Philippe Lang
Added issue count details for versions on Reports view....
r540
def issues_by_version
@issues_by_version ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
v.id as fixed_version_id,
count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{Version.table_name} v
where
i.status_id=s.id
and i.fixed_version_id=v.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, v.id")
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 def issues_by_priority
@issues_by_priority ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
p.id as priority_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{Enumeration.table_name} p
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.priority_id=p.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, p.id")
end
def issues_by_category
@issues_by_category ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
c.id as category_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{IssueCategory.table_name} c
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.category_id=c.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, c.id")
end
def issues_by_author
@issues_by_author ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
a.id as author_id,
count(i.id) as total
from
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 #{Issue.table_name} i, #{IssueStatus.table_name} s, #{User.table_name} a
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 where
i.status_id=s.id
and i.author_id=a.id
and i.project_id=#{@project.id}
group by s.id, s.is_closed, a.id")
Jean-Philippe Lang
indentation corrections...
r198 end
Jean-Philippe Lang
Added subprojects issue count on project "Reports" page...
r407
def issues_by_subproject
@issues_by_subproject ||=
ActiveRecord::Base.connection.select_all("select s.id as status_id,
s.is_closed as closed,
i.project_id as project_id,
count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s
where
i.status_id=s.id
and i.project_id IN (#{@project.children.collect{|p| p.id}.join(',')})
group by s.id, s.is_closed, i.project_id") if @project.children.any?
@issues_by_subproject ||= []
end
Jean-Philippe Lang
Initial commit...
r2 end