Implements default mail templates

close #16
This commit is contained in:
Chrisbr 2014-07-16 01:11:33 +02:00
parent 2343db254d
commit 3f45416d48
8 changed files with 163 additions and 36 deletions

View file

@ -168,13 +168,7 @@ module Admin
private
def update_state(id, transition, notice, mail = false)
event = Event.find(id)
if mail && params[:send_mail].blank? && event &&
(event.conference.email_settings.rejected_email_template.nil? ||
event.conference.email_settings.accepted_email_template.nil?)
return redirect_to(admin_conference_events_path(conference_id: @conference.short_title),
notice: 'Update Email Template before Sending Mails') && return
end
event = Event.find_by_id(id)
if event
begin
if mail
@ -185,13 +179,18 @@ module Admin
end
event.save
rescue Transitions::InvalidTransition => e
notice = "Update state failed. #{e.message}"
error = "Update state failed. #{e.message}"
end
else
notice = 'Error! Could not find event!'
error = 'Error! Could not find event!'
end
if error
redirect_to(admin_conference_events_path(conference_id: @conference.short_title),
alert: error) && return
else
redirect_to(admin_conference_events_path(conference_id: @conference.short_title),
notice: notice) && return
end
redirect_to(admin_conference_events_path(conference_id: @conference.short_title),
notice: notice) && return
end
end
end

View file

@ -1,41 +1,88 @@
class Mailbot < ActionMailer::Base
default from: "no-reply@example.com"
def registration_mail(conference, person)
build_email(conference,
person.email,
conference.email_settings.registration_subject,
conference.email_settings.generate_registration_email(conference, person))
def registration_mail(conference, user)
# Send default template if subject or template is blank
if conference.email_settings.registration_subject.blank? ||
conference.email_settings.registration_email_template.blank?
subject = "Registration for #{conference.title}"
template = 'registration_default_template'
send_default_mail(template,
subject,
conference,
user)
else
build_email(conference,
user.email,
conference.email_settings.registration_subject,
conference.email_settings.generate_registration_email(conference, user))
end
end
def acceptance_mail(event)
conference = event.conference
person = event.submitter
build_email(conference,
person.email,
conference.email_settings.accepted_subject,
conference.email_settings.generate_accepted_email(event))
user = event.submitter
# Send default template if subject or template is blank
if conference.email_settings.accepted_subject.blank? ||
conference.email_settings.accepted_email_template.blank?
subject = 'Your proposal has been accepted'
template = 'accepted_default_template'
send_default_mail(template,
subject,
conference,
user,
event)
else
build_email(conference,
user.email,
conference.email_settings.accepted_subject,
conference.email_settings.generate_accepted_email(event))
end
end
def rejection_mail(event)
conference = event.conference
person = event.submitter
user = event.submitter
# Send default template if subject or template is blank
if conference.email_settings.rejected_subject.blank? ||
conference.email_settings.rejected_email_template.blank?
subject = 'Your proposal has been rejected'
template = 'rejected_default_template'
send_default_mail(template,
subject,
conference,
user,
event)
else
build_email(conference,
person.email,
user.email,
conference.email_settings.rejected_subject,
conference.email_settings.generate_rejected_email(event))
end
end
def confirm_reminder_mail(event)
conference = event.conference
person = event.submitter
user = event.submitter
build_email(conference,
person.email,
conference.email_settings.confirmed_without_registration_subject,
conference.email_settings.confirmed_but_not_registered_email(event))
# Send default template if subject or template is blank
if conference.email_settings.confirmed_without_registration_subject.blank? ||
conference.email_settings.confirmed_email_template.blank?
subject = "Your are not registered for #{conference.title}"
template = 'confirmed_default_template'
send_default_mail(template,
subject,
conference,
user,
event)
else
build_email(conference,
user.email,
conference.email_settings.confirmed_without_registration_subject,
conference.email_settings.confirmed_but_not_registered_email(event))
end
end
def conference_date_update_mail(conference,dates)
@ -64,4 +111,19 @@ class Mailbot < ActionMailer::Base
:body => body)
end
def send_default_mail(template, subject, conference, user, event = nil)
@name = user.name
@conference = conference
if event
@event = event
end
mail(to: user.email,
from: conference.contact_email,
reply_to: conference.contact_email,
subject: subject,
template_name: template,
)
end
end

