From 49d0ffe5f689ecb651b65beb4050b3f38cbb226e Mon Sep 17 00:00:00 2001
From: jessib <jessib@leap.se>
Date: Wed, 12 Dec 2012 13:15:07 -0800
Subject: Refactoring of ticket displaying/editing.

---
 help/app/assets/javascripts/tickets.js        |  3 ---
 help/app/controllers/tickets_controller.rb    | 29 +++++++--------------------
 help/app/models/ticket.rb                     |  1 +
 help/app/views/tickets/_new_comment.html.haml |  3 +--
 help/app/views/tickets/new.html.haml          |  9 +--------
 help/app/views/tickets/show.html.haml         | 18 +++++------------
 6 files changed, 15 insertions(+), 48 deletions(-)

(limited to 'help/app')

diff --git a/help/app/assets/javascripts/tickets.js b/help/app/assets/javascripts/tickets.js
index 524df6f..8f58e86 100644
--- a/help/app/assets/javascripts/tickets.js
+++ b/help/app/assets/javascripts/tickets.js
@@ -1,6 +1,3 @@
-$("#title").editable({
-  });
-
 $(document).ready(function () {
   $('#title').editable();
 });
\ No newline at end of file
diff --git a/help/app/controllers/tickets_controller.rb b/help/app/controllers/tickets_controller.rb
index b79dc0f..db9bc82 100644
--- a/help/app/controllers/tickets_controller.rb
+++ b/help/app/controllers/tickets_controller.rb
@@ -52,36 +52,21 @@ class TicketsController < ApplicationController
     @ticket = Ticket.find(params[:id])
 
     if !ticket_access_denied?
-
-      if params[:post][:title] #title was changed with x-editable form
-
-        respond_to do |format|
-          if @ticket.update_attributes(params[:post])
-            format.html { redirect_to @ticket, notice: 'Ticket was successfully updated.' }
-            format.json { head :no_content } # 204 No Content
-          else
-            format.html { render action: "show" }
-            format.json { render json: @ticket.errors, status: :unprocessable_entity }
-          end
-          return
+      if params[:post] #currently changes to title or is_open status
+        if @ticket.update_attributes(params[:post]) #this saves ticket, so @ticket.changed? will be false
+          tick_updated = true
         end
         # 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'
 
-        # TODO: this is throwing a missing template error
-        return
-      elsif status = params[:change_status] #close or open button was pressed
-        @ticket.close if params[:change_status] == 'close'
-        @ticket.reopen if params[:change_status] == 'open'
       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.is_open = false if params[:commit] == @reply_close_str #this overrides is_open selection
         @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.
+        tick_updated = true if @ticket.changed? and @ticket.save
       end
-      if @ticket.changed? and @ticket.save
+      if tick_updated
         flash[:notice] = 'Ticket was successfully updated.'
         if @ticket.is_open
           respond_with @ticket
@@ -95,14 +80,14 @@ class TicketsController < ApplicationController
         #respond_with(@ticket) # why does this go to edit?? redirect???
       end
     end
+
   end
 
   def index
-    #TODO: we will need pagination
     @all_tickets = Ticket.for_user(current_user, params, admin?) #for tests, useful to have as separate variable
 
     #below works if @tickets is a CouchRest::Model::Designs::View, but not if it is an Array
-    @tickets = @all_tickets.page(params[:page]).per(10) #TEST
+    @tickets = @all_tickets.page(params[:page]).per(10)
     #respond_with(@tickets)
   end
 
diff --git a/help/app/models/ticket.rb b/help/app/models/ticket.rb
index cd4fcfb..781216e 100644
--- a/help/app/models/ticket.rb
+++ b/help/app/models/ticket.rb
@@ -216,6 +216,7 @@ class Ticket < CouchRest::Model::Base
   end
 
   #not saving with close and reopen, as we will save in update when they are called.
+  #TODO: not sure if we should bother with these:
   def close
     self.is_open = false
     #save
