Commit 3a50b6cac992f86981ad43990ace6ea78b422476
Committed by
Dmitriy Zaporozhets
1 parent
e4bd6442
Exists in
master
and in
4 other branches
merge request show page refactored
Showing
9 changed files
with
105 additions
and
52 deletions
Show diff stats
app/assets/images/.directory
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/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 |