Commit 3a50b6cac992f86981ad43990ace6ea78b422476

Authored by Dmitriy Zaporozhets
Committed by Dmitriy Zaporozhets
1 parent e4bd6442

merge request show page refactored

app/assets/images/.directory
1 [Dolphin] 1 [Dolphin]
2 ShowPreview=true 2 ShowPreview=true
3 -Timestamp=2011,12,12,23,25,14 3 +Timestamp=2011,12,13,12,22,12
4 Version=2 4 Version=2
app/assets/javascripts/merge_requests.js
1 var MergeRequest = { 1 var MergeRequest = {
2 - diff_loaded: false, 2 + diffs_loaded: false,
3 commits_loaded: false, 3 commits_loaded: false,
4 4
5 init: 5 init:
@@ -9,12 +9,25 @@ var MergeRequest = { @@ -9,12 +9,25 @@ var MergeRequest = {
9 $(this).addClass("active"); 9 $(this).addClass("active");
10 }); 10 });
11 11
  12 + $(".merge-tabs a.merge-notes-tab").live("click", function() {
  13 + $(".merge-request-commits, .merge-request-diffs").hide();
  14 + $(".merge-request-notes").show();
  15 + });
  16 +
12 $(".merge-tabs a.merge-commits-tab").live("click", function() { 17 $(".merge-tabs a.merge-commits-tab").live("click", function() {
13 - if(MergeRequest.commits_loaded) {  
14 - $(".merge-request-commits").show();  
15 - } else { 18 + if(!MergeRequest.commits_loaded) {
16 MergeRequest.loadCommits(); 19 MergeRequest.loadCommits();
17 } 20 }
  21 + $(".merge-request-notes, .merge-request-diffs").hide();
  22 + $(".merge-request-commits").show();
  23 + });
  24 +
  25 + $(".merge-tabs a.merge-diffs-tab").live("click", function() {
  26 + if(!MergeRequest.diffs_loaded) {
  27 + MergeRequest.loadDiff();
  28 + }
  29 + $(".merge-request-notes, .merge-request-commits").hide();
  30 + $(".merge-request-diffs").show();
18 }); 31 });
19 }, 32 },
20 33
@@ -23,14 +36,24 @@ var MergeRequest = { @@ -23,14 +36,24 @@ var MergeRequest = {
23 $(".dashboard-loader").show(); 36 $(".dashboard-loader").show();
24 $.ajax({ 37 $.ajax({
25 type: "GET", 38 type: "GET",
26 - url: location.href + "/commits", 39 + url: $(".merge-commits-tab").attr("data-url"),
27 complete: function(){ 40 complete: function(){
28 MergeRequest.commits_loaded = true; 41 MergeRequest.commits_loaded = true;
  42 + $(".merge-request-notes, .merge-request-diffs").hide();
29 $(".dashboard-loader").hide()}, 43 $(".dashboard-loader").hide()},
30 dataType: "script"}); 44 dataType: "script"});
31 }, 45 },
32 46
33 loadDiff: 47 loadDiff:
34 function() { 48 function() {
  49 + $(".dashboard-loader").show();
  50 + $.ajax({
  51 + type: "GET",
  52 + url: $(".merge-diffs-tab").attr("data-url"),
  53 + complete: function(){
  54 + MergeRequest.diffs_loaded = true;
  55 + $(".merge-request-notes, .merge-request-commits").hide();
  56 + $(".dashboard-loader").hide()},
  57 + dataType: "script"});
35 } 58 }
36 } 59 }
app/assets/stylesheets/projects.css.scss
@@ -552,7 +552,7 @@ h4.middle-panel { @@ -552,7 +552,7 @@ h4.middle-panel {
552 display:none; 552 display:none;
553 } 553 }
554 554
555 -ul.merge-tabs { 555 +.merge-tabs {
556 margin: 0; 556 margin: 0;
557 border: 1px solid #ccc; 557 border: 1px solid #ccc;
558 padding: 10px; 558 padding: 10px;
@@ -567,9 +567,32 @@ ul.merge-tabs { @@ -567,9 +567,32 @@ ul.merge-tabs {
567 border: 1px solid #ddd; 567 border: 1px solid #ddd;
568 background:none; 568 background:none;
569 padding: 4px 10px; 569 padding: 4px 10px;
  570 + width:160px;
570 571
571 &.active { 572 &.active {
572 background: #eaeaea; 573 background: #eaeaea;
573 } 574 }
574 } 575 }
575 } 576 }
  577 +.merge-tabs .reopen-request {
  578 + @include round-borders-all(4px);
  579 + padding:2px 4px;
  580 + border:1px solid #aaa;
  581 + text-shadow:none;
  582 + background: #D12F19;
  583 + color:white;
  584 +}
  585 +
  586 +.merge-tabs .close-request {
  587 + @include round-borders-all(4px);
  588 + padding:2px 4px;
  589 + border:1px solid #aaa;
  590 + text-shadow:none;
  591 + background: #44aa22;
  592 + color:white;
  593 +}
  594 +
  595 +.user-mention {
  596 + color: #2FA0BB;
  597 + font-weight: bold;
  598 +}
