Use issues without hooks
This commit is contained in:
@@ -2,65 +2,6 @@
|
||||
|
||||
module RedmineMessenger
|
||||
class MessengerListener < Redmine::Hook::Listener
|
||||
def redmine_rocketchat_issues_new_after_save(context = {})
|
||||
issue = context[:issue]
|
||||
|
||||
channels = Messenger.channels_for_project issue.project
|
||||
url = Messenger.url_for_project issue.project
|
||||
post_private_issues = Messenger.post_private_issues_for_project(issue.project)
|
||||
|
||||
return unless channels.present? && url
|
||||
return if issue.is_private? && post_private_issues != '1'
|
||||
|
||||
msg = "[#{ERB::Util.html_escape(issue.project)}] #{ERB::Util.html_escape(issue.author)} created <#{Messenger.object_url issue}|#{ERB::Util.html_escape(issue)}>#{Messenger.mentions issue.description if RedmineMessenger.settings[:auto_mentions] == '1'}"
|
||||
|
||||
attachment = {}
|
||||
attachment[:text] = ERB::Util.html_escape(issue.description) if issue.description && RedmineMessenger.settings[:new_include_description] == '1'
|
||||
attachment[:fields] = [{
|
||||
title: I18n.t(:field_status),
|
||||
value: ERB::Util.html_escape(issue.status.to_s),
|
||||
short: true
|
||||
}, {
|
||||
title: I18n.t(:field_priority),
|
||||
value: ERB::Util.html_escape(issue.priority.to_s),
|
||||
short: true
|
||||
}, {
|
||||
title: I18n.t(:field_assigned_to),
|
||||
value: ERB::Util.html_escape(issue.assigned_to.to_s),
|
||||
short: true
|
||||
}]
|
||||
|
||||
attachment[:fields] << {
|
||||
title: I18n.t(:field_watcher),
|
||||
value: ERB::Util.html_escape(issue.watcher_users.join(', ')),
|
||||
short: true
|
||||
} if RedmineMessenger.settings[:display_watchers] == '1'
|
||||
|
||||
speak msg, channels, attachment, url
|
||||
end
|
||||
|
||||
def redmine_rocketchat_issues_edit_after_save(context={})
|
||||
issue = context[:issue]
|
||||
journal = context[:journal]
|
||||
|
||||
channels = Messenger.channels_for_project issue.project
|
||||
url = Messenger.url_for_project issue.project
|
||||
post_private_issues = Messenger.post_private_issues_for_project(issue.project)
|
||||
post_private_notes = Messenger.post_private_notes_for_project(issue.project)
|
||||
|
||||
return unless channels.present? && url && RedmineMessenger.settings[:post_updates] == '1'
|
||||
return if issue.is_private? && post_private_issues != '1'
|
||||
return if journal.private_notes? && post_private_notes != '1'
|
||||
|
||||
msg = "[#{ERB::Util.html_escape(issue.project)}] #{ERB::Util.html_escape(journal.user.to_s)} updated <#{Messenger.object_url issue}|#{ERB::Util.html_escape(issue)}>#{Messenger.mentions journal.notes if RedmineMessenger.settings[:auto_mentions] == '1'}"
|
||||
|
||||
attachment = {}
|
||||
attachment[:text] = ERB::Util.html_escape(journal.notes) if journal.notes && RedmineMessenger.settings[:updated_include_description] == '1'
|
||||
attachment[:fields] = journal.details.map { |d| Messenger.detail_to_field d }
|
||||
|
||||
speak msg, channels, attachment, url
|
||||
end
|
||||
|
||||
def model_changeset_scan_commit_for_issue_ids_pre_issue_update(context = {})
|
||||
issue = context[:issue]
|
||||
journal = issue.current_journal
|
||||
@@ -106,7 +47,7 @@ module RedmineMessenger
|
||||
attachment[:text] = ll(Setting.default_language, :text_status_changed_by_changeset, "<#{revision_url}|#{ERB::Util.html_escape(changeset.comments)}>")
|
||||
attachment[:fields] = journal.details.map { |d| Messenger.detail_to_field d }
|
||||
|
||||
speak msg, channels, attachment, url
|
||||
Messenger.speak msg, channels, attachment, url
|
||||
end
|
||||
|
||||
def controller_wiki_edit_after_save(context = {})
|
||||
@@ -131,7 +72,7 @@ module RedmineMessenger
|
||||
attachment[:text] = "#{ERB::Util.html_escape(page.content.comments)}"
|
||||
end
|
||||
|
||||
speak comment, channels, attachment, url
|
||||
Messenger.speak comment, channels, attachment, url
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,26 +3,73 @@
|
||||
module RedmineMessenger
|
||||
module Patches
|
||||
module IssuePatch
|
||||
def self.included(base) # :nodoc:
|
||||
def self.included(base)
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
after_create :create_from_issue
|
||||
after_save :save_from_issue
|
||||
after_create :send_messenger_create
|
||||
after_save :send_messenger_save
|
||||
end
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
def create_from_issue
|
||||
@create_already_fired = true
|
||||
Redmine::Hook.call_hook(:redmine_rocketchat_issues_new_after_save, issue: self)
|
||||
true
|
||||
def send_messenger_create
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
post_private_issues = Messenger.post_private_issues_for_project(project)
|
||||
|
||||
return unless channels.present? && url
|
||||
return if is_private? && post_private_issues != '1'
|
||||
|
||||
msg = "[#{ERB::Util.html_escape(project)}] #{ERB::Util.html_escape(author)} created <#{Messenger.object_url(self)}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions description if RedmineMessenger.settings[:auto_mentions] == '1'}"
|
||||
|
||||
attachment = {}
|
||||
attachment[:text] = ERB::Util.html_escape(description) if description && RedmineMessenger.settings[:new_include_description] == '1'
|
||||
attachment[:fields] = [{
|
||||
title: I18n.t(:field_status),
|
||||
value: ERB::Util.html_escape(status.to_s),
|
||||
short: true
|
||||
}, {
|
||||
title: I18n.t(:field_priority),
|
||||
value: ERB::Util.html_escape(priority.to_s),
|
||||
short: true
|
||||
}, {
|
||||
title: I18n.t(:field_assigned_to),
|
||||
value: ERB::Util.html_escape(assigned_to.to_s),
|
||||
short: true
|
||||
}]
|
||||
|
||||
if RedmineMessenger.settings[:display_watchers] == '1'
|
||||
attachment[:fields] << {
|
||||
title: I18n.t(:field_watcher),
|
||||
value: ERB::Util.html_escape(watcher_users.join(', ')),
|
||||
short: true
|
||||
}
|
||||
end
|
||||
|
||||
Messenger.speak msg, channels, attachment, url
|
||||
end
|
||||
|
||||
def save_from_issue
|
||||
unless @create_already_fired
|
||||
Redmine::Hook.call_hook(:redmine_rocketchat_issues_edit_after_save, issue: self, journal: self.current_journal) unless self.current_journal.nil?
|
||||
def send_messenger_save
|
||||
return if current_journal.nil?
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
post_private_issues = Messenger.post_private_issues_for_project(project)
|
||||
post_private_notes = Messenger.post_private_notes_for_project(project)
|
||||
|
||||
return unless channels.present? && url && RedmineMessenger.settings[:post_updates] == '1'
|
||||
return if is_private? && post_private_issues != '1'
|
||||
return if current_journal.private_notes? && post_private_notes != '1'
|
||||
|
||||
msg = "[#{ERB::Util.html_escape(project)}] #{ERB::Util.html_escape(current_journal.user.to_s)} updated <#{Messenger.object_url self}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions current_journal.notes if RedmineMessenger.settings[:auto_mentions] == '1'}"
|
||||
|
||||
attachment = {}
|
||||
if current_journal.notes && RedmineMessenger.settings[:updated_include_description] == '1'
|
||||
attachment[:text] = ERB::Util.html_escape(current_journal.notes)
|
||||
end
|
||||
true
|
||||
attachment[:fields] = current_journal.details.map { |d| Messenger.detail_to_field d }
|
||||
|
||||
Messenger.speak msg, channels, attachment, url
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user