utilize Rails callbacks to trap issues created/saved via mail (refs #5)
This commit is contained in:
9
init.rb
9
init.rb
@@ -8,7 +8,7 @@ Redmine::Plugin.register :redmine_mattermost do
|
||||
url 'https://github.com/altsol/redmine_mattermost'
|
||||
author_url 'http://altsol.gr'
|
||||
description 'Mattermost chat integration'
|
||||
version '0.2'
|
||||
version '0.3'
|
||||
|
||||
requires_redmine :version_or_higher => '2.0.0'
|
||||
|
||||
@@ -22,3 +22,10 @@ Redmine::Plugin.register :redmine_mattermost do
|
||||
},
|
||||
:partial => 'settings/mattermost_settings'
|
||||
end
|
||||
|
||||
ActionDispatch::Callbacks.to_prepare do
|
||||
require_dependency 'issue'
|
||||
unless Issue.included_modules.include? RedmineMattermost::IssuePatch
|
||||
Issue.send(:include, RedmineMattermost::IssuePatch)
|
||||
end
|
||||
end
|
||||
|
||||
35
lib/redmine_mattermost/issue_patch.rb
Normal file
35
lib/redmine_mattermost/issue_patch.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
module RedmineMattermost
|
||||
module IssuePatch
|
||||
def self.included(base) # :nodoc:
|
||||
base.extend(ClassMethods)
|
||||
base.send(:include, InstanceMethods)
|
||||
|
||||
base.class_eval do
|
||||
unloadable # Send unloadable so it will not be unloaded in development
|
||||
after_create :create_from_issue
|
||||
after_save :save_from_issue
|
||||
end
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
def create_from_issue
|
||||
self.reload
|
||||
@create_already_fired = true
|
||||
Redmine::Hook.call_hook(:redmine_mattermost_issues_new_after_save, { :issue => self})
|
||||
return true
|
||||
end
|
||||
|
||||
def save_from_issue
|
||||
self.reload
|
||||
if not @create_already_fired
|
||||
Redmine::Hook.call_hook(:redmine_mattermost_issues_edit_after_save, { :issue => self, :journal => self.current_journal})
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,7 @@
|
||||
require 'httpclient'
|
||||
|
||||
class MattermostListener < Redmine::Hook::Listener
|
||||
def controller_issues_new_after_save(context={})
|
||||
def redmine_mattermost_issues_new_after_save(context={})
|
||||
issue = context[:issue]
|
||||
|
||||
channel = channel_for_project issue.project
|
||||
@@ -37,7 +37,7 @@ class MattermostListener < Redmine::Hook::Listener
|
||||
speak msg, channel, attachment, url
|
||||
end
|
||||
|
||||
def controller_issues_edit_after_save(context={})
|
||||
def redmine_mattermost_issues_edit_after_save(context={})
|
||||
issue = context[:issue]
|
||||
journal = context[:journal]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user