From 3824f9b372fe9451d101eec478440d129fb2d0b2 Mon Sep 17 00:00:00 2001 From: randx Date: Fri, 30 Mar 2012 08:15:04 +0300 Subject: [PATCH] Unverify MR on every push. Ajax for MR accept. better UI --- app/controllers/merge_requests_controller.rb | 4 ++-- app/models/merge_request.rb | 6 +++++- app/models/project/hooks_trait.rb | 2 +- app/views/merge_requests/automerge.js.haml | 2 ++ app/views/merge_requests/show.html.haml | 13 ++++++++----- 5 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 app/views/merge_requests/automerge.js.haml diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index d0750f68..f4b97de9 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -90,6 +90,7 @@ class MergeRequestsController < ApplicationController respond_to do |format| if @merge_request.update_attributes(params[:merge_request].merge(:author_id_of_changes => current_user.id)) @merge_request.reload_code + @merge_request.mark_as_unchecked format.html { redirect_to [@project, @merge_request], notice: 'Merge request was successfully updated.' } format.json { head :ok } else @@ -101,8 +102,7 @@ class MergeRequestsController < ApplicationController def automerge render_404 unless @merge_request.open? && @merge_request.can_be_merged? - message = @merge_request.automerge! ? "Successfully merged" : "Can not be merged" - redirect_to [@merge_request.project, @merge_request], :alert => message + @merge_request.automerge!(current_user) end def destroy diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 6eb54343..85492e80 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -64,6 +64,10 @@ class MergeRequest < ActiveRecord::Base state == UNCHECKED end + def mark_as_unchecked + self.update_attributes(:state => UNCHECKED) + end + def can_be_merged? state == CAN_BE_MERGED end @@ -170,7 +174,7 @@ class MergeRequest < ActiveRecord::Base ) end - def automerge! + def automerge!(current_user) if GitlabMerge.new(self).merge self.merge!(current_user.id) true diff --git a/app/models/project/hooks_trait.rb b/app/models/project/hooks_trait.rb index fc32cf4c..fc8c98d4 100644 --- a/app/models/project/hooks_trait.rb +++ b/app/models/project/hooks_trait.rb @@ -19,7 +19,7 @@ module Project::HooksTrait # Update code for merge requests mrs = self.merge_requests.opened.find_all_by_branch(branch_name).all - mrs.each { |merge_request| merge_request.reload_code } + mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked } # Close merge requests mrs = self.merge_requests.opened.where(:target_branch => branch_name).all diff --git a/app/views/merge_requests/automerge.js.haml b/app/views/merge_requests/automerge.js.haml new file mode 100644 index 00000000..5827a518 --- /dev/null +++ b/app/views/merge_requests/automerge.js.haml @@ -0,0 +1,2 @@ +:plain + location.reload(); diff --git a/app/views/merge_requests/show.html.haml b/app/views/merge_requests/show.html.haml index 1b8a25f2..7e14a61c 100644 --- a/app/views/merge_requests/show.html.haml +++ b/app/views/merge_requests/show.html.haml @@ -54,12 +54,11 @@ - if @merge_request.open? && @commits.any? - if @merge_request.can_be_merged? - .alert-message.info + .ui-box.padded %p - You can accept this request automatically. If you still want to do it manually - #{link_to "click here", "#", :class => "how_to_merge_link cwhite", :title => "How To Merge"} for instructions - .alert-actions - = link_to "Accept Merge Request", automerge_project_merge_request_path(@project, @merge_request), :class => "btn small info" -   + You can accept this request automatically. If you still want to do it manually - #{link_to "click here", "#", :class => "how_to_merge_link vlink", :title => "How To Merge"} for instructions + = link_to "Accept Merge Request", automerge_project_merge_request_path(@project, @merge_request), :class => "btn small info accept_merge_request", :remote => true +   - else .alert-message @@ -88,6 +87,10 @@ :javascript $(function(){ MergeRequest.init(); + + $(".accept_merge_request").live("ajax:beforeSend", function() { + $(this).replaceWith('#{image_tag "ajax_loader.gif"}'); + }) }) = render "notes/per_line_form"