Module: EventsHelper

Defined in:
app/helpers/events_helper.rb

Instance Method Summary collapse

Instance Method Details

#event_action_name(event) ⇒ Object


12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/helpers/events_helper.rb', line 12

def event_action_name(event)
  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

#event_commit_title(message) ⇒ Object


190
191
192
193
194
# File 'app/helpers/events_helper.rb', line 190

def event_commit_title(message)
  escape_once(truncate(message.split("\n").first, length: 70))
rescue
  "--broken encoding"
end

#event_feed_summary(event) ⇒ Object


133
134
135
136
137
138
139
140
141
142
143
# File 'app/helpers/events_helper.rb', line 133

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

#event_feed_title(event) ⇒ Object


59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'app/helpers/events_helper.rb', line 59

def event_feed_title(event)
  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.milestone?
    words << "##{event.target_iid}" if event.target_iid
    words << "in"
  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

#event_feed_url(event) ⇒ Object


89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'app/helpers/events_helper.rb', line 89

def event_feed_url(event)
  if event.issue?
    namespace_project_issue_url(event.project.namespace, event.project,
                                event.issue)
  elsif event.merge_request?
    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)
  elsif event.note?
    if event.note_target
      if event.note_commit?
        namespace_project_commit_path(event.project.namespace, event.project,
                                      event.note_commit_id,
                                      anchor: dom_id(event.target))
      elsif event.note_project_snippet?
        namespace_project_snippet_path(event.project.namespace,
                                       event.project, event.note_target)
      else
        event_note_target_path(event)
      end
    end
  elsif event.push?
    push_event_feed_url(event)
  end
end

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/helpers/events_helper.rb', line 26

def event_filter_link(key, tooltip)
  key = key.to_s
  active = 'active' if @event_filter.active?(key)
  link_opts = {
    class: "event-filter-link",
    id:    "#{key}_event_filter",
    title: "Filter by #{tooltip.downcase}",
  }

   :li, class: active do
    link_to request.path, link_opts do
      (:span, ' ' + tooltip)
    end
  end
end

#event_note(text, options = {}) ⇒ Object


185
186
187
188
# File 'app/helpers/events_helper.rb', line 185

def event_note(text, options = {})
  text = first_line_in_markdown(text, 150, options)
  sanitize(text, tags: %w(a img b pre code p span))
end

#event_note_target_path(event) ⇒ Object


145
146
147
148
149
150
151
152
153
154
# File 'app/helpers/events_helper.rb', line 145

def event_note_target_path(event)
  if event.note? && event.note_commit?
    namespace_project_commit_path(event.project.namespace, event.project,
                                  event.note_target)
  else
    polymorphic_path([event.project.namespace.becomes(Namespace),
                      event.project, event.note_target],
                     anchor: dom_id(event.target))
  end
end

#event_note_title_html(event) ⇒ Object


156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'app/helpers/events_helper.rb', line 156

def event_note_title_html(event)
  if event.note_target
    if event.note_commit?
      link_to(
        namespace_project_commit_path(event.project.namespace, event.project,
                                      event.note_commit_id,
                                      anchor: dom_id(event.target), title: h(event.target_title)),
        class: "commit_short_id"
      ) do
        "#{event.note_target_type} #{event.note_short_commit_id}"
      end
    elsif event.note_project_snippet?
      link_to(namespace_project_snippet_path(event.project.namespace,
                                             event.project,
                                             event.note_target), title: h(event.project.name)) do
        "#{event.note_target_type} #{truncate event.note_target.to_reference}"
      end
    else
      link_to event_note_target_path(event) do
        "#{event.note_target_type} #{truncate event.note_target.to_reference}"
      end
    end
  else
     :strong do
      "(deleted)"
    end
  end
end

#event_preposition(event) ⇒ Object


51
52
53
54
55
56
57
# File 'app/helpers/events_helper.rb', line 51

def event_preposition(event)
  if event.push? || event.commented? || event.target
    "at"
  elsif event.milestone?
    "in"
  end
end

#event_row_class(event) ⇒ Object


218
219
220
221
222
223
224
# File 'app/helpers/events_helper.rb', line 218

def event_row_class(event)
  if event.body?
    "event-block"
  else
    "event-inline"
  end
end

#event_to_atom(xml, event) ⇒ Object


196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'app/helpers/events_helper.rb', line 196

def event_to_atom(xml, event)
  if event.visible_to_user?(current_user)
    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)
      xml.updated event.created_at.xmlschema
      xml.media   :thumbnail, width: "40", height: "40", url: image_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

#icon_for_eventObject


42
43
44
45
46
47
48
49
# File 'app/helpers/events_helper.rb', line 42

def icon_for_event
  {
    EventFilter.push     => 'upload',
    EventFilter.merged   => 'check-square-o',
    EventFilter.comments => 'comments',
    EventFilter.team     => 'user',
  }
end

2
3
4
5
6
7
8
9
10
# File 'app/helpers/events_helper.rb', line 2

def link_to_author(event)
  author = event.author

  if author
    link_to author.name, user_path(author.username), title: h(author.name)
  else
    event.author_name
  end
end

#push_event_feed_url(event) ⇒ Object


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'app/helpers/events_helper.rb', line 117

def push_event_feed_url(event)
  if event.push_with_commits? && event.md_ref?
    if event.commits_count > 1
      namespace_project_compare_url(event.project.namespace, event.project,
                                    from: event.commit_from, to:
                                    event.commit_to)
    else
      namespace_project_commit_url(event.project.namespace, event.project,
                                   id: event.commit_to)
    end
  else
    namespace_project_commits_url(event.project.namespace, event.project,
                                  event.ref_name)
  end
end