From 3a50b6cac992f86981ad43990ace6ea78b422476 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 13 Dec 2011 20:40:45 +0200 Subject: [PATCH] merge request show page refactored --- app/assets/images/.directory | 2 +- app/assets/javascripts/merge_requests.js | 33 ++++++-- app/assets/stylesheets/projects.css.scss | 25 +++++- app/controllers/merge_requests_controller.rb | 3 - app/views/merge_requests/_form.html.haml | 7 +- .../merge_requests/_merge_request.html.haml | 2 +- app/views/merge_requests/commits.js.haml | 4 + app/views/merge_requests/diffs.js.haml | 4 + app/views/merge_requests/show.html.haml | 77 +++++++++---------- 9 files changed, 105 insertions(+), 52 deletions(-) create mode 100644 app/views/merge_requests/commits.js.haml create mode 100644 app/views/merge_requests/diffs.js.haml diff --git a/app/assets/images/.directory b/app/assets/images/.directory index 3a654936..dbc00344 100644 --- a/app/assets/images/.directory +++ b/app/assets/images/.directory @@ -1,4 +1,4 @@ [Dolphin] ShowPreview=true -Timestamp=2011,12,12,23,25,14 +Timestamp=2011,12,13,12,22,12 Version=2 diff --git a/app/assets/javascripts/merge_requests.js b/app/assets/javascripts/merge_requests.js index d50cb5b5..0d2f5355 100644 --- a/app/assets/javascripts/merge_requests.js +++ b/app/assets/javascripts/merge_requests.js @@ -1,5 +1,5 @@ var MergeRequest = { - diff_loaded: false, + diffs_loaded: false, commits_loaded: false, init: @@ -9,12 +9,25 @@ var MergeRequest = { $(this).addClass("active"); }); + $(".merge-tabs a.merge-notes-tab").live("click", function() { + $(".merge-request-commits, .merge-request-diffs").hide(); + $(".merge-request-notes").show(); + }); + $(".merge-tabs a.merge-commits-tab").live("click", function() { - if(MergeRequest.commits_loaded) { - $(".merge-request-commits").show(); - } else { + if(!MergeRequest.commits_loaded) { MergeRequest.loadCommits(); } + $(".merge-request-notes, .merge-request-diffs").hide(); + $(".merge-request-commits").show(); + }); + + $(".merge-tabs a.merge-diffs-tab").live("click", function() { + if(!MergeRequest.diffs_loaded) { + MergeRequest.loadDiff(); + } + $(".merge-request-notes, .merge-request-commits").hide(); + $(".merge-request-diffs").show(); }); }, @@ -23,14 +36,24 @@ var MergeRequest = { $(".dashboard-loader").show(); $.ajax({ type: "GET", - url: location.href + "/commits", + url: $(".merge-commits-tab").attr("data-url"), complete: function(){ MergeRequest.commits_loaded = true; + $(".merge-request-notes, .merge-request-diffs").hide(); $(".dashboard-loader").hide()}, dataType: "script"}); }, loadDiff: function() { + $(".dashboard-loader").show(); + $.ajax({ + type: "GET", + url: $(".merge-diffs-tab").attr("data-url"), + complete: function(){ + MergeRequest.diffs_loaded = true; + $(".merge-request-notes, .merge-request-commits").hide(); + $(".dashboard-loader").hide()}, + dataType: "script"}); } } diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index a99333a6..3e68d9db 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -552,7 +552,7 @@ h4.middle-panel { display:none; } -ul.merge-tabs { +.merge-tabs { margin: 0; border: 1px solid #ccc; padding: 10px; @@ -567,9 +567,32 @@ ul.merge-tabs { border: 1px solid #ddd; background:none; padding: 4px 10px; + width:160px; &.active { background: #eaeaea; } } } +.merge-tabs .reopen-request { + @include round-borders-all(4px); + padding:2px 4px; + border:1px solid #aaa; + text-shadow:none; + background: #D12F19; + color:white; +} + +.merge-tabs .close-request { + @include round-borders-all(4px); + padding:2px 4px; + border:1px solid #aaa; + text-shadow:none; + background: #44aa22; + color:white; +} + +.user-mention { + color: #2FA0BB; + font-weight: bold; +} diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index f3f082f7..f01a8a1d 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -30,14 +30,11 @@ class MergeRequestsController < ApplicationController def commits @commits = @project.repo.commits_between(@merge_request.target_branch, @merge_request.source_branch).map {|c| Commit.new(c)} - render :template => "merge_requests/_commits", :layout => false end def diffs @diffs = @merge_request.diffs @commit = @merge_request.last_commit - - render :template => "merge_requests/_diffs", :layout => false end def new diff --git a/app/views/merge_requests/_form.html.haml b/app/views/merge_requests/_form.html.haml index d0848e64..2659bb2f 100644 --- a/app/views/merge_requests/_form.html.haml +++ b/app/views/merge_requests/_form.html.haml @@ -28,7 +28,12 @@ %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) .buttons = f.submit 'Save', :class => "grey-button" - .right= link_to 'Back', project_merge_requests_path(@project), :class => "grey-button" +   + = link_to 'Back', project_merge_requests_path(@project), :class => "grey-button" + - unless @merge_request.new_record? + .right + = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "grey-button" + :javascript $(function(){ diff --git a/app/views/merge_requests/_merge_request.html.haml b/app/views/merge_requests/_merge_request.html.haml index 937af5b9..262aa661 100644 --- a/app/views/merge_requests/_merge_request.html.haml +++ b/app/views/merge_requests/_merge_request.html.haml @@ -1,7 +1,7 @@ %a.update-item{:href => project_merge_request_path(merge_request.project, merge_request)} = image_tag gravatar_icon(merge_request.author_email), :class => "left", :width => 40 %span.update-title - = merge_request.title + = truncate(merge_request.title, :length => 60) %span.update-author %strong= merge_request.author_name authored diff --git a/app/views/merge_requests/commits.js.haml b/app/views/merge_requests/commits.js.haml new file mode 100644 index 00000000..2055aa9b --- /dev/null +++ b/app/views/merge_requests/commits.js.haml @@ -0,0 +1,4 @@ +:plain + $(".merge-request-commits").html("#{escape_javascript(render(:partial => "commits"))}"); + + diff --git a/app/views/merge_requests/diffs.js.haml b/app/views/merge_requests/diffs.js.haml new file mode 100644 index 00000000..68f0c84c --- /dev/null +++ b/app/views/merge_requests/diffs.js.haml @@ -0,0 +1,4 @@ +:plain + $(".merge-request-diffs").html("#{escape_javascript(render(:partial => "diffs"))}"); + + diff --git a/app/views/merge_requests/show.html.haml b/app/views/merge_requests/show.html.haml index 5952b496..8dca6f8e 100644 --- a/app/views/merge_requests/show.html.haml +++ b/app/views/merge_requests/show.html.haml @@ -1,49 +1,47 @@ -.merge-request-show-holder.ui-box.width-100p - %h3 - = "Merge Request ##{@merge_request.id}:" -   - .tag.commit.inline= @merge_request.source_branch - → - .tag.commit.inline= @merge_request.target_branch - .right - - if @merge_request.closed - %span.tag.high Closed - - else - %span.tag.today Open - - .data - %p= @merge_request.title - - - if @merge_request.author == @merge_request.assignee - = image_tag gravatar_icon(@merge_request.assignee_email), :width => 20, :style => "padding:0 5px;" - = @merge_request.assignee_name - - else - = image_tag gravatar_icon(@merge_request.author_email), :width => 20, :style => "padding:0 5px;" - = @merge_request.author_name +%div + %span.entity-info + - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user + = link_to edit_project_merge_request_path(@project, @merge_request) do + .entity-button + Edit Merge Request + %i + = image_tag gravatar_icon(@merge_request.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" + %span.commit-title + %strong + = "Merge Request ##{@merge_request.id}:" +   + .tag.commit.inline= @merge_request.source_branch → - = image_tag gravatar_icon(@merge_request.assignee_email), :width => 20, :style => "padding:0 5px;" - = @merge_request.assignee_name - .right - %cite.cgray= @merge_request.created_at.stamp("21 Aug 2011, 11:15pm") - .clear + .tag.commit.inline= @merge_request.target_branch + %span.commit-author + %strong + = link_to project_team_member_path(@project, @project.users_projects.find(@merge_request.author.id)) do + = @merge_request.author_name + → + = link_to project_team_member_path(@project, @project.users_projects.find(@merge_request.assignee.id)) do + = @merge_request.assignee_name - .buttons - - if can? current_user, :write_project, @project - - if @merge_request.closed - = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "grey-button" - - else - = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "grey-button" - .right - = link_to 'Edit', edit_project_merge_request_path(@project, @merge_request), :class => "grey-button positive" +   +   + = @merge_request.created_at.stamp("Aug 21, 2011 9:23pm") + + %hr + %h3= @merge_request.title .clear %br %br -%ul.merge-tabs - = link_to "Notes", "#", :class => "merge-notes-tab" - = link_to "Commits","#", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab" - = link_to "Diff", diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab" +.merge-tabs + = link_to "Notes", "#notes", :class => "merge-notes-tab active" + = link_to "Commits","#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab" + = link_to "Diff", "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab" + - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user + .right + - if @merge_request.closed + = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "reopen-request" + - else + = 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" %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} .merge-request-notes @@ -53,7 +51,6 @@ .clear .merge-request-commits - .merge-request-diffs