From 8e74460534cdb0081ca1ac3e52892a4ebad05fe3 Mon Sep 17 00:00:00 2001
From: Jacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home>
Date: Tue, 29 Dec 2015 12:53:21 -0500
Subject: [PATCH] adds ajax to bottom discussion buttons. Now submits issue and
 closes via ajax.

---
 app/assets/javascripts/issue.js.coffee          | 12 +++++++++++-
 app/assets/javascripts/notes.js.coffee          | 16 ++--------------
 app/views/projects/issues/_discussion.html.haml |  6 ++----
 3 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/app/assets/javascripts/issue.js.coffee b/app/assets/javascripts/issue.js.coffee
index c256ec8f41b..0d26c58a81d 100644
--- a/app/assets/javascripts/issue.js.coffee
+++ b/app/assets/javascripts/issue.js.coffee
@@ -16,12 +16,16 @@ class @Issue
     $(document).on 'tasklist:changed', '.detail-page-description .js-task-list-container', @updateTaskList
 
   initIssueBtnEventListeners: ->
+    _this = @
     issueFailMessage = 'Unable to update this issue at this time.'
     $('a.btn-close, a.btn-reopen').on 'click', (e) ->
       e.preventDefault()
       e.stopImmediatePropagation()
       $this = $(this)
       isClose = $this.hasClass('btn-close')
+      shouldSubmit = $this.hasClass('btn-comment')
+      if shouldSubmit
+        _this.submitNoteForm($this.closest('form'))
       $this.prop('disabled', true)
       url = $this.attr('href')
       $.ajax
@@ -32,12 +36,13 @@ class @Issue
           new Flash(issueFailMessage, 'alert')
         success: (data, textStatus, jqXHR) ->
           if data.saved
-            $this.addClass('hidden')
             if isClose
+              $('a.btn-close').addClass('hidden')
               $('a.btn-reopen').removeClass('hidden')
               $('div.status-box-closed').removeClass('hidden')
               $('div.status-box-open').addClass('hidden')
             else
+              $('a.btn-reopen').addClass('hidden')
               $('a.btn-close').removeClass('hidden')
               $('div.status-box-closed').addClass('hidden')
               $('div.status-box-open').removeClass('hidden')
@@ -45,6 +50,11 @@ class @Issue
             new Flash(issueFailMessage, 'alert')
           $this.prop('disabled', false)
 
+  submitNoteForm: (form) =>
+    noteText = form.find("textarea.js-note-text").val()
+    if noteText.trim().length > 0
+      form.submit()
+
   disableTaskList: ->
     $('.detail-page-description .js-task-list-container').taskList('disable')
     $(document).off 'tasklist:changed', '.detail-page-description .js-task-list-container'
diff --git a/app/assets/javascripts/notes.js.coffee b/app/assets/javascripts/notes.js.coffee
index 9e5204bfeeb..ba0de896201 100644
--- a/app/assets/javascripts/notes.js.coffee
+++ b/app/assets/javascripts/notes.js.coffee
@@ -19,6 +19,8 @@ class @Notes
     @cleanBinding()
     @addBinding()
     @initTaskList()
+    # for updating the comment disscussion buttons once that issue #5534 is approved.
+    # @updateTargetButtons({target:$("#note_note")})
 
   addBinding: ->
     # add note to UI after creation
@@ -33,8 +35,6 @@ class @Notes
     $(document).on "click", ".note-edit-cancel", @cancelEdit
 
     # Reopen and close actions for Issue/MR combined with note form submit
-    $(document).on "click", ".js-note-target-reopen", @targetReopen
-    $(document).on "click", ".js-note-target-close", @targetClose
     $(document).on "click", ".js-comment-button", @updateCloseButton
     $(document).on "keyup", ".js-note-text", @updateTargetButtons
 
@@ -512,17 +512,6 @@ class @Notes
   visibilityChange: =>
     @refresh()
 
-  targetReopen: (e) =>
-    @submitNoteForm($(e.target).parents('form'))
-
-  targetClose: (e) =>
-    @submitNoteForm($(e.target).parents('form'))
-
-  submitNoteForm: (form) =>
-    noteText = form.find(".js-note-text").val()
-    if noteText.trim().length > 0
-      form.submit()
-
   updateCloseButton: (e) =>
     textarea = $(e.target)
     form = textarea.parents('form')
@@ -531,7 +520,6 @@ class @Notes
   updateTargetButtons: (e) =>
     textarea = $(e.target)
     form = textarea.parents('form')
-
     if textarea.val().trim().length > 0
       form.find('.js-note-target-reopen').text('Comment & reopen')
       form.find('.js-note-target-close').text('Comment & close')
diff --git a/app/views/projects/issues/_discussion.html.haml b/app/views/projects/issues/_discussion.html.haml
index dc434cf38c4..673020a4e30 100644
--- a/app/views/projects/issues/_discussion.html.haml
+++ b/app/views/projects/issues/_discussion.html.haml
@@ -1,9 +1,7 @@
 - content_for :note_actions do
   - if can?(current_user, :update_issue, @issue)
-    - if @issue.closed?
-      = link_to 'Reopen Issue', issue_path(@issue, issue: {state_event: :reopen}, status_only: true), method: :put, class: 'btn btn-nr btn-grouped btn-reopen js-note-target-reopen', title: 'Reopen Issue'
-    - else
-      = link_to 'Close Issue', issue_path(@issue, issue: {state_event: :close}, status_only: true), method: :put, class: 'btn btn-nr btn-grouped btn-close js-note-target-close', title: 'Close Issue'
+    = link_to 'Reopen Issue', issue_path(@issue, issue: {state_event: :reopen}, status_only: true, format: 'json'), data: {no_turbolink: true}, class: "btn btn-nr btn-grouped btn-reopen btn-comment js-note-target-reopen #{issue_button_visibility(@issue, false)}", title: 'Reopen Issue'
+    = link_to 'Close Issue', issue_path(@issue, issue: {state_event: :close}, status_only: true, format: 'json'), data: {no_turbolink: true}, class: "btn btn-nr btn-grouped btn-close btn-comment js-note-target-close #{issue_button_visibility(@issue, true)}", title: 'Close Issue'
 
 #notes
   = render 'projects/notes/notes_with_form'
-- 
GitLab