/
notifier_hook.rb
66 lines (59 loc) · 2.32 KB
/
notifier_hook.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class NotifierHook < Redmine::Hook::ViewListener
def controller_issues_new_after_save(context = { })
@project = context[:project]
@issue = context[:issue]
@journal = context[:journal]
@user = @issue.author
msg = "#{@user.login} created issue #{@issue.subject}"
msg += ": #{truncate_single_line_raw(@issue.description, 100)}" unless @issue.description.empty?
msg += " (#{redmine_url(@issue.event_url(:only_path => false))})"
say msg
end
def controller_issues_edit_after_save(context = { })
@project = context[:project]
@issue = context[:issue]
@journal = context[:journal]
@user = @journal.user
if @issue.closed? == true
msg = "#{@user.login} closed issue #{@issue.subject}"
elsif @issue.reopened? == true
msg = "#{@user.login} reopened issue #{@issue.subject}"
else
msg = "#{@user.login} updated issue #{@issue.subject}"
end
msg += ": #{truncate_single_line_raw(@journal.notes, 100)}" unless @journal.notes.empty?
msg += " (#{redmine_url(@issue.event_url(:only_path => false))})"
say msg
end
def controller_messages_new_after_save(context = { })
@project = context[:project]
@message = context[:message]
@user = @message.author
say "#{@user.login} wrote a new message #{@message.subject} on #{@project.name}: #{truncate_single_line_raw(@message.content, 100)} (#{redmine_url(@message.event_url(:only_path => false))})"
end
def controller_messages_reply_after_save(context = { })
@project = context[:project]
@message = context[:message]
@user = @message.author
say "#{@user.login} replied a message #{@message.subject} on #{@project.name}: #{truncate_single_line_raw(@message.content, 100)} (#{redmine_url(@message.event_url(:only_path => false))})"
end
def controller_wiki_edit_after_save(context = { })
@project = context[:project]
@page = context[:page]
@user = @page.content.author
say "#{@user.login} edited the wiki #{@page.pretty_title} on #{@project.name} (#{redmine_url(@page.event_url(:only_path => false))})"
end
private
def redmine_url(param)
param[:host] = Setting.host_name
param[:protocol] = Setting.protocol
url_for(param)
end
def say(message)
begin
Irc.speak message
rescue => e
puts "Error during IRC notification: #{e.message}"
end
end
end