Added email notification on topic assignment (#9)

* Added email notification on topic assignment

* Added config options for assign mailer

* Add Russian translation

* Update server.ru.yml

* Create client.ru.yml

* Update server.ru.yml

* Update client.ru.yml

* Update client.ru.yml

* Update client.ru.yml

* Update server.en.yml

* Removed override option for muted topics
This commit is contained in:
spog163 2017-11-21 08:09:08 +04:00 committed by Sam
parent 7fd0cd43bf
commit 5758486167
6 changed files with 90 additions and 0 deletions

View File

@ -0,0 +1,16 @@
require_dependency 'email/message_builder'
class AssignMailer < ActionMailer::Base
include Email::BuildEmailHelper
def send_assignment(to_address, topic, assigned_by)
opts = {
template: 'assign_mailer',
topic_title: topic.title,
assignee_name: assigned_by.username,
topic_excerpt: topic.excerpt,
topic_link: "#{Discourse.base_url}/t/#{topic.slug}"
}
build_email(to_address, opts)
end
end

View File

@ -0,0 +1,23 @@
ru:
js:
action_codes:
assigned: "назначил(а) ответственного %{who} %{when}"
unassigned: "снял(а) ответственного %{who} %{when}"
discourse_assign:
cant_act: "Вы не можете управлять флагами в теме, которая назначена на другого сотрудника"
assigned: "Назначенные темы"
assigned_to: "Назначено на"
assign_notification: "<i title='назначено' class='fa fa-user-plus'></i><p><span>{{username}}</span> {{description}}</p>"
unassign:
title: "Снять отв."
help: "Снять ответственного с темы"
assign:
title: "Назначить отв."
help: "Назначить ответственного за тему"
assign_modal:
title: "Назначьте ответственного в теме"
description: "Введите имя сотрудника, ответственного за тему"
assign: "Назначить"
claim:
title: "Пожаловаться"
help: "Назначить на себя"

View File

@ -10,8 +10,20 @@ en:
unassign_on_group_archive: "When a message is archived by a group, unassign message (reassign if moved back to inbox)"
unassign_on_close: "When a topic is closed unassign topic"
assign_locks_flags: "When a topic is assigned to a staff member, its flags can only be handled by that person"
assign_mailer_enabled: "When enabled, the assigned user will receive a notification email on each assignment"
discourse_assign:
assigned_to: "Topic assigned to @%{username}"
unassigned: "Topic was unassigned"
already_claimed: "That topic has already been claimed."
flag_assigned: "Sorry, flag's topic is assigned to another user"
assign_mailer:
title: "Assign Mailer"
subject_template: "[%{email_prefix}] %{assignee_name} assigned you to '%{topic_title}'!"
text_body_template: |
Hey, %{assignee_name} **assigned** you to a discussion
> **%{topic_title}**
>
> %{topic_excerpt}
If you're interested, click the link below:
[%{topic_link}](%{topic_link})

View File

@ -0,0 +1,29 @@
ru:
site_settings:
assign_enabled: "Включить возможность назначить ответственного за топик"
assigns_public: "Разрешить обычным пользователям видеть, на кого назначена тема"
assigns_user_url_path: "Путь к назначенным темам (используйте: {username} для подстановки имени)"
assigns_by_staff_mention: "Когда кто-то из персонала упоминает другого сотрудника в теме, то она закрепляется за тем сотрудником"
unassign_creates_tracking_post: "Когда включено, то при снятии ответственного с темы создается whisper (скрытый пост), чтобы можно было отследить изменение в топике"
assign_self_regex: "Шаблон, по которому топик будет автоматически закрепляться за текущим пользователем. Например, 'мой список'"
assign_other_regex: "Шаблон, по которому назначение будет происходить автоматически на сотрудника через @упоминание. Например, 'твой список'"
unassign_on_group_archive: "When a message is archived by a group, unassign message (reassign if moved back to inbox)"
unassign_on_close: "Снимать ответственного с темы, когда она закрывается"
assign_locks_flags: "Когда топик назначен на сотрудника, то флаги топика может редактировать только ответственный"
assign_mailer_enabled: "Когда включено, то при назначении ответственного за тему сотрудник получит письмо"
discourse_assign:
assigned_to: "Тема назначена на @%{username}"
unassigned: "Ответственный снят"
already_claimed: "На эту тему уже жаловались."
flag_assigned: "Извините, эта тема уже назначена на другого сотрудника."
assign_mailer:
title: "Assign Mailer"
subject_template: "[%{email_prefix}] %{assignee_name} назначил(а) Вас ответственным в теме '%{topic_title}'!"
text_body_template: |
Хэй, %{assignee_name} **назначил(а)** Вас ответственным в теме
> **%{topic_title}**
>
> %{topic_excerpt}
Если Вам интересно, то перейдите по ссылке ниже:
[%{topic_link}](%{topic_link})

View File

@ -15,3 +15,4 @@ plugins:
assign_locks_flags:
default: true
client: true
assign_mailer_enabled: false

View File

@ -1,3 +1,5 @@
require_dependency 'email/sender'
class ::TopicAssigner
def self.backfill_auto_assign
staff_mention = User.where('moderator OR admin')
@ -110,6 +112,13 @@ SQL
user_ids: staff_ids
)
if SiteSetting.assign_mailer_enabled
if !@topic.muted?(assign_to)
message = AssignMailer.send_assignment(assign_to.email, @topic, @assigned_by)
Email::Sender.new(message, :assign_message).send
end
end
UserAction.log_action!(
action_type: UserAction::ASSIGNED,
user_id: assign_to.id,