diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 98517d7f..3e7290b2 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -80,6 +80,9 @@ class EventsController < ApplicationController respond_to do |format| if @event.update event_params + # Send an update mail to moderators + EventMailer.update(@event).deliver + format.html { redirect_to :root, notice: t('.ok') } format.json { head :no_content } else diff --git a/app/mailers/event_mailer.rb b/app/mailers/event_mailer.rb index e46c0a79..ef35bdc2 100644 --- a/app/mailers/event_mailer.rb +++ b/app/mailers/event_mailer.rb @@ -1,5 +1,6 @@ class EventMailer < ActionMailer::Base default from: 'moderateurs@agendadulibre.org' + default to: 'moderateurs@agendadulibre.org' def create(event) @event = event @@ -8,4 +9,11 @@ class EventMailer < ActionMailer::Base to: event.contact, subject: t('event_mailer.create.subject', subject: event.title) end + + def update(event) + @event = event + + mail 'In-Reply-To' => "", + subject: t('event_mailer.update.subject', subject: event.title) + end end diff --git a/app/views/event_mailer/update.text.haml b/app/views/event_mailer/update.text.haml new file mode 100644 index 00000000..2931d630 --- /dev/null +++ b/app/views/event_mailer/update.text.haml @@ -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' diff --git a/config/locales/fr.yml b/config/locales/fr.yml index d36cf975..169161bf 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -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:" delete_link: "et vous pouvez l'annuler en utilisant l'adresse:" 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: create: subject: "[Agenda du Libre] Nouvel évènement à modérer: '%{subject}'" diff --git a/test/controllers/events_controller_test.rb b/test/controllers/events_controller_test.rb index d727034b..8141d124 100644 --- a/test/controllers/events_controller_test.rb +++ b/test/controllers/events_controller_test.rb @@ -95,7 +95,7 @@ class EventsControllerTest < ActionController::TestCase tags: @event.tags } assert_empty assigns(:event).errors.messages - assert_redirected_to event_path(assigns(:event)) + assert_redirected_to :root end test 'should get cancel page' do diff --git a/test/mailers/event_mailer_test.rb b/test/mailers/event_mailer_test.rb index 58aefba3..8b40d00d 100644 --- a/test/mailers/event_mailer_test.rb +++ b/test/mailers/event_mailer_test.rb @@ -12,4 +12,11 @@ class EventMailerTest < ActionMailer::TestCase assert_equal ['moderateurs@agendadulibre.org'], mail.from assert_match(/Bonjour.*/, mail.body.encoded) 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 diff --git a/test/mailers/previews/event_mailer_preview.rb b/test/mailers/previews/event_mailer_preview.rb index 86f10966..9178029b 100644 --- a/test/mailers/previews/event_mailer_preview.rb +++ b/test/mailers/previews/event_mailer_preview.rb @@ -6,4 +6,10 @@ class EventMailerPreview < ActionMailer::Preview ActionMailer::Base.default_url_options[:host] = 'localhost:3000' EventMailer.create Event.last 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