From 87869706a64945c3fb45d5471b1cb77f3fc904b4 Mon Sep 17 00:00:00 2001 From: Alexander Meindl Date: Thu, 25 May 2017 11:58:40 +0200 Subject: [PATCH] Parent project support for icon and username has been added --- README.md | 3 +- app/models/messenger.rb | 40 +++++++++++++------ .../_messenger_text.html.erb | 2 +- lib/redmine_messenger/hooks.rb | 2 +- .../patches/contact_patch.rb | 4 +- .../patches/db_entry_patch.rb | 4 +- lib/redmine_messenger/patches/issue_patch.rb | 4 +- .../patches/password_patch.rb | 4 +- .../patches/wiki_page_patch.rb | 4 +- 9 files changed, 41 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 0fa7eab..f3e4534 100644 --- a/README.md +++ b/README.md @@ -63,8 +63,7 @@ Under the configuration options, set the Messenger API URL to the URL for an Incoming WebHook integration in your Messenger account and also set the Messenger Channel to the channel's handle (be careful, this is not the channel's display name visible to users, you can find each channel's handle by navigating inside the channel -and clicking the down-arrow and selecting view info). See also the next two sections -for advanced and custom routing options. +and clicking the down-arrow and selecting view info). ## Uninstall diff --git a/app/models/messenger.rb b/app/models/messenger.rb index d17158b..bb5bdd8 100644 --- a/app/models/messenger.rb +++ b/app/models/messenger.rb @@ -4,9 +4,8 @@ require 'net/http' class Messenger include Redmine::I18n - def self.speak(msg, channels, attachment = nil, url = nil) + def self.speak(msg, channels, url, options) url = RedmineMessenger.settings[:messenger_url] unless url - icon = RedmineMessenger.settings[:messenger_icon] return if url.blank? return if channels.blank? @@ -16,11 +15,11 @@ class Messenger link_names: 1 } - if RedmineMessenger.settings[:messenger_username].present? - params[:username] = RedmineMessenger.settings[:messenger_username] - end - params[:attachments] = [attachment] if attachment && attachment.any? + username = Messenger.textfield_for_project(options[:project], :messenger_username) + params[:username] = username if username.present? + params[:attachments] = [options[:attachment]] if options[:attachment] && options[:attachment].any? + icon = Messenger.textfield_for_project(options[:project], :messenger_icon) if icon.present? if icon.start_with? ':' params[:icon_emoji] = icon @@ -77,6 +76,24 @@ class Messenger nil end + def self.textfield_for_project(proj, config) + return if proj.blank? + # project based + pm = MessengerSetting.find_by(project_id: proj.id) + return pm.send(config) if !pm.nil? && pm.send(config).present? + default_textfield(proj, config) + end + + def self.default_textfield(proj, config) + # parent project based + parent_field = textfield_for_project(proj.parent, config) + return parent_field if parent_field.present? + if RedmineMessenger.settings[config].present? + return RedmineMessenger.settings[config] + end + '' + end + def self.channels_for_project(proj) return [] if proj.blank? # project based @@ -85,6 +102,10 @@ class Messenger return [] if pm.messenger_channel == '-' return pm.messenger_channel.split(',').map(&:strip).uniq end + default_project_channels(proj) + end + + def self.default_project_channels(proj) # parent project based parent_channel = channels_for_project(proj.parent) return parent_channel if parent_channel.present? @@ -107,12 +128,7 @@ class Messenger 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 + default_project_setting(proj, config) end def self.default_project_setting(proj, config) diff --git a/app/views/messenger_settings/_messenger_text.html.erb b/app/views/messenger_settings/_messenger_text.html.erb index b3ce96b..77f3d33 100644 --- a/app/views/messenger_settings/_messenger_text.html.erb +++ b/app/views/messenger_settings/_messenger_text.html.erb @@ -1,4 +1,4 @@

