[refactor] Move Mailbot#logo_url and #conference_color to ConferenceHelper
This commit is contained in:
parent
33ce7a61c6
commit
fdb08b0c9a
6 changed files with 52 additions and 66 deletions
|
|
@ -1,5 +1,8 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
DEFAULT_LOGO = 'snapcon_logo.png'
|
||||||
|
DEFAULT_COLOR = '#0B3559'
|
||||||
|
|
||||||
module ConferenceHelper
|
module ConferenceHelper
|
||||||
# Return true if only call_for_papers or call_for_tracks or call_for_booths is open
|
# Return true if only call_for_papers or call_for_tracks or call_for_booths is open
|
||||||
def one_call_open(*calls)
|
def one_call_open(*calls)
|
||||||
|
|
@ -28,6 +31,24 @@ module ConferenceHelper
|
||||||
markdown(ticket.description.split("\n").first&.strip)
|
markdown(ticket.description.split("\n").first&.strip)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def conference_logo_url(conference)
|
||||||
|
if conference.picture.present?
|
||||||
|
conference.picture.thumb.url
|
||||||
|
elsif conference.organization.picture.present?
|
||||||
|
conference.organization.picture.thumb.url
|
||||||
|
else
|
||||||
|
DEFAULT_LOGO
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def conference_color(conference)
|
||||||
|
if conference.color.present?
|
||||||
|
conference.color
|
||||||
|
else
|
||||||
|
DEFAULT_COLOR
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# adds events to icalendar for proposals in a conference
|
# adds events to icalendar for proposals in a conference
|
||||||
def icalendar_proposals(calendar, proposals, conference)
|
def icalendar_proposals(calendar, proposals, conference)
|
||||||
proposals.each do |proposal|
|
proposals.each do |proposal|
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,10 @@
|
||||||
SNAPCON_BCC_ADDRESS = 'messages@snap.berkeley.edu'
|
SNAPCON_BCC_ADDRESS = 'messages@snap.berkeley.edu'
|
||||||
EMAIL_TEMPLATE = 'email_template'
|
EMAIL_TEMPLATE = 'email_template'
|
||||||
YTLF_TICKET_ID = 50
|
YTLF_TICKET_ID = 50
|
||||||
DEFAULT_LOGO = 'snapcon_logo.png'
|
|
||||||
|
|
||||||
class Mailbot < ActionMailer::Base
|
class Mailbot < ActionMailer::Base
|
||||||
|
helper ConferenceHelper
|
||||||
|
|
||||||
default bcc: -> { SNAPCON_BCC_ADDRESS },
|
default bcc: -> { SNAPCON_BCC_ADDRESS },
|
||||||
template_name: -> { EMAIL_TEMPLATE },
|
template_name: -> { EMAIL_TEMPLATE },
|
||||||
to: -> { @user.email },
|
to: -> { @user.email },
|
||||||
|
|
@ -15,7 +16,6 @@ class Mailbot < ActionMailer::Base
|
||||||
@user = user
|
@user = user
|
||||||
@conference = conference
|
@conference = conference
|
||||||
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.registration_body)
|
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.registration_body)
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.registration_subject)
|
mail(subject: @conference.email_settings.registration_subject)
|
||||||
end
|
end
|
||||||
|
|
@ -24,7 +24,6 @@ class Mailbot < ActionMailer::Base
|
||||||
@ticket_purchase = ticket_purchase
|
@ticket_purchase = ticket_purchase
|
||||||
@user = ticket_purchase.user
|
@user = ticket_purchase.user
|
||||||
@conference = ticket_purchase.conference
|
@conference = ticket_purchase.conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
|
|
||||||
PhysicalTicket.last(ticket_purchase.quantity).each do |physical_ticket|
|
PhysicalTicket.last(ticket_purchase.quantity).each do |physical_ticket|
|
||||||
pdf = TicketPdf.new(@conference, @user, physical_ticket, @conference.ticket_layout.to_sym, "ticket_for_#{@conference.short_title}_#{physical_ticket.id}")
|
pdf = TicketPdf.new(@conference, @user, physical_ticket, @conference.ticket_layout.to_sym, "ticket_for_#{@conference.short_title}_#{physical_ticket.id}")
|
||||||
|
|
@ -43,7 +42,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def acceptance_mail(event)
|
def acceptance_mail(event)
|
||||||
@user = event.submitter
|
@user = event.submitter
|
||||||
@conference = event.program.conference
|
@conference = event.program.conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.accepted_body)
|
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.accepted_body)
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.accepted_subject)
|
mail(subject: @conference.email_settings.accepted_subject)
|
||||||
|
|
@ -52,7 +50,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def submitted_proposal_mail(event)
|
def submitted_proposal_mail(event)
|
||||||
@user = event.submitter
|
@user = event.submitter
|
||||||
@conference = event.program.conference
|
@conference = event.program.conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.submitted_proposal_body)
|
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.submitted_proposal_body)
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.submitted_proposal_subject)
|
mail(subject: @conference.email_settings.submitted_proposal_subject)
|
||||||
|
|
@ -61,7 +58,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def rejection_mail(event)
|
def rejection_mail(event)
|
||||||
@user = event.submitter
|
@user = event.submitter
|
||||||
@conference = event.program.conference
|
@conference = event.program.conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.rejected_body)
|
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.rejected_body)
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.rejected_subject)
|
mail(subject: @conference.email_settings.rejected_subject)
|
||||||
|
|
@ -70,16 +66,14 @@ class Mailbot < ActionMailer::Base
|
||||||
def confirm_reminder_mail(event)
|
def confirm_reminder_mail(event)
|
||||||
@user = event.submitter
|
@user = event.submitter
|
||||||
@conference = event.program.conference
|
@conference = event.program.conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.confirmed_without_registration_body)
|
@email_body = @conference.email_settings.generate_event_mail(event, @conference.email_settings.confirmed_without_registration_body)
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.confirmed_without_registration_subject)
|
mail(subject: @conference.email_settings.confirmed_without_registration_subject)
|
||||||
end
|
end
|
||||||
|
|
||||||
def conference_date_update_mail(_conference, user)
|
def conference_date_update_mail(conference, user)
|
||||||
@user = user
|
@user = user
|
||||||
@conference = @conference
|
@conference = conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.conference_dates_updated_body)
|
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.conference_dates_updated_body)
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.conference_dates_updated_subject)
|
mail(subject: @conference.email_settings.conference_dates_updated_subject)
|
||||||
|
|
@ -88,7 +82,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def conference_registration_date_update_mail(conference, user)
|
def conference_registration_date_update_mail(conference, user)
|
||||||
@user = user
|
@user = user
|
||||||
@conference = conference
|
@conference = conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.conference_registration_dates_updated_body)
|
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.conference_registration_dates_updated_body)
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.conference_registration_dates_updated_subject)
|
mail(subject: @conference.email_settings.conference_registration_dates_updated_subject)
|
||||||
|
|
@ -97,7 +90,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def conference_venue_update_mail(conference, user)
|
def conference_venue_update_mail(conference, user)
|
||||||
@user = user
|
@user = user
|
||||||
@conference = conference
|
@conference = conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.venue_updated_body)
|
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.venue_updated_body)
|
||||||
|
|
||||||
mail(subject: @conference.email_settings.venue_updated_subject)
|
mail(subject: @conference.email_settings.venue_updated_subject)
|
||||||
|
|
@ -106,7 +98,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def conference_schedule_update_mail(conference, user)
|
def conference_schedule_update_mail(conference, user)
|
||||||
@user = user
|
@user = user
|
||||||
@conference = conference
|
@conference = conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.program_schedule_public_body)
|
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.program_schedule_public_body)
|
||||||
|
|
||||||
mail(bcc: nil,
|
mail(bcc: nil,
|
||||||
|
|
@ -116,7 +107,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def conference_cfp_update_mail(conference, user)
|
def conference_cfp_update_mail(conference, user)
|
||||||
@user = user
|
@user = user
|
||||||
@conference = conference
|
@conference = conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.cfp_dates_updated_body)
|
@email_body = @conference.email_settings.generate_email_on_conf_updates(@conference, @user, @conference.email_settings.cfp_dates_updated_body)
|
||||||
|
|
||||||
mail(bcc: nil,
|
mail(bcc: nil,
|
||||||
|
|
@ -126,7 +116,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def conference_booths_acceptance_mail(booth)
|
def conference_booths_acceptance_mail(booth)
|
||||||
@user = booth.submitter
|
@user = booth.submitter
|
||||||
@conference = booth.conference
|
@conference = booth.conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_booth_mail(booth, @conference.email_settings.booths_acceptance_body)
|
@email_body = @conference.email_settings.generate_booth_mail(booth, @conference.email_settings.booths_acceptance_body)
|
||||||
|
|
||||||
mail(bcc: nil,
|
mail(bcc: nil,
|
||||||
|
|
@ -136,7 +125,6 @@ class Mailbot < ActionMailer::Base
|
||||||
def conference_booths_rejection_mail(booth)
|
def conference_booths_rejection_mail(booth)
|
||||||
@user = booth.submitter
|
@user = booth.submitter
|
||||||
@conference = booth.conference
|
@conference = booth.conference
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
@email_body = @conference.email_settings.generate_booth_mail(booth, @conference.email_settings.booths_rejection_body)
|
@email_body = @conference.email_settings.generate_booth_mail(booth, @conference.email_settings.booths_rejection_body)
|
||||||
|
|
||||||
mail(bcc: nil,
|
mail(bcc: nil,
|
||||||
|
|
@ -148,22 +136,9 @@ class Mailbot < ActionMailer::Base
|
||||||
@event = @comment.commentable
|
@event = @comment.commentable
|
||||||
@conference = @event.program.conference
|
@conference = @event.program.conference
|
||||||
@user = user
|
@user = user
|
||||||
@logo_url = logo_url(@conference)
|
|
||||||
|
|
||||||
mail(bcc: nil,
|
mail(bcc: nil,
|
||||||
template_name: 'comment_template',
|
template_name: 'comment_template',
|
||||||
subject: "New comment has been posted for #{@event.title}")
|
subject: "New comment has been posted for #{@event.title}")
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def logo_url(conference)
|
|
||||||
if conference.picture.present?
|
|
||||||
conference.picture.thumb.url
|
|
||||||
elsif conference.organization.picture.present?
|
|
||||||
conference.organization.picture.thumb.url
|
|
||||||
else
|
|
||||||
DEFAULT_LOGO
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,6 @@
|
||||||
<%= stylesheet_link_tag "mailbot" %>
|
<%= stylesheet_link_tag "mailbot" %>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<% if @conference.present? && @conference.color.present? %>
|
<div id="border" style="background-color: <%= conference_color(@conference) %>"></div>
|
||||||
<div id="border" style="background-color: <%= @conference.color %>">
|
|
||||||
<% else %>
|
|
||||||
<div id="border">
|
|
||||||
<% end %>
|
|
||||||
</div>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -10,15 +10,11 @@
|
||||||
<%= stylesheet_link_tag "mailbot" %>
|
<%= stylesheet_link_tag "mailbot" %>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<% if @conference.present? && @conference.color.present? %>
|
<div id="border" style="background-color: <%= conference_color(@conference) %>">
|
||||||
<div id="border" style="background-color: <%= @conference.color %>">
|
|
||||||
<% else %>
|
|
||||||
<div id="border">
|
|
||||||
<% end %>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<% if @logo_url.present? %>
|
<% if @conference.present? %>
|
||||||
<%= image_tag(@logo_url, style: "display:block;height:70px;width:auto;", alt: @conference.title + ' logo') %>
|
<%= image_tag(conference_logo_url(@conference), style: "display:block;height:70px;width:auto;", alt: @conference.title + ' logo') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -67,4 +67,26 @@ describe ConferenceHelper, type: :helper do
|
||||||
expect(sponsorship_mailto(conference)).to match conference.short_title
|
expect(sponsorship_mailto(conference)).to match conference.short_title
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#conference_logo_url' do
|
||||||
|
let(:organization) { create(:organization) }
|
||||||
|
let(:conference2) { create(:conference, organization: organization) }
|
||||||
|
|
||||||
|
it 'gives the correct logo url' do
|
||||||
|
mailbot = Mailbot.new
|
||||||
|
expect(conference_logo_url(conference2)).to eq('snapcon_logo.png')
|
||||||
|
|
||||||
|
File.open('spec/support/logos/1.png') do |file|
|
||||||
|
organization.picture = file
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(conference_logo_url(conference2)).to include('1.png')
|
||||||
|
|
||||||
|
File.open('spec/support/logos/2.png') do |file|
|
||||||
|
conference2.picture = file
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(conference_logo_url(conference2)).to include('2.png')
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ describe Mailbot do
|
||||||
expect(mail.body).to include('background-color: ' + conference.color)
|
expect(mail.body).to include('background-color: ' + conference.color)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# TODO: test on non-default logo
|
||||||
it 'assigns the email body with the correct logo' do
|
it 'assigns the email body with the correct logo' do
|
||||||
expect(mail.body).to include 'snapcon_logo'
|
expect(mail.body).to include 'snapcon_logo'
|
||||||
end
|
end
|
||||||
|
|
@ -93,28 +94,4 @@ describe Mailbot do
|
||||||
context 'update notifications' do
|
context 'update notifications' do
|
||||||
it 'is a pending test'
|
it 'is a pending test'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'helper methods' do
|
|
||||||
let(:organization) { create(:organization) }
|
|
||||||
let(:conference2) { create(:conference, organization: organization) }
|
|
||||||
|
|
||||||
describe '#logo_url' do
|
|
||||||
it 'gives the correct logo url' do
|
|
||||||
mailbot = Mailbot.new
|
|
||||||
expect(mailbot.send(:logo_url, conference2)).to eq('snapcon_logo.png')
|
|
||||||
|
|
||||||
File.open('spec/support/logos/1.png') do |file|
|
|
||||||
organization.picture = file
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(mailbot.send(:logo_url, conference2)).to include('1.png')
|
|
||||||
|
|
||||||
File.open('spec/support/logos/2.png') do |file|
|
|
||||||
conference2.picture = file
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(mailbot.send(:logo_url, conference2)).to include('2.png')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue