Commit 2def1c7217556388763dfb860f76e16f9af58571

Authored by randx
1 parent b110c6bc

Merge Request -> show. Refactored. f5 support for diff

@@ -39,6 +39,7 @@ gem "charlock_holmes" @@ -39,6 +39,7 @@ gem "charlock_holmes"
39 gem "foreman" 39 gem "foreman"
40 gem "colored" 40 gem "colored"
41 gem 'resque_mailer' 41 gem 'resque_mailer'
  42 +gem 'tabs_on_rails'
42 43
43 group :assets do 44 group :assets do
44 gem "sass-rails", "3.2.5" 45 gem "sass-rails", "3.2.5"
@@ -331,6 +331,7 @@ GEM @@ -331,6 +331,7 @@ GEM
331 tilt (~> 1.1, != 1.3.0) 331 tilt (~> 1.1, != 1.3.0)
332 sqlite3 (1.3.6) 332 sqlite3 (1.3.6)
333 stamp (0.1.6) 333 stamp (0.1.6)
  334 + tabs_on_rails (2.1.1)
334 therubyracer (0.10.1) 335 therubyracer (0.10.1)
335 libv8 (~> 3.3.10) 336 libv8 (~> 3.3.10)
336 thin (1.3.1) 337 thin (1.3.1)
@@ -420,6 +421,7 @@ DEPENDENCIES @@ -420,6 +421,7 @@ DEPENDENCIES
420 six 421 six
421 sqlite3 422 sqlite3
422 stamp 423 stamp
  424 + tabs_on_rails
423 therubyracer 425 therubyracer
424 thin 426 thin
425 turn 427 turn
app/assets/javascripts/merge_requests.js
@@ -8,36 +8,77 @@ var MergeRequest = { @@ -8,36 +8,77 @@ var MergeRequest = {
8 var self = this; 8 var self = this;
9 self.opts = opts; 9 self.opts = opts;
10 10
  11 + self.initTabs();
  12 + self.initMergeWidget();
  13 +
  14 + $(".mr_show_all_commits").bind("click", function() {
  15 + self.showAllCommits();
  16 + });
  17 +
  18 + $(".line_note_link, .line_note_reply_link").live("click", function(e) {
  19 + var form = $(".per_line_form");
  20 + $(this).parent().parent().after(form);
  21 + form.find("#note_line_code").val($(this).attr("line_code"));
  22 + form.show();
  23 + return false;
  24 + });
  25 + },
  26 +
  27 + initMergeWidget:
  28 + function() {
  29 + var self = this;
11 self.showState(self.opts.current_state); 30 self.showState(self.opts.current_state);
  31 +
12 if($(".automerge_widget").length && self.opts.check_enable){ 32 if($(".automerge_widget").length && self.opts.check_enable){
13 $.get(opts.url_to_automerge_check, function(data){ 33 $.get(opts.url_to_automerge_check, function(data){
14 self.showState(data.state); 34 self.showState(data.state);
15 }, "json"); 35 }, "json");
16 } 36 }
  37 + },
17 38
18 - $(".nav-tabs a").live("click", function() {  
19 - $(".nav-tabs a").parent().removeClass("active"); 39 + initTabs:
  40 + function() {
  41 + $(".mr_nav_tabs a").live("click", function() {
  42 + $(".mr_nav_tabs a").parent().removeClass("active");
20 $(this).parent().addClass("active"); 43 $(this).parent().addClass("active");
21 }); 44 });
22 45
23 - $(".nav-tabs a.merge-notes-tab").live("click", function(e) { 46 + var current_tab;
  47 + if(this.opts.action == "diffs") {
  48 + current_tab = $(".mr_nav_tabs .merge-diffs-tab");
  49 + } else {
  50 + current_tab = $(".mr_nav_tabs .merge-notes-tab");
  51 + }
  52 + current_tab.parent().addClass("active");
  53 +
  54 + this.initNotesTab();
  55 + this.initDiffTab();
  56 + },
  57 +
  58 + initNotesTab:
  59 + function() {
  60 + $(".mr_nav_tabs a.merge-notes-tab").live("click", function(e) {
24 $(".merge-request-diffs").hide(); 61 $(".merge-request-diffs").hide();
25 $(".merge_request_notes").show(); 62 $(".merge_request_notes").show();
  63 + var mr_path = $(".merge-notes-tab").attr("data-url");
  64 + history.pushState({ path: mr_path }, '', mr_path);
26 e.preventDefault(); 65 e.preventDefault();
27 }); 66 });
  67 + },
28 68
29 - $(".nav-tabs a.merge-diffs-tab").live("click", function(e) { 69 + initDiffTab:
  70 + function() {
  71 + $(".mr_nav_tabs a.merge-diffs-tab").live("click", function(e) {
30 if(!MergeRequest.diffs_loaded) { 72 if(!MergeRequest.diffs_loaded) {
31 MergeRequest.loadDiff(); 73 MergeRequest.loadDiff();
32 } 74 }
33 $(".merge_request_notes").hide(); 75 $(".merge_request_notes").hide();
34 $(".merge-request-diffs").show(); 76 $(".merge-request-diffs").show();
  77 + var mr_diff_path = $(".merge-diffs-tab").attr("data-url");
  78 + history.pushState({ path: mr_diff_path }, '', mr_diff_path);
35 e.preventDefault(); 79 e.preventDefault();
36 }); 80 });
37 81
38 - $(".mr_show_all_commits").bind("click", function() {  
39 - MergeRequest.showAllCommits();  
40 - })  
41 }, 82 },
42 83
43 showState: 84 showState:
app/assets/stylesheets/sections/merge_requests.scss
@@ -72,3 +72,13 @@ @@ -72,3 +72,13 @@
72 @extend .primary; 72 @extend .primary;
73 } 73 }
74 } 74 }
  75 +
  76 +.mr_nav_tabs {
  77 + li {
  78 + a {
  79 + font-weight:bold;
  80 + padding:8px 20px;
  81 + text-align:center;
  82 + }
  83 + }
  84 +}