<%= f.text_field mf, size: size, label: l("label_settings_#{mf}") %> - <%= l(:label_messenger_project_text_field_info) %> (<%= l(:label_default) %>: <%= RedmineMessenger.settings[mf] %>) + <%= l(:label_messenger_project_text_field_info) %> (<%= l(:label_default) %>: <%= Messenger.default_textfield(@project, mf) %>)

diff --git a/lib/redmine_messenger/hooks.rb b/lib/redmine_messenger/hooks.rb index 281b002..71b6707 100644 --- a/lib/redmine_messenger/hooks.rb +++ b/lib/redmine_messenger/hooks.rb @@ -48,7 +48,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 } - Messenger.speak msg, channels, attachment, url + Messenger.speak(msg, channels, url, attachment: attachment, project: project) end end end diff --git a/lib/redmine_messenger/patches/contact_patch.rb b/lib/redmine_messenger/patches/contact_patch.rb index 6428df6..429b8bc 100644 --- a/lib/redmine_messenger/patches/contact_patch.rb +++ b/lib/redmine_messenger/patches/contact_patch.rb @@ -24,7 +24,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{name}>", user: User.current), - channels, nil, url) + channels, url, project: project) end def send_messenger_update @@ -39,7 +39,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{name}>", user: User.current), - channels, nil, url) + channels, url, project: project) end end end diff --git a/lib/redmine_messenger/patches/db_entry_patch.rb b/lib/redmine_messenger/patches/db_entry_patch.rb index f9e73da..7a114b6 100644 --- a/lib/redmine_messenger/patches/db_entry_patch.rb +++ b/lib/redmine_messenger/patches/db_entry_patch.rb @@ -24,7 +24,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{name}>", user: User.current), - channels, nil, url) + channels, url, project: project) end def send_messenger_update @@ -39,7 +39,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{name}>", user: User.current), - channels, nil, url) + channels, url, project: project) end end end diff --git a/lib/redmine_messenger/patches/issue_patch.rb b/lib/redmine_messenger/patches/issue_patch.rb index cb7a1e7..113c4fb 100644 --- a/lib/redmine_messenger/patches/issue_patch.rb +++ b/lib/redmine_messenger/patches/issue_patch.rb @@ -51,7 +51,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url(self)}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions description if RedmineMessenger.settings[:auto_mentions] == '1'}", user: author), - channels, attachment, url) + channels, url, attachment: attachment, project: project) end def send_messenger_update @@ -77,7 +77,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions(current_journal.notes) if Messenger.setting_for_project(project, :auto_mentions)}", user: current_journal.user), - channels, attachment, url) + channels, url, attachment: attachment, project: project) end end end diff --git a/lib/redmine_messenger/patches/password_patch.rb b/lib/redmine_messenger/patches/password_patch.rb index 98f0627..f80d30c 100644 --- a/lib/redmine_messenger/patches/password_patch.rb +++ b/lib/redmine_messenger/patches/password_patch.rb @@ -24,7 +24,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{name}>", user: User.current), - channels, nil, url) + channels, url, project: project) end def send_messenger_update @@ -39,7 +39,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{name}>", user: User.current), - channels, nil, url) + channels, url, project: project) end end end diff --git a/lib/redmine_messenger/patches/wiki_page_patch.rb b/lib/redmine_messenger/patches/wiki_page_patch.rb index da655ac..be760d0 100644 --- a/lib/redmine_messenger/patches/wiki_page_patch.rb +++ b/lib/redmine_messenger/patches/wiki_page_patch.rb @@ -24,7 +24,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{title}>", user: User.current), - channels, nil, url) + channels, url, project: project) end def send_messenger_update @@ -46,7 +46,7 @@ module RedmineMessenger project_url: "<#{Messenger.object_url project}|#{ERB::Util.html_escape(project)}>", url: "<#{Messenger.object_url self}|#{title}>", user: content.author), - channels, attachment, url) + channels, url, project: project, attachment: attachment) end end end