summaryrefslogtreecommitdiff
path: root/help
diff options
context:
space:
mode:
authorjessib <jessib@riseup.net>2012-11-05 16:01:40 -0800
committerjessib <jessib@riseup.net>2012-11-05 16:01:40 -0800
commit2dff9a32e886220fe63152e905c0d7a32968f695 (patch)
tree774e7a62f76703ade3540ac4dca8e12663b8478e /help
parentb3dc5378e5c09e91956aa899a6d71f0fc790de5e (diff)
Working on functionality for replying to and closing tickets.
Diffstat (limited to 'help')
-rw-r--r--help/app/controllers/tickets_controller.rb23
-rw-r--r--help/app/models/ticket.rb13
-rw-r--r--help/app/views/tickets/show.html.haml6
3 files changed, 27 insertions, 15 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)
diff --git a/help/app/models/ticket.rb b/help/app/models/ticket.rb
index eaad574..cb8e397 100644
--- a/help/app/models/ticket.rb
+++ b/help/app/models/ticket.rb
@@ -83,12 +83,13 @@ class Ticket < CouchRest::Model::Base
end
def comments_attributes=(attributes)
- comment = TicketComment.new(attributes.values.first) #TicketComment.new(attributes)
- #comment.posted_by = User.current.id if User.current #we want to avoid User.current, and current_user won't work here. instead will set in tickets_controller
- # what about: comment.posted_by = self.updated_by (will need to add ticket.updated_by)
- comment.posted_at = Time.now
- comments << comment
-
+ if attributes # could be empty as we will empty if nothing was typed in
+ comment = TicketComment.new(attributes.values.first) #TicketComment.new(attributes)
+ #comment.posted_by = User.current.id if User.current #we want to avoid User.current, and current_user won't work here. instead will set in tickets_controller
+ # what about: comment.posted_by = self.updated_by (will need to add ticket.updated_by)
+ comment.posted_at = Time.now
+ comments << comment
+ end
end
=begin
diff --git a/help/app/views/tickets/show.html.haml b/help/app/views/tickets/show.html.haml
index 92b8d03..132d50f 100644
--- a/help/app/views/tickets/show.html.haml
+++ b/help/app/views/tickets/show.html.haml
@@ -21,6 +21,8 @@
= #render :partial => 'new_comment'
= f.label :is_open
= f.select :is_open, [true, false]
- = f.button :submit
+ = f.button :submit, @post_reply_str
+ = f.button :submit, @reply_close_str
= # TODO want to have button to close
- = link_to t(:cancel), tickets_path, :class => :btn \ No newline at end of file
+ = # TODO if admin, have button to delete
+ = link_to t(:cancel), tickets_path, :class => :btn