diff --git a/README.md b/README.md index f934b70..0fa7eab 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,21 @@ This plugin posts updates to issues in your Redmine installation to [Slack](http [![Dependency Status](https://gemnasium.com/badges/github.com/AlphaNodes/redmine_messenger.svg)](https://gemnasium.com/github.com/AlphaNodes/redmine_messenger) ![Jenkins Build Status](https://pm.alphanodes.com/jenkins/buildStatus/icon?job=Devel-build-redmine-messenger) +## Features + +* Post information to messenger channel + * post issue updates + * post private issue updates + * display watchers + * convert username to mentions + * post wiki updates + * post db entry (if redmine_db is installed) updates + * post password (if redmine_passwords is installed) updates + * post contact (if redmine_contacts is installed) updates +* overwrite messenger settings at project level +* parent project support (inherit messenger settings from parent project) +* multiple channel support (define one or more channels to deliver note) + ## Screenshot Mattermost output: @@ -63,16 +78,6 @@ Uninstall ``redmine_messenger`` Restart Redmine (application server) -## Customized Routing - -You can also route messages to different channels on a per-project basis. To -do this, create a project custom field (Administration > Custom fields > Project) -named `Messenger Channel`. If no custom channel is defined for a project, the parent -project will be checked (or the default will be used). To prevent all notifications -from being sent for a project, set the custom channel to `-`. - -For more information, see [https://www.redmine.org/projects/redmine/wiki/Plugins](https://www.redmine.org/projects/redmine/wiki/Plugins) (see also next section for an easy configuration demonstration). - ## Credits The source code is forked from diff --git a/app/models/messenger.rb b/app/models/messenger.rb index e301ffa..d17158b 100644 --- a/app/models/messenger.rb +++ b/app/models/messenger.rb @@ -98,13 +98,28 @@ class Messenger def self.setting_for_project(proj, config) return false if proj.blank? + @setting_found = 0 # project based pm = MessengerSetting.find_by(project_id: proj.id) - unless pm.nil? + unless pm.nil? || pm.send(config).zero? + @setting_found = 1 return false if pm.send(config) == 1 return true if pm.send(config) == 2 # 0 = use system based settings end + # parent project based + parent_setting = setting_for_project(proj.parent, config) + return parent_setting if @setting_found == 1 + # system based + return true if RedmineMessenger.settings[config].present? && RedmineMessenger.settings[config] == '1' + false + end + + def self.default_project_setting(proj, config) + if proj.present? && proj.parent.present? + parent_setting = setting_for_project(proj.parent, config) + return parent_setting if @setting_found == 1 + end # system based return true if RedmineMessenger.settings[config].present? && RedmineMessenger.settings[config] == '1' false diff --git a/config/locales/de.yml b/config/locales/de.yml index 233cb5f..6249a45 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -10,7 +10,7 @@ de: label_messenger_issue_updated: "[%{project_url}] Ticket %{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}*" - label_messenger_project_text_field_info: Leer lassen für Systemstandard. Anwenden um ihn zu deaktivieren. + label_messenger_project_text_field_info: Leer lassen für Systemstandard. label_messenger_settings_default: Standardeinstellung label_messenger_settings_disabled: Deaktiviert label_messenger_settings_enabled: Aktiviert diff --git a/config/locales/en.yml b/config/locales/en.yml index a077a58..7d1b8e1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -10,7 +10,7 @@ en: label_messenger_issue_updated: "[%{project_url}] Issue %{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}*" - label_messenger_project_text_field_info: Leave it blank for system default. Use - to disable it. + label_messenger_project_text_field_info: Leave it blank for system default. label_messenger_settings_default: System default label_messenger_settings_disabled: Disabled label_messenger_settings_enabled: Enabled diff --git a/lib/redmine_messenger/patches/projects_helper_patch.rb b/lib/redmine_messenger/patches/projects_helper_patch.rb index 86e74e7..dd01177 100644 --- a/lib/redmine_messenger/patches/projects_helper_patch.rb +++ b/lib/redmine_messenger/patches/projects_helper_patch.rb @@ -32,7 +32,7 @@ module RedmineMessenger end def project_setting_messenger_default_value(value) - if RedmineMessenger.settings[value] == '1' + if Messenger.default_project_setting(@project, value) l(:label_messenger_settings_enabled) else l(:label_messenger_settings_disabled)