diff --git a/app/models/messenger.rb b/app/models/messenger.rb index bb5bdd8..01c9e17 100644 --- a/app/models/messenger.rb +++ b/app/models/messenger.rb @@ -219,9 +219,12 @@ class Messenger result end - def self.mentions(text) - return nil if text.nil? - names = extract_usernames(text) + def self.mentions(project, text) + names = [] + Messenger.textfield_for_project(project, :default_mentions).split(',').each { |m| + names.push m.strip + } + names += extract_usernames(text) unless text.nil? names.present? ? '\nTo: ' + names.join(', ') : nil end diff --git a/app/models/messenger_setting.rb b/app/models/messenger_setting.rb index a1a789a..6b89312 100644 --- a/app/models/messenger_setting.rb +++ b/app/models/messenger_setting.rb @@ -12,6 +12,7 @@ class MessengerSetting < ActiveRecord::Base 'messenger_username', 'messenger_verify_ssl', 'auto_mentions', + 'default_mentions', 'display_watchers', 'post_updates', 'new_include_description', @@ -33,6 +34,7 @@ class MessengerSetting < ActiveRecord::Base :messenger_username, :messenger_verify_ssl, :auto_mentions, + :default_mentions, :display_watchers, :post_updates, :new_include_description, diff --git a/app/views/messenger_settings/_show.html.erb b/app/views/messenger_settings/_show.html.erb index ce529ff..de3e49b 100644 --- a/app/views/messenger_settings/_show.html.erb +++ b/app/views/messenger_settings/_show.html.erb @@ -27,6 +27,7 @@
<%= t(:messenger_issue_intro) %>

+ <%= render partial: 'messenger_settings/messenger_text', locals: { f: f, mf: :default_mentions, size: 30 } %> <%= render partial: 'messenger_settings/messenger_select', locals: { f: f, mf: :auto_mentions } %> <%= render partial: 'messenger_settings/messenger_select', locals: { f: f, mf: :display_watchers } %> <%= render partial: 'messenger_settings/messenger_select', locals: { f: f, mf: :post_updates } %> diff --git a/app/views/settings/_messenger_settings.html.erb b/app/views/settings/_messenger_settings.html.erb index 1a231af..5c84d0a 100644 --- a/app/views/settings/_messenger_settings.html.erb +++ b/app/views/settings/_messenger_settings.html.erb @@ -40,6 +40,11 @@ <%= check_box_tag 'settings[auto_mentions]', 1, @settings[:auto_mentions].to_i == 1 %>

+

+ <%= content_tag(:label, l(:label_settings_default_mentions)) %> + <%= text_field_tag('settings[default_mentions]', @settings[:default_mentions], size: 30) %> +

+

<%= content_tag(:label, l(:label_settings_display_watchers)) %> <%= check_box_tag 'settings[display_watchers]', 1, @settings[:display_watchers].to_i == 1 %> diff --git a/config/locales/en.yml b/config/locales/en.yml index ce6455d..9d96817 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -18,6 +18,7 @@ en: label_messenger_wiki_updated: "[%{project_url}] Wiki %{url} updated by *%{user}*" label_messenger: Messenger label_settings_auto_mentions: Convert names to mentions? + label_settings_default_mentions: Default people to notify, comma separated (e.g. @all, @here) label_settings_display_watchers: Display watchers? label_settings_messenger_channel: Messenger Channel label_settings_messenger_icon: Messenger Icon diff --git a/db/migrate/001_create_messenger_settings.rb b/db/migrate/001_create_messenger_settings.rb index ab0ef1f..b4af710 100644 --- a/db/migrate/001_create_messenger_settings.rb +++ b/db/migrate/001_create_messenger_settings.rb @@ -8,6 +8,7 @@ class CreateMessengerSettings < ActiveRecord::Migration t.string :messenger_icon t.string :messenger_channel t.string :messenger_username + t.string :default_mentions t.integer :messenger_verify_ssl, default: 0, null: false t.integer :auto_mentions, default: 0, null: false t.integer :display_watchers, default: 0, null: false diff --git a/init.rb b/init.rb index 9501d98..2ee2c65 100644 --- a/init.rb +++ b/init.rb @@ -22,6 +22,7 @@ Redmine::Plugin.register :redmine_messenger do messenger_username: 'robot', messenger_verify_ssl: '1', auto_mentions: '0', + default_mentions: '', display_watchers: '0', post_updates: '1', new_include_description: '1', diff --git a/lib/redmine_messenger/patches/issue_patch.rb b/lib/redmine_messenger/patches/issue_patch.rb index 113c4fb..ccf7c55 100644 --- a/lib/redmine_messenger/patches/issue_patch.rb +++ b/lib/redmine_messenger/patches/issue_patch.rb @@ -49,7 +49,7 @@ module RedmineMessenger Messenger.speak(l(:label_messenger_issue_created, 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'}", + url: "<#{Messenger.object_url(self)}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions(project, description) if Messenger.setting_for_project(project, :auto_mentions) or not Messenger.textfield_for_project(project, :default_mentions).empty? }", user: author), channels, url, attachment: attachment, project: project) end @@ -75,7 +75,7 @@ module RedmineMessenger Messenger.speak(l(:label_messenger_issue_updated, 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)}", + url: "<#{Messenger.object_url self}|#{ERB::Util.html_escape(self)}>#{Messenger.mentions(project, current_journal.notes) if Messenger.setting_for_project(project, :auto_mentions) or not Messenger.textfield_for_project(project, :default_mentions).empty? }", user: current_journal.user), channels, url, attachment: attachment, project: project) end