From 99425a124cdae00dbedaa6e6a124e2d67d86e66d Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 1 Sep 2014 15:37:53 +0300 Subject: [PATCH] Post comment when hit close/reopen btn in comment form Signed-off-by: Dmitriy Zaporozhets --- app/assets/javascripts/notes.js.coffee | 35 +++++++++++++++++-- app/views/projects/issues/show.html.haml | 4 +-- .../projects/merge_requests/_show.html.haml | 4 +-- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/notes.js.coffee b/app/assets/javascripts/notes.js.coffee index 199cf1eed6..51c617bd58 100644 --- a/app/assets/javascripts/notes.js.coffee +++ b/app/assets/javascripts/notes.js.coffee @@ -16,13 +16,18 @@ class Notes $(document).on "ajax:success", ".js-main-target-form", @addNote $(document).on "ajax:success", ".js-discussion-note-form", @addDiscussionNote - # change note in UI after update + # change note in UI after update $(document).on "ajax:success", "form.edit_note", @updateNote # Edit note link $(document).on "click", ".js-note-edit", @showEditForm $(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 "keyup", ".js-note-text", @updateTargetButtons + # remove a note (in general) $(document).on "click", ".js-note-delete", @removeNote @@ -78,7 +83,9 @@ class Notes $(document).off "click", ".js-add-diff-note-button" $(document).off "visibilitychange" $(document).off "keypress", @notes_forms - + $(document).off "keyup", ".js-note-text" + $(document).off "click", ".js-note-target-reopen" + $(document).off "click", ".js-note-target-close" initRefresh: -> clearInterval(Notes.interval) @@ -478,4 +485,28 @@ 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() + + 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') + else + form.find('.js-note-target-reopen').text('Reopen') + form.find('.js-note-target-close').text('Close') + + + @Notes = Notes diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml index bd5f01ff6a..fd0f5446b3 100644 --- a/app/views/projects/issues/show.html.haml +++ b/app/views/projects/issues/show.html.haml @@ -57,9 +57,9 @@ - content_for :note_actions do - if can?(current_user, :modify_issue, @issue) - if @issue.closed? - = link_to 'Reopen Issue', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-grouped btn-reopen" + = link_to 'Reopen Issue', project_issue_path(@project, @issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-grouped btn-reopen js-note-target-reopen", title: 'Reopen Issue' - else - = link_to 'Close Issue', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-grouped btn-close", title: "Close Issue" + = link_to 'Close Issue', project_issue_path(@project, @issue, issue: {state_event: :close }, status_only: true), method: :put, class: "btn btn-grouped btn-close js-note-target-close", title: "Close Issue" .participants %cite.cgray #{@issue.participants.count} participants diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml index 8fca9f0212..4323c8f65a 100644 --- a/app/views/projects/merge_requests/_show.html.haml +++ b/app/views/projects/merge_requests/_show.html.haml @@ -22,9 +22,9 @@ - content_for :note_actions do - if can?(current_user, :modify_merge_request, @merge_request) - unless @merge_request.closed? || @merge_request.merged? - = link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-grouped btn-close close-mr-link", title: "Close merge request" + = link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-grouped btn-close close-mr-link js-note-target-close", title: "Close merge request" - if @merge_request.closed? - = link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link", title: "Close merge request" + = link_to 'Reopen', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link js-note-target-reopen", title: "Reopen merge request" .diffs.tab-content - if current_page?(action: 'diffs')