##// END OF EJS Templates
Title property added for generated pdf gantt...
Title property added for generated pdf gantt git-svn-id: http://redmine.rubyforge.org/svn/trunk@225 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r202:fe22797d6927
r222:c36561454866
Show More
issues_controller.rb
149 lines | 6.4 KiB | text/x-ruby | RubyLexer
/ app / controllers / issues_controller.rb
Jean-Philippe Lang
Initial commit...
r2 # redMine - project management software
Jean-Philippe Lang
mail notifications added when:...
r193 # Copyright (C) 2006-2007 Jean-Philippe Lang
Jean-Philippe Lang
Initial commit...
r2 #
# 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 IssuesController < ApplicationController
Jean-Philippe Lang
* single/multiple issues pdf export added...
r35 layout 'base', :except => :export_pdf
Jean-Philippe Lang
data locking for issues...
r21 before_filter :find_project, :authorize
Jean-Philippe Lang
Initial commit...
r2
Jean-Philippe Lang
data locking for issues...
r21 helper :custom_fields
include CustomFieldsHelper
Jean-Philippe Lang
* single/multiple issues pdf export added...
r35 helper :ifpdf
include IfpdfHelper
Jean-Philippe Lang
data locking for issues...
r21
def show
Jean-Philippe Lang
added the ability to set the sort order for issue statuses...
r202 @status_options = @issue.status.workflows.find(:all, :order => 'position', :include => :new_status, :conditions => ["role_id=? and tracker_id=?", self.logged_in_user.role_for_project(@project.id), @issue.tracker.id]).collect{ |w| w.new_status } if self.logged_in_user
Jean-Philippe Lang
0.3 unstable...
r10 @custom_values = @issue.custom_values.find(:all, :include => :custom_field)
Jean-Philippe Lang
improved issues change history...
r52 @journals_count = @issue.journals.count
@journals = @issue.journals.find(:all, :include => [:user, :details], :limit => 15, :order => "journals.created_on desc")
end
def history
@journals = @issue.journals.find(:all, :include => [:user, :details], :order => "journals.created_on desc")
@journals_count = @journals.length
Jean-Philippe Lang
* single/multiple issues pdf export added...
r35 end
def export_pdf
@custom_values = @issue.custom_values.find(:all, :include => :custom_field)
@options_for_rfpdf ||= {}
@options_for_rfpdf[:file_name] = "#{@project.name}_#{@issue.long_id}.pdf"
Jean-Philippe Lang
data locking for issues...
r21 end
Jean-Philippe Lang
Initial commit...
r2
Jean-Philippe Lang
data locking for issues...
r21 def edit
@priorities = Enumeration::get_values('IPRI')
if request.get?
@custom_values = @project.custom_fields_for_issues(@issue.tracker).collect { |x| @issue.custom_values.find_by_custom_field_id(x.id) || CustomValue.new(:custom_field => x, :customized => @issue) }
else
begin
Jean-Philippe Lang
improved issues change history...
r52 @issue.init_journal(self.logged_in_user)
Jean-Philippe Lang
data locking for issues...
r21 # Retrieve custom fields and values
@custom_values = @project.custom_fields_for_issues(@issue.tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue, :value => params["custom_fields"][x.id.to_s]) }
@issue.custom_values = @custom_values
@issue.attributes = params[:issue]
if @issue.save
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @issue
end
rescue ActiveRecord::StaleObjectError
# Optimistic locking exception
flash[:notice] = l(:notice_locking_conflict)
end
end
end
Jean-Philippe Lang
issues/add_note added...
r34
def add_note
Jean-Philippe Lang
improved issues change history...
r52 unless params[:notes].empty?
journal = @issue.init_journal(self.logged_in_user, params[:notes])
#@history = @issue.histories.build(params[:history])
#@history.author_id = self.logged_in_user.id if self.logged_in_user
#@history.status = @issue.status
if @issue.save
Jean-Philippe Lang
issues/add_note added...
r34 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
replaced deprecated controller instance variables: @params, @session, @request...
r124 Mailer.deliver_issue_edit(journal) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
Jean-Philippe Lang
issues/add_note added...
r34 redirect_to :action => 'show', :id => @issue
return
end
end
show
render :action => 'show'
end
Jean-Philippe Lang
data locking for issues...
r21
def change_status
Jean-Philippe Lang
improved issues change history...
r52 #@history = @issue.histories.build(params[:history])
Jean-Philippe Lang
added the ability to set the sort order for issue statuses...
r202 @status_options = @issue.status.workflows.find(:all, :order => 'position', :include => :new_status, :conditions => ["role_id=? and tracker_id=?", self.logged_in_user.role_for_project(@project.id), @issue.tracker.id]).collect{ |w| w.new_status } if self.logged_in_user
Jean-Philippe Lang
improved issues change history...
r52 @new_status = IssueStatus.find(params[:new_status_id])
Jean-Philippe Lang
data locking for issues...
r21 if params[:confirm]
begin
Jean-Philippe Lang
improved issues change history...
r52 #@history.author_id = self.logged_in_user.id if self.logged_in_user
#@issue.status = @history.status
#@issue.fixed_version_id = (params[:issue][:fixed_version_id])
#@issue.assigned_to_id = (params[:issue][:assigned_to_id])
#@issue.done_ratio = (params[:issue][:done_ratio])
#@issue.lock_version = (params[:issue][:lock_version])
Jean-Philippe Lang
mailer bug fix...
r53 journal = @issue.init_journal(self.logged_in_user, params[:notes])
Jean-Philippe Lang
improved issues change history...
r52 @issue.status = @new_status
if @issue.update_attributes(params[:issue])
Jean-Philippe Lang
data locking for issues...
r21 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
replaced deprecated controller instance variables: @params, @session, @request...
r124 Mailer.deliver_issue_edit(journal) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
Jean-Philippe Lang
data locking for issues...
r21 redirect_to :action => 'show', :id => @issue
end
rescue ActiveRecord::StaleObjectError
# Optimistic locking exception
flash[:notice] = l(:notice_locking_conflict)
end
end
Jean-Philippe Lang
Initial commit...
r2 @assignable_to = @project.members.find(:all, :include => :user).collect{ |m| m.user }
Jean-Philippe Lang
data locking for issues...
r21 end
def destroy
@issue.destroy
redirect_to :controller => 'projects', :action => 'list_issues', :id => @project
end
Jean-Philippe Lang
Initial commit...
r2 def add_attachment
Jean-Philippe Lang
multiple file upload...
r38 # Save the attachments
Jean-Philippe Lang
mail notifications added when:...
r193 @attachments = []
params[:attachments].each { |file|
next unless file.size > 0
a = Attachment.create(:container => @issue, :file => file, :author => logged_in_user)
@attachments << a unless a.new_record?
Jean-Philippe Lang
multiple file upload...
r38 } if params[:attachments] and params[:attachments].is_a? Array
Jean-Philippe Lang
mail notifications added when:...
r193 Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
Jean-Philippe Lang
Initial commit...
r2 redirect_to :action => 'show', :id => @issue
end
def destroy_attachment
@issue.attachments.find(params[:attachment_id]).destroy
redirect_to :action => 'show', :id => @issue
end
Jean-Philippe Lang
0.3 unstable...
r10
# Send the file in stream mode
def download
@attachment = @issue.attachments.find(params[:attachment_id])
send_file @attachment.diskfile, :filename => @attachment.filename
Jean-Philippe Lang
git-svn-id: http://redmine.rubyforge.org/svn/trunk@51 e93f8b46-1217-0410-a6f0-8f06a7374b81
r49 rescue
Jean-Philippe Lang
ActiveRecord::RecordNotFound exceptions handled more gracefully...
r130 render_404
Jean-Philippe Lang
0.3 unstable...
r10 end
Jean-Philippe Lang
Initial commit...
r2 private
Jean-Philippe Lang
0.3 unstable...
r10 def find_project
Jean-Philippe Lang
data locking for issues...
r21 @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
Jean-Philippe Lang
0.3 unstable...
r10 @project = @issue.project
Jean-Philippe Lang
* new report: project activity...
r42 @html_title = "#{@project.name} - #{@issue.tracker.name} ##{@issue.id}"
Jean-Philippe Lang
ActiveRecord::RecordNotFound exceptions handled more gracefully...
r130 rescue ActiveRecord::RecordNotFound
render_404
Jean-Philippe Lang
0.3 unstable...
r10 end
Jean-Philippe Lang
Initial commit...
r2 end