View file

@ -49,6 +49,8 @@ class EmailSettings < ActiveRecord::Base
parse_template(template, values)
end
private
def parse_template(text, values)
values.each do |key, value|
text = text.gsub "{#{key}}", value unless text.blank?

View file

@ -123,9 +123,7 @@ class Event < ActiveRecord::Base
end
def process_confirmation
if conference.email_settings.send_on_confirmed_without_registration? &&
conference.email_settings.confirmed_email_template &&
conference.email_settings.confirmed_without_registration_subject
if conference.email_settings.send_on_confirmed_without_registration?
if conference.registrations.where(user_id: submitter.id).first.nil?
Mailbot.confirm_reminder_mail(self).deliver
end
@ -134,8 +132,6 @@ class Event < ActiveRecord::Base
def process_acceptance(options)
if conference.email_settings.send_on_accepted &&
conference.email_settings.accepted_email_template &&
conference.email_settings.accepted_subject &&
options[:send_mail].blank?
Rails.logger.debug 'Sending event acceptance mail'
Mailbot.acceptance_mail(self).deliver
@ -144,8 +140,6 @@ class Event < ActiveRecord::Base
def process_rejection(options)
if conference.email_settings.send_on_rejected &&
conference.email_settings.rejected_email_template &&
conference.email_settings.rejected_subject &&
options[:send_mail].blank?
Rails.logger.debug 'Sending rejected mail'
Mailbot.rejection_mail(self).deliver

View file

@ -0,0 +1,21 @@
<html>
<body>
<p>Dear <%= @name %>,</p>
<p>We are very pleased to inform you that your submission <%= @event.title %> has been
accepted for the conference <%= @conference.title %>.</p>
<p>The public page of your submission can be found at:</p>
<p><%= link_to "#{@event.title}", register_conference_path(@conference.short_title) %></p>
<p>If you haven´t already registered for <%= @conference.title %>, please do as soon as possible:</p>
<p><%= link_to "Register for #{@conference.title}", register_conference_path(@conference.short_title) %></p>
<p>Feel free to contact us with any questions or concerns.</p>
<p>We look forward to seeing you there.</p>
<p>Best wishes</p>
<p><%= @conference.title %> Team</p>
</body>
</html>

View file

@ -0,0 +1,18 @@
<html>
<body>
<p>Dear <%= @name %>,</p>
<p>Thank you for the confirmation of <%= @event.title %>. Unfortunately you are
not registered for the conference <%= @conference.title %>. Please register as soon as possible:</p>
<p><%= link_to "Register for #{@conference.title}", register_conference_path(@conference.short_title) %></p>
<p>Feel free to contact us with any questions or concerns.</p>
<p>We look forward to seeing you there.</p>
<p>Best wishes</p>
<p><%= @conference.title %> Team</p>
</body>
</html>

View file

@ -0,0 +1,17 @@
<html>
<body>
<p>Dear <%= @name %>,</p>
<p>Thank you for Registering for the conference <%= @conference.title %>.
Please complete your registration by filling out your travel information.
If you are unable to attend please unregister online:</p>
<p><%= link_to "Unregister for #{@conference.title}", register_conference_path(@conference.short_title) %></p>
<p>Feel free to contact us with any questions or concerns.
We look forward to see you there.</p>
<p>Best wishes</p>
<p><%= @conference.title %> Team</p>
</body>
</html>

View file

@ -0,0 +1,14 @@
<html>
<body>
<p>Dear <%= @name %>,</p>
<p>Thank you for your submission <%= @event.title %> for the conference <%= @conference.title %>.
After careful consideration we are sorry to inform you that your submission
has been rejected.</p>
<p>Best wishes</p>
<p><%= @conference.title %> Team</p>
</body>
</html>