Parent project settings fix

This commit is contained in:
Alexander Meindl
2017-05-25 10:49:39 +02:00
parent 7f1ac1ff38
commit 22ccab7e72
5 changed files with 34 additions and 14 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)