Commit 678e5355a3e43aa2a13d109fe5d75de231eef413

Authored by Dmitriy Zaporozhets
1 parent 190e483f

Create events on comments and milestone

app/controllers/milestones_controller.rb
... ... @@ -43,6 +43,7 @@ class MilestonesController < ProjectResourceController
43 43  
44 44 def create
45 45 @milestone = @project.milestones.new(params[:milestone])
  46 + @milestone.author_id = current_user.id
46 47  
47 48 if @milestone.save
48 49 redirect_to project_milestone_path(@project, @milestone)
... ... @@ -52,6 +53,7 @@ class MilestonesController < ProjectResourceController
52 53 end
53 54  
54 55 def update
  56 + @milestone.author_id = current_user.id
55 57 @milestone.update_attributes(params[:milestone])
56 58  
57 59 respond_to do |format|
... ...
app/models/event.rb
... ... @@ -63,7 +63,7 @@ class Event < ActiveRecord::Base
63 63 # - new issue
64 64 # - merge request
65 65 def allowed?
66   - push? || issue? || merge_request? || membership_changed?
  66 + push? || issue? || merge_request? || membership_changed? || note? || milestone?
67 67 end
68 68  
69 69 def project_name
... ... @@ -94,6 +94,14 @@ class Event < ActiveRecord::Base
94 94 action == self.class::Reopened
95 95 end
96 96  
  97 + def milestone?
  98 + target_type == "Milestone"
  99 + end
  100 +
  101 + def note?
  102 + target_type == "Note"
  103 + end
  104 +
97 105 def issue?
98 106 target_type == "Issue"
99 107 end
... ...
app/models/milestone.rb
... ... @@ -14,6 +14,7 @@
14 14  
15 15 class Milestone < ActiveRecord::Base
16 16 attr_accessible :title, :description, :due_date, :closed
  17 + attr_accessor :author_id
17 18  
18 19 belongs_to :project
19 20 has_many :issues
... ...
app/models/note.rb
... ... @@ -121,4 +121,12 @@ class Note &lt; ActiveRecord::Base
121 121 def downvote?
122 122 note.start_with?('-1') || note.start_with?(':-1:')
123 123 end
  124 +
  125 + def noteable_type_name
  126 + if noteable_type.present?
  127 + noteable_type.downcase
  128 + else
  129 + "wall"
  130 + end
  131 + end
124 132 end
... ...
app/observers/activity_observer.rb
1 1 class ActivityObserver < ActiveRecord::Observer
2   - observe :issue, :merge_request
  2 + observe :issue, :merge_request, :note, :milestone
3 3  
4 4 def after_create(record)
5 5 Event.create(
... ... @@ -12,7 +12,7 @@ class ActivityObserver &lt; ActiveRecord::Observer
12 12 end
13 13  
14 14 def after_save(record)
15   - if record.changed.include?("closed")
  15 + if record.changed.include?("closed")
16 16 Event.create(
17 17 project: record.project,
18 18 target_id: record.id,
... ...
app/views/events/_event.html.haml
... ... @@ -5,6 +5,8 @@
5 5  
6 6 - if event.push?
7 7 = render "events/event/push", event: event
  8 + - if event.note?
  9 + = render "events/event/note", event: event
8 10 - else
9 11 = render "events/event/common", event: event
10 12  
... ...
app/views/events/event/_note.html.haml 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +.event-title
  2 + %span.author_name= link_to_author event
  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
  7 + - else
  8 + %strong (deleted)
  9 + at
  10 + - if event.project
  11 + = link_to_project event.project
  12 + - else
  13 + = event.project_name
  14 +
  15 +.event-body
  16 + %p.hint= truncate event.target.note, length: 70
... ...