OSDN Git Service

merge request show page refactored
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>
Tue, 13 Dec 2011 18:40:45 +0000 (20:40 +0200)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Tue, 13 Dec 2011 21:56:04 +0000 (23:56 +0200)
app/assets/images/.directory
app/assets/javascripts/merge_requests.js
app/assets/stylesheets/projects.css.scss
app/controllers/merge_requests_controller.rb
app/views/merge_requests/_form.html.haml
app/views/merge_requests/_merge_request.html.haml
app/views/merge_requests/commits.js.haml [new file with mode: 0644]
app/views/merge_requests/diffs.js.haml [new file with mode: 0644]
app/views/merge_requests/show.html.haml

index 3a65493..dbc0034 100644 (file)
@@ -1,4 +1,4 @@
 [Dolphin]
 ShowPreview=true
-Timestamp=2011,12,12,23,25,14
+Timestamp=2011,12,13,12,22,12
 Version=2
index d50cb5b..0d2f535 100644 (file)
@@ -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"});
     }
 }
index a99333a..3e68d9d 100644 (file)
@@ -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;
+}
index f3f082f..f01a8a1 100644 (file)
@@ -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
index d0848e6..2659bb2 100644 (file)
             %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"
+        &nbsp;
+        = 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(){
index 937af5b..262aa66 100644 (file)
@@ -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 (file)
index 0000000..2055aa9
--- /dev/null
@@ -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 (file)
index 0000000..68f0c84
--- /dev/null
@@ -0,0 +1,4 @@
+:plain
+  $(".merge-request-diffs").html("#{escape_javascript(render(:partial => "diffs"))}");
+
+
index 5952b49..8dca6f8 100644 (file)
@@ -1,49 +1,47 @@
-.merge-request-show-holder.ui-box.width-100p
-  %h3
-    = "Merge Request ##{@merge_request.id}:"
-    &nbsp;
-    .tag.commit.inline= @merge_request.source_branch
-    &rarr;
-    .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}:"
+      &nbsp;
+      .tag.commit.inline= @merge_request.source_branch
       &rarr;
-      = 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
+      &rarr;
+      = 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"
+    &nbsp;
+    &nbsp;
+    = @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