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 | 1 | var MergeRequest = { |
| 2 | - diff_loaded: false, | |
| 2 | + diffs_loaded: false, | |
| 3 | 3 | commits_loaded: false, |
| 4 | 4 | |
| 5 | 5 | init: |
| ... | ... | @@ -9,12 +9,25 @@ var MergeRequest = { |
| 9 | 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 | 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 | 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 | 36 | $(".dashboard-loader").show(); |
| 24 | 37 | $.ajax({ |
| 25 | 38 | type: "GET", |
| 26 | - url: location.href + "/commits", | |
| 39 | + url: $(".merge-commits-tab").attr("data-url"), | |
| 27 | 40 | complete: function(){ |
| 28 | 41 | MergeRequest.commits_loaded = true; |
| 42 | + $(".merge-request-notes, .merge-request-diffs").hide(); | |
| 29 | 43 | $(".dashboard-loader").hide()}, |
| 30 | 44 | dataType: "script"}); |
| 31 | 45 | }, |
| 32 | 46 | |
| 33 | 47 | loadDiff: |
| 34 | 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 | 552 | display:none; |
| 553 | 553 | } |
| 554 | 554 | |
| 555 | -ul.merge-tabs { | |
| 555 | +.merge-tabs { | |
| 556 | 556 | margin: 0; |
| 557 | 557 | border: 1px solid #ccc; |
| 558 | 558 | padding: 10px; |
| ... | ... | @@ -567,9 +567,32 @@ ul.merge-tabs { |
| 567 | 567 | border: 1px solid #ddd; |
| 568 | 568 | background:none; |
| 569 | 569 | padding: 4px 10px; |
| 570 | + width:160px; | |
| 570 | 571 | |
| 571 | 572 | &.active { |
| 572 | 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 | 30 | |
| 31 | 31 | def commits |
| 32 | 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 | 33 | end |
| 35 | 34 | |
| 36 | 35 | def diffs |
| 37 | 36 | @diffs = @merge_request.diffs |
| 38 | 37 | @commit = @merge_request.last_commit |
| 39 | - | |
| 40 | - render :template => "merge_requests/_diffs", :layout => false | |
| 41 | 38 | end |
| 42 | 39 | |
| 43 | 40 | def new | ... | ... |
app/views/merge_requests/_form.html.haml
| ... | ... | @@ -28,7 +28,12 @@ |
| 28 | 28 | %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) |
| 29 | 29 | .buttons |
| 30 | 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 | 38 | :javascript |
| 34 | 39 | $(function(){ | ... | ... |
app/views/merge_requests/_merge_request.html.haml
| 1 | 1 | %a.update-item{:href => project_merge_request_path(merge_request.project, merge_request)} |
| 2 | 2 | = image_tag gravatar_icon(merge_request.author_email), :class => "left", :width => 40 |
| 3 | 3 | %span.update-title |
| 4 | - = merge_request.title | |
| 4 | + = truncate(merge_request.title, :length => 60) | |
| 5 | 5 | %span.update-author |
| 6 | 6 | %strong= merge_request.author_name |
| 7 | 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 | 31 | .clear |
| 40 | 32 | %br |
| 41 | 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 | 45 | %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} |
| 48 | 46 | |
| 49 | 47 | .merge-request-notes |
| ... | ... | @@ -53,7 +51,6 @@ |
| 53 | 51 | .clear |
| 54 | 52 | |
| 55 | 53 | .merge-request-commits |
| 56 | - | |
| 57 | 54 | .merge-request-diffs |
| 58 | 55 | |
| 59 | 56 | ... | ... |