Blob of app/controllers/tickets_controller.rb (raw blob data)

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 #@title, @url_suffix = Project.tab_settings(PRJ_TAB_TICKETS)
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 #FIXME this is wrong I think
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 # @ticket = Ticket.find(params[:id])
88 # if @ticket
89 # original_ticket = Ticket.new
90 # original_ticket = @ticket.deep_clone
91 # @ticket.status = :deleted
92 # if @ticket.save
93 # Journal.update(original_ticket, @ticket, request.env["REMOTE_ADDR"], @project.id, current_user.id, "Deleted ticket: \'" + @ticket.slug + "\'.")
94 # flash[:notice] = 'Ticket deleted.'
95 # else
96 # #TODO add error report
97 # flash[:error] = 'An error occurred.'
98 # end
99 # redirect_to project_tickets_path(@project.slug)
100 # else
101 # flash[:error] = 'Ticket ' + params[:id] + ' does not exist.'
102 # redirect_to project_tickets_path(@project.slug)
103 # end
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 #TODO add error report
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