From 0bb1df24996b571144bdbc97f525640a2eed8f55 Mon Sep 17 00:00:00 2001 From: spog163 Date: Mon, 13 Nov 2017 15:00:15 +0000 Subject: [PATCH 01/11] Added email notification on topic assignment --- app/mailers/assing_mailer.rb | 16 ++++++++++++++++ config/locales/server.en.yml | 11 +++++++++++ lib/topic_assigner.rb | 5 +++++ 3 files changed, 32 insertions(+) create mode 100644 app/mailers/assing_mailer.rb diff --git a/app/mailers/assing_mailer.rb b/app/mailers/assing_mailer.rb new file mode 100644 index 00000000..3b92c6b9 --- /dev/null +++ b/app/mailers/assing_mailer.rb @@ -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 diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 8b730b62..a54c50d1 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -15,3 +15,14 @@ en: 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}) diff --git a/lib/topic_assigner.rb b/lib/topic_assigner.rb index 94e64895..e22bbbc0 100644 --- a/lib/topic_assigner.rb +++ b/lib/topic_assigner.rb @@ -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,9 @@ def assign(assign_to, silent: false) user_ids: staff_ids ) + message = AssignMailer.send_assignment(assign_to.email, @topic, @assigned_by) + Email::Sender.new(message, :test_message).send + UserAction.log_action!( action_type: UserAction::ASSIGNED, user_id: assign_to.id, From 72850d5b399d4bad1b243c0f022d9113e10fc5b0 Mon Sep 17 00:00:00 2001 From: spog163 Date: Tue, 14 Nov 2017 13:44:07 +0000 Subject: [PATCH 02/11] Added config options for assign mailer --- app/mailers/{assing_mailer.rb => assign_mailer.rb} | 0 config/settings.yml | 2 ++ lib/topic_assigner.rb | 8 ++++++-- 3 files changed, 8 insertions(+), 2 deletions(-) rename app/mailers/{assing_mailer.rb => assign_mailer.rb} (100%) diff --git a/app/mailers/assing_mailer.rb b/app/mailers/assign_mailer.rb similarity index 100% rename from app/mailers/assing_mailer.rb rename to app/mailers/assign_mailer.rb diff --git a/config/settings.yml b/config/settings.yml index ab5c385e..deef6ad0 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -15,3 +15,5 @@ plugins: assign_locks_flags: default: true client: true + assign_mailer_enabled: false + assign_mailer_disabled_for_muted_topics: true diff --git a/lib/topic_assigner.rb b/lib/topic_assigner.rb index e22bbbc0..4c18c879 100644 --- a/lib/topic_assigner.rb +++ b/lib/topic_assigner.rb @@ -112,8 +112,12 @@ def assign(assign_to, silent: false) user_ids: staff_ids ) - message = AssignMailer.send_assignment(assign_to.email, @topic, @assigned_by) - Email::Sender.new(message, :test_message).send + if SiteSetting.assign_mailer_enabled + if !SiteSetting.assign_mailer_disabled_for_muted_topics or !@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, From 6a51f80a739e7921fedd73fe928166a5ac9b8793 Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 15:43:01 +0400 Subject: [PATCH 03/11] Add Russian translation --- config/locales/server.ru.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 config/locales/server.ru.yml diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml new file mode 100644 index 00000000..a0f6511f --- /dev/null +++ b/config/locales/server.ru.yml @@ -0,0 +1,30 @@ +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: "Когда включено, то при назначении темы на сотрудника он получит письмо" + assign_mailer_disabled_for_muted_topics: "Когда включено, то для тем, отмеченных сотрудником как Без уведомлений, при назначении ему таких тем письмо отправляться не будет" + 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}) From c19a2c65e9edc31b02cf295639ca750b97ab4d24 Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 15:59:26 +0400 Subject: [PATCH 04/11] Update server.ru.yml --- config/locales/server.ru.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index a0f6511f..bef9f38d 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -1,17 +1,17 @@ ru: site_settings: - assign_enabled: "Включить плагин назначения тем за персоналом" + assign_enabled: "Включить назначение ответственных за топики" assigns_public: "Разрешить обычным пользователям видеть, на кого назначена тема" assigns_user_url_path: "Путь к назначенным темам (используйте: {username} для подстановки имени)" assigns_by_staff_mention: "Когда кто-то из персонала упоминает другого сотрудника в теме, то она закрепляется за этим сотрудником" - unassign_creates_tracking_post: "Когда включено, то при снятии назначения с темы создается whisper или незаметное действие, чтобы можно было отследить изменение в топике" - assign_self_regex: "Шаблон, по которому назначение будет происходить автоматически на самого себя. Например, 'мой список'" + 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: "Снимать назначение, когда тема закрывается" + unassign_on_close: "Снимать ответственного с темы, когда она закрывается" assign_locks_flags: "Когда топик назначен на сотрудника, то его флаги может редактировать только этот сотрудник" - assign_mailer_enabled: "Когда включено, то при назначении темы на сотрудника он получит письмо" - assign_mailer_disabled_for_muted_topics: "Когда включено, то для тем, отмеченных сотрудником как Без уведомлений, при назначении ему таких тем письмо отправляться не будет" + assign_mailer_enabled: "Когда включено, то при назначении ответственного за тему, сотрудник получит письмо" + assign_mailer_disabled_for_muted_topics: "Когда включено, то ответственный не будет получать письма для тем с пометкой Без уведомлений" discourse_assign: assigned_to: "Тема назначена на @%{username}" unassigned: "Назначение снято " @@ -19,12 +19,12 @@ ru: flag_assigned: "Извините, эта тема уже назначена на другого сотрудника." assign_mailer: title: "Assign Mailer" - subject_template: "[%{email_prefix}] %{assignee_name} назначил на Вас тему '%{topic_title}'!" + subject_template: "[%{email_prefix}] %{assignee_name} назначил Вас ответственным в теме '%{topic_title}'!" text_body_template: | Хэй, %{assignee_name} **назначил(а)** Вас ответственным в теме > **%{topic_title}** > > %{topic_excerpt} - Если Вы заинтересованы в теме, перейдите по ссылке ниже: + Если Вам интересно, то перейдите по ссылке ниже: [%{topic_link}](%{topic_link}) From 1f18c7920a60e93bb5d2d199e4518922fb7008b2 Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 16:06:22 +0400 Subject: [PATCH 05/11] Create client.ru.yml --- config/locales/client.ru.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 config/locales/client.ru.yml diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml new file mode 100644 index 00000000..e101b64f --- /dev/null +++ b/config/locales/client.ru.yml @@ -0,0 +1,23 @@ +ru: + js: + action_codes: + assigned: "назаначено %{who} %{when}" + unassigned: "%{who} %{when} снял(а) ответственного" + discourse_assign: + cant_act: "Вы не можете управлять флагами в теме, которая назначена на другого сотрудника" + assigned: "Назначено" + assigned_to: "Назначено на" + assign_notification: "

