Add support for default mentions

Signed-off-by: Alessandro Grassi <alessandro.grassi@2ndquadrant.com>
This commit is contained in:
Alessandro Grassi
2017-10-10 16:25:53 +02:00
parent 763cf347f6
commit bbd6a69f8d
8 changed files with 19 additions and 5 deletions

View File

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

View File

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

View File

@@ -27,6 +27,7 @@
<div class="info"><%= t(:messenger_issue_intro) %></div><br />
<%= 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 } %>

View File

@@ -40,6 +40,11 @@
<%= check_box_tag 'settings[auto_mentions]', 1, @settings[:auto_mentions].to_i == 1 %>
</p>
<p>
<%= content_tag(:label, l(:label_settings_default_mentions)) %>
<%= text_field_tag('settings[default_mentions]', @settings[:default_mentions], size: 30) %>
</p>
<p>
<%= content_tag(:label, l(:label_settings_display_watchers)) %>
<%= check_box_tag 'settings[display_watchers]', 1, @settings[:display_watchers].to_i == 1 %>

View File

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

View File

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

View File

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

View File

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