Commit f2db188dbe26b93e76eb3536f1a972a4a9e01f66

Authored by Dmitriy Zaporozhets
1 parent 678e5355

Processing with note events. reformated dashboard for more events to handle

app/assets/stylesheets/sections/events.scss
@@ -31,7 +31,6 @@ @@ -31,7 +31,6 @@
31 * 31 *
32 */ 32 */
33 .event-item { 33 .event-item {
34 - min-height: 40px;  
35 border-bottom: 1px solid #eee; 34 border-bottom: 1px solid #eee;
36 .event-title { 35 .event-title {
37 color: #333; 36 color: #333;
@@ -50,14 +49,18 @@ @@ -50,14 +49,18 @@
50 } 49 }
51 } 50 }
52 .avatar { 51 .avatar {
53 - width: 32px; 52 + position: relative;
  53 + top: -3px;
54 } 54 }
55 .event_icon { 55 .event_icon {
  56 + position: relative;
56 float: right; 57 float: right;
57 border: 1px solid #EEE; 58 border: 1px solid #EEE;
58 padding: 5px; 59 padding: 5px;
59 @include border-radius(5px); 60 @include border-radius(5px);
60 background: #F9F9F9; 61 background: #F9F9F9;
  62 + margin-left: 10px;
  63 + top: -6px;
61 img { 64 img {
62 width: 20px; 65 width: 20px;
63 } 66 }
@@ -71,7 +74,7 @@ @@ -71,7 +74,7 @@
71 } 74 }
72 } 75 }
73 76
74 - padding: 15px 5px; 77 + padding: 16px 5px;
75 &:last-child { border:none } 78 &:last-child { border:none }
76 .wll:hover { background:none } 79 .wll:hover { background:none }
77 80
app/controllers/milestones_controller.rb
@@ -43,7 +43,7 @@ class MilestonesController < ProjectResourceController @@ -43,7 +43,7 @@ class MilestonesController < ProjectResourceController
43 43
44 def create 44 def create
45 @milestone = @project.milestones.new(params[:milestone]) 45 @milestone = @project.milestones.new(params[:milestone])
46 - @milestone.author_id = current_user.id 46 + @milestone.author_id_of_changes = current_user.id
47 47
48 if @milestone.save 48 if @milestone.save
49 redirect_to project_milestone_path(@project, @milestone) 49 redirect_to project_milestone_path(@project, @milestone)
@@ -53,8 +53,7 @@ class MilestonesController < ProjectResourceController @@ -53,8 +53,7 @@ class MilestonesController < ProjectResourceController
53 end 53 end
54 54
55 def update 55 def update
56 - @milestone.author_id = current_user.id  
57 - @milestone.update_attributes(params[:milestone]) 56 + @milestone.update_attributes(params[:milestone].merge(author_id_of_changes: current_user.id))
58 57
59 respond_to do |format| 58 respond_to do |format|
60 format.js 59 format.js
app/models/event.rb
@@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
15 # 15 #
16 16
17 class Event < ActiveRecord::Base 17 class Event < ActiveRecord::Base
  18 + include NoteEvent
18 include PushEvent 19 include PushEvent
19 20
20 attr_accessible :project, :action, :data, :author_id, :project_id, 21 attr_accessible :project, :action, :data, :author_id, :project_id,
@@ -58,12 +59,14 @@ class Event &lt; ActiveRecord::Base @@ -58,12 +59,14 @@ class Event &lt; ActiveRecord::Base
58 end 59 end
59 end 60 end
60 61
61 - # Next events currently enabled for system  
62 - # - push  
63 - # - new issue  
64 - # - merge request  
65 - def allowed?  
66 - push? || issue? || merge_request? || membership_changed? || note? || milestone? 62 + def proper?
  63 + if push?
  64 + true
  65 + elsif membership_changed?
  66 + true
  67 + else
  68 + (issue? || merge_request? || note? || milestone?) && target
  69 + end
