Fix bug in track list, also send accept/reject mails

This commit is contained in:
Matt Barringer 2013-01-17 13:56:05 +01:00
parent f10d5e4c0e
commit caa0dec6c4
7 changed files with 70 additions and 37 deletions

View file

@ -17,7 +17,7 @@ class Admin::EventsController < ApplicationController
def show def show
@event = @conference.events.find(params[:id]) @event = @conference.events.find(params[:id])
@tracks = Track.all @tracks = @conference.tracks
@comments = @event.root_comments @comments = @event.root_comments
@comment_count = @event.comment_threads.count @comment_count = @event.comment_threads.count
end end

View file

@ -39,7 +39,7 @@ class ConferenceRegistrationController < ApplicationController
if update_registration if update_registration
redirect_message = "Registration updated." redirect_message = "Registration updated."
else else
Mailbot.registration_mail(request.host_with_port, conference, current_user.person).deliver Mailbot.registration_mail(conference, current_user.person).deliver
end end
redirect_to(register_conference_path(:id => conference.short_title), :notice => redirect_message) redirect_to(register_conference_path(:id => conference.short_title), :notice => redirect_message)
end end

View file

@ -1,36 +1,49 @@
class Mailbot < ActionMailer::Base class Mailbot < ActionMailer::Base
default from: "no-reply@example.com" default from: "no-reply@example.com"
def registration_mail(host, conference, person) def registration_mail(conference, person)
mail(:to => person.email, build_email(conference,
:from => conference.contact_email, person.email,
:reply_to => conference.contact_email, conference.email_settings.registration_subject,
:subject => conference.email_settings.registration_subject, conference.email_settings.generate_registration_email(conference, person))
:body => conference.email_settings.generate_registration_email(host, conference, person))
end end
def acceptance_mail(host, conference, person, event) def acceptance_mail(event)
mail(:to => person.email, conference = event.conference
:from => conference.contact_email, person = event.submitter
:reply_to => conference.contact_email, build_email(conference,
:subject => conference.email_settings.accepted_subject, person.email,
:body => conference.email_settings.generate_accepted_email(host, conference, person, event)) conference.email_settings.accepted_subject,
conference.email_settings.generate_accepted_email(event))
end end
def rejection_mail(host, conference, person, event) def rejection_mail(event)
mail(:to => person.email, conference = event.conference
:from => conference.contact_email, person = event.submitter
:reply_to => conference.contact_email, build_email(conference,
:subject => conference.email_settings.rejected_subject, person.email,
:body => conference.email_settings.generate_rejected_email(host, conference, person, event)) conference.email_settings.rejected_subject,
conference.email_settings.generate_rejected_email(event))
end end
def confirm_reminder_mail(host, conference, person, event) def confirm_reminder_mail(event)
mail(:to => person.email, conference = event.conference
person = event.submitter
build_email(conference,
person.email,
conference.email_settings.confirmed_without_registration_subject,
conference.email_settings.confirmed_but_not_registered_email(event))
end
def build_email(conference, to, subject, body)
mail(:to => to,
:from => conference.contact_email, :from => conference.contact_email,
:reply_to => conference.contact_email, :reply_to => conference.contact_email,
:subject => conference.email_settings.confirmed_without_registration_subject, :subject => subject,
:body => conference.email_settings.confirmed_but_not_registered_email(host, conference, person, event)) :body => body)
end end
end end

View file

@ -3,13 +3,13 @@ class EmailSettings < ActiveRecord::Base
:registration_email_template, :accepted_email_template, :rejected_email_template, :confirmed_email_template, :registration_email_template, :accepted_email_template, :rejected_email_template, :confirmed_email_template,
:registration_subject, :accepted_subject, :rejected_subject, :confirmed_without_registration_subject :registration_subject, :accepted_subject, :rejected_subject, :confirmed_without_registration_subject
def get_values(host, conference, person, event) def get_values(conference, person, event = nil)
h = { h = {
"email" => person.email, "email" => person.email,
"name" => person.public_name, "name" => person.public_name,
"conference" => conference.title, "conference" => conference.title,
"proposalslink" => Rails.application.routes.url_helpers.conference_proposal_index_url(conference.short_title, :host => host), "proposalslink" => Rails.application.routes.url_helpers.conference_proposal_url(conference.short_title, event, :host => OSEM_CONFIG["url_for_emails"]),
"registrationlink" => Rails.application.routes.url_helpers.register_conference_url(conference.short_title, :host => host) "registrationlink" => Rails.application.routes.url_helpers.register_conference_url(conference.short_title, :host => OSEM_CONFIG["url_for_emails"])
} }
if !event.nil? if !event.nil?
@ -18,27 +18,27 @@ class EmailSettings < ActiveRecord::Base
h h
end end
def generate_registration_email(host, conference, person) def generate_registration_email(conference, person)
values = get_values(host, conference, person, nil) values = get_values(conference, person)
template = self.registration_email_template template = self.registration_email_template
parse_template(template, values) parse_template(template, values)
end end
def generate_accepted_email(host, conference, person, event) def generate_accepted_email(event)
values = get_values(host, conference, person, event) values = get_values(event.conference, event.submitter, event)
template = self.accepted_email_template template = self.accepted_email_template
parse_template(template, values) parse_template(template, values)
end end
def generate_rejected_email(host, conference, person, event) def generate_rejected_email(event)
values = get_values(host, conference, person, event) values = get_values(event.conference, event.submitter, event)
template = self.rejected_email_template template = self.rejected_email_template
parse_template(template, values) parse_template(template, values)
end end
def confirmed_but_not_registered_email(host, conference, person, event) def confirmed_but_not_registered_email(event)
values = get_values(host, conference, person, event) values = get_values(event.conference, event.submitter, event)
template = self.confirmed_email_template template = self.confirmed_email_template
parse_template(template, values) parse_template(template, values)
end end

View file

@ -91,9 +91,15 @@ class Event < ActiveRecord::Base
end end
def process_acceptance(options) def process_acceptance(options)
#if options[:send_mail] if options[:send_mail]
#end Mailbot.acceptance_mail(self).deliver
end
end
def process_rejection(options)
if options[:send_mail]
Mailbot.rejection_mail(self).deliver
end
end end
def public_state def public_state

13
config/config.yml Normal file
View file

@ -0,0 +1,13 @@
defaults: &defaults
# The hostname to be used when building the URL in the emails
url_for_emails: localhost:3000
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults

View file

@ -0,0 +1 @@
OSEM_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]