app/controllers/merge_requests_controller.rb
@@ -3,6 +3,8 @@ class MergeRequestsController < ApplicationController @@ -3,6 +3,8 @@ class MergeRequestsController < ApplicationController
3 before_filter :project 3 before_filter :project
4 before_filter :module_enabled 4 before_filter :module_enabled
5 before_filter :merge_request, :only => [:edit, :update, :destroy, :show, :commits, :diffs, :automerge, :automerge_check] 5 before_filter :merge_request, :only => [:edit, :update, :destroy, :show, :commits, :diffs, :automerge, :automerge_check]
  6 + before_filter :validates_merge_request, :only => [:show, :diffs]
  7 + before_filter :define_show_vars, :only => [:show, :diffs]
6 layout "project" 8 layout "project"
7 9
8 # Authorize 10 # Authorize
@@ -20,6 +22,7 @@ class MergeRequestsController < ApplicationController @@ -20,6 +22,7 @@ class MergeRequestsController < ApplicationController
20 # Allow destroy merge_request 22 # Allow destroy merge_request
21 before_filter :authorize_admin_merge_request!, :only => [:destroy] 23 before_filter :authorize_admin_merge_request!, :only => [:destroy]
22 24
  25 +
23 def index 26 def index
24 @merge_requests = @project.merge_requests 27 @merge_requests = @project.merge_requests
25 28
@@ -34,20 +37,6 @@ class MergeRequestsController < ApplicationController @@ -34,20 +37,6 @@ class MergeRequestsController < ApplicationController
34 end 37 end
35 38
36 def show 39 def show
37 - # Show git not found page if target branch doesnt exist  
38 - return git_not_found! unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)  
39 -  
40 - # Show git not found page if source branch doesnt exist  
41 - # and there is no saved commits between source & target branch  
42 - return git_not_found! if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?  
43 -  
44 - # Build a note object for comment form  
45 - @note = @project.notes.new(:noteable => @merge_request)  
46 -  
47 - # Get commits from repository  
48 - # or from cache if already merged  
49 - @commits = @merge_request.commits  
50 -  
51 respond_to do |format| 40 respond_to do |format|
52 format.html 41 format.html
53 format.js 42 format.js
@@ -142,4 +131,22 @@ class MergeRequestsController < ApplicationController @@ -142,4 +131,22 @@ class MergeRequestsController < ApplicationController
142 def module_enabled 131 def module_enabled
143 return render_404 unless @project.merge_requests_enabled 132 return render_404 unless @project.merge_requests_enabled
144 end 133 end
  134 +
  135 + def validates_merge_request
  136 + # Show git not found page if target branch doesnt exist
  137 + return git_not_found! unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)
  138 +
  139 + # Show git not found page if source branch doesnt exist
  140 + # and there is no saved commits between source & target branch
  141 + return git_not_found! if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?
  142 + end
  143 +
  144 + def define_show_vars
  145 + # Build a note object for comment form
  146 + @note = @project.notes.new(:noteable => @merge_request)
  147 +
  148 + # Get commits from repository
  149 + # or from cache if already merged
  150 + @commits = @merge_request.commits
  151 + end