diff --git a/help/app/views/tickets/_new_comment.html.haml b/help/app/views/tickets/_new_comment.html.haml
index a924dfd..b216311 100644
--- a/help/app/views/tickets/_new_comment.html.haml
+++ b/help/app/views/tickets/_new_comment.html.haml
@@ -1,3 +1,2 @@
-= #do we want this partial? not using it now
-= simple_fields_for :comment do |c|
+= f.simple_fields_for :comments, comment_object do |c|
   = c.input :body, :label => 'Comment', :as => :text
diff --git a/help/app/views/tickets/new.html.haml b/help/app/views/tickets/new.html.haml
index 537b97f..0ee47ff 100644
--- a/help/app/views/tickets/new.html.haml
+++ b/help/app/views/tickets/new.html.haml
@@ -1,16 +1,9 @@
 %h2=t :new_ticket
 = simple_form_for(@ticket, :html => {:novalidate => true})  do |f| #turn off html5 validations to test
-  = #@ticket.errors.messages
   = f.input :title
-  = #f.input :email #if there is no current_user
   = f.input :email if !current_user  #hmm--might authenticated users want to submit an alternate email?
-
-  = f.simple_fields_for :comments do |c|
-    = c.input :body, :label => 'Comment', :as => :text
-
-  = #render :partial => 'new_comment' #what we were using
+  = render :partial => 'new_comment', :locals => {:f => f, :comment_object => nil}
   = # regarding_user if not logged in
   = # email if not logged in
-  = #f.button :submit, :value => t(:submit), :class => 'btn-primary' 
   = f.button :submit
   = link_to t(:cancel), tickets_path, :class => :btn
diff --git a/help/app/views/tickets/show.html.haml b/help/app/views/tickets/show.html.haml
index f09f525..b9f2ce6 100644
--- a/help/app/views/tickets/show.html.haml
+++ b/help/app/views/tickets/show.html.haml
@@ -1,6 +1,6 @@
 %h2= @ticket.title
 
-%a#title.editable.editable-click{"data-name" => "title", "data-original-title" => "Enter username", "data-resource" => "post", "data-type" => "text", "data-url" => ticket_path(@ticket.id), "data-pk" => @ticket.id, :href => "#"} 
+%a#title.editable.editable-click{"data-name" => "title", "data-resource" => "post", "data-type" => "text", "data-url" => ticket_path(@ticket.id), "data-pk" => @ticket.id, :href => "#"} 
   = @ticket.title
 
 %p
@@ -17,26 +17,18 @@
   = "status:" 
   - if @ticket.is_open
     = 'open'
-    = #link_to 'close', ticket_path, :method => :put
-    = #button_to 'close', ticket_path, :method => :put
-    = button_to 'close', {:change_status => :close}, :method => :put
+    = button_to 'close', {:post => {:is_open => false}}, :method => :put
   - else 
     = 'closed'
-    = button_to 'open', {:change_status => :open}, :method => :put
+    = button_to 'open', {:post => {:is_open => true}}, :method => :put
 = render(:partial => "comment", :collection => @ticket.comments)
 = #render @ticket.comments should work if view is in /app/views/comments/_comment
 
 = simple_form_for(@ticket, :html => {:novalidate => true}) do |f| #turn off html5 validations to test
-  = f.simple_fields_for :comments, TicketComment.new do |c|
-    = c.input :body, :label => 'Comment', :as => :text
-  = #render :partial => 'new_comment'
-  = #f.label :is_open
-  = #f.select :is_open, [true, false] #remove
+  = render :partial => 'new_comment', :locals => {:f => f, :comment_object => TicketComment.new}
   = f.button :submit, @post_reply_str
   - if @ticket.is_open
     = f.button :submit, @reply_close_str
 = #link_to t(:destroy), ticket_path,  :confirm => 'are you sure?', :method => :delete, :class => :btn if admin? # for link_to to work with delete, need to figure out jquery interaction correctly. see  http://stackoverflow.com/questions/3774925/delete-link-sends-get-instead-of-delete-in-rails-3-view etc..
-= button_to 'destroy', ticket_path, :confirm => 'are you sure?', :method => :delete  if admin?
-= # TODO want to have button to close
-= # TODO if admin, have  button to delete
+= button_to 'destroy', ticket_path, :confirm => 'are you sure?', :method => :delete if admin?
 = link_to t(:cancel), tickets_path, :class => :btn
-- 
cgit v1.2.3