Merge Request -> show. Refactored. f5 support for diff
This commit is contained in:
parent
b110c6bc86
commit
2def1c7217
1
Gemfile
1
Gemfile
|
@ -39,6 +39,7 @@ gem "charlock_holmes"
|
||||||
gem "foreman"
|
gem "foreman"
|
||||||
gem "colored"
|
gem "colored"
|
||||||
gem 'resque_mailer'
|
gem 'resque_mailer'
|
||||||
|
gem 'tabs_on_rails'
|
||||||
|
|
||||||
group :assets do
|
group :assets do
|
||||||
gem "sass-rails", "3.2.5"
|
gem "sass-rails", "3.2.5"
|
||||||
|
|
|
@ -331,6 +331,7 @@ GEM
|
||||||
tilt (~> 1.1, != 1.3.0)
|
tilt (~> 1.1, != 1.3.0)
|
||||||
sqlite3 (1.3.6)
|
sqlite3 (1.3.6)
|
||||||
stamp (0.1.6)
|
stamp (0.1.6)
|
||||||
|
tabs_on_rails (2.1.1)
|
||||||
therubyracer (0.10.1)
|
therubyracer (0.10.1)
|
||||||
libv8 (~> 3.3.10)
|
libv8 (~> 3.3.10)
|
||||||
thin (1.3.1)
|
thin (1.3.1)
|
||||||
|
@ -420,6 +421,7 @@ DEPENDENCIES
|
||||||
six
|
six
|
||||||
sqlite3
|
sqlite3
|
||||||
stamp
|
stamp
|
||||||
|
tabs_on_rails
|
||||||
therubyracer
|
therubyracer
|
||||||
thin
|
thin
|
||||||
turn
|
turn
|
||||||
|
|
|
@ -8,36 +8,77 @@ var MergeRequest = {
|
||||||
var self = this;
|
var self = this;
|
||||||
self.opts = opts;
|
self.opts = opts;
|
||||||
|
|
||||||
|
self.initTabs();
|
||||||
|
self.initMergeWidget();
|
||||||
|
|
||||||
|
$(".mr_show_all_commits").bind("click", function() {
|
||||||
|
self.showAllCommits();
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".line_note_link, .line_note_reply_link").live("click", function(e) {
|
||||||
|
var form = $(".per_line_form");
|
||||||
|
$(this).parent().parent().after(form);
|
||||||
|
form.find("#note_line_code").val($(this).attr("line_code"));
|
||||||
|
form.show();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
initMergeWidget:
|
||||||
|
function() {
|
||||||
|
var self = this;
|
||||||
self.showState(self.opts.current_state);
|
self.showState(self.opts.current_state);
|
||||||
|
|
||||||
if($(".automerge_widget").length && self.opts.check_enable){
|
if($(".automerge_widget").length && self.opts.check_enable){
|
||||||
$.get(opts.url_to_automerge_check, function(data){
|
$.get(opts.url_to_automerge_check, function(data){
|
||||||
self.showState(data.state);
|
self.showState(data.state);
|
||||||
}, "json");
|
}, "json");
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
$(".nav-tabs a").live("click", function() {
|
initTabs:
|
||||||
$(".nav-tabs a").parent().removeClass("active");
|
function() {
|
||||||
|
$(".mr_nav_tabs a").live("click", function() {
|
||||||
|
$(".mr_nav_tabs a").parent().removeClass("active");
|
||||||
$(this).parent().addClass("active");
|
$(this).parent().addClass("active");
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".nav-tabs a.merge-notes-tab").live("click", function(e) {
|
var current_tab;
|
||||||
|
if(this.opts.action == "diffs") {
|
||||||
|
current_tab = $(".mr_nav_tabs .merge-diffs-tab");
|
||||||
|
} else {
|
||||||
|
current_tab = $(".mr_nav_tabs .merge-notes-tab");
|
||||||
|
}
|
||||||
|
current_tab.parent().addClass("active");
|
||||||
|
|
||||||
|
this.initNotesTab();
|
||||||
|
this.initDiffTab();
|
||||||
|
},
|
||||||
|
|
||||||
|
initNotesTab:
|
||||||
|
function() {
|
||||||
|
$(".mr_nav_tabs a.merge-notes-tab").live("click", function(e) {
|
||||||
$(".merge-request-diffs").hide();
|
$(".merge-request-diffs").hide();
|
||||||
$(".merge_request_notes").show();
|
$(".merge_request_notes").show();
|
||||||
|
var mr_path = $(".merge-notes-tab").attr("data-url");
|
||||||
|
history.pushState({ path: mr_path }, '', mr_path);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
$(".nav-tabs a.merge-diffs-tab").live("click", function(e) {
|
initDiffTab:
|
||||||
|
function() {
|
||||||
|
$(".mr_nav_tabs a.merge-diffs-tab").live("click", function(e) {
|
||||||
if(!MergeRequest.diffs_loaded) {
|
if(!MergeRequest.diffs_loaded) {
|
||||||
MergeRequest.loadDiff();
|
MergeRequest.loadDiff();
|
||||||
}
|
}
|
||||||
$(".merge_request_notes").hide();
|
$(".merge_request_notes").hide();
|
||||||
$(".merge-request-diffs").show();
|
$(".merge-request-diffs").show();
|
||||||
|
var mr_diff_path = $(".merge-diffs-tab").attr("data-url");
|
||||||
|
history.pushState({ path: mr_diff_path }, '', mr_diff_path);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".mr_show_all_commits").bind("click", function() {
|
|
||||||
MergeRequest.showAllCommits();
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
showState:
|
showState:
|
||||||
|
|
|
@ -72,3 +72,13 @@
|
||||||
@extend .primary;
|
@extend .primary;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mr_nav_tabs {
|
||||||
|
li {
|
||||||
|
a {
|
||||||
|
font-weight:bold;
|
||||||
|
padding:8px 20px;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ class MergeRequestsController < ApplicationController
|
||||||
before_filter :project
|
before_filter :project
|
||||||
before_filter :module_enabled
|
before_filter :module_enabled
|
||||||
before_filter :merge_request, :only => [:edit, :update, :destroy, :show, :commits, :diffs, :automerge, :automerge_check]
|
before_filter :merge_request, :only => [:edit, :update, :destroy, :show, :commits, :diffs, :automerge, :automerge_check]
|
||||||
|
before_filter :validates_merge_request, :only => [:show, :diffs]
|
||||||
|
before_filter :define_show_vars, :only => [:show, :diffs]
|
||||||
layout "project"
|
layout "project"
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
|
@ -20,6 +22,7 @@ class MergeRequestsController < ApplicationController
|
||||||
# Allow destroy merge_request
|
# Allow destroy merge_request
|
||||||
before_filter :authorize_admin_merge_request!, :only => [:destroy]
|
before_filter :authorize_admin_merge_request!, :only => [:destroy]
|
||||||
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@merge_requests = @project.merge_requests
|
@merge_requests = @project.merge_requests
|
||||||
|
|
||||||
|
@ -34,20 +37,6 @@ class MergeRequestsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
# Show git not found page if target branch doesnt exist
|
|
||||||
return git_not_found! unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)
|
|
||||||
|
|
||||||
# Show git not found page if source branch doesnt exist
|
|
||||||
# and there is no saved commits between source & target branch
|
|
||||||
return git_not_found! if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?
|
|
||||||
|
|
||||||
# Build a note object for comment form
|
|
||||||
@note = @project.notes.new(:noteable => @merge_request)
|
|
||||||
|
|
||||||
# Get commits from repository
|
|
||||||
# or from cache if already merged
|
|
||||||
@commits = @merge_request.commits
|
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.js
|
format.js
|
||||||
|
@ -142,4 +131,22 @@ class MergeRequestsController < ApplicationController
|
||||||
def module_enabled
|
def module_enabled
|
||||||
return render_404 unless @project.merge_requests_enabled
|
return render_404 unless @project.merge_requests_enabled
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def validates_merge_request
|
||||||
|
# Show git not found page if target branch doesnt exist
|
||||||
|
return git_not_found! unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)
|
||||||
|
|
||||||
|
# Show git not found page if source branch doesnt exist
|
||||||
|
# and there is no saved commits between source & target branch
|
||||||
|
return git_not_found! if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
def define_show_vars
|
||||||
|
# Build a note object for comment form
|
||||||
|
@note = @project.notes.new(:noteable => @merge_request)
|
||||||
|
|
||||||
|
# Get commits from repository
|
||||||
|
# or from cache if already merged
|
||||||
|
@commits = @merge_request.commits
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -35,5 +35,4 @@
|
||||||
.diff_file_content_image{:class => image_diff_class(diff)}
|
.diff_file_content_image{:class => image_diff_class(diff)}
|
||||||
%img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
|
%img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
|
||||||
- else
|
- else
|
||||||
%p
|
%p.nothing_here_message No preview for this file type
|
||||||
%center No preview for this file type
|
|
||||||
|
|
39
app/views/merge_requests/_show.html.haml
Normal file
39
app/views/merge_requests/_show.html.haml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
= render "merge_requests/show/mr_title"
|
||||||
|
= render "merge_requests/show/how_to_merge"
|
||||||
|
= render "merge_requests/show/mr_box"
|
||||||
|
= render "merge_requests/show/mr_accept"
|
||||||
|
= render "merge_requests/show/commits"
|
||||||
|
|
||||||
|
- if @commits.present?
|
||||||
|
%ul.nav.nav-tabs.mr_nav_tabs
|
||||||
|
%li
|
||||||
|
= link_to "#notes", "data-url" => project_merge_request_path(@project, @merge_request), :class => "merge-notes-tab tab" do
|
||||||
|
%i.icon-comment
|
||||||
|
Comments
|
||||||
|
%li
|
||||||
|
= link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
|
||||||
|
%i.icon-list-alt
|
||||||
|
Diff
|
||||||
|
|
||||||
|
.merge_request_notes#notes{ :class => (controller.action_name == 'show') ? "" : "hide" }
|
||||||
|
= render("notes/notes", :tid => @merge_request.id, :tt => "merge_request")
|
||||||
|
.merge-request-diffs
|
||||||
|
= render "merge_requests/show/diffs" if @diffs
|
||||||
|
.status
|
||||||
|
|
||||||
|
= render "notes/per_line_form"
|
||||||
|
|
||||||
|
:javascript
|
||||||
|
$(function(){
|
||||||
|
MergeRequest.init({
|
||||||
|
url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}",
|
||||||
|
check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"},
|
||||||
|
current_state: "#{@merge_request.human_state}",
|
||||||
|
action: "#{controller.action_name}"
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".edit_merge_request").live("ajax:beforeSend", function() {
|
||||||
|
$(this).replaceWith('#{image_tag "ajax_loader.gif"}');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
2
app/views/merge_requests/diffs.html.haml
Normal file
2
app/views/merge_requests/diffs.html.haml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
= render "show"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
:plain
|
:plain
|
||||||
$(".merge-request-diffs").html("#{escape_javascript(render(:partial => "diffs"))}");
|
$(".merge-request-diffs").html("#{escape_javascript(render(:partial => "merge_requests/show/diffs"))}");
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,144 +1 @@
|
||||||
%h3
|
= render "show"
|
||||||
= "Merge Request ##{@merge_request.id}:"
|
|
||||||
|
|
||||||
%span.pretty_label.branch= @merge_request.source_branch
|
|
||||||
→
|
|
||||||
%span.pretty_label.branch= @merge_request.target_branch
|
|
||||||
|
|
||||||
%span.right
|
|
||||||
- if @merge_request.merged?
|
|
||||||
%span.btn.small.disabled.padded
|
|
||||||
%strong
|
|
||||||
%i.icon-ok
|
|
||||||
= "MERGED"
|
|
||||||
- if can?(current_user, :modify_merge_request, @merge_request)
|
|
||||||
- if @merge_request.open?
|
|
||||||
= link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn small padded danger", :title => "Close merge request"
|
|
||||||
= link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small padded" do
|
|
||||||
%i.icon-edit
|
|
||||||
Edit
|
|
||||||
|
|
||||||
%br
|
|
||||||
- if @merge_request.upvotes > 0
|
|
||||||
.upvotes#upvotes= "+#{pluralize @merge_request.upvotes, 'upvote'}"
|
|
||||||
|
|
||||||
= render "merge_requests/how_to_merge"
|
|
||||||
.back_link
|
|
||||||
= link_to project_merge_requests_path(@project) do
|
|
||||||
← To merge requests
|
|
||||||
|
|
||||||
.main_box
|
|
||||||
.top_box_content
|
|
||||||
%h4
|
|
||||||
- if @merge_request.closed
|
|
||||||
.alert-message.error.status_info Closed
|
|
||||||
- else
|
|
||||||
.alert-message.success.status_info Open
|
|
||||||
= @merge_request.title
|
|
||||||
|
|
||||||
.middle_box_content
|
|
||||||
%div
|
|
||||||
%cite.cgray Created at #{@merge_request.created_at.stamp("Aug 21, 2011")} by
|
|
||||||
= image_tag gravatar_icon(@merge_request.author_email), :width => 16, :class => "lil_av"
|
|
||||||
%strong.author= link_to_merge_request_author(@merge_request)
|
|
||||||
|
|
||||||
%cite.cgray and currently assigned to
|
|
||||||
= image_tag gravatar_icon(@merge_request.assignee_email), :width => 16, :class => "lil_av"
|
|
||||||
%strong.author= link_to_merge_request_assignee(@merge_request)
|
|
||||||
|
|
||||||
|
|
||||||
- if @merge_request.closed
|
|
||||||
.bottom_box_content
|
|
||||||
- if @merge_request.merged?
|
|
||||||
%span
|
|
||||||
Merged by #{@merge_request.merge_event.author_name}
|
|
||||||
%small #{time_ago_in_words(@merge_request.merge_event.created_at)} ago.
|
|
||||||
- elsif @merge_request.closed_event
|
|
||||||
%span
|
|
||||||
Closed by #{@merge_request.closed_event.author_name}
|
|
||||||
%small #{time_ago_in_words(@merge_request.closed_event.created_at)} ago.
|
|
||||||
|
|
||||||
- unless can?(current_user, :accept_mr, @project)
|
|
||||||
.alert-message
|
|
||||||
%strong Only masters can accept MR
|
|
||||||
|
|
||||||
|
|
||||||
- if @merge_request.open? && @commits.any? && can?(current_user, :accept_mr, @project)
|
|
||||||
.automerge_widget.can_be_merged{:style => "display:none"}
|
|
||||||
.alert.alert-success
|
|
||||||
%span
|
|
||||||
= form_for [:automerge, @project, @merge_request], :remote => true, :method => :get do |f|
|
|
||||||
%p
|
|
||||||
You can accept this request automatically.
|
|
||||||
If you still want to do it manually -
|
|
||||||
%strong= link_to "click here", "#", :class => "how_to_merge_link vlink", :title => "How To Merge"
|
|
||||||
for instructions
|
|
||||||
.accept_group
|
|
||||||
= f.submit "Accept Merge Request", :class => "btn small success accept_merge_request"
|
|
||||||
- unless @project.root_ref? @merge_request.source_branch
|
|
||||||
.remove_branch_holder
|
|
||||||
= label_tag :should_remove_source_branch, :class => "checkbox" do
|
|
||||||
= check_box_tag :should_remove_source_branch
|
|
||||||
Remove source-branch
|
|
||||||
.clearfix
|
|
||||||
|
|
||||||
|
|
||||||
.automerge_widget.cannot_be_merged{:style => "display:none"}
|
|
||||||
.alert.alert-info
|
|
||||||
%span
|
|
||||||
= link_to "Show how to merge", "#", :class => "how_to_merge_link btn small padded", :title => "How To Merge"
|
|
||||||
|
|
||||||
%strong This request cant be merged with GitLab. You should do it manually
|
|
||||||
|
|
||||||
.automerge_widget.unchecked
|
|
||||||
.alert-message
|
|
||||||
%strong
|
|
||||||
%i.icon-refresh
|
|
||||||
Checking for ability to automatically merge…
|
|
||||||
|
|
||||||
.automerge_widget.already_cannot_be_merged{:style => "display:none"}
|
|
||||||
.alert.alert-info
|
|
||||||
%strong This merge request already can not be merged. Try to reload page.
|
|
||||||
|
|
||||||
= render "merge_requests/commits"
|
|
||||||
|
|
||||||
- unless @commits.empty?
|
|
||||||
.nav.nav-tabs
|
|
||||||
%li.active
|
|
||||||
= link_to "#notes", :class => "merge-notes-tab tab" do
|
|
||||||
Notes
|
|
||||||
%li
|
|
||||||
= link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
|
|
||||||
Diff
|
|
||||||
|
|
||||||
|
|
||||||
.merge_request_notes#notes= render "notes/notes", :tid => @merge_request.id, :tt => "merge_request"
|
|
||||||
|
|
||||||
.merge-request-diffs
|
|
||||||
.status
|
|
||||||
|
|
||||||
:javascript
|
|
||||||
$(function(){
|
|
||||||
MergeRequest.init({
|
|
||||||
url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}",
|
|
||||||
check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"},
|
|
||||||
current_state: "#{@merge_request.human_state}"
|
|
||||||
});
|
|
||||||
|
|
||||||
$(".edit_merge_request").live("ajax:beforeSend", function() {
|
|
||||||
$(this).replaceWith('#{image_tag "ajax_loader.gif"}');
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
= render "notes/per_line_form"
|
|
||||||
|
|
||||||
:javascript
|
|
||||||
$(document).ready(function(){
|
|
||||||
$(".line_note_link, .line_note_reply_link").live("click", function(e) {
|
|
||||||
var form = $(".per_line_form");
|
|
||||||
$(this).parent().parent().after(form);
|
|
||||||
form.find("#note_line_code").val($(this).attr("line_code"));
|
|
||||||
form.show();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
2
app/views/merge_requests/show.js.haml
Normal file
2
app/views/merge_requests/show.js.haml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
:plain
|
||||||
|
$(".merge-request-notes").html("#{escape_javascript(render("notes/notes", :tid => @merge_request.id, :tt => "merge_request"))}");
|
42
app/views/merge_requests/show/_mr_accept.html.haml
Normal file
42
app/views/merge_requests/show/_mr_accept.html.haml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
- unless can?(current_user, :accept_mr, @project)
|
||||||
|
.alert-message
|
||||||
|
%strong Only masters can accept MR
|
||||||
|
|
||||||
|
|
||||||
|
- if @merge_request.open? && @commits.any? && can?(current_user, :accept_mr, @project)
|
||||||
|
.automerge_widget.can_be_merged{:style => "display:none"}
|
||||||
|
.alert.alert-success
|
||||||
|
%span
|
||||||
|
= form_for [:automerge, @project, @merge_request], :remote => true, :method => :get do |f|
|
||||||
|
%p
|
||||||
|
You can accept this request automatically.
|
||||||
|
If you still want to do it manually -
|
||||||
|
%strong= link_to "click here", "#", :class => "how_to_merge_link vlink", :title => "How To Merge"
|
||||||
|
for instructions
|
||||||
|
.accept_group
|
||||||
|
= f.submit "Accept Merge Request", :class => "btn small success accept_merge_request"
|
||||||
|
- unless @project.root_ref? @merge_request.source_branch
|
||||||
|
.remove_branch_holder
|
||||||
|
= label_tag :should_remove_source_branch, :class => "checkbox" do
|
||||||
|
= check_box_tag :should_remove_source_branch
|
||||||
|
Remove source-branch
|
||||||
|
.clearfix
|
||||||
|
|
||||||
|
|
||||||
|
.automerge_widget.cannot_be_merged{:style => "display:none"}
|
||||||
|
.alert.alert-info
|
||||||
|
%span
|
||||||
|
= link_to "Show how to merge", "#", :class => "how_to_merge_link btn small padded", :title => "How To Merge"
|
||||||
|
|
||||||
|
%strong This request cant be merged with GitLab. You should do it manually
|
||||||
|
|
||||||
|
.automerge_widget.unchecked
|
||||||
|
.alert-message
|
||||||
|
%strong
|
||||||
|
%i.icon-refresh
|
||||||
|
Checking for ability to automatically merge…
|
||||||
|
|
||||||
|
.automerge_widget.already_cannot_be_merged{:style => "display:none"}
|
||||||
|
.alert.alert-info
|
||||||
|
%strong This merge request already can not be merged. Try to reload page.
|
||||||
|
|
31
app/views/merge_requests/show/_mr_box.html.haml
Normal file
31
app/views/merge_requests/show/_mr_box.html.haml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
.main_box
|
||||||
|
.top_box_content
|
||||||
|
%h4
|
||||||
|
- if @merge_request.closed
|
||||||
|
.alert-message.error.status_info Closed
|
||||||
|
- else
|
||||||
|
.alert-message.success.status_info Open
|
||||||
|
= @merge_request.title
|
||||||
|
|
||||||
|
.middle_box_content
|
||||||
|
%div
|
||||||
|
%cite.cgray Created at #{@merge_request.created_at.stamp("Aug 21, 2011")} by
|
||||||
|
= image_tag gravatar_icon(@merge_request.author_email), :width => 16, :class => "lil_av"
|
||||||
|
%strong.author= link_to_merge_request_author(@merge_request)
|
||||||
|
|
||||||
|
%cite.cgray and currently assigned to
|
||||||
|
= image_tag gravatar_icon(@merge_request.assignee_email), :width => 16, :class => "lil_av"
|
||||||
|
%strong.author= link_to_merge_request_assignee(@merge_request)
|
||||||
|
|
||||||
|
|
||||||
|
- if @merge_request.closed
|
||||||
|
.bottom_box_content
|
||||||
|
- if @merge_request.merged?
|
||||||
|
%span
|
||||||
|
Merged by #{@merge_request.merge_event.author_name}
|
||||||
|
%small #{time_ago_in_words(@merge_request.merge_event.created_at)} ago.
|
||||||
|
- elsif @merge_request.closed_event
|
||||||
|
%span
|
||||||
|
Closed by #{@merge_request.closed_event.author_name}
|
||||||
|
%small #{time_ago_in_words(@merge_request.closed_event.created_at)} ago.
|
||||||
|
|
28
app/views/merge_requests/show/_mr_title.html.haml
Normal file
28
app/views/merge_requests/show/_mr_title.html.haml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
%h3
|
||||||
|
= "Merge Request ##{@merge_request.id}:"
|
||||||
|
|
||||||
|
%span.pretty_label.branch= @merge_request.source_branch
|
||||||
|
→
|
||||||
|
%span.pretty_label.branch= @merge_request.target_branch
|
||||||
|
|
||||||
|
%span.right
|
||||||
|
- if @merge_request.merged?
|
||||||
|
%span.btn.small.disabled.padded
|
||||||
|
%strong
|
||||||
|
%i.icon-ok
|
||||||
|
= "MERGED"
|
||||||
|
- if can?(current_user, :modify_merge_request, @merge_request)
|
||||||
|
- if @merge_request.open?
|
||||||
|
= link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn small padded danger", :title => "Close merge request"
|
||||||
|
= link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small padded" do
|
||||||
|
%i.icon-edit
|
||||||
|
Edit
|
||||||
|
|
||||||
|
%br
|
||||||
|
- if @merge_request.upvotes > 0
|
||||||
|
.upvotes#upvotes= "+#{pluralize @merge_request.upvotes, 'upvote'}"
|
||||||
|
|
||||||
|
|
||||||
|
.back_link
|
||||||
|
= link_to project_merge_requests_path(@project) do
|
||||||
|
← To merge requests
|
|
@ -61,8 +61,8 @@ ActiveRecord::Schema.define(:version => 20120627145613) do
|
||||||
t.boolean "closed", :default => false, :null => false
|
t.boolean "closed", :default => false, :null => false
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
t.text "st_commits", :limit => 4294967295
|
t.text "st_commits", :limit => 2147483647
|
||||||
t.text "st_diffs", :limit => 4294967295
|
t.text "st_diffs", :limit => 2147483647
|
||||||
t.boolean "merged", :default => false, :null => false
|
t.boolean "merged", :default => false, :null => false
|
||||||
t.integer "state", :default => 1, :null => false
|
t.integer "state", :default => 1, :null => false
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue