From caa0dec6c456e81f3c5b48532398d51dea6dcb5a Mon Sep 17 00:00:00 2001 From: Matt Barringer Date: Thu, 17 Jan 2013 13:56:05 +0100 Subject: [PATCH] Fix bug in track list, also send accept/reject mails --- app/controllers/admin/events_controller.rb | 2 +- .../conference_registration_controller.rb | 2 +- app/mailers/mailbot.rb | 57 ++++++++++++------- app/models/email_settings.rb | 22 +++---- app/models/event.rb | 10 +++- config/config.yml | 13 +++++ config/initializers/osem.rb | 1 + 7 files changed, 70 insertions(+), 37 deletions(-) create mode 100644 config/config.yml create mode 100644 config/initializers/osem.rb diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb index 30cdcef8..3d2aac51 100644 --- a/app/controllers/admin/events_controller.rb +++ b/app/controllers/admin/events_controller.rb @@ -17,7 +17,7 @@ class Admin::EventsController < ApplicationController def show @event = @conference.events.find(params[:id]) - @tracks = Track.all + @tracks = @conference.tracks @comments = @event.root_comments @comment_count = @event.comment_threads.count end diff --git a/app/controllers/conference_registration_controller.rb b/app/controllers/conference_registration_controller.rb index ed24ba3d..11b54c69 100644 --- a/app/controllers/conference_registration_controller.rb +++ b/app/controllers/conference_registration_controller.rb @@ -39,7 +39,7 @@ class ConferenceRegistrationController < ApplicationController if update_registration redirect_message = "Registration updated." else - Mailbot.registration_mail(request.host_with_port, conference, current_user.person).deliver + Mailbot.registration_mail(conference, current_user.person).deliver end redirect_to(register_conference_path(:id => conference.short_title), :notice => redirect_message) end diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index 16251944..abc60968 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -1,36 +1,49 @@ class Mailbot < ActionMailer::Base default from: "no-reply@example.com" - def registration_mail(host, conference, person) - mail(:to => person.email, - :from => conference.contact_email, - :reply_to => conference.contact_email, - :subject => conference.email_settings.registration_subject, - :body => conference.email_settings.generate_registration_email(host, conference, person)) + def registration_mail(conference, person) + build_email(conference, + person.email, + conference.email_settings.registration_subject, + conference.email_settings.generate_registration_email(conference, person)) + end - def acceptance_mail(host, conference, person, event) - mail(:to => person.email, - :from => conference.contact_email, - :reply_to => conference.contact_email, - :subject => conference.email_settings.accepted_subject, - :body => conference.email_settings.generate_accepted_email(host, conference, person, event)) + 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)) + end - def rejection_mail(host, conference, person, event) - mail(:to => person.email, - :from => conference.contact_email, - :reply_to => conference.contact_email, - :subject => conference.email_settings.rejected_subject, - :body => conference.email_settings.generate_rejected_email(host, conference, person, event)) + def rejection_mail(event) + conference = event.conference + person = event.submitter + build_email(conference, + person.email, + conference.email_settings.rejected_subject, + conference.email_settings.generate_rejected_email(event)) end - def confirm_reminder_mail(host, conference, person, event) - mail(:to => person.email, + def confirm_reminder_mail(event) + 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, :reply_to => conference.contact_email, - :subject => conference.email_settings.confirmed_without_registration_subject, - :body => conference.email_settings.confirmed_but_not_registered_email(host, conference, person, event)) + :subject => subject, + :body => body) end end diff --git a/app/models/email_settings.rb b/app/models/email_settings.rb index a5e4e8c4..2175eb0f 100644 --- a/app/models/email_settings.rb +++ b/app/models/email_settings.rb @@ -3,13 +3,13 @@ class EmailSettings < ActiveRecord::Base :registration_email_template, :accepted_email_template, :rejected_email_template, :confirmed_email_template, :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 = { "email" => person.email, "name" => person.public_name, "conference" => conference.title, - "proposalslink" => Rails.application.routes.url_helpers.conference_proposal_index_url(conference.short_title, :host => host), - "registrationlink" => Rails.application.routes.url_helpers.register_conference_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 => OSEM_CONFIG["url_for_emails"]) } if !event.nil? @@ -18,27 +18,27 @@ class EmailSettings < ActiveRecord::Base h end - def generate_registration_email(host, conference, person) - values = get_values(host, conference, person, nil) + def generate_registration_email(conference, person) + values = get_values(conference, person) template = self.registration_email_template parse_template(template, values) end - def generate_accepted_email(host, conference, person, event) - values = get_values(host, conference, person, event) + def generate_accepted_email(event) + values = get_values(event.conference, event.submitter, event) template = self.accepted_email_template parse_template(template, values) end - def generate_rejected_email(host, conference, person, event) - values = get_values(host, conference, person, event) + def generate_rejected_email(event) + values = get_values(event.conference, event.submitter, event) template = self.rejected_email_template parse_template(template, values) end - def confirmed_but_not_registered_email(host, conference, person, event) - values = get_values(host, conference, person, event) + def confirmed_but_not_registered_email(event) + values = get_values(event.conference, event.submitter, event) template = self.confirmed_email_template parse_template(template, values) end diff --git a/app/models/event.rb b/app/models/event.rb index d4ae54a5..9ebe6759 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -91,9 +91,15 @@ class Event < ActiveRecord::Base end def process_acceptance(options) - #if options[:send_mail] - #end + if options[:send_mail] + Mailbot.acceptance_mail(self).deliver + end + end + def process_rejection(options) + if options[:send_mail] + Mailbot.rejection_mail(self).deliver + end end def public_state diff --git a/config/config.yml b/config/config.yml new file mode 100644 index 00000000..b5e79200 --- /dev/null +++ b/config/config.yml @@ -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 + diff --git a/config/initializers/osem.rb b/config/initializers/osem.rb new file mode 100644 index 00000000..ae78358a --- /dev/null +++ b/config/initializers/osem.rb @@ -0,0 +1 @@ +OSEM_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]