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 | 555 | .merge-tabs { |
556 | 556 | margin: 0; |
557 | 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 | 560 | background: #F7F7F7; |
562 | 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 | 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 | 587 | &.active { |
573 | 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 | 598 | .user-mention { |
596 | 599 | color: #2FA0BB; |
597 | 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 | 130 | border-radius: 5px; |
131 | 131 | font-size: 12px; |
132 | 132 | font-weight: bold; |
133 | - padding: 6px 20px; | |
133 | + padding: 5px 17px; | |
134 | 134 | border: 1px solid #999; |
135 | 135 | color: #666; |
136 | 136 | display: inline-block; | ... | ... |
app/models/project.rb
... | ... | @@ -90,6 +90,10 @@ class Project < ActiveRecord::Base |
90 | 90 | users_projects.find_by_user_id(user.id) if user |
91 | 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 | 97 | def fresh_issues(n) |
94 | 98 | issues.includes(:project, :author).order("created_at desc").first(n) |
95 | 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 | 48 | :javascript | ... | ... |
app/views/merge_requests/show.html.haml
... | ... | @@ -15,33 +15,42 @@ |
15 | 15 | .tag.commit.inline= @merge_request.target_branch |
16 | 16 | %span.commit-author |
17 | 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 | 26 | = @merge_request.created_at.stamp("Aug 21, 2011 9:23pm") |
27 | 27 | |
28 | 28 | %hr |
29 | - %h3= @merge_request.title | |
29 | + %br | |
30 | + %h3 | |
31 | + = simple_format @merge_request.title | |
30 | 32 | |
31 | 33 | .clear |
32 | 34 | %br |
33 | 35 | %br |
34 | 36 | |
35 | 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 | 48 | - if can?(current_user, :admin_project, @project) || @merge_request.author == current_user |
40 | 49 | .right |
41 | 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 | 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 | 54 | %img{:src => "/assets/ajax-loader-facebook.gif", :class => "dashboard-loader"} |
46 | 55 | |
47 | 56 | .merge-request-notes | ... | ... |
spec/requests/merge_requests_spec.rb
... | ... | @@ -42,8 +42,8 @@ describe "MergeRequests" do |
42 | 42 | |
43 | 43 | it { should have_content(@merge_request.title) } |
44 | 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 | 47 | end |
48 | 48 | end |
49 | 49 | end |
... | ... | @@ -62,7 +62,7 @@ describe "MergeRequests" do |
62 | 62 | it { current_path.should == project_merge_request_path(project, project.merge_requests.last) } |
63 | 63 | |
64 | 64 | it "should create merge request" do |
65 | - page.should have_content "Open" | |
65 | + page.should have_content "Close" | |
66 | 66 | page.should have_content @user.name |
67 | 67 | end |
68 | 68 | end | ... | ... |