Refactor event title generation for more consistent messages.

Example: "User joined project Namespace / Project" rather than "User joined project at Namespace / Project"
This commit is contained in:
Douwe Maan 2015-02-13 12:00:12 +01:00
parent 07d05d2df7
commit 522efa43fe
5 changed files with 85 additions and 58 deletions

View file

@ -10,11 +10,15 @@ module EventsHelper
end
def event_action_name(event)
target = if event.target_type
event.target_type.titleize.downcase
else
'project'
end
target = if event.target_type
if event.note?
event.note_target_type
else
event.target_type.titleize.downcase
end
else
'project'
end
[event.action_name, target].join(" ")
end
@ -42,21 +46,30 @@ module EventsHelper
end
def event_feed_title(event)
if event.issue?
"#{event.author_name} #{event.action_name} issue ##{event.target_iid}: #{event.issue_title} at #{event.project_name}"
elsif event.merge_request?
"#{event.author_name} #{event.action_name} MR ##{event.target_iid}: #{event.merge_request_title} at #{event.project_name}"
elsif event.push?
"#{event.author_name} #{event.push_action_name} #{event.ref_type} #{event.ref_name} at #{event.project_name}"
elsif event.membership_changed?
"#{event.author_name} #{event.action_name} #{event.project_name}"
elsif event.note? && event.note_commit?
"#{event.author_name} commented on #{event.note_target_type} #{event.note_short_commit_id} at #{event.project_name}"
elsif event.note?
"#{event.author_name} commented on #{event.note_target_type} ##{truncate event.note_target_iid} at #{event.project_name}"
else
""
words = []
words << event.author_name
words << event_action_name(event)
if event.push?
words << event.ref_type
words << event.ref_name
words << "at"
elsif event.commented?
if event.note_commit?
words << event.note_short_commit_id
else
words << "##{truncate event.note_target_iid}"
end
words << "at"
elsif event.target
words << "##{event.target_iid}:"
words << event.target.title if event.target.respond_to?(:title)
words << "at"
end
words << event.project_name
words.join(" ")
end
def event_feed_url(event)
@ -96,8 +109,6 @@ module EventsHelper
render "events/event_push", event: event
elsif event.merge_request?
render "events/event_merge_request", merge_request: event.merge_request
elsif event.push?
render "events/event_push", event: event
elsif event.note?
render "events/event_note", note: event.note
end

View file

@ -75,25 +75,43 @@ class Event < ActiveRecord::Base
end
def target_title
if target && target.respond_to?(:title)
target.title
end
target.title if target && target.respond_to?(:title)
end
def created?
action == CREATED
end
def push?
action == self.class::PUSHED && valid_push?
action == PUSHED && valid_push?
end
def merged?
action == self.class::MERGED
action == MERGED
end
def closed?
action == self.class::CLOSED
action == CLOSED
end
def reopened?
action == self.class::REOPENED
action == REOPENED
end
def joined?
action == JOINED
end
def left?
action == LEFT
end
def commented?
action == COMMENTED
end
def membership_changed?
joined? || left?
end
def milestone?
@ -112,32 +130,32 @@ class Event < ActiveRecord::Base
target_type == "MergeRequest"
end
def joined?
action == JOINED
end
def left?
action == LEFT
end
def membership_changed?
joined? || left?
def milestone
target if milestone?
end
def issue
target if target_type == "Issue"
target if issue?
end
def merge_request
target if target_type == "MergeRequest"
target if merge_request?
end
def note
target if target_type == "Note"
target if note?
end
def action_name
if closed?
if push?
if new_ref?
"pushed new"
elsif rm_ref?
"deleted"
else
"pushed to"
end
elsif closed?
"closed"
elsif merged?
"accepted"
@ -145,6 +163,8 @@ class Event < ActiveRecord::Base
'joined'
elsif left?
'left'
elsif commented?
"commented on"
else
"opened"
end
@ -213,16 +233,6 @@ class Event < ActiveRecord::Base
tag? ? "tag" : "branch"
end
def push_action_name
if new_ref?
"pushed new"
elsif rm_ref?
"deleted"
else
"pushed to"
end
end
def push_with_commits?
md_ref? && commits.any? && commit_from && commit_to
end

View file

@ -1,15 +1,17 @@
.event-title
%span.author_name= link_to_author event
%span.event_label{class: event.action_name}= event_action_name(event)
%span.event_label{class: event.action_name}
= event_action_name(event)
- if event.target
%strong= link_to "##{event.target_iid}", [event.project, event.target]
- else
%strong= gfm event.target_title
at
at
- if event.project
= link_to_project event.project
- else
= event.project_name
- if event.target.respond_to?(:title)
.event-body
.event-note

View file

@ -1,6 +1,10 @@
.event-title
%span.author_name= link_to_author event
%span.event_label commented on #{event_note_title_html(event)} at
%span.event_label
= event.action_name
= event_note_title_html(event)
at
- if event.project
= link_to_project event.project
- else

View file

@ -1,6 +1,6 @@
.event-title
%span.author_name= link_to_author event
%span.event_label.pushed #{event.push_action_name} #{event.ref_type}
%span.event_label.pushed #{event.action_name} #{event.ref_type}
- if event.rm_ref?
%strong= event.ref_name
- else