##// END OF EJS Templates
Fixed version field on issue view page now links to the corresponding version in the roadmap....
Fixed version field on issue view page now links to the corresponding version in the roadmap. git-svn-id: http://redmine.rubyforge.org/svn/trunk@562 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r559:2dbb3978184e
r559:2dbb3978184e
Show More
issues_controller.rb
161 lines | 6.6 KiB | text/x-ruby | RubyLexer
/ app / controllers / issues_controller.rb
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # redMine - project management software
# Copyright (C) 2006-2007 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 IssuesController < ApplicationController
layout 'base', :except => :export_pdf
before_filter :find_project, :authorize
Jean-Philippe Lang
Added fragment caching for calendar and gantt views...
r512
cache_sweeper :issue_sweeper, :only => [ :edit, :change_status, :destroy ]
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Fixed version field on issue view page now links to the corresponding version in the roadmap....
r559 helper :projects
include ProjectsHelper
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 helper :custom_fields
include CustomFieldsHelper
helper :ifpdf
include IfpdfHelper
Jean-Philippe Lang
Issue relations first commit (not thoroughly tested). 4 kinds of relation are available:...
r503 helper :issue_relations
include IssueRelationsHelper
Jean-Philippe Lang
Added watchers for message boards (watchers controller modified to support any watchable model)....
r527 helper :watchers
include WatchersHelper
Jean-Philippe Lang
Attachments can now be added to wiki pages (original patch by Pavol Murin). Only authorized users can add/delete attachments....
r538 helper :attachments
include AttachmentsHelper
Jean-Philippe Lang
data locking for issues...
r21
def show
Jean-Philippe Lang
Various code cleaning, mainly on User, Permission and IssueStatus models....
r411 @status_options = @issue.status.find_new_statuses_allowed_to(logged_in_user.role_for_project(@project), @issue.tracker) if logged_in_user
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @custom_values = @issue.custom_values.find(:all, :include => :custom_field)
@journals_count = @issue.journals.count
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 @journals = @issue.journals.find(:all, :include => [:user, :details], :limit => 15, :order => "#{Journal.table_name}.created_on desc")
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
def history
Jean-Philippe Lang
fixed #9308 table_name pre/suffix support...
r334 @journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on desc")
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @journals_count = @journals.length
end
def export_pdf
@custom_values = @issue.custom_values.find(:all, :include => :custom_field)
@options_for_rfpdf ||= {}
Jean-Philippe Lang
Issue#long_id no more used and removed...
r507 @options_for_rfpdf[:file_name] = "#{@project.name}_#{@issue.id}.pdf"
Jean-Philippe Lang
data locking for issues...
r21 end
Jean-Philippe Lang
Initial commit...
r2
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 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
@issue.init_journal(self.logged_in_user)
# 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]
Jean-Philippe Lang
data locking for issues...
r21 if @issue.save
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
data locking for issues...
r21 redirect_to :action => 'show', :id => @issue
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
rescue ActiveRecord::StaleObjectError
# Optimistic locking exception
flash[:notice] = l(:notice_locking_conflict)
end
Jean-Philippe Lang
data locking for issues...
r21 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
def add_note
unless params[:notes].empty?
journal = @issue.init_journal(self.logged_in_user, params[:notes])
if @issue.save
flash[:notice] = l(:notice_successful_update)
Mailer.deliver_issue_edit(journal) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
redirect_to :action => 'show', :id => @issue
return
end
end
show
render :action => 'show'
end
def change_status
Jean-Philippe Lang
Various code cleaning, mainly on User, Permission and IssueStatus models....
r411 @status_options = @issue.status.find_new_statuses_allowed_to(logged_in_user.role_for_project(@project), @issue.tracker) if logged_in_user
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 @new_status = IssueStatus.find(params[:new_status_id])
if params[:confirm]
begin
journal = @issue.init_journal(self.logged_in_user, params[:notes])
@issue.status = @new_status
if @issue.update_attributes(params[:issue])
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 # Save attachments
params[:attachments].each { |file|
next unless file.size > 0
a = Attachment.create(:container => @issue, :file => file, :author => logged_in_user)
journal.details << JournalDetail.new(:property => 'attachment',
:prop_key => a.id,
:value => a.filename) unless a.new_record?
} if params[:attachments] and params[:attachments].is_a? Array
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 flash[:notice] = l(:notice_successful_update)
Mailer.deliver_issue_edit(journal) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
redirect_to :action => 'show', :id => @issue
end
rescue ActiveRecord::StaleObjectError
# Optimistic locking exception
flash[:notice] = l(:notice_locking_conflict)
end
end
@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
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
def add_attachment
# Save the attachments
@attachments = []
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 journal = @issue.init_journal(self.logged_in_user)
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 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
Feature 9867 Allow file upload in comment and add to issue history...
r422 journal.details << JournalDetail.new(:property => 'attachment',
:prop_key => a.id,
:value => a.filename) unless a.new_record?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 } if params[:attachments] and params[:attachments].is_a? Array
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 journal.save if journal.details.any?
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
redirect_to :action => 'show', :id => @issue
end
def destroy_attachment
Jean-Philippe Lang
Feature 9867 Allow file upload in comment and add to issue history...
r422 a = @issue.attachments.find(params[:attachment_id])
a.destroy
journal = @issue.init_journal(self.logged_in_user)
journal.details << JournalDetail.new(:property => 'attachment',
:prop_key => a.id,
:old_value => a.filename)
journal.save
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 redirect_to :action => 'show', :id => @issue
end
private
def find_project
@issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
@project = @issue.project
@html_title = "#{@project.name} - #{@issue.tracker.name} ##{@issue.id}"
rescue ActiveRecord::RecordNotFound
render_404
Jean-Philippe Lang
0.3 unstable...
r10 end
Jean-Philippe Lang
Initial commit...
r2 end