Add changelog and db, passwords and contacts support
This commit is contained in:
33
CHANGELOG.md
Normal file
33
CHANGELOG.md
Normal file
@@ -0,0 +1,33 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
## 0.9.9
|
||||
|
||||
* Fork of redmine_rocketchat, redmine_slack and redmine_mattermost (base functions for all three messenger)
|
||||
* Locale support added
|
||||
* Wiki added supported for notification
|
||||
* Contact added/updated supported for notification (if redmine_contacts is installed)
|
||||
* Password added/updated supported for notification (if redmine_passwords is installed)
|
||||
* DB entry added/updated supported for notification (if redmine_db is installed)
|
||||
* SSL verify can be disabled
|
||||
* Lots of refactoring and code cleanups
|
||||
|
||||
## v0.6.1
|
||||
|
||||
unknown changes
|
||||
|
||||
## v0.4
|
||||
|
||||
unknown changes
|
||||
|
||||
## v0.3
|
||||
|
||||
unknown changes
|
||||
|
||||
## v0.2
|
||||
|
||||
unknown changes
|
||||
|
||||
## v0.1
|
||||
|
||||
unknown changes
|
||||
@@ -19,7 +19,7 @@ class Messenger
|
||||
if RedmineMessenger.settings[:messenger_username].present?
|
||||
params[:username] = RedmineMessenger.settings[:messenger_username]
|
||||
end
|
||||
params[:attachments] = [attachment] if attachment
|
||||
params[:attachments] = [attachment] if attachment && attachment.any?
|
||||
|
||||
if icon.present?
|
||||
if icon.start_with? ':'
|
||||
@@ -36,7 +36,9 @@ class Messenger
|
||||
client = HTTPClient.new
|
||||
client.ssl_config.cert_store.set_default_paths
|
||||
client.ssl_config.ssl_version = :auto
|
||||
client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
||||
if RedmineMessenger.settings[:messenger_verify_ssl] != 1
|
||||
client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
||||
end
|
||||
client.post_async url, payload: params.to_json
|
||||
rescue StandardError => e
|
||||
Rails.logger.warn("cannot connect to #{url}")
|
||||
|
||||
@@ -20,10 +20,21 @@
|
||||
<%= text_field_tag('settings[messenger_username]', @settings[:messenger_username], size: 30) %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_messenger_verify_ssl)) %>
|
||||
<%= check_box_tag 'settings[messenger_verify_ssl]', 1, @settings[:messenger_verify_ssl] %>
|
||||
<em class="info"><%= t(:messenger_verify_ssl_info_html) %></em>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
<h3><%= l(:label_issue_plural) %></h3>
|
||||
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_auto_mentions)) %>
|
||||
<%= check_box_tag 'settings[auto_mentions]', 1, @settings[:auto_mentions] %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_display_watchers)) %>
|
||||
<%= check_box_tag 'settings[display_watchers]', 1, @settings[:display_watchers] %>
|
||||
@@ -48,7 +59,57 @@
|
||||
<%= content_tag(:label, l(:label_settings_post_private_notes)) %>
|
||||
<%= check_box_tag 'settings[post_private_notes]', 1, @settings[:post_private_notes] %>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
<h3><%= l(:label_wiki) %></h3>
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_wiki)) %>
|
||||
<%= check_box_tag 'settings[post_wiki]', 1, @settings[:post_wiki] %>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_wiki_updates)) %>
|
||||
<%= check_box_tag 'settings[post_wiki_updates]', 1, @settings[:post_wiki_updates] %>
|
||||
</p>
|
||||
|
||||
<% if RedmineReporting::REDMINE_DB_SUPPORT %>
|
||||
<br />
|
||||
<h3><%= l(:label_db_entry_plural) %></h3>
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_db)) %>
|
||||
<%= check_box_tag 'settings[post_db]', 1, @settings[:post_db] %>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_db_updates)) %>
|
||||
<%= check_box_tag 'settings[post_db_updates]', 1, @settings[:post_db_updates] %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<% if RedmineReporting::REDMINE_CONTACTS_SUPPORT %>
|
||||
<br />
|
||||
<h3><%= l(:label_contact_plural) %></h3>
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_contact)) %>
|
||||
<%= check_box_tag 'settings[post_contact]', 1, @settings[:post_contact] %>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_contact_updates)) %>
|
||||
<%= check_box_tag 'settings[post_contact_updates]', 1, @settings[:post_contact_updates] %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<% if RedmineReporting::REDMINE_PASSWORDS_SUPPORT %>
|
||||
<br />
|
||||
<h3><%= l(:label_password_plural) %></h3>
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_password)) %>
|
||||
<%= check_box_tag 'settings[post_password]', 1, @settings[:post_password] %>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_settings_post_password_updates)) %>
|
||||
<%= check_box_tag 'settings[post_password_updates]', 1, @settings[:post_password_updates] %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
@@ -1,16 +1,31 @@
|
||||
# German strings
|
||||
de:
|
||||
label_settings_messenger_channel: Messenger Channel
|
||||
label_settings_messenger_username: Messenger Benutzer
|
||||
label_settings_messenger_url: Messenger URL
|
||||
label_settings_messenger_icon: Messenger Icon
|
||||
messenger_channel_info_html: 'The channel can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Rocket.Chat Channel">project custom field</a> named "Messenger Channel" (without quotes).'
|
||||
messenger_url_info_html: 'Generate an "Incoming WebHook" URL from the <a href="https://rocket.chat/docs/administrator-guides/integrations/">Integrations configuration page on Rocket.Chat</a>. This URL can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Messenger Channel">project custom field</a> named "Messenger URL" (without quotes).'
|
||||
label_settings_auto_mentions: Convert names to mentions?
|
||||
label_settings_display_watchers: Display watchers?
|
||||
label_settings_post_updates: Post issue updates?
|
||||
label_settings_messenger_channel: Messenger Channel
|
||||
label_settings_messenger_icon: Messenger Icon
|
||||
label_settings_messenger_url: Messenger URL
|
||||
label_settings_messenger_username: Messenger Benutzer
|
||||
label_settings_new_include_description: Description in new issue?
|
||||
label_settings_updated_include_description: Description in update issue?
|
||||
label_settings_post_private_issues: Post updates for private issues?
|
||||
label_settings_post_private_notes: Post private notes?
|
||||
label_settings_post_updates: Post issue updates?
|
||||
label_settings_post_wiki_updates: Post Wiki updates?
|
||||
label_settings_post_wiki: Post Wiki added?
|
||||
label_settings_updated_include_description: Description in update issue?
|
||||
messenger_channel_info_html: 'The channel can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Rocket.Chat Channel">project custom field</a> named "Messenger Channel" (without quotes).'
|
||||
messenger_url_info_html: 'Generate an <a target="_blank" href="https://github.com/AlphaNodes/redmine_messenger#prepare-your-messenger-service">Incoming WebHook</a> URL from the sessenger service. This URL can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Messenger Channel">project custom field</a> named "Messenger URL" (without quotes).'
|
||||
label_settings_messenger_verify_ssl: SSL verifiziert
|
||||
messenger_verify_ssl_info_html: 'If your Messenger service uses an invalid or self-signed SSL certificate, disable it.'
|
||||
label_settings_post_db: DB entry added?
|
||||
label_settings_post_db_updates: DB entry updates?
|
||||
label_settings_post_contact: Contact added?
|
||||
label_settings_post_contact_updates: Contact updates?
|
||||
label_settings_post_password: Password added?
|
||||
label_settings_post_password_updates: Password updates?
|
||||
label_messenger_db_entry_created: "[%{project_url}] DB Eintrag %{url} erstellt von *%{user}*"
|
||||
label_messenger_db_entry_updated: "[%{project_url}] DB Eintrag %{url} aktualisiert von *%{user}*"
|
||||
label_messenger_contact_created: "[%{project_url}] Kontakt %{url} erstellt von *%{user}*"
|
||||
label_messenger_contact_updated: "[%{project_url}] Kontakt %{url} aktualisiert von *%{user}*"
|
||||
label_messenger_password_created: "[%{project_url}] Kennwort %{url} erstellt von *%{user}*"
|
||||
label_messenger_password_updated: "[%{project_url}] Kennwort %{url} aktualisiert von *%{user}*"
|
||||
|
||||
@@ -1,16 +1,31 @@
|
||||
# English strings
|
||||
en:
|
||||
label_settings_messenger_channel: Messenger Channel
|
||||
label_settings_messenger_username: Messenger username
|
||||
label_settings_messenger_url: Messenger URL
|
||||
label_settings_messenger_icon: Messenger Icon
|
||||
messenger_channel_info_html: 'The channel can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Rocket.Chat Channel">project custom field</a> named "Messenger Channel" (without quotes).'
|
||||
messenger_url_info_html: 'Generate an "Incoming WebHook" URL from the <a href="https://rocket.chat/docs/administrator-guides/integrations/">Integrations configuration page on Rocket.Chat</a>. This URL can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Messenger Channel">project custom field</a> named "Messenger URL" (without quotes).'
|
||||
label_settings_auto_mentions: Convert names to mentions?
|
||||
label_settings_display_watchers: Display watchers?
|
||||
label_settings_post_updates: Post issue updates?
|
||||
label_settings_messenger_channel: Messenger Channel
|
||||
label_settings_messenger_icon: Messenger Icon
|
||||
label_settings_messenger_url: Messenger URL
|
||||
label_settings_messenger_username: Messenger username
|
||||
label_settings_new_include_description: Description in new issue?
|
||||
label_settings_updated_include_description: Description in update issue?
|
||||
label_settings_post_private_issues: Post updates for private issues?
|
||||
label_settings_post_private_notes: Post private notes?
|
||||
label_settings_post_updates: Post issue updates?
|
||||
label_settings_post_wiki_updates: Post Wiki updates?
|
||||
label_settings_post_wiki: Post Wiki added?
|
||||
label_settings_updated_include_description: Description in update issue?
|
||||
messenger_channel_info_html: 'The channel can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Rocket.Chat Channel">project custom field</a> named "Messenger Channel" (without quotes).'
|
||||
messenger_url_info_html: 'Generate an <a target="_blank" href="https://github.com/AlphaNodes/redmine_messenger#prepare-your-messenger-service">Incoming WebHook</a> URL from the sessenger service. This URL can be changed on a per-project basis by creating a <a href="/custom_fields/new?type=ProjectCustomField&custom_field[name]=Messenger Channel">project custom field</a> named "Messenger URL" (without quotes).'
|
||||
label_settings_messenger_verify_ssl: Verify SSL
|
||||
messenger_verify_ssl_info_html: 'If your Messenger service uses an invalid or self-signed SSL certificate, disable it.'
|
||||
label_settings_post_db: DB entry added?
|
||||
label_settings_post_db_updates: DB entry updates?
|
||||
label_settings_post_contact: Contact added?
|
||||
label_settings_post_contact_updates: Contact updates?
|
||||
label_settings_post_password: Password added?
|
||||
label_settings_post_password_updates: Password updates?
|
||||
label_messenger_db_entry_created: "[%{project_url}] DB entry %{url} created by *%{user}*"
|
||||
label_messenger_db_entry_updated: "[%{project_url}] DB entry %{url} updated by *%{user}*"
|
||||
label_messenger_contact_created: "[%{project_url}] Contact %{url} created by *%{user}*"
|
||||
label_messenger_contact_updated: "[%{project_url}] Contact %{url} updated by *%{user}*"
|
||||
label_messenger_password_created: "[%{project_url}] Kennwort %{url} created by *%{user}*"
|
||||
label_messenger_password_updated: "[%{project_url}] Kennwort %{url} updated by *%{user}*"
|
||||
|
||||
12
init.rb
12
init.rb
@@ -7,7 +7,7 @@ Redmine::Plugin.register :redmine_messenger do
|
||||
url 'https://github.com/alphanodes/redmine_messenger'
|
||||
author_url 'https://alphanodes.com/'
|
||||
description 'Messenger integration for Slack, Rocketchat and Mattermost support'
|
||||
version '0.6.2-dev'
|
||||
version '0.9.9'
|
||||
|
||||
requires_redmine version_or_higher: '3.0.0'
|
||||
|
||||
@@ -16,6 +16,7 @@ Redmine::Plugin.register :redmine_messenger do
|
||||
messenger_channel: 'redmine',
|
||||
messenger_icon: 'https://raw.githubusercontent.com/alphanodes/redmine_messenger/master/assets/images/icon.png',
|
||||
messenger_username: 'robot',
|
||||
messenger_verify_ssl: '1',
|
||||
display_watchers: '0',
|
||||
auto_mentions: '1',
|
||||
post_updates: '1',
|
||||
@@ -23,6 +24,13 @@ Redmine::Plugin.register :redmine_messenger do
|
||||
updated_include_description: '1',
|
||||
post_private_issues: '1',
|
||||
post_private_notes: '1',
|
||||
post_wiki_updates: '0'
|
||||
post_wiki: '0',
|
||||
post_wiki_updates: '0',
|
||||
post_db: '0',
|
||||
post_db_updates: '0',
|
||||
post_contact: '0',
|
||||
post_contact_updates: '0',
|
||||
post_password: '0',
|
||||
post_password_updates: '0'
|
||||
}, partial: 'settings/messenger_settings'
|
||||
end
|
||||
|
||||
@@ -3,11 +3,20 @@
|
||||
Rails.configuration.to_prepare do
|
||||
# Patches
|
||||
require_dependency 'redmine_messenger/patches/issue_patch'
|
||||
require_dependency 'redmine_messenger/patches/wiki_page_patch'
|
||||
|
||||
require 'redmine_messenger/patches/contact_patch' if RedmineReporting::REDMINE_CONTACTS_SUPPORT
|
||||
require 'redmine_messenger/patches/db_entry_patch' if RedmineReporting::REDMINE_DB_SUPPORT
|
||||
require 'redmine_messenger/patches/password_patch' if RedmineReporting::REDMINE_PASSWORDS_SUPPORT
|
||||
|
||||
# Hooks
|
||||
require_dependency 'redmine_messenger/hooks'
|
||||
|
||||
module RedmineMessenger
|
||||
REDMINE_CONTACTS_SUPPORT = Redmine::Plugin.installed?('redmine_contacts') ? true : false
|
||||
REDMINE_DB_SUPPORT = Redmine::Plugin.installed?('redmine_db') ? true : false
|
||||
REDMINE_PASSWORDS_SUPPORT = Redmine::Plugin.installed?('redmine_passwords') ? true : false
|
||||
|
||||
def self.settings
|
||||
Setting[:plugin_redmine_messenger].blank? ? {} : Setting[:plugin_redmine_messenger]
|
||||
end
|
||||
|
||||
@@ -49,30 +49,5 @@ module RedmineMessenger
|
||||
|
||||
Messenger.speak msg, channels, attachment, url
|
||||
end
|
||||
|
||||
def controller_wiki_edit_after_save(context = {})
|
||||
return unless RedmineMessenger.settings[:post_wiki_updates] == '1'
|
||||
|
||||
project = context[:project]
|
||||
page = context[:page]
|
||||
|
||||
user = page.content.author
|
||||
project_url = "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>"
|
||||
page_url = "<#{Messenger.object_url page}|#{page.title}>"
|
||||
comment = "[#{project_url}] #{page_url} updated by *#{user}*"
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
|
||||
attachment = nil
|
||||
unless page.content.comments.empty?
|
||||
attachment = {}
|
||||
attachment[:text] = "#{ERB::Util.html_escape(page.content.comments)}"
|
||||
end
|
||||
|
||||
Messenger.speak comment, channels, attachment, url
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
51
lib/redmine_messenger/patches/contact_patch.rb
Normal file
51
lib/redmine_messenger/patches/contact_patch.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
# Redmine Messenger plugin for Redmine
|
||||
|
||||
module RedmineMessenger
|
||||
module Patches
|
||||
module ContactPatch
|
||||
def self.included(base)
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
after_create :send_messenger_create
|
||||
after_update :send_messenger_update
|
||||
end
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
def send_messenger_create
|
||||
return unless RedmineMessenger.settings[:post_contact] == '1'
|
||||
set_language_if_valid Setting.default_language
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
Messenger.speak(l(:label_messenger_contact_created,
|
||||
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
|
||||
url: "<#{Messenger.object_url self}|#{name}>",
|
||||
user: User.current),
|
||||
channels, nil, url)
|
||||
end
|
||||
|
||||
def send_messenger_update
|
||||
return unless RedmineMessenger.settings[:post_contact_updates] == '1'
|
||||
set_language_if_valid Setting.default_language
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
Messenger.speak(l(:label_messenger_contact_updated,
|
||||
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
|
||||
url: "<#{Messenger.object_url self}|#{name}>",
|
||||
user: User.current),
|
||||
channels, nil, url)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
unless Contact.included_modules.include? RedmineMessenger::Patches::ContactPatch
|
||||
Contact.send(:include, RedmineMessenger::Patches::ContactPatch)
|
||||
end
|
||||
51
lib/redmine_messenger/patches/db_entry_patch.rb
Normal file
51
lib/redmine_messenger/patches/db_entry_patch.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
# Redmine Messenger plugin for Redmine
|
||||
|
||||
module RedmineMessenger
|
||||
module Patches
|
||||
module DbEntryPatch
|
||||
def self.included(base)
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
after_create :send_messenger_create
|
||||
after_update :send_messenger_update
|
||||
end
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
def send_messenger_create
|
||||
return unless RedmineMessenger.settings[:post_db] == '1'
|
||||
set_language_if_valid Setting.default_language
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
Messenger.speak(l(:label_messenger_db_entry_created,
|
||||
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
|
||||
url: "<#{Messenger.object_url self}|#{name}>",
|
||||
user: User.current),
|
||||
channels, nil, url)
|
||||
end
|
||||
|
||||
def send_messenger_update
|
||||
return unless RedmineMessenger.settings[:post_db_updates] == '1'
|
||||
set_language_if_valid Setting.default_language
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
Messenger.speak(l(:label_messenger_db_entry_updated,
|
||||
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
|
||||
url: "<#{Messenger.object_url self}|#{name}>",
|
||||
user: User.current),
|
||||
channels, nil, url)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
unless DbEntry.included_modules.include? RedmineMessenger::Patches::DbEntryPatch
|
||||
DbEntry.send(:include, RedmineMessenger::Patches::DbEntryPatch)
|
||||
end
|
||||
@@ -7,7 +7,7 @@ module RedmineMessenger
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
after_create :send_messenger_create
|
||||
after_save :send_messenger_save
|
||||
after_update :send_messenger_update
|
||||
end
|
||||
end
|
||||
|
||||
@@ -23,7 +23,9 @@ module RedmineMessenger
|
||||
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'
|
||||
if description && RedmineMessenger.settings[:new_include_description] == '1'
|
||||
attachment[:text] = ERB::Util.html_escape(description)
|
||||
end
|
||||
attachment[:fields] = [{
|
||||
title: I18n.t(:field_status),
|
||||
value: ERB::Util.html_escape(status.to_s),
|
||||
@@ -49,7 +51,7 @@ module RedmineMessenger
|
||||
Messenger.speak msg, channels, attachment, url
|
||||
end
|
||||
|
||||
def send_messenger_save
|
||||
def send_messenger_update
|
||||
return if current_journal.nil?
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
@@ -67,7 +69,8 @@ module RedmineMessenger
|
||||
if current_journal.notes && RedmineMessenger.settings[:updated_include_description] == '1'
|
||||
attachment[:text] = ERB::Util.html_escape(current_journal.notes)
|
||||
end
|
||||
attachment[:fields] = current_journal.details.map { |d| Messenger.detail_to_field d }
|
||||
fields = current_journal.details.map { |d| Messenger.detail_to_field d }
|
||||
attachment[:fields] = fields if fields.any?
|
||||
|
||||
Messenger.speak msg, channels, attachment, url
|
||||
end
|
||||
@@ -76,6 +79,6 @@ module RedmineMessenger
|
||||
end
|
||||
end
|
||||
|
||||
unless Issue.included_modules.include? RedmineMessenger::Patches::IssuePatch
|
||||
Issue.send(:include, RedmineMessenger::Patches::IssuePatch)
|
||||
unless WikiPage.included_modules.include? RedmineMessenger::Patches::WikiPagePatch
|
||||
WikiPage.send(:include, RedmineMessenger::Patches::WikiPagePatch)
|
||||
end
|
||||
|
||||
51
lib/redmine_messenger/patches/password_patch.rb
Normal file
51
lib/redmine_messenger/patches/password_patch.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
# Redmine Messenger plugin for Redmine
|
||||
|
||||
module RedmineMessenger
|
||||
module Patches
|
||||
module PasswordPatch
|
||||
def self.included(base)
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
after_create :send_messenger_create
|
||||
after_update :send_messenger_update
|
||||
end
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
def send_messenger_create
|
||||
return unless RedmineMessenger.settings[:post_password] == '1'
|
||||
set_language_if_valid Setting.default_language
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
Messenger.speak(l(:label_messenger_password_created,
|
||||
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
|
||||
url: "<#{Messenger.object_url self}|#{name}>",
|
||||
user: User.current),
|
||||
channels, nil, url)
|
||||
end
|
||||
|
||||
def send_messenger_update
|
||||
return unless RedmineMessenger.settings[:post_password_updates] == '1'
|
||||
set_language_if_valid Setting.default_language
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
Messenger.speak(l(:label_messenger_password_updated,
|
||||
project_url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>",
|
||||
url: "<#{Messenger.object_url self}|#{name}>",
|
||||
user: User.current),
|
||||
channels, nil, url)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
unless Password.included_modules.include? RedmineMessenger::Patches::PasswordPatch
|
||||
Password.send(:include, RedmineMessenger::Patches::PasswordPatch)
|
||||
end
|
||||
58
lib/redmine_messenger/patches/wiki_page_patch.rb
Normal file
58
lib/redmine_messenger/patches/wiki_page_patch.rb
Normal file
@@ -0,0 +1,58 @@
|
||||
# Redmine Messenger plugin for Redmine
|
||||
|
||||
module RedmineMessenger
|
||||
module Patches
|
||||
module WikiPagePatch
|
||||
def self.included(base)
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
after_create :send_messenger_create
|
||||
after_update :send_messenger_update
|
||||
end
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
def send_messenger_create
|
||||
return unless RedmineMessenger.settings[:post_wiki] == '1'
|
||||
|
||||
user = User.current
|
||||
project_url = "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>"
|
||||
page_url = "<#{Messenger.object_url self}|#{title}>"
|
||||
comment = "[#{project_url}] #{page_url} created by *#{user}*"
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
Messenger.speak comment, channels, nil, url
|
||||
end
|
||||
|
||||
def send_messenger_update
|
||||
return unless RedmineMessenger.settings[:post_wiki_updates] == '1'
|
||||
|
||||
user = content.author
|
||||
project_url = "<#{Messenger.object_url self}|#{ERB::Util.html_escape(project)}>"
|
||||
page_url = "<#{Messenger.object_url self}|#{title}>"
|
||||
comment = "[#{project_url}] #{page_url} updated by *#{user}*"
|
||||
|
||||
channels = Messenger.channels_for_project project
|
||||
url = Messenger.url_for_project project
|
||||
|
||||
return unless channels.present? && url
|
||||
|
||||
attachment = nil
|
||||
unless content.comments.empty?
|
||||
attachment = {}
|
||||
attachment[:text] = ERB::Util.html_escape(content.comments.to_s)
|
||||
end
|
||||
|
||||
Messenger.speak comment, channels, attachment, url
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
unless Issue.included_modules.include? RedmineMessenger::Patches::IssuePatch
|
||||
Issue.send(:include, RedmineMessenger::Patches::IssuePatch)
|
||||
end
|
||||
Reference in New Issue
Block a user