debian-mirror-gitlab/app/helpers/events_helper.rb

212 lines
6.4 KiB
Ruby
Raw Normal View History

2014-09-02 18:07:02 +05:30
module EventsHelper
def link_to_author(event)
author = event.author
if author
link_to author.name, user_path(author.username)
else
event.author_name
end
end
def event_action_name(event)
2015-04-26 12:48:37 +05:30
target = if event.target_type
if event.note?
event.note_target_type
else
event.target_type.titleize.downcase
end
else
'project'
end
2014-09-02 18:07:02 +05:30
[event.action_name, target].join(" ")
end
2015-04-26 12:48:37 +05:30
def event_filter_link(key, tooltip)
2014-09-02 18:07:02 +05:30
key = key.to_s
2015-09-11 14:41:01 +05:30
active = 'active' if @event_filter.active?(key)
link_opts = {
2015-09-25 12:07:36 +05:30
class: "event-filter-link btn btn-default #{active}",
2015-09-11 14:41:01 +05:30
id: "#{key}_event_filter",
title: "Filter by #{tooltip.downcase}",
}
2015-04-26 12:48:37 +05:30
2015-09-25 12:07:36 +05:30
link_to request.path, link_opts do
content_tag(:span, ' ' + tooltip)
2014-09-02 18:07:02 +05:30
end
end
def icon_for_event
{
2015-04-26 12:48:37 +05:30
EventFilter.push => 'upload',
EventFilter.merged => 'check-square-o',
EventFilter.comments => 'comments',
EventFilter.team => 'user',
2014-09-02 18:07:02 +05:30
}
end
2015-09-25 12:07:36 +05:30
def event_preposition(event)
if event.push? || event.commented? || event.target
"at"
elsif event.milestone?
"in"
end
end
2014-09-02 18:07:02 +05:30
def event_feed_title(event)
2015-04-26 12:48:37 +05:30
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"
2015-09-25 12:07:36 +05:30
elsif event.milestone?
words << "##{event.target_iid}" if event.target_iid
words << "in"
2015-04-26 12:48:37 +05:30
elsif event.target
2015-09-25 12:07:36 +05:30
words << "##{event.target_iid}:"
2015-04-26 12:48:37 +05:30
words << event.target.title if event.target.respond_to?(:title)
words << "at"
2014-09-02 18:07:02 +05:30
end
2015-04-26 12:48:37 +05:30
words << event.project_name
words.join(" ")
2014-09-02 18:07:02 +05:30
end
def event_feed_url(event)
if event.issue?
2015-04-26 12:48:37 +05:30
namespace_project_issue_url(event.project.namespace, event.project,
event.issue)
2014-09-02 18:07:02 +05:30
elsif event.merge_request?
2015-04-26 12:48:37 +05:30
namespace_project_merge_request_url(event.project.namespace,
event.project, event.merge_request)
elsif event.note? && event.note_commit?
namespace_project_commit_url(event.project.namespace, event.project,
event.note_target)
2014-09-02 18:07:02 +05:30
elsif event.note?
if event.note_target
if event.note_commit?
2015-04-26 12:48:37 +05:30
namespace_project_commit_path(event.project.namespace, event.project,
event.note_commit_id,
anchor: dom_id(event.target))
2014-09-02 18:07:02 +05:30
elsif event.note_project_snippet?
2015-04-26 12:48:37 +05:30
namespace_project_snippet_path(event.project.namespace,
event.project, event.note_target)
2014-09-02 18:07:02 +05:30
else
event_note_target_path(event)
end
end
elsif event.push?
2015-04-26 12:48:37 +05:30
if event.push_with_commits? && event.md_ref?
2014-09-02 18:07:02 +05:30
if event.commits_count > 1
2015-04-26 12:48:37 +05:30
namespace_project_compare_url(event.project.namespace, event.project,
from: event.commit_from, to:
event.commit_to)
2014-09-02 18:07:02 +05:30
else
2015-04-26 12:48:37 +05:30
namespace_project_commit_url(event.project.namespace, event.project,
id: event.commit_to)
2014-09-02 18:07:02 +05:30
end
else
2015-04-26 12:48:37 +05:30
namespace_project_commits_url(event.project.namespace, event.project,
event.ref_name)
2014-09-02 18:07:02 +05:30
end
end
end
def event_feed_summary(event)
if event.issue?
render "events/event_issue", issue: event.issue
elsif event.push?
render "events/event_push", event: event
elsif event.merge_request?
render "events/event_merge_request", merge_request: event.merge_request
elsif event.note?
render "events/event_note", note: event.note
end
end
def event_note_target_path(event)
if event.note? && event.note_commit?
2015-04-26 12:48:37 +05:30
namespace_project_commit_path(event.project.namespace, event.project,
event.note_target)
2014-09-02 18:07:02 +05:30
else
2015-04-26 12:48:37 +05:30
polymorphic_path([event.project.namespace.becomes(Namespace),
event.project, event.note_target],
anchor: dom_id(event.target))
2014-09-02 18:07:02 +05:30
end
end
def event_note_title_html(event)
if event.note_target
if event.note_commit?
2015-04-26 12:48:37 +05:30
link_to(
namespace_project_commit_path(event.project.namespace, event.project,
event.note_commit_id,
anchor: dom_id(event.target)),
class: "commit_short_id"
) do
2014-09-02 18:07:02 +05:30
"#{event.note_target_type} #{event.note_short_commit_id}"
end
elsif event.note_project_snippet?
2015-04-26 12:48:37 +05:30
link_to(namespace_project_snippet_path(event.project.namespace,
event.project,
event.note_target)) do
2014-09-02 18:07:02 +05:30
"#{event.note_target_type} ##{truncate event.note_target_id}"
end
else
link_to event_note_target_path(event) do
"#{event.note_target_type} ##{truncate event.note_target_iid}"
end
end
else
content_tag :strong do
"(deleted)"
end
end
end
2015-09-11 14:41:01 +05:30
def event_note(text, options = {})
text = first_line_in_markdown(text, 150, options)
2015-04-26 12:48:37 +05:30
sanitize(text, tags: %w(a img b pre code p span))
2014-09-02 18:07:02 +05:30
end
def event_commit_title(message)
escape_once(truncate(message.split("\n").first, length: 70))
rescue
"--broken encoding"
end
2015-04-26 12:48:37 +05:30
def event_to_atom(xml, event)
if event.proper?
xml.entry do
event_link = event_feed_url(event)
event_title = event_feed_title(event)
event_summary = event_feed_summary(event)
xml.id "tag:#{request.host},#{event.created_at.strftime("%Y-%m-%d")}:#{event.id}"
xml.link href: event_link
xml.title truncate(event_title, length: 80)
2015-09-11 14:41:01 +05:30
xml.updated event.created_at.xmlschema
2015-04-26 12:48:37 +05:30
xml.media :thumbnail, width: "40", height: "40", url: avatar_icon(event.author_email)
xml.author do |author|
xml.name event.author_name
xml.email event.author_email
end
xml.summary(type: "xhtml") { |x| x << event_summary unless event_summary.nil? }
end
end
end
2014-09-02 18:07:02 +05:30
end