{{username}} {{description}}

" + unassign: + title: "Снять отв." + help: "Снять ответственного с темы" + assign: + title: "Назначить отв." + help: "Назначить ответственного за тему" + assign_modal: + title: "Назначение ответственного" + description: "Введите имя сотрудника, ответственного за тему" + assign: "Назначить" + claim: + title: "Пожаловаться" + help: "Назначить на себя" From e0cd985515e16ddffed55594e17a1aaca143e242 Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 16:22:56 +0400 Subject: [PATCH 06/11] Update server.ru.yml --- config/locales/server.ru.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index bef9f38d..004252cb 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -1,25 +1,25 @@ ru: site_settings: - assign_enabled: "Включить назначение ответственных за топики" + assign_enabled: "Включить возможность назначить ответственного за топик" assigns_public: "Разрешить обычным пользователям видеть, на кого назначена тема" assigns_user_url_path: "Путь к назначенным темам (используйте: {username} для подстановки имени)" - assigns_by_staff_mention: "Когда кто-то из персонала упоминает другого сотрудника в теме, то она закрепляется за этим сотрудником" - unassign_creates_tracking_post: "Когда включено, то при снятии назначения с темы создается whisper или скрытый пост, чтобы можно было отследить изменение в топике" - assign_self_regex: "Шаблон, по которому топик будет автоматически закрепляться за самим собой. Например, 'мой список'" + 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: "Когда включено, то при назначении ответственного за тему, сотрудник получит письмо" - assign_mailer_disabled_for_muted_topics: "Когда включено, то ответственный не будет получать письма для тем с пометкой Без уведомлений" + assign_locks_flags: "Когда топик назначен на сотрудника, то флаги топика может редактировать только ответственный" + assign_mailer_enabled: "Когда включено, то при назначении ответственного за тему сотрудник получит письмо" + assign_mailer_disabled_for_muted_topics: "Когда включено, то ответственный не будет получать письма по темам с пометкой _Без уведомлений_" discourse_assign: assigned_to: "Тема назначена на @%{username}" - unassigned: "Назначение снято " + unassigned: "Ответственный снят" already_claimed: "На эту тему уже жаловались." flag_assigned: "Извините, эта тема уже назначена на другого сотрудника." assign_mailer: title: "Assign Mailer" - subject_template: "[%{email_prefix}] %{assignee_name} назначил Вас ответственным в теме '%{topic_title}'!" + subject_template: "[%{email_prefix}] %{assignee_name} назначил(а) Вас ответственным в теме '%{topic_title}'!" text_body_template: | Хэй, %{assignee_name} **назначил(а)** Вас ответственным в теме > **%{topic_title}** From 92ed29b33fd41d387a38cf7d3e77888bd15a66c5 Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 17:03:36 +0400 Subject: [PATCH 07/11] Update client.ru.yml --- config/locales/client.ru.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index e101b64f..99600637 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -1,11 +1,11 @@ ru: js: action_codes: - assigned: "назаначено %{who} %{when}" - unassigned: "%{who} %{when} снял(а) ответственного" + assigned: "назначил(а) ответственного %{who} %{when}" + unassigned: "снял(а) ответственного %{who} %{when}" discourse_assign: cant_act: "Вы не можете управлять флагами в теме, которая назначена на другого сотрудника" - assigned: "Назначено" + assigned: "Назначен ответственный" assigned_to: "Назначено на" assign_notification: "

