From 424bf19a9116eae6736759ecfacca606d82a41ed 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 ffabf501..c33f4c5a 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 a88f7c168fb9cb38e9da3b3117cfb247d2f34921 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 53d696e0..ce823b6c 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -125,7 +125,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 @@ -134,6 +136,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 @@ -142,6 +146,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 2254c2e35981a7634eb602633f4f96cf11403f3a 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 b485d6cf..32c9cd87 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 @@ -186,7 +186,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 7192e2fe49471bf31b12e9ab20597863f47ba8aa Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Wed, 23 Jul 2014 13:20:10 +0200 Subject: [PATCH 4/5] Send mail attributes are now on default false --- ...448_add_default_value_to_email_settings.rb | 21 +++++++++++++++++++ db/schema.rb | 16 +++++++------- 2 files changed, 29 insertions(+), 8 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..947aca55 --- /dev/null +++ b/db/migrate/20140716115448_add_default_value_to_email_settings.rb @@ -0,0 +1,21 @@ +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 + change_column :email_settings, :send_on_updated_conference_dates, :boolean, default: false + change_column :email_settings, :send_on_updated_conference_registration_dates, :boolean, default: false + change_column :email_settings, :send_on_venue_update, :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 + change_column :email_settings, :send_on_updated_conference_dates, :boolean, default: true + change_column :email_settings, :send_on_updated_conference_registration_dates, :boolean, default: true + change_column :email_settings, :send_on_venue_update, :boolean, default: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 927d34ff..4a31463d 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" @@ -151,10 +151,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" @@ -165,13 +165,13 @@ ActiveRecord::Schema.define(version: 20140714141156) do t.string "accepted_subject" t.string "rejected_subject" t.string "confirmed_without_registration_subject" - t.boolean "send_on_updated_conference_dates", default: true + t.boolean "send_on_updated_conference_dates", default: false t.string "updated_conference_dates_subject" t.text "updated_conference_dates_template" - t.boolean "send_on_updated_conference_registration_dates", default: true + t.boolean "send_on_updated_conference_registration_dates", default: false t.string "updated_conference_registration_dates_subject" t.text "updated_conference_registration_dates_template" - t.boolean "send_on_venue_update", default: true + t.boolean "send_on_venue_update", default: false t.string "venue_update_subject" t.text "venue_update_template" end From 6f3426b6a23e8dfaafe8622408250ed386cd5bab Mon Sep 17 00:00:00 2001 From: Chrisbr Date: Wed, 23 Jul 2014 13:42:03 +0200 Subject: [PATCH 5/5] Implements "Add template" button for email settings close #16 Subjects now mandatory if send mail enabled --- app/assets/javascripts/osem.js | 48 +++++++- .../admin/conference_controller.rb | 12 +- app/controllers/admin/events_controller.rb | 61 +++++----- app/controllers/admin/venue_controller.rb | 6 +- app/mailers/mailbot.rb | 34 +++--- app/models/email_settings.rb | 30 ++++- app/models/event.rb | 23 +++- app/views/admin/emails/_help.html.haml | 39 +++++++ app/views/admin/emails/index.html.haml | 106 +++++++++--------- spec/features/email_spec.rb | 27 +++++ 10 files changed, 275 insertions(+), 111 deletions(-) create mode 100644 app/views/admin/emails/_help.html.haml diff --git a/app/assets/javascripts/osem.js b/app/assets/javascripts/osem.js index 080fb167..3f5005c8 100644 --- a/app/assets/javascripts/osem.js +++ b/app/assets/javascripts/osem.js @@ -1,5 +1,51 @@ -$(function() { +$(function () { /** + * Toggles email template help below email body textarea field. + */ + $(document).ready( function() { + $(".template-help").hide(); + $(".template_help_link").click(function() { + var id = $(this).data('name'); + $("#" + id).toggle(); + }); + }); + + /** + * Adds the default template as value to the regarding email textarea field. + */ + $(".load_template").on('click', function () { + var template = $(this).data('template'); + var textarea_name = $(this).data('name'); + $('#' + textarea_name).val(template); + }); + + /** + * Toggle the required attribute on click on_send_email radio button. + */ + $('.send_on_radio').click(function () { + toggle_required_for_mail_subjects($(this)) + }); + + /** + * Adds required attribute to on_send_email radio button if necessary. + */ + $('.send_on_radio').each(function () { + toggle_required_for_mail_subjects($(this)) + }); + /** + * Toggle the required attribute helper function. + */ + function toggle_required_for_mail_subjects($this) { + var name = $this.data('name'); + if ($this.is(':checked')) { + $('#' + name).prop('required', true); + } else { + $('#' + name).removeAttr('required'); + } + } + + /** + /** * Opens a prompt with the URL to copy to clipboard. * Used in the campaign index view. */ diff --git a/app/controllers/admin/conference_controller.rb b/app/controllers/admin/conference_controller.rb index 36ca67a7..7b1867e5 100644 --- a/app/controllers/admin/conference_controller.rb +++ b/app/controllers/admin/conference_controller.rb @@ -76,14 +76,18 @@ class Admin::ConferenceController < ApplicationController short_title = @conference.short_title @conference.assign_attributes(params[:conference]) if @conference.start_date_changed? || @conference.end_date_changed? - if @conference.email_settings.send_on_updated_conference_dates - Mailbot.conference_date_update_mail(@conference,date_string(@conference.start_date, @conference.end_date)).deliver + if @conference.email_settings.send_on_updated_conference_dates && + !@conference.email_settings.updated_conference_dates_subject.blank? && + @conference.email_settings.updated_conference_dates_template + Mailbot.conference_date_update_mail(@conference).deliver end end if @conference.registration_start_date_changed? || @conference.registration_end_date_changed? - if @conference.email_settings.send_on_updated_conference_registration_dates - Mailbot.conference_registration_date_update_mail(@conference,date_string(@conference.registration_start_date, @conference.registration_end_date)).deliver + if @conference.email_settings.send_on_updated_conference_registration_dates && + !@conference.email_settings.updated_conference_registration_dates_subject.blank? && + @conference.email_settings.updated_conference_registration_dates_template + Mailbot.conference_registration_date_update_mail(@conference).deliver end end diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb index c33f4c5a..99dbfbc2 100644 --- a/app/controllers/admin/events_controller.rb +++ b/app/controllers/admin/events_controller.rb @@ -2,6 +2,8 @@ module Admin class EventsController < ApplicationController before_filter :verify_organizer + before_action :get_event, except: [:index, :create] + # FIXME: The timezome should only be applied on output, otherwise # you get lost in timezone conversions... # around_filter :set_timezone_for_this_request @@ -71,7 +73,6 @@ module Admin end def show - @event = @conference.events.find(params[:id]) @tracks = @conference.tracks @event_types = @conference.event_types @comments = @event.root_comments @@ -81,7 +82,6 @@ module Admin end def edit - @event = @conference.events.find(params[:id]) @event_types = @conference.event_types @tracks = Track.all @comments = @event.root_comments @@ -91,8 +91,7 @@ module Admin end def comment - event = @conference.events.find_by_id(params[:id]) - comment = Comment.build_from(event, current_user.id, params[:comment]) + comment = Comment.build_from(@event, current_user.id, params[:comment]) comment.save! if !params[:parent].nil? comment.move_to_child_of(params[:parent]) @@ -102,7 +101,6 @@ module Admin end def update - @event = Event.find(params[:id]) if params.has_key? :track_id @event.update_attribute(:track_id, params[:track_id]) end @@ -127,27 +125,30 @@ module Admin end def accept - update_state(params[:id], :accept, 'Event accepted!', true) + send_mail = @event.conference.email_settings.send_on_accepted + subject = @event.conference.email_settings.accepted_subject.blank? + update_state(:accept, 'Event accepted!', true, subject, send_mail) end def confirm - update_state(params[:id], :confirm, 'Event confirmed!') + update_state(:confirm, 'Event confirmed!') end def cancel - update_state(params[:id], :cancel, 'Event canceled!') + update_state(:cancel, 'Event canceled!') end def reject - update_state(params[:id], :reject, 'Event rejected!', true) + send_mail = @event.conference.email_settings.send_on_rejected + subject = @event.conference.email_settings.rejected_subject.blank? + update_state(:reject, 'Event rejected!', true, subject, send_mail) end def restart - update_state(params[:id], :restart, 'Review started!') + update_state(:restart, 'Review started!') end def vote - @event = Event.find(params[:id]) @ratings = @event.votes.includes(:user) if (votes = current_user.votes.find_by_event_id(params[:id])) @@ -167,31 +168,25 @@ 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 + def get_event + @event = @conference.events.find_by_id(params[:id]) + if !@event + redirect_to(admin_conference_events_path(conference_id: @conference.short_title), + alert: 'Error! Could not find event!') && return end - if event - begin - if mail - event.send(transition, - send_mail: params[:send_mail]) - else - event.send(transition) - end - event.save - rescue Transitions::InvalidTransition => e - notice = "Update state failed. #{e.message}" - end + @event + end + + def update_state(transition, notice, mail = false, subject = false, send_mail = false) + alert = @event.update_state(transition, mail, subject, send_mail, params[:send_mail].blank?) + + if !alert.blank? + return redirect_to(admin_conference_events_path(conference_id: @conference.short_title), + alert: alert) && return else - notice = 'Error! Could not find event!' + 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/controllers/admin/venue_controller.rb b/app/controllers/admin/venue_controller.rb index 0b090bc9..5f511971 100644 --- a/app/controllers/admin/venue_controller.rb +++ b/app/controllers/admin/venue_controller.rb @@ -8,7 +8,11 @@ class Admin::VenueController < ApplicationController @venue = @conference.venue @venue.assign_attributes(params[:venue]) unless @venue.name.blank? || @venue.address.blank? || @conference.registrations.blank? - if @venue.name_changed? || @venue.address_changed? && @conference.email_settings.send_on_venue_update + if (@venue.name_changed? || + @venue.address_changed?) && + (@conference.email_settings.send_on_venue_update && + !@conference.email_settings.venue_update_subject.blank? && + @conference.email_settings.venue_update_template) venue_notify = Mailbot.send_email_on_venue_update(@conference) end end diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index 2ed26648..398d0c98 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -36,30 +36,30 @@ class Mailbot < ActionMailer::Base conference.email_settings.confirmed_but_not_registered_email(event)) end - def conference_date_update_mail(conference,dates) - subject = conference.email_settings.updated_conference_dates_subject.blank? ? "#{conference.title} Dates Updated" : conference.email_settings.updated_conference_dates_subject - partial = "#{conference.title}\n New Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}" - body = conference.email_settings.updated_conference_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}" - conference.registrations.each do |u| - build_email(conference, u.user.email, subject, body) + def conference_date_update_mail(conference) + conference.registrations.each do |user| + build_email(conference, + user.user.email, + conference.email_settings.updated_conference_dates_subject, + conference.email_settings.generate_conference_date_update_mail(conference, user)) end end - def conference_registration_date_update_mail(conference, dates) - subject = conference.email_settings.updated_conference_registration_dates_subject.blank? ? "#{conference.title} Registration Dates Updated" : conference.email_settings.updated_conference_registration_dates_subject - partial = "#{conference.title}\n New Registration Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}" - body = conference.email_settings.updated_conference_registration_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}" - conference.registrations.each do |u| - build_email(conference, u.user.email, subject, body) + def conference_registration_date_update_mail(conference) + conference.registrations.each do |user| + build_email(conference, + user.user.email, + conference.email_settings.updated_conference_registration_dates_subject, + conference.email_settings.generate_conference_registration_date_update_mail(conference, user)) end end def send_email_on_venue_update(conference) - subject = conference.email_settings.venue_update_subject.blank? ? "#{conference.title} location has been changed" : conference.email_settings.venue_update_subject - partial = "#{conference.title} new location is: #{conference.venue.name}.\n Address: #{conference.venue.address}\n. For more information please visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}" - body = conference.email_settings.venue_update_template.blank? ? partial : "#{conference.email_settings.venue_update_template}\n #{partial}" - conference.registrations.each do |u| - build_email(conference, u.email, subject, body) + conference.registrations.each do |user| + build_email(conference, + user.email, + conference.email_settings.venue_update_subject, + conference.email_settings.generate_send_email_on_venue_update(conference, user)) end end diff --git a/app/models/email_settings.rb b/app/models/email_settings.rb index 3c624e1d..c5093e27 100644 --- a/app/models/email_settings.rb +++ b/app/models/email_settings.rb @@ -14,6 +14,12 @@ class EmailSettings < ActiveRecord::Base 'email' => user.email, 'name' => user.name, 'conference' => conference.title, + 'conference_start_date' => conference.start_date, + 'conference_end_date' => conference.end_date, + 'registration_start_date' => conference.registration_start_date, + 'registration_end_date' => conference.registration_end_date, + 'venue' => conference.venue.name, + 'venue_adress' => conference.venue.address, 'registrationlink' => Rails.application.routes.url_helpers.register_conference_url( conference.short_title, host: CONFIG['url_for_emails']) } @@ -50,9 +56,31 @@ class EmailSettings < ActiveRecord::Base parse_template(template, values) end + def generate_conference_date_update_mail(conference, user) + values = get_values(conference, user) + template = updated_conference_dates_template + parse_template(template, values) + end + + def generate_conference_registration_date_update_mail(conference, user) + values = get_values(conference, user) + template = updated_conference_registration_dates_template + parse_template(template, values) + end + + def generate_send_email_on_venue_update(conference, user) + values = get_values(conference, user) + template = venue_update_template + parse_template(template, values) + end + def parse_template(text, values) values.each do |key, value| - text = text.gsub "{#{key}}", value unless text.blank? + if value.kind_of?(Date) + text = text.gsub "{#{key}}", value.strftime('%Y-%m-%d') unless text.blank? + else + text = text.gsub "{#{key}}", value unless text.blank? || value.blank? + end end text end diff --git a/app/models/event.rb b/app/models/event.rb index ce823b6c..fcf32058 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -138,7 +138,7 @@ class Event < ActiveRecord::Base if conference.email_settings.send_on_accepted && conference.email_settings.accepted_email_template && conference.email_settings.accepted_subject && - options[:send_mail].blank? + !options[:send_mail].blank? Rails.logger.debug 'Sending event acceptance mail' Mailbot.acceptance_mail(self).deliver end @@ -148,7 +148,7 @@ class Event < ActiveRecord::Base if conference.email_settings.send_on_rejected && conference.email_settings.rejected_email_template && conference.email_settings.rejected_subject && - options[:send_mail].blank? + !options[:send_mail].blank? Rails.logger.debug 'Sending rejected mail' Mailbot.rejection_mail(self).deliver end @@ -186,6 +186,25 @@ class Event < ActiveRecord::Base result end + def update_state(transition, mail = false, subject = false, send_mail = false, send_mail_param) + alert = '' + if mail && send_mail_param && subject && send_mail + alert = 'Update Email Subject before Sending Mails' + end + begin + if mail + self.send(transition, + send_mail: send_mail_param) + else + self.send(transition) + end + self.save + rescue Transitions::InvalidTransition => e + alert = "Update state failed. #{e.message}" + end + alert + end + private def abstract_limit diff --git a/app/views/admin/emails/_help.html.haml b/app/views/admin/emails/_help.html.haml new file mode 100644 index 00000000..c244d444 --- /dev/null +++ b/app/views/admin/emails/_help.html.haml @@ -0,0 +1,39 @@ +.template-help{:id => id} + Valid attributes: + %table.table + %tr + %td {email} + %td The user's email address + %tr + %td {name} + %td The user's full name + %tr + %td {conference} + %td The full conference title + %tr + %td {proposalslink} + %td A link to the user's proposal page + %tr + %td {registrationlink} + %td A link to the registration page + %tr + %td {eventtitle} + %td The title of an accepted or rejected proposal + %tr + %td {conference_start_date} + %td The start date of the conference + %tr + %td {conference_end_date} + %td The end date of the conference + %tr + %td {registration_start_date} + %td The start date of the registration period + %tr + %td {registration_end_date} + %td The end date of the registration period + %tr + %td {venue} + %td The name of the venue + %tr + %td {venue_adress} + %td The adress of the venue diff --git a/app/views/admin/emails/index.html.haml b/app/views/admin/emails/index.html.haml index ddf5bc1a..c084fe5c 100644 --- a/app/views/admin/emails/index.html.haml +++ b/app/views/admin/emails/index.html.haml @@ -1,55 +1,57 @@ .row .col-md-8 - = link_to "Template Help", "#", :id => "template-help-link" - #template-help - Valid attributes: - %table.table - %tr - %td {email} - %td The user's email address - %tr - %td {name} - %td The user's full name - %tr - %td {conference} - %td The full conference title - %tr - %td {proposalslink} - %td A link to the user's proposal page - %tr - %td {registrationlink} - %td A link to the registration page - %tr - %td {eventtitle} - %td The title of an accepted or rejected proposal = semantic_form_for(@settings, :url => admin_conference_email_path(@conference.short_title, @conference.email_settings),:html => {:multipart => true}) do |f| - = f.input :send_on_registration, :label => false, :hint => "Send an email when the user registers for the conference?" - = f.input :registration_subject - = f.input :registration_email_template, :input_html => { :rows => 10, :cols => 20} - = f.input :send_on_accepted, :label => false, :hint => "Send an email when the proposal is accepted?" - = f.input :accepted_subject - = f.input :accepted_email_template, :input_html => { :rows => 10, :cols => 20 } - = f.input :send_on_rejected, :label => false, :hint => "Send an email when the proposal is rejected?" - = f.input :rejected_subject - = f.input :rejected_email_template, :input_html => { :rows => 10, :cols => 20 } - = f.input :send_on_confirmed_without_registration, :label => false, :hint => "Send an email when a user has a confirmed proposal, but isn't yet registered?" - = f.input :confirmed_without_registration_subject - = f.input :confirmed_email_template, :input_html => { :rows => 10, :cols => 20 } - = f.input :send_on_updated_conference_dates, hint: "This is to notify all participants that the conference dates has been changed." - = f.input :updated_conference_dates_subject - = f.input :updated_conference_dates_template, :input_html => { :rows => 10, :cols => 20 } - = f.input :send_on_updated_conference_registration_dates, hint: "This is to notify all participants that the conference registration dates has been changed." - = f.input :updated_conference_registration_dates_subject - = f.input :updated_conference_registration_dates_template, :input_html => { :rows => 10, :cols => 20 } - = f.input :send_on_venue_update, hint: 'Send an email on updating the Venue.' - = f.input :venue_update_subject - = f.input :venue_update_template, :input_html => { :rows => 10, :cols => 20 } - = f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"} - -:javascript - $(document).ready( function() { - $("#template-help").hide(); - $("#template-help-link").click(function() { - $("#template-help").toggle(); - }); - }); + .row + .col-md-12 + = f.input :send_on_registration, label: "Send an email when the user registers for the conference?", :input_html => {"data-name"=>"email_settings_registration_subject", "class"=>"send_on_radio"} + = f.input :registration_subject + = f.input :registration_email_template, :input_html => { :rows => 10, :cols => 20} + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThank you for Registering for the conference {conference}.\nPlease complete your registration by filling out your travel information.\n\nIf you are unable to attend please unregister online:\n{registrationlink}\n\nFeel free to contact us with any questions or concerns.\nWe look forward to see you there.\n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_registration_email_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"registration_help"} Show Help + = render partial: 'help', locals: {id: 'registration_help'} + = f.input :send_on_accepted, label: "Send an email when the proposal is accepted?", :input_html => {"data-name"=>"email_settings_accepted_subject", "class"=>"send_on_radio"} + = f.input :accepted_subject + = f.input :accepted_email_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name}\n\nWe are very pleased to inform you that your submission {eventtitle} has been accepted for the conference {conference}.\n\nThe public page of your submission can be found at:\n{proposalslink}\nIf you haven“t already registered for {conference}, please do as soon as possible:\n{registrationlink}\n\nFeel free to contact us with any questions or concerns.\n\nWe look forward to seeing you there.\n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_accepted_email_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"accepted_help"} Show Help + = render partial: 'help', locals: {id: 'accepted_help'} + = f.input :send_on_rejected, label: "Send an email when the proposal is rejected?", :input_html => {"data-name"=>"email_settings_rejected_subject", "class"=>"send_on_radio"} + = f.input :rejected_subject + = f.input :rejected_email_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThank you for your submission {eventtitle} for the conference {conference}.\nAfter careful consideration we are sorry to inform you that your submissionhas been rejected.\n\n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_rejected_email_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"rejected_help"} Show Help + = render partial: 'help', locals: {id: 'rejected_help'} + = f.input :send_on_confirmed_without_registration, label: "Send an email when a user has a confirmed proposal, but isn't yet registered?", :input_html => {"data-name"=>"email_settings_confirmed_without_registration_subject", "class"=>"send_on_radio"} + = f.input :confirmed_without_registration_subject + = f.input :confirmed_email_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThank you for the confirmation of {eventtitle}. Unfortunately you are not registered for the conference {conference}. Please register as soon as possible:\n{registrationlink}\n\nFeel free to contact us with any questions or concerns.\n\nWe look forward to seeing you there.\n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_confirmed_email_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"confirmed_help"} Show Help + = render partial: 'help', locals: {id: 'confirmed_help'} + = f.input :send_on_updated_conference_dates, label: "This is to notify all participants that the conference dates has been changed.", :input_html => {"data-name"=>"email_settings_updated_conference_dates_subject", "class"=>"send_on_radio"} + = f.input :updated_conference_dates_subject + = f.input :updated_conference_dates_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThe date of {conference} has changed.\n New Dates : {conference_start_date} - {conference_end_date}.\n\nFeel free to contact us with any questions or concerns.\n\nWe look forward to seeing you there.\n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_updated_conference_dates_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"updated_dates_help"} Show Help + = render partial: 'help', locals: {id: 'updated_dates_help'} + = f.input :send_on_updated_conference_registration_dates, label: "This is to notify all participants that the conference registration dates has been changed.", :input_html => {"data-name"=>"email_settings_updated_conference_registration_dates_subject", "class"=>"send_on_radio"} + = f.input :updated_conference_registration_dates_subject + = f.input :updated_conference_registration_dates_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThe registration date of {conference} has changed.\n New Dates : {registration_start_date} - {registration_end_date}.\n\nFeel free to contact us with any questions or concerns.\n\nWe look forward to seeing you there.\n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_updated_conference_registration_dates_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"updated_registrations_dates_help"} Show Help + = render partial: 'help', locals: {id: 'updated_registrations_dates_help'} + = f.input :send_on_venue_update, label: 'Send an email on updating the Venue.', :input_html => {"data-name"=>"email_settings_venue_update_subject", "class"=>"send_on_radio"} + = f.input :venue_update_subject + = f.input :venue_update_template, :input_html => { :rows => 10, :cols => 20 } + %a.btn.btn-link.control_label.load_template{"data-template"=>"Dear {name},\n\nThe Conference venue of {conference} has changed. New location is: {venue}.\n Address: {venue_address}.\n\nFeel free to contact us with any questions or concerns.\n\nWe look forward to seeing you there.\n\nBest wishes\n\n{conference} Team", + "data-name"=>"email_settings_venue_update_template"} Load Template + %a.btn.btn-link.control_label.template_help_link{"data-name"=>"updated_venue_help"} Show Help + = render partial: 'help', locals: {id: 'updated_venue_help'} + .row + .col-md-12 + = f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"} diff --git a/spec/features/email_spec.rb b/spec/features/email_spec.rb index 780b4ca2..54a51897 100644 --- a/spec/features/email_spec.rb +++ b/spec/features/email_spec.rb @@ -37,6 +37,21 @@ feature Event do fill_in 'email_settings_confirmed_email_template', with: 'Confirmed without registration email body' + fill_in 'email_settings_updated_conference_dates_subject', + with: 'Updated conference dates subject' + fill_in 'email_settings_updated_conference_dates_template', + with: 'Updated conference dates email template' + + fill_in 'email_settings_updated_conference_registration_dates_subject', + with: 'Updated conference registration dates subject' + fill_in 'email_settings_updated_conference_registration_dates_template', + with: 'Updated conference registration dates template' + + fill_in 'email_settings_venue_update_subject', + with: 'Updated conference venue subject' + fill_in 'email_settings_venue_update_template', + with: 'Updated conference venue template' + click_button 'Update Email settings' expect(flash). @@ -58,6 +73,18 @@ feature Event do value).to eq('Confirmed without registration subject') expect(find('#email_settings_confirmed_email_template'). value).to eq('Confirmed without registration email body') + expect(find('#email_settings_updated_conference_dates_subject'). + value).to eq('Updated conference dates subject') + expect(find('#email_settings_updated_conference_dates_template'). + value).to eq('Updated conference dates email template') + expect(find('#email_settings_updated_conference_registration_dates_subject'). + value).to eq('Updated conference registration dates subject') + expect(find('#email_settings_updated_conference_registration_dates_template'). + value).to eq('Updated conference registration dates template') + expect(find('#email_settings_venue_update_subject'). + value).to eq('Updated conference venue subject') + expect(find('#email_settings_venue_update_template'). + value).to eq('Updated conference venue template') expect(EmailSettings.count).to eq(expected_count)