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 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
... ...