145 end 152 end
app/views/commits/_diffs.html.haml
@@ -35,5 +35,4 @@ @@ -35,5 +35,4 @@
35 .diff_file_content_image{:class => image_diff_class(diff)} 35 .diff_file_content_image{:class => image_diff_class(diff)}
36 %img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} 36 %img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
37 - else 37 - else
38 - %p  
39 - %center No preview for this file type 38 + %p.nothing_here_message No preview for this file type
app/views/merge_requests/_commits.html.haml
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -- if @commits.present?  
2 - .ui-box  
3 - %h5 Commits (#{@commits.count})  
4 - .merge-request-commits  
5 - - if @commits.count > 8  
6 - %ul.first_mr_commits.unstyled  
7 - - @commits.first(8).each do |commit|  
8 - = render "commits/commit", :commit => commit  
9 - %li.bottom  
10 - 8 of #{@commits.count} commits displayed.  
11 - %strong  
12 - %a.mr_show_all_commits Click here to show all  
13 - %ul.all_mr_commits.hide.unstyled  
14 - - @commits.each do |commit|  
15 - = render "commits/commit", :commit => commit  
16 -  
17 - - else  
18 - %ul.unstyled  
19 - - @commits.each do |commit|  
20 - = render "commits/commit", :commit => commit  
21 -  
22 -- else  
23 - %h5  
24 - Nothing to merge from  
25 - %span.label #{@merge_request.source_branch}  
26 - to  
27 - %span.label #{@merge_request.target_branch}  
28 - %br  
app/views/merge_requests/_diffs.html.haml
@@ -1,3 +0,0 @@ @@ -1,3 +0,0 @@
1 -= render "commits/diffs", :diffs => @diffs  
2 -- if @diffs.empty?  
3 - %p.cgray Nothing to merge  
app/views/merge_requests/_how_to_merge.html.haml
@@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
1 -%div#modal_merge_info.modal.hide  
2 - .modal-header  
3 - %a.close{:href => "#"} ×  
4 - %h3 How To Merge  
5 - .modal-body  
6 - %pre  
7 - = preserve do  
8 - :erb  
9 - git checkout <%= @merge_request.target_branch %>  
10 - git fetch origin  
11 - git merge origin/<%= @merge_request.source_branch %>  
12 - git push origin <%= @merge_request.target_branch %>  
13 -  
14 -  
15 -:javascript  
16 - $(function(){  
17 - var modal = $('#modal_merge_info').modal({modal: true, show:false});  
18 - $('.how_to_merge_link').bind("click", function(){  
19 - modal.show();  
20 - });  
21 - $('.modal-header .close').bind("click", function(){  
22 - modal.hide();  
23 - })  
24 - })  
25 -  
app/views/merge_requests/_show.html.haml 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 += render "merge_requests/show/mr_title"
  2 += render "merge_requests/show/how_to_merge"
  3 += render "merge_requests/show/mr_box"
  4 += render "merge_requests/show/mr_accept"
  5 += render "merge_requests/show/commits"
  6 +
  7 +- if @commits.present?
  8 + %ul.nav.nav-tabs.mr_nav_tabs
  9 + %li
  10 + = link_to "#notes", "data-url" => project_merge_request_path(@project, @merge_request), :class => "merge-notes-tab tab" do
  11 + %i.icon-comment
  12 + Comments
  13 + %li
  14 + = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
  15 + %i.icon-list-alt
  16 + Diff
  17 +
  18 +.merge_request_notes#notes{ :class => (controller.action_name == 'show') ? "" : "hide" }
  19 + = render("notes/notes", :tid => @merge_request.id, :tt => "merge_request")
  20 +.merge-request-diffs
  21 + = render "merge_requests/show/diffs" if @diffs
  22 +.status
  23 +
  24 += render "notes/per_line_form"
  25 +
  26 +:javascript
  27 + $(function(){
  28 + MergeRequest.init({
  29 + url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}",
  30 + check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"},
  31 + current_state: "#{@merge_request.human_state}",
  32 + action: "#{controller.action_name}"
  33 + });
  34 +
  35 + $(".edit_merge_request").live("ajax:beforeSend", function() {
  36 + $(this).replaceWith('#{image_tag "ajax_loader.gif"}');
  37 + })
  38 + })
  39 +
