Commit e8860594a97968e7bb9af4a6abf4fde111d63cc7

Authored by Dmitriy Zaporozhets
1 parent 18be3e4c

merge_requests restyle with forms

app/assets/stylesheets/projects.css.scss
@@ -555,44 +555,78 @@ h4.middle-panel { @@ -555,44 +555,78 @@ h4.middle-panel {
555 .merge-tabs { 555 .merge-tabs {
556 margin: 0; 556 margin: 0;
557 border: 1px solid #ccc; 557 border: 1px solid #ccc;
558 - padding: 10px;  
559 - font-size: 11px;  
560 - font-weight: bold; text-transform: uppercase; 558 + padding: 5px;
  559 + font-size: 12px;
561 background: #F7F7F7; 560 background: #F7F7F7;
562 margin-bottom:20px; 561 margin-bottom:20px;
  562 + height:26px;
563 563
564 - a {  
565 - margin-right:5px;  
566 - @include round-borders-all(4px);  
567 - border: 1px solid #ddd; 564 + .tab {
  565 + font-weight: bold;
  566 + text-transform: uppercase;
  567 + border-right: 1px solid #ddd;
568 background:none; 568 background:none;
569 - padding: 4px 10px;  
570 - width:160px; 569 + padding: 10px;
  570 + width:60px;
  571 + float:left;
  572 + position:relative;
  573 + top:-5px;
  574 + left:-5px;
  575 + height:16px;
  576 + padding-left:34px;
  577 +
  578 + span {
  579 + width: 20px;
  580 + height: 20px;
  581 + display: inline-block;
  582 + position: absolute;
  583 + left: 8px;
  584 + top: 8px;
  585 + }
571 586
572 &.active { 587 &.active {
573 background: #eaeaea; 588 background: #eaeaea;
574 } 589 }
575 } 590 }
576 } 591 }
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 592
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 -} 593 +.merge-notes-tab span { background: url("images.png") no-repeat -161px -1px; }
  594 +.merge-commits-tab span { background: url("images.png") no-repeat -86px 1px; }
  595 +.merge-diffs-tab span { background: url("images.png") no-repeat -118px 1px; }
  596 +.merge-tabs .dashboard-loader { padding:8px; }
594 597
595 .user-mention { 598 .user-mention {
596 color: #2FA0BB; 599 color: #2FA0BB;
597 font-weight: bold; 600 font-weight: bold;
598 } 601 }
  602 +
  603 +.author {
  604 + color: #999;
  605 +}
  606 +
  607 +
  608 +.red-button{
  609 + border-radius: 5px;
  610 + font-size: 12px;
  611 + font-weight: bold;
  612 + padding: 5px 17px;
  613 + border: 1px solid #999;
  614 + color: #666;
  615 + display: inline-block;
  616 + box-shadow: 0 1px 2px rgba(0,0,0,.3);
  617 + background: #D12F19;
  618 + color: white;
  619 +}
  620 +
  621 +.positive-button{
  622 + border-radius: 5px;
  623 + font-size: 12px;
  624 + font-weight: bold;
  625 + padding: 5px 17px;
  626 + border: 1px solid #999;
  627 + color: #666;
  628 + display: inline-block;
  629 + box-shadow: 0 1px 2px rgba(0,0,0,.3);
  630 + background: #4A2;
  631 + color: white;
  632 +}
