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

This commit is contained in:
Dmitriy Zaporozhets 2012-12-14 21:39:55 +02:00
parent 678e5355a3
commit f2db188dbe
8 changed files with 73 additions and 33 deletions

View file

@ -31,7 +31,6 @@
*
*/
.event-item {
min-height: 40px;
border-bottom: 1px solid #eee;
.event-title {
color: #333;
@ -50,14 +49,18 @@
}
}
.avatar {
width: 32px;
position: relative;
top: -3px;
}
.event_icon {
position: relative;
float: right;
border: 1px solid #EEE;
padding: 5px;
@include border-radius(5px);
background: #F9F9F9;
margin-left: 10px;
top: -6px;
img {
width: 20px;
}
@ -71,7 +74,7 @@
}
}
padding: 15px 5px;
padding: 16px 5px;
&:last-child { border:none }
.wll:hover { background:none }

View file

@ -43,7 +43,7 @@ class MilestonesController < ProjectResourceController
def create
@milestone = @project.milestones.new(params[:milestone])
@milestone.author_id = current_user.id
@milestone.author_id_of_changes = current_user.id
if @milestone.save
redirect_to project_milestone_path(@project, @milestone)
@ -53,8 +53,7 @@ class MilestonesController < ProjectResourceController
end
def update
@milestone.author_id = current_user.id
@milestone.update_attributes(params[:milestone])
@milestone.update_attributes(params[:milestone].merge(author_id_of_changes: current_user.id))
respond_to do |format|
format.js

View file

@ -15,6 +15,7 @@
#
class Event < ActiveRecord::Base
include NoteEvent
include PushEvent
attr_accessible :project, :action, :data, :author_id, :project_id,
@ -58,12 +59,14 @@ class Event < ActiveRecord::Base
end
end
# Next events currently enabled for system
# - push
# - new issue
# - merge request
def allowed?
push? || issue? || merge_request? || membership_changed? || note? || milestone?
def proper?
if push?
true
elsif membership_changed?
true
else
(issue? || merge_request? || note? || milestone?) && target
end
end
def project_name

View file

@ -14,7 +14,7 @@
class Milestone < ActiveRecord::Base
attr_accessible :title, :description, :due_date, :closed
attr_accessor :author_id
attr_accessor :author_id, :author_id_of_changes
belongs_to :project
has_many :issues

View file

@ -2,17 +2,26 @@ class ActivityObserver < ActiveRecord::Observer
observe :issue, :merge_request, :note, :milestone
def after_create(record)
Event.create(
project: record.project,
target_id: record.id,
target_type: record.class.name,
action: Event.determine_action(record),
author_id: record.author_id
)
event_author_id = record.author_id || record.author_id_of_changes
# Skip status notes
if record.kind_of?(Note) && record.note.include?("_Status changed to ")
return true
end
if event_author_id
Event.create(
project: record.project,
target_id: record.id,
target_type: record.class.name,
action: Event.determine_action(record),
author_id: event_author_id
)
end
end
def after_save(record)
if record.changed.include?("closed")
if record.changed.include?("closed") && record.author_id_of_changes
Event.create(
project: record.project,
target_id: record.id,

21
app/roles/note_event.rb Normal file
View file

@ -0,0 +1,21 @@
module NoteEvent
def note_commit_id
target.noteable_id
end
def note_short_commit_id
note_commit_id[0..8]
end
def note_commit?
target.noteable_type == "Commit"
end
def note_target
target.noteable
end
def note_target_id
target.noteable_id
end
end

View file

@ -1,17 +1,15 @@
- if event.allowed?
- if event.proper?
%div.event-item
= event_image(event)
%span.cgray.right
#{time_ago_in_words(event.created_at)} ago.
= image_tag gravatar_icon(event.author_email), class: "avatar s24"
- if event.push?
= render "events/event/push", event: event
- if event.note?
.clearfix
- elsif event.note?
= render "events/event/note", event: event
- else
= render "events/event/common", event: event
.clearfix
%span.cgray.right
= time_ago_in_words(event.created_at)
ago.
.clearfix

View file

@ -1,9 +1,13 @@
.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
- if event.target and event.note_target
- if event.note_commit?
= link_to event.note_short_commit_id, project_commit_path(event.project, event.note_commit_id), class: "commit_short_id"
- else
= link_to [event.project, event.note_target] do
%strong= truncate event.note_target_id
- else
%strong (deleted)
at
@ -13,4 +17,7 @@
= event.project_name
.event-body
%p.hint= truncate event.target.note, length: 70
%span.hint
&nbsp;
%i.icon-comment
= truncate event.target.note, length: 70