From 1a0d3cc1665162dda98625cec296f27c4c5db8c4 Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Sun, 6 Jul 2014 22:05:40 +0200 Subject: [PATCH 1/5] [Bugfix] Admin event states controller #286 fix #287 --- app/controllers/admin/events_controller.rb | 27 ++++++++-------------- 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb index 6b664ec6..08d0065e 100644 --- a/app/controllers/admin/events_controller.rb +++ b/app/controllers/admin/events_controller.rb @@ -169,8 +169,11 @@ module Admin def update_state(id, transition, notice, mail = false) event = Event.find(id) - if mail - check_mail_settings(event) + 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 if event begin @@ -182,25 +185,13 @@ module Admin end event.save rescue Transitions::InvalidTransition => e - redirect_to( - admin_conference_events_path(conference_id: @conference.short_title), - notice: "Update state failed. #{e.message}") && return + notice = "Update state failed. #{e.message}" end - redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: notice) else - redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: 'Error! Could not find event!') - end - end - - def check_mail_settings(event) - if !params[:send_mail].blank? && event && - event.conference.email_settings.rejected_email_template.nil? && - event.conference.email_settings.accepted_email_template.nil? - redirect_to(admin_conference_events_path(conference_id: @conference.short_title), - notice: 'Update Email Template before Sending Mails') && return + notice = 'Error! Could not find event!' end + redirect_to(admin_conference_events_path(conference_id: @conference.short_title), + notice: notice) && return end end end From 35137a3d11994648510453bd2cd48b6d47a8fc78 Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Sun, 6 Jul 2014 22:20:17 +0200 Subject: [PATCH 2/5] [Bugfix] Implements check if mail templates not nil fix #286 --- app/models/event.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/event.rb b/app/models/event.rb index 85ffa892..e8152360 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -123,7 +123,9 @@ class Event < ActiveRecord::Base end def process_confirmation - if conference.email_settings.send_on_confirmed_without_registration? + if conference.email_settings.send_on_confirmed_without_registration? && + conference.email_settings.confirmed_email_template && + conference.email_settings.confirmed_without_registration_subject if conference.registrations.where(user_id: submitter.id).first.nil? Mailbot.confirm_reminder_mail(self).deliver end @@ -132,6 +134,8 @@ 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 @@ -140,6 +144,8 @@ 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 From 2343db254da42b6f84a6ba565200685e117918e3 Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Sun, 6 Jul 2014 22:20:43 +0200 Subject: [PATCH 3/5] [Bugfix] Added missing namespace for TransitionsException --- app/controllers/proposal_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/proposal_controller.rb b/app/controllers/proposal_controller.rb index 1016bad7..9c2fff61 100644 --- a/app/controllers/proposal_controller.rb +++ b/app/controllers/proposal_controller.rb @@ -162,7 +162,7 @@ class ProposalController < ApplicationController if @event.transition_possible? :confirm begin @event.confirm! - rescue InvalidTransition => e + rescue Transitions::InvalidTransition => e redirect_to(conference_proposal_index_path(conference_id: @conference.short_title), alert: "Event was NOT confirmed: #{e.message}") return @@ -187,7 +187,7 @@ class ProposalController < ApplicationController begin @event.restart @event.save - rescue InvalidTransition => e + rescue Transitions::InvalidTransition => e redirect_to(conference_proposal_index_path(conference_id: @conference.short_title), alert: "Event was NOT restarted: #{e.message}") return From 3f45416d4850d79ba7351aff16fc52c2506d3039 Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Wed, 16 Jul 2014 01:11:33 +0200 Subject: [PATCH 4/5] Implements default mail templates close #16 --- app/controllers/admin/events_controller.rb | 21 ++-- app/mailers/mailbot.rb | 98 +++++++++++++++---- app/models/email_settings.rb | 2 + app/models/event.rb | 8 +- .../accepted_default_template.html.erb | 21 ++++ .../confirmed_default_template.html.erb | 18 ++++ .../registration_default_template.html.erb | 17 ++++ .../rejected_default_template.html.erb | 14 +++ 8 files changed, 163 insertions(+), 36 deletions(-) create mode 100644 app/views/mailbot/accepted_default_template.html.erb create mode 100644 app/views/mailbot/confirmed_default_template.html.erb create mode 100644 app/views/mailbot/registration_default_template.html.erb create mode 100644 app/views/mailbot/rejected_default_template.html.erb diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb index 08d0065e..dac7d505 100644 --- a/app/controllers/admin/events_controller.rb +++ b/app/controllers/admin/events_controller.rb @@ -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 diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index a7bd0807..38f5904d 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -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 diff --git a/app/models/email_settings.rb b/app/models/email_settings.rb index 633c6834..c9d759ea 100644 --- a/app/models/email_settings.rb +++ b/app/models/email_settings.rb @@ -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? diff --git a/app/models/event.rb b/app/models/event.rb index e8152360..85ffa892 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -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 diff --git a/app/views/mailbot/accepted_default_template.html.erb b/app/views/mailbot/accepted_default_template.html.erb new file mode 100644 index 00000000..02b8a30c --- /dev/null +++ b/app/views/mailbot/accepted_default_template.html.erb @@ -0,0 +1,21 @@ + + +

Dear <%= @name %>,

+ +

We are very pleased to inform you that your submission <%= @event.title %> has been + accepted for the conference <%= @conference.title %>.

+ +

The public page of your submission can be found at:

+

<%= link_to "#{@event.title}", register_conference_path(@conference.short_title) %>

+

If you haven“t already registered for <%= @conference.title %>, please do as soon as possible:

+

<%= link_to "Register for #{@conference.title}", register_conference_path(@conference.short_title) %>

+ +

Feel free to contact us with any questions or concerns.

+ +

We look forward to seeing you there.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + diff --git a/app/views/mailbot/confirmed_default_template.html.erb b/app/views/mailbot/confirmed_default_template.html.erb new file mode 100644 index 00000000..f050b95d --- /dev/null +++ b/app/views/mailbot/confirmed_default_template.html.erb @@ -0,0 +1,18 @@ + + +

Dear <%= @name %>,

+ +

Thank you for the confirmation of <%= @event.title %>. Unfortunately you are + not registered for the conference <%= @conference.title %>. Please register as soon as possible:

+ +

<%= link_to "Register for #{@conference.title}", register_conference_path(@conference.short_title) %>

+ +

Feel free to contact us with any questions or concerns.

+ +

We look forward to seeing you there.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + diff --git a/app/views/mailbot/registration_default_template.html.erb b/app/views/mailbot/registration_default_template.html.erb new file mode 100644 index 00000000..d2f12f66 --- /dev/null +++ b/app/views/mailbot/registration_default_template.html.erb @@ -0,0 +1,17 @@ + + +

Dear <%= @name %>,

+ +

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:

+

<%= link_to "Unregister for #{@conference.title}", register_conference_path(@conference.short_title) %>

+ +

Feel free to contact us with any questions or concerns. + We look forward to see you there.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + diff --git a/app/views/mailbot/rejected_default_template.html.erb b/app/views/mailbot/rejected_default_template.html.erb new file mode 100644 index 00000000..53ce784b --- /dev/null +++ b/app/views/mailbot/rejected_default_template.html.erb @@ -0,0 +1,14 @@ + + +

Dear <%= @name %>,

+ +

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.

+ +

Best wishes

+ +

<%= @conference.title %> Team

+ + + From f11f1fc44a0d56b3d63248d7ed87f3019e394821 Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Wed, 16 Jul 2014 01:11:43 +0200 Subject: [PATCH 5/5] Send mail attributes defaults are now FALSE --- ...6115448_add_default_value_to_email_settings.rb | 15 +++++++++++++++ db/schema.rb | 10 +++++----- 2 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20140716115448_add_default_value_to_email_settings.rb diff --git a/db/migrate/20140716115448_add_default_value_to_email_settings.rb b/db/migrate/20140716115448_add_default_value_to_email_settings.rb new file mode 100644 index 00000000..b49eb492 --- /dev/null +++ b/db/migrate/20140716115448_add_default_value_to_email_settings.rb @@ -0,0 +1,15 @@ +class AddDefaultValueToEmailSettings < ActiveRecord::Migration + def up + change_column :email_settings, :send_on_registration, :boolean, default: false + change_column :email_settings, :send_on_accepted, :boolean, default: false + change_column :email_settings, :send_on_rejected, :boolean, default: false + change_column :email_settings, :send_on_confirmed_without_registration, :boolean, default: false + end + + def down + change_column :email_settings, :send_on_registration, :boolean, default: true + change_column :email_settings, :send_on_accepted, :boolean, default: true + change_column :email_settings, :send_on_rejected, :boolean, default: true + change_column :email_settings, :send_on_confirmed_without_registration, :boolean, default: true + end +end diff --git a/db/schema.rb b/db/schema.rb index e45fb684..0fcc8024 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140714141156) do +ActiveRecord::Schema.define(version: 20140716115448) do create_table "ahoy_events", force: true do |t| t.uuid "visit_id" @@ -150,10 +150,10 @@ ActiveRecord::Schema.define(version: 20140714141156) do create_table "email_settings", force: true do |t| t.integer "conference_id" - t.boolean "send_on_registration", default: true - t.boolean "send_on_accepted", default: true - t.boolean "send_on_rejected", default: true - t.boolean "send_on_confirmed_without_registration", default: true + t.boolean "send_on_registration", default: false + t.boolean "send_on_accepted", default: false + t.boolean "send_on_rejected", default: false + t.boolean "send_on_confirmed_without_registration", default: false t.text "registration_email_template" t.text "accepted_email_template" t.text "rejected_email_template"