La mise à jour d'un événement déclenche un mail envoyé aux modérateurs

This commit is contained in:
echarp 2014-07-01 21:55:38 +02:00
parent 95073337a8
commit f8a4c06c07
7 changed files with 43 additions and 1 deletions

View File

@ -80,6 +80,9 @@ class EventsController < ApplicationController
respond_to do |format| respond_to do |format|
if @event.update event_params if @event.update event_params
# Send an update mail to moderators
EventMailer.update(@event).deliver
format.html { redirect_to :root, notice: t('.ok') } format.html { redirect_to :root, notice: t('.ok') }
format.json { head :no_content } format.json { head :no_content }
else else

View File

@ -1,5 +1,6 @@
class EventMailer < ActionMailer::Base class EventMailer < ActionMailer::Base
default from: 'moderateurs@agendadulibre.org' default from: 'moderateurs@agendadulibre.org'
default to: 'moderateurs@agendadulibre.org'
def create(event) def create(event)
@event = event @event = event
@ -8,4 +9,11 @@ class EventMailer < ActionMailer::Base
to: event.contact, to: event.contact,
subject: t('event_mailer.create.subject', subject: event.title) subject: t('event_mailer.create.subject', subject: event.title)
end end
def update(event)
@event = event
mail 'In-Reply-To' => "<event-#{event.id}@#{ActionMailer::Base.default_url_options[:host]}>",
subject: t('event_mailer.update.subject', subject: event.title)
end
end end

View File

@ -0,0 +1,13 @@
=t '.title'
\
=t '.body', subject: @event.title
- Differ.format = :ascii
= raw Differ.diff(@event.description, @event.description_was).to_s |
.gsub(/\[31m/, '') |
.gsub(/\[32m/, '') |
.gsub(/\[0m/, '') |
\
= edit_moderation_url @event
\
=t '.signature'

View File

@ -254,6 +254,11 @@ fr:
\n\nPendant la modération et après celle-ci si votre évènement est validé, vous pouvez éditer votre évènement à l'adresse:" \n\nPendant la modération et après celle-ci si votre évènement est validé, vous pouvez éditer votre évènement à l'adresse:"
delete_link: "et vous pouvez l'annuler en utilisant l'adresse:" delete_link: "et vous pouvez l'annuler en utilisant l'adresse:"
signature: "Merci de votre participation!\n\n-- \nAgenda du Libre" signature: "Merci de votre participation!\n\n-- \nAgenda du Libre"
update:
subject: "[Agenda du Libre] Édition de l'évènement '%{subject}'"
title: Bonjour,
body: "L'évènement '%{subject}' a été modifié par le soumetteur de l'évènement\n\nModifications apportées:"
signature: "Bonne journée\n\n-- \nL'équipe de modération"
moderation_mailer: moderation_mailer:
create: create:
subject: "[Agenda du Libre] Nouvel évènement à modérer: '%{subject}'" subject: "[Agenda du Libre] Nouvel évènement à modérer: '%{subject}'"

View File

@ -95,7 +95,7 @@ class EventsControllerTest < ActionController::TestCase
tags: @event.tags } tags: @event.tags }
assert_empty assigns(:event).errors.messages assert_empty assigns(:event).errors.messages
assert_redirected_to event_path(assigns(:event)) assert_redirected_to :root
end end
test 'should get cancel page' do test 'should get cancel page' do

View File

@ -12,4 +12,11 @@ class EventMailerTest < ActionMailer::TestCase
assert_equal ['moderateurs@agendadulibre.org'], mail.from assert_equal ['moderateurs@agendadulibre.org'], mail.from
assert_match(/Bonjour.*/, mail.body.encoded) assert_match(/Bonjour.*/, mail.body.encoded)
end end
test 'update' do
mail = EventMailer.update Event.last
assert_match(/\[Agenda du Libre\] Édition de l'évènement .*/, mail.subject)
assert_equal ['moderateurs@agendadulibre.org'], mail.to
assert_equal ['moderateurs@agendadulibre.org'], mail.from
end
end end

View File

@ -6,4 +6,10 @@ class EventMailerPreview < ActionMailer::Preview
ActionMailer::Base.default_url_options[:host] = 'localhost:3000' ActionMailer::Base.default_url_options[:host] = 'localhost:3000'
EventMailer.create Event.last EventMailer.create Event.last
end end
# Preview this email at http://localhost:3000/rails/mailers/event_mailer/update
def update
ActionMailer::Base.default_url_options[:host] = 'localhost:3000'
EventMailer.update Event.last
end
end end