{{username}} {{description}}

" unassign: @@ -15,7 +15,7 @@ ru: title: "Назначить отв." help: "Назначить ответственного за тему" assign_modal: - title: "Назначение ответственного" + title: "Назначьте ответственного в теме %{topic_title}" description: "Введите имя сотрудника, ответственного за тему" assign: "Назначить" claim: From 960535451d872fe5131b0e0d459ccd4202d12bad Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 17:19:57 +0400 Subject: [PATCH 08/11] Update client.ru.yml --- config/locales/client.ru.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 99600637..8d9f3943 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -5,7 +5,7 @@ ru: unassigned: "снял(а) ответственного %{who} %{when}" discourse_assign: cant_act: "Вы не можете управлять флагами в теме, которая назначена на другого сотрудника" - assigned: "Назначен ответственный" + assigned: "Назначенные темы" assigned_to: "Назначено на" assign_notification: "

{{username}} {{description}}

" unassign: From 27fb00a21b171c0785715a1e7e38d218f396c3b1 Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 17:24:47 +0400 Subject: [PATCH 09/11] Update client.ru.yml --- config/locales/client.ru.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 8d9f3943..15340313 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -15,7 +15,7 @@ ru: title: "Назначить отв." help: "Назначить ответственного за тему" assign_modal: - title: "Назначьте ответственного в теме %{topic_title}" + title: "Назначьте ответственного в теме" description: "Введите имя сотрудника, ответственного за тему" assign: "Назначить" claim: From b9dba2c105927ad52690188923122905fe7dd5a4 Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Thu, 16 Nov 2017 17:45:03 +0400 Subject: [PATCH 10/11] Update server.en.yml --- config/locales/server.en.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index a54c50d1..275f81f2 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -10,6 +10,8 @@ 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" + assign_mailer_disabled_for_muted_topics: "When enabled, the assigned user will not receive emails on muted topics" discourse_assign: assigned_to: "Topic assigned to @%{username}" unassigned: "Topic was unassigned" From 041933461408d77fe1091b43bdde7abdbe14112d Mon Sep 17 00:00:00 2001 From: Ivan Rabkesov Date: Fri, 17 Nov 2017 17:13:53 +0400 Subject: [PATCH 11/11] Removed override option for muted topics --- config/locales/server.en.yml | 1 - config/locales/server.ru.yml | 1 - config/settings.yml | 1 - lib/topic_assigner.rb | 2 +- 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 275f81f2..300bdb9a 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -11,7 +11,6 @@ en: 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" - assign_mailer_disabled_for_muted_topics: "When enabled, the assigned user will not receive emails on muted topics" discourse_assign: assigned_to: "Topic assigned to @%{username}" unassigned: "Topic was unassigned" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index 004252cb..f70dd083 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -11,7 +11,6 @@ ru: unassign_on_close: "Снимать ответственного с темы, когда она закрывается" assign_locks_flags: "Когда топик назначен на сотрудника, то флаги топика может редактировать только ответственный" assign_mailer_enabled: "Когда включено, то при назначении ответственного за тему сотрудник получит письмо" - assign_mailer_disabled_for_muted_topics: "Когда включено, то ответственный не будет получать письма по темам с пометкой _Без уведомлений_" discourse_assign: assigned_to: "Тема назначена на @%{username}" unassigned: "Ответственный снят" diff --git a/config/settings.yml b/config/settings.yml index deef6ad0..4a63fc98 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -16,4 +16,3 @@ plugins: default: true client: true assign_mailer_enabled: false - assign_mailer_disabled_for_muted_topics: true diff --git a/lib/topic_assigner.rb b/lib/topic_assigner.rb index 4c18c879..628d1d0c 100644 --- a/lib/topic_assigner.rb +++ b/lib/topic_assigner.rb @@ -113,7 +113,7 @@ def assign(assign_to, silent: false) ) if SiteSetting.assign_mailer_enabled - if !SiteSetting.assign_mailer_disabled_for_muted_topics or !@topic.muted?(assign_to) + if !@topic.muted?(assign_to) message = AssignMailer.send_assignment(assign_to.email, @topic, @assigned_by) Email::Sender.new(message, :assign_message).send end