app/views/merge_requests/diffs.html.haml 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 += render "show"
  2 +
app/views/merge_requests/diffs.js.haml
1 :plain 1 :plain
2 - $(".merge-request-diffs").html("#{escape_javascript(render(:partial => "diffs"))}"); 2 + $(".merge-request-diffs").html("#{escape_javascript(render(:partial => "merge_requests/show/diffs"))}");
3 3
4 4
app/views/merge_requests/show.html.haml
1 -%h3  
2 - = "Merge Request ##{@merge_request.id}:"  
3 - &nbsp;  
4 - %span.pretty_label.branch= @merge_request.source_branch  
5 - &rarr;  
6 - %span.pretty_label.branch= @merge_request.target_branch  
7 -  
8 - %span.right  
9 - - if @merge_request.merged?  
10 - %span.btn.small.disabled.padded  
11 - %strong  
12 - %i.icon-ok  
13 - = "MERGED"  
14 - - if can?(current_user, :modify_merge_request, @merge_request)  
15 - - if @merge_request.open?  
16 - = 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"  
17 - = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small padded" do  
18 - %i.icon-edit  
19 - Edit  
20 -  
21 - %br  
22 - - if @merge_request.upvotes > 0  
23 - .upvotes#upvotes= "+#{pluralize @merge_request.upvotes, 'upvote'}"  
24 -  
25 -= render "merge_requests/how_to_merge"  
26 -.back_link  
27 - = link_to project_merge_requests_path(@project) do  
28 - &larr; To merge requests  
29 -  
30 -.main_box  
31 - .top_box_content  
32 - %h4  
33 - - if @merge_request.closed  
34 - .alert-message.error.status_info Closed  
35 - - else  
36 - .alert-message.success.status_info Open  
37 - = @merge_request.title  
38 -  
39 - .middle_box_content  
40 - %div  
41 - %cite.cgray Created at #{@merge_request.created_at.stamp("Aug 21, 2011")} by  
42 - = image_tag gravatar_icon(@merge_request.author_email), :width => 16, :class => "lil_av"  
43 - %strong.author= link_to_merge_request_author(@merge_request)  
44 -  
45 - %cite.cgray and currently assigned to  
46 - = image_tag gravatar_icon(@merge_request.assignee_email), :width => 16, :class => "lil_av"  
47 - %strong.author= link_to_merge_request_assignee(@merge_request)  
48 -  
49 -  
50 - - if @merge_request.closed  
51 - .bottom_box_content  
52 - - if @merge_request.merged?  
53 - %span  
54 - Merged by #{@merge_request.merge_event.author_name}  
55 - %small #{time_ago_in_words(@merge_request.merge_event.created_at)} ago.  
56 - - elsif @merge_request.closed_event  
57 - %span  
58 - Closed by #{@merge_request.closed_event.author_name}  
59 - %small #{time_ago_in_words(@merge_request.closed_event.created_at)} ago.  
60 -  
61 -- unless can?(current_user, :accept_mr, @project)  
62 - .alert-message  
63 - %strong Only masters can accept MR  
64 -  
65 -  
66 -- if @merge_request.open? && @commits.any? && can?(current_user, :accept_mr, @project)  
67 - .automerge_widget.can_be_merged{:style => "display:none"}  
68 - .alert.alert-success  
69 - %span  
70 - = form_for [:automerge, @project, @merge_request], :remote => true, :method => :get do |f|  
71 - %p  
72 - You can accept this request automatically.  
73 - If you still want to do it manually -  
74 - %strong= link_to "click here", "#", :class => "how_to_merge_link vlink", :title => "How To Merge"  
75 - for instructions  
76 - .accept_group  
77 - = f.submit "Accept Merge Request", :class => "btn small success accept_merge_request"  
78 - - unless @project.root_ref? @merge_request.source_branch  
79 - .remove_branch_holder  
80 - = label_tag :should_remove_source_branch, :class => "checkbox" do  
81 - = check_box_tag :should_remove_source_branch  
82 - Remove source-branch  
83 - .clearfix  
84 -  
85 -  
86 - .automerge_widget.cannot_be_merged{:style => "display:none"}  
87 - .alert.alert-info  
88 - %span  
89 - = link_to "Show how to merge", "#", :class => "how_to_merge_link btn small padded", :title => "How To Merge"  
90 - &nbsp;  
91 - %strong This request cant be merged with GitLab. You should do it manually  
92 -  
93 - .automerge_widget.unchecked  
94 - .alert-message  
95 - %strong  
96 - %i.icon-refresh  
97 - Checking for ability to automatically merge…  
98 -  
99 - .automerge_widget.already_cannot_be_merged{:style => "display:none"}  
100 - .alert.alert-info  
101 - %strong This merge request already can not be merged. Try to reload page.  
102 -  
103 -= render "merge_requests/commits"  
104 -  
105 -- unless @commits.empty?  
106 - .nav.nav-tabs  
107 - %li.active  
108 - = link_to "#notes", :class => "merge-notes-tab tab" do  
109 - Notes  
110 - %li  
111 - = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do  
112 - Diff  
113 -  
114 -  
115 -.merge_request_notes#notes= render "notes/notes", :tid => @merge_request.id, :tt => "merge_request"  
116 -  
117 -.merge-request-diffs  
118 -.status  
119 -  
120 -:javascript  
121 - $(function(){  
122 - MergeRequest.init({  
123 - url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}",  
124 - check_enable: #{@merge_request.state == MergeRequest::UNCHECKED ? "true" : "false"},  
125 - current_state: "#{@merge_request.human_state}"  
126 - });  
127 -  
128 - $(".edit_merge_request").live("ajax:beforeSend", function() {  
129 - $(this).replaceWith('#{image_tag "ajax_loader.gif"}');  
130 - })  
131 - })  
132 -  
133 -= render "notes/per_line_form"  
134 -  
135 -:javascript  
136 - $(document).ready(function(){  
137 - $(".line_note_link, .line_note_reply_link").live("click", function(e) {  
138 - var form = $(".per_line_form");  
139 - $(this).parent().parent().after(form);  
140 - form.find("#note_line_code").val($(this).attr("line_code"));  
141 - form.show();  
142 - return false;  
143 - });  
144 - }); 1 += render "show"
app/views/merge_requests/show.js.haml 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +:plain
  2 + $(".merge-request-notes").html("#{escape_javascript(render("notes/notes", :tid => @merge_request.id, :tt => "merge_request"))}");
