Commit 00dc34e1929e914d1f4f194888d9d94e513fdaa5

Authored by Dmitriy Zaporozhets
1 parent 3ac9c3ad

Events improved & refactored. Dashboard pollished

app/assets/stylesheets/common.scss
@@ -67,6 +67,12 @@ a:focus { @@ -67,6 +67,12 @@ a:focus {
67 } 67 }
68 } 68 }
69 69
  70 +.event_label {
  71 + background: #FCEEC1;
  72 + padding:0 2px;
  73 + font-family: monospace;
  74 +}
  75 +
70 .tabs > li > a, .pills > li > a { 76 .tabs > li > a, .pills > li > a {
71 color:$style_color; 77 color:$style_color;
72 } 78 }
@@ -126,6 +132,9 @@ a:focus { @@ -126,6 +132,9 @@ a:focus {
126 .ipadded { 132 .ipadded {
127 padding:20px !important; 133 padding:20px !important;
128 } 134 }
  135 +.lborder {
  136 + border-left:1px solid #eee;
  137 +}
129 .no-borders { 138 .no-borders {
130 border:none; 139 border:none;
131 } 140 }
@@ -872,10 +881,9 @@ p.time { @@ -872,10 +881,9 @@ p.time {
872 border:none; 881 border:none;
873 padding:0px 5px; 882 padding:0px 5px;
874 883
875 - &:hover {  
876 - background:$hover;  
877 - //border-left:4px solid $styled_border_color;  
878 - h4 { 884 + .project_link {
  885 + color:#888;
  886 + &:hover {
879 color:#111; 887 color:#111;
880 .ico.project { 888 .ico.project {
881 background-position:-209px -21px; 889 background-position:-209px -21px;
@@ -1077,7 +1085,6 @@ p.time { @@ -1077,7 +1085,6 @@ p.time {
1077 } 1085 }
1078 1086
1079 .arrow{ 1087 .arrow{
1080 - float: right;  
1081 background: #E3E5EA; 1088 background: #E3E5EA;
1082 padding: 5px; 1089 padding: 5px;
1083 margin-top:5px; 1090 margin-top:5px;
app/models/event.rb
@@ -9,6 +9,8 @@ class Event < ActiveRecord::Base @@ -9,6 +9,8 @@ class Event < ActiveRecord::Base
9 Commented = 6 9 Commented = 6
10 Merged = 7 10 Merged = 7
11 11
  12 + does "event/push"
  13 +
12 belongs_to :project 14 belongs_to :project
13 belongs_to :target, :polymorphic => true 15 belongs_to :target, :polymorphic => true
14 16
@@ -30,14 +32,17 @@ class Event < ActiveRecord::Base @@ -30,14 +32,17 @@ class Event < ActiveRecord::Base
30 # - new issue 32 # - new issue
31 # - merge request 33 # - merge request
32 def allowed? 34 def allowed?
33 - push? || new_issue? || new_merge_request? ||  
34 - changed_merge_request? || changed_issue? 35 + push? || issue? || merge_request?
35 end 36 end
36 37
37 def push? 38 def push?
38 action == self.class::Pushed 39 action == self.class::Pushed
39 end 40 end
40 41
  42 + def merged?
  43 + action == self.class::Merged
  44 + end
  45 +
41 def closed? 46 def closed?
42 action == self.class::Closed 47 action == self.class::Closed
43 end 48 end
@@ -46,28 +51,12 @@ class Event < ActiveRecord::Base @@ -46,28 +51,12 @@ class Event < ActiveRecord::Base
46 action == self.class::Reopened 51 action == self.class::Reopened
47 end 52 end
48 53
49 - def new_tag?  
50 - data[:ref]["refs/tags"]  
51 - end  
52 -  
53 - def new_branch?  
54 - data[:before] =~ /^00000/  
55 - end  
56 -  
57 - def commit_from  
58 - data[:before]  
59 - end  
60 -  
61 - def commit_to  
62 - data[:after] 54 + def issue?
  55 + target_type == "Issue"
63 end 56 end
64 57
65 - def branch_name  
66 - @branch_name ||= data[:ref].gsub("refs/heads/", "")  
67 - end  
68 -  
69 - def tag_name  
70 - @tag_name ||= data[:ref].gsub("refs/tags/", "") 58 + def merge_request?
  59 + target_type == "MergeRequest"
71 end 60 end
72 61
73 def new_issue? 62 def new_issue?
@@ -101,10 +90,14 @@ class Event < ActiveRecord::Base @@ -101,10 +90,14 @@ class Event < ActiveRecord::Base
101 def author 90 def author
102 @author ||= User.find(author_id) 91 @author ||= User.find(author_id)
103 end 92 end
104 -  
105 - def commits  
106 - @commits ||= data[:commits].map do |commit|  
107 - project.commit(commit[:id]) 93 +
  94 + def action_name
  95 + if closed?
  96 + "closed"
  97 + elsif merged?
  98 + "merged"
  99 + else
  100 + "opened"
108 end 101 end
109 end 102 end
110 103
app/models/event/push_trait.rb 0 → 100644
@@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
  1 +module Event::PushTrait
  2 + as_trait do
  3 + def tag?
  4 + data[:ref]["refs/tags"]
  5 + end
  6 +
  7 + def new_branch?
  8 + data[:before] =~ /^00000/
  9 + end
  10 +
  11 + def new_ref?
  12 + data[:before] =~ /^00000/
  13 + end
  14 +
  15 + def rm_ref?
  16 + data[:after] =~ /^00000/
  17 + end
  18 +
  19 + def md_ref?
  20 + !(rm_ref? || new_ref?)
  21 + end
  22 +
  23 + def commit_from
  24 + data[:before]
  25 + end
  26 +
  27 + def commit_to
  28 + data[:after]
  29 + end
  30 +
  31 + def ref_name
  32 + if tag?
  33 + tag_name
  34 + else
  35 + branch_name
  36 + end
  37 + end
  38 +
  39 + def branch_name
  40 + @branch_name ||= data[:ref].gsub("refs/heads/", "")
  41 + end
  42 +
  43 + def tag_name
  44 + @tag_name ||= data[:ref].gsub("refs/tags/", "")
  45 + end
  46 +
  47 + def commits
  48 + @commits ||= data[:commits].map do |commit|
  49 + project.commit(commit[:id])
  50 + end
  51 + end
  52 +
  53 + def ref_type
  54 + tag? ? "tag" : "branch"
  55 + end
  56 +
  57 + def push_action_name
  58 + if new_ref?
  59 + "pushed new"
  60 + elsif rm_ref?
  61 + "removed #{ref_type}"
  62 + else
  63 + "pushed to"
  64 + end
  65 + end
  66 + end
  67 +end
app/views/dashboard/_projects_feed.html.haml
1 - projects.first(5).each do |project| 1 - projects.first(5).each do |project|
2 %div.dash_project_item 2 %div.dash_project_item
3 - = link_to project do  
4 - %h4 3 + %h4
  4 + = link_to project, :class => "project_link" do
5 %span.ico.project 5 %span.ico.project
6 - = truncate project.name, :length => 30 6 + = truncate project.name, :length => 24
  7 + %small
  8 + last activity at
  9 + = project.last_activity_date.stamp("Aug 25, 2011")
  10 +
  11 + .right
7 %small 12 %small
8 - last activity at  
9 - = project.last_activity_date.stamp("Aug 25, 2011")  
10 - %span.right.arrow  
11 - → 13 + %strong= link_to "Browse Code »", tree_project_ref_path(project, project.root_ref), :class => "vlink"
app/views/dashboard/index.html.haml
@@ -21,8 +21,8 @@ @@ -21,8 +21,8 @@
21 .dashboard_block 21 .dashboard_block
22 .row 22 .row
23 .span4.right 23 .span4.right
24 - %div.borders.ipadded  
25 - %h1 24 + %div.lborder.ipadded
  25 + %h3
26 = pluralize current_user.projects.count, "project", "projects" 26 = pluralize current_user.projects.count, "project", "projects"
27 - if current_user.can_create_project? 27 - if current_user.can_create_project?
28 %hr 28 %hr
app/views/events/_event.html.haml
1 - if event.allowed? 1 - if event.allowed?
2 .event_feed 2 .event_feed
3 - - if event.new_issue?  
4 - = render "events/event_new_issue", :event => event  
5 - - elsif event.new_merge_request?  
6 - = render "events/event_new_merge_request", :event => event  
7 - - elsif event.changed_merge_request?  
8 - = render "events/event_changed_merge_request", :event => event  
9 - - elsif event.changed_issue?  
10 - = render "events/event_changed_issue", :event => event 3 + - if event.issue?
  4 + = render "events/event_issue", :event => event
  5 + - elsif event.merge_request?
  6 + = render "events/event_merge_request", :event => event
11 - elsif event.push? 7 - elsif event.push?
12 = render "events/event_push", :event => event 8 = render "events/event_push", :event => event
app/views/events/_event_changed_issue.html.haml
@@ -1,15 +0,0 @@ @@ -1,15 +0,0 @@
1 -= image_tag gravatar_icon(event.author_email), :class => "avatar"  
2 -%strong #{event.author_name}  
3 -%span.label.important  
4 - - if event.closed?  
5 - closed  
6 - - else  
7 - reopened  
8 - issue  
9 -= link_to project_issue_path(event.project, event.issue) do  
10 - %strong= truncate event.issue_title  
11 -at  
12 -%strong= link_to event.project.name, event.project  
13 -%span.cgray  
14 - = time_ago_in_words(event.created_at)  
15 - ago.  
app/views/events/_event_changed_merge_request.html.haml
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -= image_tag gravatar_icon(event.author_email), :class => "avatar"  
2 -%strong #{event.author_name}  
3 -%span.label.important  
4 - - if event.closed?  
5 - closed  
6 - - else  
7 - reopened  
8 - merge request  
9 -= link_to project_merge_request_path(event.project, event.merge_request) do  
10 - %strong= truncate event.merge_request_title  
11 -at  
12 -%strong= link_to event.project.name, event.project  
13 -%span.cgray  
14 - = time_ago_in_words(event.created_at)  
15 - ago.  
16 -%br  
17 -%span.label= event.merge_request.source_branch  
18 -→  
19 -%span.label= event.merge_request.target_branch  
20 -  
app/views/events/_event_issue.html.haml 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 += image_tag gravatar_icon(event.author_email), :class => "avatar"
  2 +%strong #{event.author_name}
  3 +%span.event_label= event.action_name
  4 + issue
  5 += link_to project_issue_path(event.project, event.issue) do
  6 + %strong= truncate event.issue_title
  7 +at
  8 +%strong= link_to event.project.name, event.project
  9 +%span.cgray
  10 + = time_ago_in_words(event.created_at)
  11 + ago.
app/views/events/_event_merge_request.html.haml 0 → 100644
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
  1 += image_tag gravatar_icon(event.author_email), :class => "avatar"
  2 +%strong #{event.author_name}
  3 +%span.event_label= event.action_name
  4 + merge request
  5 += link_to project_merge_request_path(event.project, event.merge_request) do
  6 + %strong= truncate event.merge_request_title
  7 +at
  8 +%strong= link_to event.project.name, event.project
  9 +%span.cgray
  10 + = time_ago_in_words(event.created_at)
  11 + ago.
  12 +%br
  13 +%span= event.merge_request.source_branch
  14 +→
  15 +%span= event.merge_request.target_branch
  16 +
app/views/events/_event_new_issue.html.haml
@@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
1 -= image_tag gravatar_icon(event.author_email), :class => "avatar"  
2 -%strong #{event.author_name}  
3 -%span.label.success created  
4 - new issue  
5 -= link_to project_issue_path(event.project, event.issue) do  
6 - %strong= truncate event.issue_title  
7 -at  
8 -%strong= link_to event.project.name, event.project  
9 -%span.cgray  
10 - = time_ago_in_words(event.created_at)  
11 - ago.  
app/views/events/_event_new_merge_request.html.haml
@@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
1 -= image_tag gravatar_icon(event.author_email), :class => "avatar"  
2 -%strong #{event.author_name}  
3 -%span.label.success requested  
4 - merge  
5 -= link_to project_merge_request_path(event.project, event.merge_request) do  
6 - %strong= truncate event.merge_request_title  
7 -at  
8 -%strong= link_to event.project.name, event.project  
9 -%span.cgray  
10 - = time_ago_in_words(event.created_at)  
11 - ago.  
12 -%br  
13 -%span.label= event.merge_request.source_branch  
14 -→  
15 -%span.label= event.merge_request.target_branch  
16 -  
app/views/events/_event_push.html.haml
1 -- if event.new_branch? || event.new_tag? 1 +%div
2 = image_tag gravatar_icon(event.author_email), :class => "avatar" 2 = image_tag gravatar_icon(event.author_email), :class => "avatar"
3 %strong #{event.author_name} 3 %strong #{event.author_name}
4 - %span.label.pushed pushed  
5 -  new  
6 - - if event.new_tag?  
7 - tag  
8 - = link_to project_commits_path(event.project, :ref => event.tag_name) do  
9 - %strong= event.tag_name  
10 - - else  
11 - branch  
12 - = link_to project_commits_path(event.project, :ref => event.branch_name) do  
13 - %strong= event.branch_name 4 + %span.event_label= event.push_action_name
  5 + = link_to project_commits_path(event.project, :ref => event.ref_name) do
  6 + %strong= event.ref_name
14 at 7 at
15 %strong= link_to event.project.name, event.project 8 %strong= link_to event.project.name, event.project
16 %span.cgray 9 %span.cgray
17 = time_ago_in_words(event.created_at) 10 = time_ago_in_words(event.created_at)
18 ago. 11 ago.
19 -- else  
20 - = image_tag gravatar_icon(event.author_email), :class => "avatar"  
21 - %strong #{event.author_name}  
22 - %span.label.pushed pushed  
23 -  to  
24 - = link_to project_commits_path(event.project, :ref => event.branch_name) do  
25 - %strong= event.branch_name  
26 - at  
27 - %strong= link_to event.project.name, event.project  
28 - %span.cgray  
29 - = time_ago_in_words(event.created_at)  
30 - ago.  
31 - - if event.commits.count > 1  
32 - = link_to compare_project_commits_path(event.project, :from => event.commits.first.prev_commit_id, :to => event.commits.last.id) do  
33 - %strong #{event.commits.first.commit.id[0..7]}...#{event.commits.last.id[0..7]}  
34 - - project = event.project  
35 - %ul.unstyled.event_commits  
36 - - if event.commits.size > 3  
37 - - event.commits[0...2].each do |commit|  
38 - = render "events/commit", :commit => commit, :project => project  
39 - %li  
40 - %br  
41 - \... and #{event.commits.size - 2} more commits  
42 - - else  
43 - - event.commits.each do |commit|  
44 - = render "events/commit", :commit => commit, :project => project 12 +
  13 + - if event.md_ref?
  14 + - if event.commits.count > 1
  15 + = link_to compare_project_commits_path(event.project, :from => event.commits.first.prev_commit_id, :to => event.commits.last.id) do
  16 + %strong #{event.commits.first.commit.id[0..7]}...#{event.commits.last.id[0..7]}
  17 + - project = event.project
  18 + %ul.unstyled.event_commits
  19 + - if event.commits.size > 3
  20 + - event.commits[0...2].each do |commit|
  21 + = render "events/commit", :commit => commit, :project => project
  22 + %li
  23 + %br
  24 + \... and #{event.commits.size - 2} more commits
  25 + - else
  26 + - event.commits.each do |commit|
  27 + = render "events/commit", :commit => commit, :project => project
45 28