| 1 |
class TicketsController < ApplicationController |
| 2 |
|
| 3 |
before_filter :find_project |
| 4 |
|
| 5 |
def index |
| 6 |
params[:ticketfilter] ? filter = params[:ticketfilter] : filter = "" |
| 7 |
@title, @url_suffix = Project.tab_settings(PRJ_TAB_TICKETS) |
| 8 |
@tickets = Ticket.filtered(filter) |
| 9 |
@current_milestone = Milestone.find_current_milestone(@project.id) |
| 10 |
|
| 11 |
filter[:milestone_id] && filter[:milestone_id].length > 0 ? @selected_milestone = filter[:milestone_id] : @selected_milestone = nil |
| 12 |
@filter_milestones = Milestone.find_by_project_active(@project.id, current_user) |
| 13 |
filter[:assignee_id] && filter[:assignee_id].length > 0 ? @selected_assignee = filter[:assignee_id] : @selected_assignee = nil |
| 14 |
@filter_assignees = Member.find_by_project_alpha(@project.id) |
| 15 |
filter[:submitter_id] && filter[:submitter_id].length > 0 ? @selected_submitter = filter[:submitter_id] : @selected_submitter = nil |
| 16 |
@filter_submitters = Member.find_by_project_alpha(@project.id) |
| 17 |
|
| 18 |
render :action => "ac_project_index" |
| 19 |
end |
| 20 |
|
| 21 |
def show |
| 22 |
@ticket = Ticket.find_by_slug(@project.id, params[:id]) |
| 23 |
if @ticket |
| 24 |
|
| 25 |
@title = "Ticket " + @ticket.slug |
| 26 |
render :action => "ac_project_show" |
| 27 |
else |
| 28 |
flash[:error] = "Ticket not found." |
| 29 |
redirect_to project_tickets_path(@project) |
| 30 |
end |
| 31 |
end |
| 32 |
|
| 33 |
def new |
| 34 |
@ticket = Ticket.new |
| 35 |
@title = "New Ticket" |
| 36 |
render :action => "ac_project_new" |
| 37 |
end |
| 38 |
|
| 39 |
def create |
| 40 |
@ticket = Ticket.new(params[:ticket]) |
| 41 |
@ticket.project_id = @project.id |
| 42 |
@ticket.submitter_id = current_user.id |
| 43 |
@ticket.slug = Ticket.generate_key(@ticket.summary) |
| 44 |
if @ticket.save |
| 45 |
Journal.create(@ticket, request.env["REMOTE_ADDR"], @project.id, current_user.id).to_s |
| 46 |
flash[:notice] = 'Ticket was successfully created.' |
| 47 |
redirect_to project_tickets_path(@project.slug) |
| 48 |
else |
| 49 |
|
| 50 |
flash[:error] = 'Error.' |
| 51 |
render :action => 'ac_project_new' |
| 52 |
end |
| 53 |
end |
| 54 |
|
| 55 |
def edit |
| 56 |
@ticket = Ticket.find_by_slug(@project.id, params[:id]) |
| 57 |
if @ticket |
| 58 |
@title = "Editing " + @ticket.slug |
| 59 |
render :action => "ac_project_edit" |
| 60 |
else |
| 61 |
flash[:error] = "Ticket not found." |
| 62 |
redirect_to project_tickets_path(@project) |
| 63 |
end |
| 64 |
end |
| 65 |
|
| 66 |
def update |
| 67 |
@ticket = Ticket.find_by_slug(@project.id, params[:id]) |
| 68 |
if @ticket |
| 69 |
original_ticket = Ticket.new |
| 70 |
original_ticket = @ticket.deep_clone |
| 71 |
if @ticket.update_attributes(params[:ticket]) |
| 72 |
@ticket.save |
| 73 |
Journal.update(original_ticket, @ticket, request.env["REMOTE_ADDR"], @project.id, current_user.id, "Edited ticket: \'" + @ticket.slug + "\'.") |
| 74 |
flash[:notice] = "Ticket was successfully updated." |
| 75 |
redirect_to project_tickets_path(@project.slug) |
| 76 |
else |
| 77 |
@title = "Editing: " + @ticket.slug |
| 78 |
render :action => "ac_project_edit" |
| 79 |
end |
| 80 |
else |
| 81 |
flash[:error] = "Ticket not found." |
| 82 |
redirect_to project_path(@project) |
| 83 |
end |
| 84 |
end |
| 85 |
|
| 86 |
def destroy |
| 87 |
|
| 88 |
|
| 89 |
|
| 90 |
|
| 91 |
|
| 92 |
|
| 93 |
|
| 94 |
|
| 95 |
|
| 96 |
|
| 97 |
|
| 98 |
|
| 99 |
|
| 100 |
|
| 101 |
|
| 102 |
|
| 103 |
|
| 104 |
end |
| 105 |
|
| 106 |
def close |
| 107 |
@ticket = Ticket.find_by_slug(@project.id, params[:id]) |
| 108 |
if @ticket |
| 109 |
original_ticket = Ticket.new |
| 110 |
original_ticket = @ticket.deep_clone |
| 111 |
@ticket.status = :closed |
| 112 |
if @ticket.save |
| 113 |
Journal.update(original_ticket, @ticket, request.env["REMOTE_ADDR"], @project.id, current_user.id, "Closed ticket: \'" + @ticket.slug + "\'.") |
| 114 |
flash[:notice] = "Ticket " + @ticket.slug + " closed." |
| 115 |
else |
| 116 |
|
| 117 |
flash[:error] = "An error occurred." |
| 118 |
end |
| 119 |
redirect_to project_tickets_path(@project.slug) |
| 120 |
else |
| 121 |
flash[:error] = "Ticket " + params[:id] + " does not exist." |
| 122 |
redirect_to project_tickets_path(@project.slug) |
| 123 |
end |
| 124 |
end |
| 125 |
|
| 126 |
end |