app/assets/stylesheets/style.scss
@@ -130,7 +130,7 @@ table tr:hover, .listed_items tr.odd:hover{background-color:#FFFFCF} @@ -130,7 +130,7 @@ table tr:hover, .listed_items tr.odd:hover{background-color:#FFFFCF}
130 border-radius: 5px; 130 border-radius: 5px;
131 font-size: 12px; 131 font-size: 12px;
132 font-weight: bold; 132 font-weight: bold;
133 - padding: 6px 20px; 133 + padding: 5px 17px;
134 border: 1px solid #999; 134 border: 1px solid #999;
135 color: #666; 135 color: #666;
136 display: inline-block; 136 display: inline-block;
app/models/project.rb
@@ -90,6 +90,10 @@ class Project < ActiveRecord::Base @@ -90,6 +90,10 @@ class Project < ActiveRecord::Base
90 users_projects.find_by_user_id(user.id) if user 90 users_projects.find_by_user_id(user.id) if user
91 end 91 end
92 92
  93 + def team_member_by_id(user_id)
  94 + users_projects.find_by_user_id(user_id)
  95 + end
  96 +
93 def fresh_issues(n) 97 def fresh_issues(n)
94 issues.includes(:project, :author).order("created_at desc").first(n) 98 issues.includes(:project, :author).order("created_at desc").first(n)
95 end 99 end
app/views/merge_requests/_form.html.haml
1 -%div.merge-request-form-holder  
2 - .ui-box.width-100p  
3 - %h3  
4 - = @merge_request.new_record? ? "New Merge Request" : "Edit Merge Request ##{@merge_request.id}"  
5 - = form_for [@project, @merge_request] do |f|  
6 - .data  
7 - %table.no-borders  
8 - -if @merge_request.errors.any?  
9 - %tr  
10 - %td Errors  
11 - %td  
12 - #error_explanation  
13 - - @merge_request.errors.full_messages.each do |msg|  
14 - %span= msg  
15 - %br 1 += form_for [@project, @merge_request] do |f|
  2 + %div
  3 + %span.entity-info
  4 + - if @merge_request.new_record?
  5 + = link_to project_merge_requests_path(@project) do
  6 + .entity-button
  7 + Back
  8 + %i
  9 + - else
  10 + = link_to project_merge_request_path(@project, @merge_request) do
  11 + .entity-button
  12 + Back
  13 + %i
  14 +
  15 + %h2= @merge_request.new_record? ? "New Merge Request" : "Edit Merge Request ##{@merge_request.id}"
  16 +
  17 + %hr
  18 + %table.no-borders
  19 + -if @merge_request.errors.any?
  20 + %tr
  21 + %td{:colspan => 2}
  22 + #error_explanation
  23 + - @merge_request.errors.full_messages.each do |msg|
  24 + %span= msg
  25 + %br
  26 + %tr
  27 + %td= f.label :source_branch, "From"
  28 + %td= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
  29 + %tr
  30 + %td= f.label :target_branch, "To"
  31 + %td= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px")
  32 + %tr
  33 + %td= f.label :assignee_id, "Assign to"
  34 + %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px")
  35 + = f.text_area :title, :style => "width:718px; height:100px", :maxlength => 255
  36 + %br
  37 + %br
  38 + .merge-tabs
  39 + = f.submit 'Save', :class => "grey-button"
  40 +  
  41 + - unless @merge_request.new_record?
  42 + .right
  43 + = link_to 'Remove', [@project, @merge_request], :confirm => 'Are you sure?', :method => :delete, :class => "red-button"
  44 +
16 45
17 - %tr  
18 - %td= f.label :title  
19 - %td= f.text_field :title  
20 - %tr  
21 - %td= f.label :source_branch, "From"  
22 - %td= f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" })  
23 - %tr  
24 - %td= f.label :target_branch, "To"  
25 - %td= f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" })  
26 - %tr  
27 - %td= f.label :assignee_id, "Assign to"  
28 - %td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })  
29 - .buttons  
30 - = f.submit 'Save', :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 46
37 47
38 :javascript 48 :javascript
app/views/merge_requests/show.html.haml
@@ -15,33 +15,42 @@ @@ -15,33 +15,42 @@
15 .tag.commit.inline= @merge_request.target_branch 15 .tag.commit.inline= @merge_request.target_branch
16 %span.commit-author 16 %span.commit-author
17 %strong 17 %strong
18 - = link_to project_team_member_path(@project, @project.users_projects.find(@merge_request.author.id)) do  
19 - = @merge_request.author_name 18 + = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.author.id)) do
  19 + %span.author= @merge_request.author_name
20 → 20 →
21 - = link_to project_team_member_path(@project, @project.users_projects.find(@merge_request.assignee.id)) do  
22 - = @merge_request.assignee_name 21 + = link_to project_team_member_path(@project, @project.team_member_by_id(@merge_request.assignee.id)) do
  22 + %span.author= @merge_request.assignee_name
23 23
24   24  
25   25  
26 = @merge_request.created_at.stamp("Aug 21, 2011 9:23pm") 26 = @merge_request.created_at.stamp("Aug 21, 2011 9:23pm")
27 27
28 %hr 28 %hr
29 - %h3= @merge_request.title 29 + %br
  30 + %h3
  31 + = simple_format @merge_request.title
30 32
31 .clear 33 .clear
32 %br 34 %br
33 %br 35 %br
34 36
35 .merge-tabs 37 .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" 38 + = link_to "#notes", :class => "merge-notes-tab active tab" do
  39 + %span
  40 + Notes
  41 + = link_to "#commits", "data-url" => commits_project_merge_request_path(@project, @merge_request), :class => "merge-commits-tab tab" do
  42 + %span
  43 + Commits
  44 + = link_to "#diffs", "data-url" => diffs_project_merge_request_path(@project, @merge_request), :class => "merge-diffs-tab tab" do
  45 + %span
  46 + Diff
  47 +
39 - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user 48 - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user
40 .right 49 .right
41 - if @merge_request.closed 50 - 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" 51 + = link_to 'Reopen', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => false }, :status_only => true), :method => :put, :class => "red-button"
43 - else 52 - 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" 53 + = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "positive-button", :title => "Close merge request"
45 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} 54 %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"}
46 55
47 .merge-request-notes 56 .merge-request-notes
spec/requests/merge_requests_spec.rb
@@ -42,8 +42,8 @@ describe "MergeRequests" do @@ -42,8 +42,8 @@ describe "MergeRequests" do
42 42
43 it { should have_content(@merge_request.title) } 43 it { should have_content(@merge_request.title) }
44 it "Show page should inform user that merge request closed" do 44 it "Show page should inform user that merge request closed" do
45 - within ".merge-request-show-holder h3" do  
46 - page.should have_content "Closed" 45 + within ".merge-tabs" do
  46 + page.should have_content "Reopen"
47 end 47 end
48 end 48 end
49 end 49 end
@@ -62,7 +62,7 @@ describe "MergeRequests" do @@ -62,7 +62,7 @@ describe "MergeRequests" do
62 it { current_path.should == project_merge_request_path(project, project.merge_requests.last) } 62 it { current_path.should == project_merge_request_path(project, project.merge_requests.last) }
63 63
64 it "should create merge request" do 64 it "should create merge request" do
65 - page.should have_content "Open" 65 + page.should have_content "Close"
66 page.should have_content @user.name 66 page.should have_content @user.name
67 end 67 end
68 end 68 end