app/views/merge_requests/show/_commits.html.haml 0 → 100644
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
  1 +- if @commits.present?
  2 + .ui-box
  3 + %h5 Commits (#{@commits.count})
  4 + .merge-request-commits
  5 + - if @commits.count > 8
  6 + %ul.first_mr_commits.unstyled
  7 + - @commits.first(8).each do |commit|
  8 + = render "commits/commit", :commit => commit
  9 + %li.bottom
  10 + 8 of #{@commits.count} commits displayed.
  11 + %strong
  12 + %a.mr_show_all_commits Click here to show all
  13 + %ul.all_mr_commits.hide.unstyled
  14 + - @commits.each do |commit|
  15 + = render "commits/commit", :commit => commit
  16 +
  17 + - else
  18 + %ul.unstyled
  19 + - @commits.each do |commit|
  20 + = render "commits/commit", :commit => commit
  21 +
  22 +- else
  23 + %h5
  24 + Nothing to merge from
  25 + %span.label #{@merge_request.source_branch}
  26 + to
  27 + %span.label #{@merge_request.target_branch}
  28 + %br
app/views/merge_requests/show/_diffs.html.haml 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 += render "commits/diffs", :diffs => @diffs
  2 +- if @diffs.empty?
  3 + %p.cgray Nothing to merge
app/views/merge_requests/show/_how_to_merge.html.haml 0 → 100644
@@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
  1 +%div#modal_merge_info.modal.hide
  2 + .modal-header
  3 + %a.close{:href => "#"} ×
  4 + %h3 How To Merge
  5 + .modal-body
  6 + %pre
  7 + = preserve do
  8 + :erb
  9 + git checkout <%= @merge_request.target_branch %>
  10 + git fetch origin
  11 + git merge origin/<%= @merge_request.source_branch %>
  12 + git push origin <%= @merge_request.target_branch %>
  13 +
  14 +
  15 +:javascript
  16 + $(function(){
  17 + var modal = $('#modal_merge_info').modal({modal: true, show:false});
  18 + $('.how_to_merge_link').bind("click", function(){
  19 + modal.show();
  20 + });
  21 + $('.modal-header .close').bind("click", function(){
  22 + modal.hide();
  23 + })
  24 + })
  25 +
app/views/merge_requests/show/_mr_accept.html.haml 0 → 100644
@@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
  1 +- unless can?(current_user, :accept_mr, @project)
  2 + .alert-message
  3 + %strong Only masters can accept MR
  4 +
  5 +
  6 +- if @merge_request.open? && @commits.any? && can?(current_user, :accept_mr, @project)
  7 + .automerge_widget.can_be_merged{:style => "display:none"}
  8 + .alert.alert-success
  9 + %span
  10 + = form_for [:automerge, @project, @merge_request], :remote => true, :method => :get do |f|
  11 + %p
  12 + You can accept this request automatically.
  13 + If you still want to do it manually -
  14 + %strong= link_to "click here", "#", :class => "how_to_merge_link vlink", :title => "How To Merge"
  15 + for instructions
  16 + .accept_group
  17 + = f.submit "Accept Merge Request", :class => "btn small success accept_merge_request"
  18 + - unless @project.root_ref? @merge_request.source_branch
  19 + .remove_branch_holder
  20 + = label_tag :should_remove_source_branch, :class => "checkbox" do
  21 + = check_box_tag :should_remove_source_branch
  22 + Remove source-branch
  23 + .clearfix
  24 +
  25 +
  26 + .automerge_widget.cannot_be_merged{:style => "display:none"}
  27 + .alert.alert-info
  28 + %span
  29 + = link_to "Show how to merge", "#", :class => "how_to_merge_link btn small padded", :title => "How To Merge"
  30 + &nbsp;
  31 + %strong This request cant be merged with GitLab. You should do it manually
  32 +
  33 + .automerge_widget.unchecked
  34 + .alert-message
  35 + %strong
  36 + %i.icon-refresh
  37 + Checking for ability to automatically merge…
  38 +
  39 + .automerge_widget.already_cannot_be_merged{:style => "display:none"}
  40 + .alert.alert-info
  41 + %strong This merge request already can not be merged. Try to reload page.
  42 +
app/views/merge_requests/show/_mr_box.html.haml 0 → 100644
@@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
  1 +.main_box
  2 + .top_box_content
  3 + %h4
  4 + - if @merge_request.closed
  5 + .alert-message.error.status_info Closed
  6 + - else
  7 + .alert-message.success.status_info Open
  8 + = @merge_request.title
  9 +
  10 + .middle_box_content
  11 + %div
  12 + %cite.cgray Created at #{@merge_request.created_at.stamp("Aug 21, 2011")} by
  13 + = image_tag gravatar_icon(@merge_request.author_email), :width => 16, :class => "lil_av"
  14 + %strong.author= link_to_merge_request_author(@merge_request)
  15 +
  16 + %cite.cgray and currently assigned to
  17 + = image_tag gravatar_icon(@merge_request.assignee_email), :width => 16, :class => "lil_av"
  18 + %strong.author= link_to_merge_request_assignee(@merge_request)
  19 +
  20 +
  21 + - if @merge_request.closed
  22 + .bottom_box_content
  23 + - if @merge_request.merged?
  24 + %span
  25 + Merged by #{@merge_request.merge_event.author_name}
  26 + %small #{time_ago_in_words(@merge_request.merge_event.created_at)} ago.
  27 + - elsif @merge_request.closed_event
  28 + %span
  29 + Closed by #{@merge_request.closed_event.author_name}
  30 + %small #{time_ago_in_words(@merge_request.closed_event.created_at)} ago.
  31 +
app/views/merge_requests/show/_mr_title.html.haml 0 → 100644
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
  1 +%h3
  2 + = "Merge Request ##{@merge_request.id}:"
  3 + &nbsp;
  4 + %span.pretty_label.branch= @merge_request.source_branch
  5 + &rarr;
  6 + %span.pretty_label.branch= @merge_request.target_branch
  7 +
  8 + %span.right
  9 + - if @merge_request.merged?
  10 + %span.btn.small.disabled.padded
  11 + %strong
  12 + %i.icon-ok
  13 + = "MERGED"
  14 + - if can?(current_user, :modify_merge_request, @merge_request)
  15 + - if @merge_request.open?
  16 + = 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"
  17 + = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small padded" do
  18 + %i.icon-edit
  19 + Edit
  20 +
  21 + %br
  22 + - if @merge_request.upvotes > 0
  23 + .upvotes#upvotes= "+#{pluralize @merge_request.upvotes, 'upvote'}"
  24 +
  25 +
  26 +.back_link
  27 + = link_to project_merge_requests_path(@project) do
  28 + &larr; To merge requests
@@ -61,8 +61,8 @@ ActiveRecord::Schema.define(:version =&gt; 20120627145613) do @@ -61,8 +61,8 @@ ActiveRecord::Schema.define(:version =&gt; 20120627145613) do
61 t.boolean "closed", :default => false, :null => false 61 t.boolean "closed", :default => false, :null => false
62 t.datetime "created_at", :null => false 62 t.datetime "created_at", :null => false
63 t.datetime "updated_at", :null => false 63 t.datetime "updated_at", :null => false
64 - t.text "st_commits", :limit => 4294967295  
65 - t.text "st_diffs", :limit => 4294967295 64 + t.text "st_commits", :limit => 2147483647
  65 + t.text "st_diffs", :limit => 2147483647
66 t.boolean "merged", :default => false, :null => false 66 t.boolean "merged", :default => false, :null => false
67 t.integer "state", :default => 1, :null => false 67 t.integer "state", :default => 1, :null => false
68 end 68 end