mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-14 15:16:04 +10:00
adds ajax open and close merges, with discussion/comments working as well
This commit is contained in:
@@ -22,6 +22,7 @@ class @MergeRequest
|
||||
|
||||
if $("a.btn-close").length
|
||||
@initTaskList()
|
||||
@initMergeRequestBtnEventListeners()
|
||||
|
||||
# Local jQuery finder
|
||||
$: (selector) ->
|
||||
@@ -35,6 +36,48 @@ class @MergeRequest
|
||||
# Show the first tab (Commits)
|
||||
$('.merge-request-tabs a[data-toggle="tab"]:first').tab('show')
|
||||
|
||||
initMergeRequestBtnEventListeners: ->
|
||||
_this = @
|
||||
mergeRequestFailMessage = 'Unable to update this merge request 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
|
||||
type: 'PUT',
|
||||
url: url,
|
||||
error: (jqXHR, textStatus, errorThrown) ->
|
||||
mergeRequestStatus = if isClose then 'close' else 'open'
|
||||
new Flash(mergeRequestFailMessage, 'alert')
|
||||
success: (data, textStatus, jqXHR) ->
|
||||
if data.saved
|
||||
if isClose
|
||||
$('a.btn-close').addClass('hidden')
|
||||
$('a.issuable-edit').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.issuable-edit').removeClass('hidden')
|
||||
$('a.btn-close').removeClass('hidden')
|
||||
$('div.status-box-closed').addClass('hidden')
|
||||
$('div.status-box-open').removeClass('hidden')
|
||||
else
|
||||
new Flash(mergeRequestFailMessage, 'alert')
|
||||
$this.prop('disabled', false)
|
||||
|
||||
submitNoteForm: (form) =>
|
||||
noteText = form.find("textarea.js-note-text").val()
|
||||
if noteText.trim().length > 0
|
||||
form.submit()
|
||||
|
||||
showAllCommits: ->
|
||||
this.$('.first-commits').remove()
|
||||
this.$('.all-commits').removeClass 'hide'
|
||||
|
||||
@@ -19,6 +19,10 @@ module MergeRequestsHelper
|
||||
}
|
||||
end
|
||||
|
||||
def merge_request_button_visibility(mr, closed)
|
||||
return 'hidden' if mr.closed? == closed
|
||||
end
|
||||
|
||||
def mr_css_classes(mr)
|
||||
classes = "merge-request"
|
||||
classes << " closed" if mr.closed?
|
||||
|
||||
@@ -456,16 +456,6 @@ class MergeRequest < ActiveRecord::Base
|
||||
::Gitlab::GitAccess.new(user, project).can_push_to_branch?(target_branch)
|
||||
end
|
||||
|
||||
def state_human_name
|
||||
if merged?
|
||||
"Merged"
|
||||
elsif closed?
|
||||
"Closed"
|
||||
else
|
||||
"Open"
|
||||
end
|
||||
end
|
||||
|
||||
def target_sha
|
||||
@target_sha ||= target_project.
|
||||
repository.commit(target_branch).sha
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
- content_for :note_actions do
|
||||
- if can?(current_user, :update_merge_request, @merge_request)
|
||||
- if @merge_request.open?
|
||||
= link_to 'Close', merge_request_path(@merge_request, merge_request: {state_event: :close }), method: :put, class: "btn btn-nr btn-grouped btn-close close-mr-link js-note-target-close", title: "Close merge request"
|
||||
- if @merge_request.closed?
|
||||
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-nr btn-grouped btn-reopen reopen-mr-link js-note-target-reopen", title: "Reopen merge request"
|
||||
= link_to 'Close', merge_request_path(@merge_request, merge_request: {state_event: :close}, format: 'json'), data: {no_turbolinks: true}, method: :put, class: "btn btn-nr btn-grouped btn-close close-mr-link btn-comment js-note-target-close #{merge_request_button_visibility(@merge_request, true)}", title: "Close merge request"
|
||||
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen}, format: 'json'), data: {no_turbolinks: true}, method: :put, class: "btn btn-nr btn-grouped btn-reopen reopen-mr-link btn-comment js-note-target-reopen #{merge_request_button_visibility(@merge_request, false)}", title: "Reopen merge request"
|
||||
|
||||
#notes= render "projects/notes/notes_with_form"
|
||||
#notes
|
||||
= render "projects/notes/notes_with_form"
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
.detail-page-header
|
||||
.status-box{ class: status_box_class(@merge_request) }
|
||||
= @merge_request.state_human_name
|
||||
- if @merge_request.merged?
|
||||
.status-box{ class: "status-box-merged" }
|
||||
Merged
|
||||
- else
|
||||
.status-box{ class: "status-box-closed #{merge_request_button_visibility(@merge_request, false)}"}
|
||||
Closed
|
||||
.status-box{ class: "status-box-open #{merge_request_button_visibility(@merge_request, true)}"}
|
||||
Open
|
||||
%span.identifier
|
||||
Merge Request ##{@merge_request.iid}
|
||||
%span.creator
|
||||
@@ -15,11 +21,11 @@
|
||||
= time_ago_with_tooltip(@merge_request.updated_at, placement: 'bottom')
|
||||
|
||||
.issue-btn-group.pull-right
|
||||
- if can?(current_user, :update_merge_request, @merge_request)
|
||||
- if @merge_request.open?
|
||||
= link_to 'Close', merge_request_path(@merge_request, merge_request: { state_event: :close }), method: :put, class: 'btn btn-nr btn-grouped btn-close', title: 'Close merge request'
|
||||
= link_to edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: 'btn btn-nr btn-grouped issuable-edit', id: 'edit_merge_request' do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
- if @merge_request.closed?
|
||||
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: 'btn btn-nr btn-grouped btn-reopen reopen-mr-link', title: 'Reopen merge request'
|
||||
- if can?(current_user, :update_merge_request, @merge_request) && !@merge_request.merged?
|
||||
|
||||
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }, format: 'json'), data: {no_turbolink: true}, method: :put, class: "btn btn-nr btn-grouped btn-reopen reopen-mr-link #{merge_request_button_visibility(@merge_request, false)}", title: 'Reopen merge request'
|
||||
= link_to 'Close', merge_request_path(@merge_request, merge_request: { state_event: :close }, format: 'json'), data: {no_turbolink: true}, method: :put, class: "btn btn-nr btn-grouped btn-close #{merge_request_button_visibility(@merge_request, true)}", title: 'Close merge request'
|
||||
|
||||
= link_to edit_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), class: "btn btn-nr btn-grouped issuable-edit #{merge_request_button_visibility(@merge_request, true)}", id: 'edit_merge_request' do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
Reference in New Issue
Block a user