diff --git a/app/controllers/milestones_controller.rb b/app/controllers/milestones_controller.rb index 276317d1c2d..fb3bdf4a3dd 100644 --- a/app/controllers/milestones_controller.rb +++ b/app/controllers/milestones_controller.rb @@ -43,6 +43,7 @@ class MilestonesController < ProjectResourceController def create @milestone = @project.milestones.new(params[:milestone]) + @milestone.author_id = current_user.id if @milestone.save redirect_to project_milestone_path(@project, @milestone) @@ -52,6 +53,7 @@ class MilestonesController < ProjectResourceController end def update + @milestone.author_id = current_user.id @milestone.update_attributes(params[:milestone]) respond_to do |format| diff --git a/app/models/event.rb b/app/models/event.rb index 2b92783ceac..ee1998e5d4f 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -63,7 +63,7 @@ class Event < ActiveRecord::Base # - new issue # - merge request def allowed? - push? || issue? || merge_request? || membership_changed? + push? || issue? || merge_request? || membership_changed? || note? || milestone? end def project_name @@ -94,6 +94,14 @@ class Event < ActiveRecord::Base action == self.class::Reopened end + def milestone? + target_type == "Milestone" + end + + def note? + target_type == "Note" + end + def issue? target_type == "Issue" end diff --git a/app/models/milestone.rb b/app/models/milestone.rb index e700cc2f2f7..9e3c2bb5df6 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -14,6 +14,7 @@ class Milestone < ActiveRecord::Base attr_accessible :title, :description, :due_date, :closed + attr_accessor :author_id belongs_to :project has_many :issues diff --git a/app/models/note.rb b/app/models/note.rb index da15a173566..219ed9b9332 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -121,4 +121,12 @@ class Note < ActiveRecord::Base def downvote? note.start_with?('-1') || note.start_with?(':-1:') end + + def noteable_type_name + if noteable_type.present? + noteable_type.downcase + else + "wall" + end + end end diff --git a/app/observers/activity_observer.rb b/app/observers/activity_observer.rb index 48351bac667..fa39bbfbd34 100644 --- a/app/observers/activity_observer.rb +++ b/app/observers/activity_observer.rb @@ -1,5 +1,5 @@ class ActivityObserver < ActiveRecord::Observer - observe :issue, :merge_request + observe :issue, :merge_request, :note, :milestone def after_create(record) Event.create( @@ -12,7 +12,7 @@ class ActivityObserver < ActiveRecord::Observer end def after_save(record) - if record.changed.include?("closed") + if record.changed.include?("closed") Event.create( project: record.project, target_id: record.id, diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml index 2446b764e4d..9625e1e20de 100644 --- a/app/views/events/_event.html.haml +++ b/app/views/events/_event.html.haml @@ -5,6 +5,8 @@ - if event.push? = render "events/event/push", event: event + - if event.note? + = render "events/event/note", event: event - else = render "events/event/common", event: event diff --git a/app/views/events/event/_note.html.haml b/app/views/events/event/_note.html.haml new file mode 100644 index 00000000000..5dddef1f1ac --- /dev/null +++ b/app/views/events/event/_note.html.haml @@ -0,0 +1,16 @@ +.event-title + %span.author_name= link_to_author event + %span.event_label commented on #{event.target.noteable_type_name} + - if event.target and event.target.noteable_id + = link_to [event.project, event.target.noteable] do + %strong= truncate event.target.noteable_id + - else + %strong (deleted) + at + - if event.project + = link_to_project event.project + - else + = event.project_name + +.event-body + %p.hint= truncate event.target.note, length: 70