Mails de refus d'évt envoyés au soumetteur et aux modérateurs
This commit is contained in:
parent
026aa24e8f
commit
dbf2362399
@ -1,3 +1,5 @@
|
||||
# Place all the behaviors and hooks related to the matching controller here.
|
||||
# All this logic will automatically be available in application.js.
|
||||
# You can use CoffeeScript in this file: http://coffeescript.org/
|
||||
$(document).ready ->
|
||||
$('body.moderations .field.closer input[type=radio]').click ->
|
||||
$('body.moderations #reason_text').parent().slideUp()
|
||||
$('body.moderations .field.opener input[type=radio]').click ->
|
||||
$('body.moderations #reason_text').parent().slideDown()
|
||||
|
@ -115,7 +115,7 @@ body.events.index table
|
||||
float: right
|
||||
width: 15em
|
||||
border: 1px solid #96CFFF
|
||||
margin: 5em 1.2em 0px
|
||||
margin: 0 1.2em
|
||||
padding: 5px
|
||||
font-size: 0.7em
|
||||
background-color: #D6ECFF
|
||||
|
@ -57,7 +57,13 @@ class ModerationsController < ApplicationController
|
||||
def destroy
|
||||
if @moderation.destroy
|
||||
# Send a notification to its author
|
||||
@reason = 'pas cool'
|
||||
if params[:reason] == 'r_4'
|
||||
@reason = params[:reason_text]
|
||||
else
|
||||
@reason = t("reason_#{params[:reason]}_long", scope: [:moderations, :refuse])
|
||||
end
|
||||
|
||||
EventMailer.destroy(@moderation, current_user, @reason).deliver
|
||||
ModerationMailer.destroy(@moderation, current_user, @reason).deliver
|
||||
end
|
||||
respond_to do |format|
|
||||
|
@ -1,6 +1,4 @@
|
||||
class EventMailer < ActionMailer::Base
|
||||
default from: 'moderateurs@agendadulibre.org'
|
||||
|
||||
def create(event)
|
||||
@event = event
|
||||
|
||||
@ -13,8 +11,18 @@ class EventMailer < ActionMailer::Base
|
||||
@event = event
|
||||
@current_user = current_user
|
||||
|
||||
mail 'Message-ID' => "<event-#{event.id}@#{ActionMailer::Base.default_url_options[:host]}>",
|
||||
mail 'In-Reply-To' => "<event-#{event.id}@#{ActionMailer::Base.default_url_options[:host]}>",
|
||||
to: event.contact,
|
||||
subject: t('event_mailer.accept.subject', subject: event.title)
|
||||
end
|
||||
|
||||
def destroy(event, current_user, reason)
|
||||
@event = event
|
||||
@current_user = current_user
|
||||
@reason = reason
|
||||
|
||||
mail 'In-Reply-To' => "<event-#{event.id}@#{ActionMailer::Base.default_url_options[:host]}>",
|
||||
to: event.contact,
|
||||
subject: t('event_mailer.destroy.subject', subject: event.title)
|
||||
end
|
||||
end
|
||||
|
@ -1,7 +1,4 @@
|
||||
class ModerationMailer < ActionMailer::Base
|
||||
default from: 'moderateurs@agendadulibre.org'
|
||||
default to: 'moderateurs@agendadulibre.org'
|
||||
|
||||
def create(event)
|
||||
@event = event
|
||||
|
||||
|
@ -1,6 +1,4 @@
|
||||
class NoteMailer < ActionMailer::Base
|
||||
default from: 'moderateurs@agendadulibre.org'
|
||||
|
||||
def create(note)
|
||||
@note = note
|
||||
|
||||
|
23
app/views/event_mailer/destroy.text.haml
Normal file
23
app/views/event_mailer/destroy.text.haml
Normal file
@ -0,0 +1,23 @@
|
||||
=t '.title'
|
||||
\
|
||||
=t '.body', author: @current_user
|
||||
\
|
||||
= @reason
|
||||
\
|
||||
=t '.reclamation'
|
||||
\
|
||||
=t '.reminder'
|
||||
=====================================================
|
||||
#{Event.human_attribute_name :title}: #{@event.title}
|
||||
#{Event.human_attribute_name :start_time}: #{l @event.start_time, format: :at}
|
||||
#{Event.human_attribute_name :end_time}: #{l @event.end_time, format: :at}
|
||||
#{Event.human_attribute_name :region}: #{@event.region}
|
||||
#{Event.human_attribute_name :city}: #{@event.city}
|
||||
#{Event.human_attribute_name :url}: #{@event.url}
|
||||
#{Event.human_attribute_name :contact}: #{@event.contact}
|
||||
#{Event.human_attribute_name :submitter}: #{@event.submitter}
|
||||
#{Event.human_attribute_name :tags}: #{@event.tags}
|
||||
#{Event.human_attribute_name :description}: #{raw @event.description}
|
||||
=====================================================
|
||||
\
|
||||
=t '.signature'
|
@ -1,6 +1,6 @@
|
||||
=t '.title'
|
||||
\
|
||||
=t '.body', author: @current_user
|
||||
=t '.body', subject: @event.title, author: @current_user
|
||||
\
|
||||
= @reason
|
||||
\
|
||||
|
@ -6,21 +6,28 @@
|
||||
.box
|
||||
%h2=t '.question'
|
||||
|
||||
= form_for @moderation, method: :delete do |f|
|
||||
.field
|
||||
= radio_button_tag :event, :contents_1, {}, value: t('.contents_1_long')
|
||||
= label_tag :event_contents_1, t('.contents_1')
|
||||
.field
|
||||
= radio_button_tag :event, :contents_2, {}, value: t('.contents_2_long')
|
||||
= label_tag :event_contents_2, t('.contents_2')
|
||||
.field
|
||||
= radio_button_tag :event, :contents_3, {}, value: t('.contents_3_long')
|
||||
= label_tag :event_contents_3, t('.contents_3')
|
||||
.field
|
||||
= radio_button_tag :event, :contents_4, {}, value: t('.contents_4_long')
|
||||
= label_tag :event_contents_4, t('.contents_4')
|
||||
= form_tag moderation_path(@moderation), method: :delete do |f|
|
||||
.field.closer(title="#{t '.reason_r_1_long'}")
|
||||
= radio_button_tag :reason, :r_1, params[:event] == 'reason_r_1'
|
||||
= label_tag :reason_r_1, t('.reason_r_1')
|
||||
|
||||
= f.submit t('.ok')
|
||||
.field.closer(title="#{t '.reason_r_2_long'}")
|
||||
= radio_button_tag :reason, :r_2, params[:event] == 'reason_r_2'
|
||||
= label_tag :reason_r_2, t('.reason_r_2')
|
||||
|
||||
.field.closer(title="#{t '.reason_r_3_long'}")
|
||||
= radio_button_tag :reason, :r_3, params[:event] == 'reason_r_3'
|
||||
= label_tag :reason_r_3, t('.reason_r_3')
|
||||
|
||||
.field.opener(title="#{t '.reason_r_4_long'}")
|
||||
= radio_button_tag :reason, :r_4, params[:event] == 'reason_r_4' || !params[:event]
|
||||
= label_tag :reason_r_4, t('.reason_r_4')
|
||||
|
||||
.field
|
||||
= label_tag :reason_text, t('.reason_text')
|
||||
= text_area_tag :reason_text, nil, cols: 40, rows: 5
|
||||
|
||||
= submit_tag t '.ok'
|
||||
= link_to t('.ko'), moderations_url, class: :button
|
||||
|
||||
.box= render file: '/events/show'
|
||||
|
@ -24,6 +24,8 @@ module AgendaDuLibreRails
|
||||
|
||||
I18n.config.enforce_available_locales = true
|
||||
|
||||
config.action_mailer.default_options = {from: 'moderateurs@agendadulibre.org', to: 'moderateurs@agendadulibre.org'}
|
||||
|
||||
#config.quiet_assets = false
|
||||
end
|
||||
end
|
||||
|
@ -208,14 +208,14 @@ fr:
|
||||
question: Quel motif souhaitez-vous associer au rejet de cet évènement?
|
||||
ok: Rejeter
|
||||
ko: Annuler
|
||||
contents_1: Hors sujet
|
||||
contents_2: Pas assez d'informations
|
||||
contents_3: Évènement déjà enregistré
|
||||
contents_4: Raison spécifique (précisez)
|
||||
contents_1_long: Toutefois, l'évènement proposé n'a pour l'instant pas retenu l'attention des modérateurs. En effet, l'évènement proposé ne concerne pas le Logiciel Libre, ou bien le lien avec le Logiciel Libre n'est pas évident dans la formulation actuelle, ou alors il s'agit d'un évènement ou d'une formation payante et coûteuse. Si l'évènement concerne vraiment le Logiciel Libre et qu'il ne s'agit pas d'une formation payante, n'hésitez pas à le soumettre à nouveau avec une description plus claire.
|
||||
contents_2_long: Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais les modérateurs trouvent que la description de celui-ci n'est pas assez complète pour être validée.\n\nLa description doit être compréhensible par un nouveau venu dans le monde du Libre, et doit donc préciser le principe de la rencontre, le public visé, la rôle du ou des Logiciels Libres qui seront exposés, la date et le lieu précis de la rencontre. Même si il s'agit d'une rencontre régulière, n'hésitez pas à répéter à chaque fois ces informations, elles sont importantes.\n\nNous vous invitons donc vivement à soumettre à nouveau cet évènement avec une description plus complète.
|
||||
contents_3_long: Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais il est déjà enregistré dans celui-ci.
|
||||
contents_4_long: Toutefois, votre évènement n'a pour le moment pas retenu l'attention des modérateurs, pour la raison suivante
|
||||
reason_r_1: Hors sujet
|
||||
reason_r_2: Pas assez d'informations
|
||||
reason_r_3: Évènement déjà enregistré
|
||||
reason_r_4: Raison spécifique (précisez)
|
||||
reason_r_1_long: Toutefois, l'évènement proposé n'a pour l'instant pas retenu l'attention des modérateurs. En effet, l'évènement proposé ne concerne pas le Logiciel Libre, ou bien le lien avec le Logiciel Libre n'est pas évident dans la formulation actuelle, ou alors il s'agit d'un évènement ou d'une formation payante et coûteuse. Si l'évènement concerne vraiment le Logiciel Libre et qu'il ne s'agit pas d'une formation payante, n'hésitez pas à le soumettre à nouveau avec une description plus claire.
|
||||
reason_r_2_long: Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais les modérateurs trouvent que la description de celui-ci n'est pas assez complète pour être validée.\n\nLa description doit être compréhensible par un nouveau venu dans le monde du Libre, et doit donc préciser le principe de la rencontre, le public visé, la rôle du ou des Logiciels Libres qui seront exposés, la date et le lieu précis de la rencontre. Même si il s'agit d'une rencontre régulière, n'hésitez pas à répéter à chaque fois ces informations, elles sont importantes.\n\nNous vous invitons donc vivement à soumettre à nouveau cet évènement avec une description plus complète.
|
||||
reason_r_3_long: Votre évènement a tout à fait sa place dans l'Agenda du Libre, mais il est déjà enregistré dans celui-ci.
|
||||
reason: Votre raison
|
||||
destroy:
|
||||
ok: Évènement rejeté
|
||||
notes:
|
||||
@ -261,6 +261,13 @@ fr:
|
||||
edit_link: "Vous pouvez modifier cet évènement ultérieurement pour y ajouter des précisions en vous rendant à l'adresse:"
|
||||
delete_link: "Vous pouvez également l'annuler en vous rendant à l'adresse:"
|
||||
signature: "Merci de votre contribution à l'Agenda du Libre et à bientôt!\n\n-- \nL'équipe de modération"
|
||||
destroy:
|
||||
subject: "[Agenda du Libre] Évènement '%{subject}' refusé"
|
||||
title: Bonjour,
|
||||
body: Vous avez soumis l'évènement suivant dans l'Agenda du Libre, et nous vous remercions de cette contribution.
|
||||
reminder: "Pour rappel, voici le contenu de votre évènement:"
|
||||
reclamation: Pour toute réclamation, n'hésitez pas à contacter l'équipe de modérateurs.
|
||||
signature: "Avec tous nos remerciements pour votre contribution,\n\n-- \nL'équipe de modération"
|
||||
moderation_mailer:
|
||||
create:
|
||||
subject: "[Agenda du Libre] Nouvel évènement à modérer: '%{subject}'"
|
||||
@ -281,9 +288,9 @@ fr:
|
||||
destroy:
|
||||
subject: "[Agenda du Libre] Évènement '%{subject}' refusé"
|
||||
title: Bonjour,
|
||||
body: Vous avez soumis l'évènement suivant dans l'Agenda du Libre, et nous vous remercions de cette contribution.
|
||||
reminder: "Pour rappel, voici le contenu de votre évènement:"
|
||||
signature: "Avec tous nos remerciements pour votre contribution,\n\n-- \nL'équipe de modération"
|
||||
body: "L'évènement '%{subject}' a été rejeté par %{author} pour la raison suivante:\n\n"
|
||||
reminder: "Pour rappel, l'évènement:"
|
||||
signature: "-- \nL'équipe des modérateurs de l'Agenda du Libre"
|
||||
note_mailer:
|
||||
create:
|
||||
subject: "[Agenda du Libre] Demande d'informations sur l'évènement '%{subject}'"
|
||||
|
@ -20,7 +20,7 @@ class ModerationsControllerTest < ActionController::TestCase
|
||||
test 'should accept event' do
|
||||
put :accept, id: @moderation
|
||||
|
||||
assert assigns(:moderation).is_moderated?
|
||||
assert assigns(:moderation).moderated?
|
||||
assert_empty assigns(:moderation).errors
|
||||
assert_redirected_to moderations_path
|
||||
end
|
||||
|
@ -14,8 +14,15 @@ class EventMailerTest < ActionMailer::TestCase
|
||||
end
|
||||
|
||||
test 'accept' do
|
||||
mail = EventMailer.accept Event.last
|
||||
assert_match(/\[Agenda du Libre\] Évènement: .* modéré/, mail.subject)
|
||||
mail = EventMailer.accept Event.last, User.last
|
||||
assert_match(/\[Agenda du Libre\] Évènement .* modéré/, mail.subject)
|
||||
assert_equal [Event.last.contact], mail.to
|
||||
assert_equal ['moderateurs@agendadulibre.org'], mail.from
|
||||
end
|
||||
|
||||
test 'destroy' do
|
||||
mail = EventMailer.destroy Event.last, User.last, 'hello world'
|
||||
assert_match(/\[Agenda du Libre\] Évènement .* refusé/, mail.subject)
|
||||
assert_equal [Event.last.contact], mail.to
|
||||
assert_equal ['moderateurs@agendadulibre.org'], mail.from
|
||||
end
|
||||
|
@ -12,4 +12,10 @@ class EventMailerPreview < ActionMailer::Preview
|
||||
ActionMailer::Base.default_url_options[:host] = 'localhost:3000'
|
||||
EventMailer.accept Event.last, User.last
|
||||
end
|
||||
|
||||
# Preview this email at http://localhost:3000/rails/mailers/event_mailer/destroy
|
||||
def destroy
|
||||
ActionMailer::Base.default_url_options[:host] = 'localhost:3000'
|
||||
EventMailer.destroy Event.last, User.last, 'hello world'
|
||||
end
|
||||
end
|
||||
|
@ -26,7 +26,6 @@ hello world'
|
||||
# Preview this email at http://localhost:3000/rails/mailers/moderation_mailer/destroy
|
||||
def destroy
|
||||
ActionMailer::Base.default_url_options[:host] = 'localhost:3000'
|
||||
@reason = 'pas cool'
|
||||
ModerationMailer.destroy Event.last, User.last, @reason
|
||||
ModerationMailer.destroy Event.last, User.last, 'hello world'
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user