diff options
| -rw-r--r-- | help/app/controllers/tickets_controller.rb | 67 | 
1 files changed, 31 insertions, 36 deletions
diff --git a/help/app/controllers/tickets_controller.rb b/help/app/controllers/tickets_controller.rb index d4aa378..d47939e 100644 --- a/help/app/controllers/tickets_controller.rb +++ b/help/app/controllers/tickets_controller.rb @@ -6,6 +6,7 @@ class TicketsController < ApplicationController    before_filter :set_strings    before_filter :authorize, :only => [:index] +  before_filter :fetch_ticket, :only => [:show, :update, :destroy] # don't now have an edit method    def new      @ticket = Ticket.new @@ -31,52 +32,44 @@ class TicketsController < ApplicationController  =begin    def edit -    @ticket = Ticket.find(params[:id])      @ticket.comments.build      # build ticket comments?    end  =end    def show -    @ticket = Ticket.find(params[:id])      @comment = TicketComment.new      if !@ticket        redirect_to tickets_path, :alert => "No such ticket"        return      end -    ticket_access_denied? #authorize_ticket_access -    # @ticket.comments.build -    # build ticket comments?    end    def update -    @ticket = Ticket.find(params[:id]) -    if !ticket_access_denied? -      if params[:post] #currently changes to title or is_open status -        @ticket.attributes = params[:post] -        # TODO: do we want to keep the history of title changes? one possibility was adding a comment that said something like 'user changed the title from a to b' - -      else -        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.close 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. -      end -      if @ticket.changed? and @ticket.save -        flash[:notice] = 'Ticket was successfully updated.' -        if @ticket.is_open || !logged_in? -          respond_with @ticket -        else #for closed tickets with authenticated users, redirect to index. -          redirect_to tickets_path -        end -      else -        #redirect_to [:show, @ticket] # -        flash[:alert] = 'Ticket has not been changed' -        redirect_to @ticket -        #respond_with(@ticket) # why does this go to edit?? redirect??? +    if params[:post] #currently changes to title or is_open status +      @ticket.attributes = params[:post] +      # TODO: do we want to keep the history of title changes? one possibility was adding a comment that said something like 'user changed the title from a to b' + +    else +      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.close 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. +    end +    if @ticket.changed? and @ticket.save +      flash[:notice] = 'Ticket was successfully updated.' +      if @ticket.is_open || !logged_in? +        respond_with @ticket +      else #for closed tickets with authenticated users, redirect to index. +        redirect_to tickets_path        end +    else +      #redirect_to [:show, @ticket] # +      flash[:alert] = 'Ticket has not been changed' +      redirect_to @ticket +      #respond_with(@ticket) # why does this go to edit?? redirect???      end    end @@ -88,7 +81,6 @@ class TicketsController < ApplicationController    def destroy      # should we allow non-admins to delete their own tickets? i don't think necessary. -    @ticket = Ticket.find(params[:id])      @ticket.destroy if admin?      redirect_to tickets_path    end @@ -99,16 +91,19 @@ class TicketsController < ApplicationController      @ticket and (admin? or !@ticket.created_by or (current_user and current_user.id == @ticket.created_by))    end -  def ticket_access_denied? -    access_denied unless ticket_access? -  end - -    def set_strings      @post_reply_str = 'Post reply' #t :post_reply      @reply_close_str = 'Reply and close' #t :reply_and_close    end +  def fetch_ticket +    @ticket = Ticket.find(params[:id]) +    if !@ticket and admin? +      redirect_to tickets_path, :alert => "No such ticket" +      return +    end +    access_denied unless ticket_access? +  end    # not using now, as we are using comment_attributes= from the Ticket model  =begin    def add_comment  | 
