Commit e8860594a97968e7bb9af4a6abf4fde111d63cc7
1 parent
18be3e4c
Exists in
master
and in
4 other branches
merge_requests restyle with forms
Showing
6 changed files
with
130 additions
and
73 deletions
Show diff stats
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 |