app/controllers/merge_requests_controller.rb
@@ -30,14 +30,11 @@ class MergeRequestsController < ApplicationController @@ -30,14 +30,11 @@ class MergeRequestsController < ApplicationController
30 30
31 def commits 31 def commits
32 @commits = @project.repo.commits_between(@merge_request.target_branch, @merge_request.source_branch).map {|c| Commit.new(c)} 32 @commits = @project.repo.commits_between(@merge_request.target_branch, @merge_request.source_branch).map {|c| Commit.new(c)}
33 - render :template => "merge_requests/_commits", :layout => false  
34 end 33 end
35 34
36 def diffs 35 def diffs
37 @diffs = @merge_request.diffs 36 @diffs = @merge_request.diffs
38 @commit = @merge_request.last_commit 37 @commit = @merge_request.last_commit
39 -  
40 - render :template => "merge_requests/_diffs", :layout => false  
41 end 38 end
42 39
43 def new 40 def new
app/views/merge_requests/_form.html.haml
@@ -28,7 +28,12 @@ @@ -28,7 +28,12 @@
28 %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) 28 %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
29 .buttons 29 .buttons
30 = f.submit 'Save', :class => "grey-button" 30 = f.submit 'Save', :class => "grey-button"
31 - .right= link_to 'Back', project_merge_requests_path(@project), :class => "grey-button" 31 +  
  32 + = link_to 'Back', project_merge_requests_path(@project), :class => "grey-button"
  33 + - unless @merge_request.new_record?
  34 + .right
  35 + = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "grey-button"
  36 +
32 37
33 :javascript 38 :javascript
34 $(function(){ 39 $(function(){
app/views/merge_requests/_merge_request.html.haml
1 %a.update-item{:href => project_merge_request_path(merge_request.project, merge_request)} 1 %a.update-item{:href => project_merge_request_path(merge_request.project, merge_request)}
2 = image_tag gravatar_icon(merge_request.author_email), :class => "left", :width => 40 2 = image_tag gravatar_icon(merge_request.author_email), :class => "left", :width => 40
3 %span.update-title 3 %span.update-title
4 - = merge_request.title 4 + = truncate(merge_request.title, :length => 60)
5 %span.update-author 5 %span.update-author
6 %strong= merge_request.author_name 6 %strong= merge_request.author_name
7 authored 7 authored
app/views/merge_requests/commits.js.haml 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +:plain
  2 + $(".merge-request-commits").html("#{escape_javascript(render(:partial => "commits"))}");
  3 +
  4 +
app/views/merge_requests/diffs.js.haml 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +:plain
  2 + $(".merge-request-diffs").html("#{escape_javascript(render(:partial => "diffs"))}");
  3 +
  4 +
app/views/merge_requests/show.html.haml
1 -.merge-request-show-holder.ui-box.width-100p  
2 - %h3  
3 - = "Merge Request ##{@merge_request.id}:"  
4 -    
5 - .tag.commit.inline= @merge_request.source_branch  
6 - →  
7 - .tag.commit.inline= @merge_request.target_branch  
8 - .right  
9 - - if @merge_request.closed  
10 - %span.tag.high Closed  
11 - - else  
12 - %span.tag.today Open  
13 -  
14 - .data  
15 - %p= @merge_request.title  
16 -  
17 - - if @merge_request.author == @merge_request.assignee  
18 - = image_tag gravatar_icon(@merge_request.assignee_email), :width => 20, :style => "padding:0 5px;"  
19 - = @merge_request.assignee_name  
20 - - else  
21 - = image_tag gravatar_icon(@merge_request.author_email), :width => 20, :style => "padding:0 5px;"  
22 - = @merge_request.author_name 1 +%div
  2 + %span.entity-info
  3 + - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
  4 + = link_to edit_project_merge_request_path(@project, @merge_request) do
  5 + .entity-button
  6 + Edit Merge Request
  7 + %i
  8 + = image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;"
  9 + %span.commit-title
  10 + %strong
  11 + = "Merge Request ##{@merge_request.id}:"
  12 +  
  13 + .tag.commit.inline= @merge_request.source_branch
23 → 14 →
24 - = image_tag gravatar_icon(@merge_request.assignee_email), :width => 20, :style => "padding:0 5px;"  
25 - = @merge_request.assignee_name  
26 - .right  
27 - %cite.cgray= @merge_request.created_at.stamp("21 Aug 2011, 11:15pm")  
28 - .clear 15 + .tag.commit.inline= @merge_request.target_branch
  16 + %span.commit-author
  17 + %strong
  18 + = link_to project_team_member_path(@project, @project.users_projects.find(@merge_request.author.id)) do
  19 + = @merge_request.author_name
  20 + →
  21 + = link_to project_team_member_path(@project, @project.users_projects.find(@merge_request.assignee.id)) do
  22 + = @merge_request.assignee_name
29 23
30 - .buttons  
31 - - if can? current_user, :write_project, @project  
32 - - if @merge_request.closed  
33 - = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "grey-button"  
34 - - else  
35 - = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "grey-button"  
36 - .right  
37 - = link_to 'Edit', edit_project_merge_request_path(@project, @merge_request), :class => "grey-button positive" 24 +  
  25 +  
  26 + = @merge_request.created_at.stamp("Aug 21, 2011 9:23pm")
  27 +
  28 + %hr
  29 + %h3= @merge_request.title
38 30
39 .clear 31 .clear
40 %br 32 %br
41 %br 33 %br
42 34
43 -%ul.merge-tabs  
44 - = link_to "Notes", "#", :class => "merge-notes-tab"  
45 - = link_to "Commits","#", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab"  
46 - = link_to "Diff", diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab" 35 +.merge-tabs
  36 + = link_to "Notes", "#notes", :class => "merge-notes-tab active"
  37 + = link_to "Commits","#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab"
  38 + = link_to "Diff", "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab"
  39 + - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
  40 + .right
  41 + - if @merge_request.closed
  42 + = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "reopen-request"
  43 + - else
  44 + = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "close-request", :title => "Close merge request"
47 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} 45 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"}
48 46
49 .merge-request-notes 47 .merge-request-notes
@@ -53,7 +51,6 @@ @@ -53,7 +51,6 @@
53 .clear 51 .clear
54 52
55 .merge-request-commits 53 .merge-request-commits
56 -  
57 .merge-request-diffs 54 .merge-request-diffs
58 55
59 56