summaryrefslogtreecommitdiff
path: root/help/app/controllers/tickets_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'help/app/controllers/tickets_controller.rb')
-rw-r--r--help/app/controllers/tickets_controller.rb23
1 files changed, 16 insertions, 7 deletions
diff --git a/help/app/controllers/tickets_controller.rb b/help/app/controllers/tickets_controller.rb
index a9e0bd4..4f5c427 100644
--- a/help/app/controllers/tickets_controller.rb
+++ b/help/app/controllers/tickets_controller.rb
@@ -3,6 +3,12 @@ class TicketsController < ApplicationController
respond_to :html #, :json
#has_scope :open, :type => boolean
+ def initialize
+ @post_reply_str = 'Post reply' #t :post_reply
+ # @close_str = 'Close ticket' #t :close_ticket
+ @reply_close_str = 'Reply and close' #t :reply_and_close
+ end
+
def new
@ticket = Ticket.new
@ticket.comments.build
@@ -34,6 +40,7 @@ class TicketsController < ApplicationController
def show
@ticket = Ticket.find(params[:id])
ticket_access_denied?
+ redirect_to root_url, :alert => "No such ticket" if !@ticket
# @ticket.comments.build
# build ticket comments?
end
@@ -43,14 +50,14 @@ class TicketsController < ApplicationController
@ticket = Ticket.find(params[:id])
if !ticket_access_denied? #can update w/out logging in if the ticket was created unauthenticated
- #below is excessively complicated. issue is that we don't need a new comment if we have changed anything else (currently, is_open is the only other thing to change.) However, if we don't change anything else, then we want to try to add a new comment (and possibly fail.) Likely this should all be redone.
- @ticket.is_open = params[:ticket][:is_open]
- if !params[:ticket][:comments_attributes].values.first[:body].blank? or !@ticket.changed?
- @ticket.attributes = params[:ticket]
- end
- # what if there is an update and no new comment? Confirm that there is a new comment to update posted_by. will @tickets.comments_changed? work?
+ params[:ticket][:comments_attributes] = nil if params[:ticket][:comments_attributes].values.first[:body].blank? #unset comments hash if no new comment was typed
+ @ticket.attributes = params[:ticket] #this will call comments_attributes=
+
+ @ticket.is_open = false if params[:commit] == @reply_close_str #this overrides is_open selection
+
+ # what if there is an update and no new comment? Confirm that there is a new comment to update posted_by:
@ticket.comments.last.posted_by = (current_user ? current_user.id : nil) if @ticket.comments_changed? #protecting posted_by isn't working, so this should protect it.
- if @ticket.save
+ if @ticket.changed? and @ticket.save
flash[:notice] = 'Ticket was successfully updated.'
respond_with @ticket
else
@@ -77,6 +84,7 @@ class TicketsController < ApplicationController
@tickets = Ticket.all
end
elsif logged_in?
+ #TODO---if, when logged in, user accessed unauthenticated ticket, then seems okay to list it in their list of tickets. Thus, include all tickets that the user has posted to, not just those that they created.
if params[:status] == 'open'
@tickets = Ticket.by_is_open_and_created_by.key([true, current_user.id]).all
elsif params[:status] == 'closed'
@@ -86,6 +94,7 @@ class TicketsController < ApplicationController
end
else
access_denied
+ return
end
respond_with(@tickets)