67 end 70 end
68 71
69 def project_name 72 def project_name
app/models/milestone.rb
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 14
15 class Milestone < ActiveRecord::Base 15 class Milestone < ActiveRecord::Base
16 attr_accessible :title, :description, :due_date, :closed 16 attr_accessible :title, :description, :due_date, :closed
17 - attr_accessor :author_id 17 + attr_accessor :author_id, :author_id_of_changes
18 18
19 belongs_to :project 19 belongs_to :project
20 has_many :issues 20 has_many :issues
app/observers/activity_observer.rb
@@ -2,17 +2,26 @@ class ActivityObserver &lt; ActiveRecord::Observer @@ -2,17 +2,26 @@ class ActivityObserver &lt; ActiveRecord::Observer
2 observe :issue, :merge_request, :note, :milestone 2 observe :issue, :merge_request, :note, :milestone
3 3
4 def after_create(record) 4 def after_create(record)
5 - Event.create(  
6 - project: record.project,  
7 - target_id: record.id,  
8 - target_type: record.class.name,  
9 - action: Event.determine_action(record),  
10 - author_id: record.author_id  
11 - ) 5 + event_author_id = record.author_id || record.author_id_of_changes
  6 +
  7 + # Skip status notes
  8 + if record.kind_of?(Note) && record.note.include?("_Status changed to ")
  9 + return true
  10 + end
  11 +
  12 + if event_author_id
  13 + Event.create(
  14 + project: record.project,
  15 + target_id: record.id,
  16 + target_type: record.class.name,
  17 + action: Event.determine_action(record),
  18 + author_id: event_author_id
  19 + )
  20 + end
12 end 21 end
13 22
14 def after_save(record) 23 def after_save(record)
15 - if record.changed.include?("closed") 24 + if record.changed.include?("closed") && record.author_id_of_changes
16 Event.create( 25 Event.create(
17 project: record.project, 26 project: record.project,
18 target_id: record.id, 27 target_id: record.id,
app/roles/note_event.rb 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +module NoteEvent
  2 + def note_commit_id
  3 + target.noteable_id
  4 + end
  5 +
  6 + def note_short_commit_id
  7 + note_commit_id[0..8]
  8 + end
  9 +
  10 + def note_commit?
  11 + target.noteable_type == "Commit"
  12 + end
  13 +
  14 + def note_target
  15 + target.noteable
  16 + end
  17 +
  18 + def note_target_id
  19 + target.noteable_id
  20 + end
  21 +end
app/views/events/_event.html.haml
1 -- if event.allowed? 1 +- if event.proper?
2 %div.event-item 2 %div.event-item
3 - = event_image(event) 3 + %span.cgray.right
  4 + #{time_ago_in_words(event.created_at)} ago.
  5 +
4 = image_tag gravatar_icon(event.author_email), class: "avatar s24" 6 = image_tag gravatar_icon(event.author_email), class: "avatar s24"
5 7
6 - if event.push? 8 - if event.push?
7 = render "events/event/push", event: event 9 = render "events/event/push", event: event
8 - - if event.note? 10 + .clearfix
  11 + - elsif event.note?
9 = render "events/event/note", event: event 12 = render "events/event/note", event: event
10 - else 13 - else
11 = render "events/event/common", event: event 14 = render "events/event/common", event: event
12 15
13 - .clearfix  
14 - %span.cgray.right  
15 - = time_ago_in_words(event.created_at)  
16 - ago.  
17 - .clearfix  
app/views/events/event/_note.html.haml
1 .event-title 1 .event-title
2 %span.author_name= link_to_author event 2 %span.author_name= link_to_author event
3 %span.event_label commented on #{event.target.noteable_type_name} 3 %span.event_label commented on #{event.target.noteable_type_name}
4 - - if event.target and event.target.noteable_id  
5 - = link_to [event.project, event.target.noteable] do  
6 - %strong= truncate event.target.noteable_id 4 + - if event.target and event.note_target
  5 + - if event.note_commit?
  6 + = link_to event.note_short_commit_id, project_commit_path(event.project, event.note_commit_id), class: "commit_short_id"
  7 + - else
  8 + = link_to [event.project, event.note_target] do
  9 + %strong= truncate event.note_target_id
  10 +
7 - else 11 - else
8 %strong (deleted) 12 %strong (deleted)
9 at 13 at
@@ -13,4 +17,7 @@ @@ -13,4 +17,7 @@
13 = event.project_name 17 = event.project_name
14 18
15 .event-body 19 .event-body
16 - %p.hint= truncate event.target.note, length: 70 20 + %span.hint
  21 + &nbsp;
  22 + %i.icon-comment
  23 + = truncate event.target.note, length: 70