effective_events 2.25.1 → 2.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/datatables/admin/effective_events_datatable.rb +3 -0
- data/app/datatables/effective_event_registrants_datatable.rb +2 -19
- data/app/mailers/effective/events_mailer.rb +36 -0
- data/app/models/concerns/effective_events_event_registration.rb +27 -1
- data/app/models/effective/event.rb +1 -0
- data/app/models/effective/event_registrant.rb +24 -0
- data/app/views/admin/events/_form.html.haml +4 -4
- data/app/views/admin/events/_form_content.html.haml +2 -0
- data/app/views/effective/event_registrations/checkout.html.haml +3 -1
- data/app/views/effective/events_mailer/event_registrant_confirmation.html.haml +22 -0
- data/app/views/effective/events_mailer/event_registration_confirmation.html.haml +45 -0
- data/config/routes.rb +2 -0
- data/lib/effective_events/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93702d0f34b53536a8534ad5d983be17e75f66bf133e8cd67c46e3d38f6ec5dc
|
4
|
+
data.tar.gz: 243eb4b9796e5b0752ec0bfa4d121508253550e5765a62be4252e2835a6391d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 408c0a3b0d923e692e1c853945e0b2899e83d02743049cc7d834ccb1163f00ca6e941b5291e9ece8abe98177f4d475b99eeaa15c9d3f047aa153f0e0f94cfc15
|
7
|
+
data.tar.gz: d1d0ddeb5f16cfd4d803e76222b27c5450f584f45adc9f63961fe7f0c033490554f1ab2780d964fcea91113d8553ce1e53d55c4de5afc744e0dddd5075b5f178
|
@@ -41,6 +41,9 @@ module Admin
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
col :delayed_payment, visible: false
|
45
|
+
col :delayed_payment_date, visible: false
|
46
|
+
|
44
47
|
# These show too much information to be useful to admins, rely on the edit screen
|
45
48
|
# col :event_tickets, search: :string
|
46
49
|
# col :event_products, search: :string
|
@@ -4,20 +4,7 @@ class EffectiveEventRegistrantsDatatable < Effective::Datatable
|
|
4
4
|
datatable do
|
5
5
|
order :id
|
6
6
|
|
7
|
-
col :
|
8
|
-
if er.first_name.present?
|
9
|
-
[
|
10
|
-
"#{er.first_name} #{er.last_name}",
|
11
|
-
("<small>#{er.organization || er.company}</small>" if er.organization || er.company.present?),
|
12
|
-
("<small>#{er.email}</small>" if er.email.present?)
|
13
|
-
].compact.join('<br>').html_safe
|
14
|
-
elsif er.owner.present?
|
15
|
-
er.owner.to_s + ' - GUEST'
|
16
|
-
else
|
17
|
-
'Unknown'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
7
|
+
col :full_name, label: 'Name'
|
21
8
|
col :id, visible: false
|
22
9
|
|
23
10
|
col :event_ticket, search: :string, label: 'Ticket' do |er|
|
@@ -36,11 +23,7 @@ class EffectiveEventRegistrantsDatatable < Effective::Datatable
|
|
36
23
|
col :response2, visible: false
|
37
24
|
col :response3, visible: false
|
38
25
|
|
39
|
-
col :responses, label: 'Details'
|
40
|
-
[registrant.response1.presence, registrant.response2.presence, registrant.response3.presence].compact.map do |response|
|
41
|
-
content_tag(:div, response)
|
42
|
-
end.join.html_safe
|
43
|
-
end
|
26
|
+
col :responses, label: 'Details'
|
44
27
|
|
45
28
|
col :price, as: :price
|
46
29
|
col :archived, visible: false
|
@@ -4,6 +4,10 @@ module Effective
|
|
4
4
|
include EffectiveMailer
|
5
5
|
include EffectiveEmailTemplatesMailer
|
6
6
|
|
7
|
+
helper EffectiveEventsHelper
|
8
|
+
helper EffectiveOrdersHelper
|
9
|
+
|
10
|
+
# For the notifications. No longer used.
|
7
11
|
def event_registrant_purchased(resource, opts = {})
|
8
12
|
raise('expected an Effective::EventRegistrant') unless resource.kind_of?(Effective::EventRegistrant)
|
9
13
|
|
@@ -11,6 +15,38 @@ module Effective
|
|
11
15
|
mail(to: resource.email, **headers_for(resource, opts))
|
12
16
|
end
|
13
17
|
|
18
|
+
# Sent on registration purchase
|
19
|
+
# Sent on delayed payment date registration submitted
|
20
|
+
# Sent on delayed payment date registration update
|
21
|
+
# Sent on update blank registrants
|
22
|
+
def event_registration_confirmation(resource, opts = {})
|
23
|
+
raise('expected an event registration') unless resource.class.try(:effective_events_event_registration?)
|
24
|
+
|
25
|
+
@event_registration = resource
|
26
|
+
@event = resource.event
|
27
|
+
@event_registrants = resource.event_registrants
|
28
|
+
@event_addons = resource.event_addons
|
29
|
+
|
30
|
+
subject = subject_for(__method__, "Event Confirmation - #{@event}", resource, opts)
|
31
|
+
headers = headers_for(resource, opts)
|
32
|
+
|
33
|
+
mail(to: resource.owner.email, subject: subject, **headers)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Sent manually by an admin to one registrant
|
37
|
+
def event_registrant_confirmation(resource, opts = {})
|
38
|
+
raise('expected an event registrant') unless resource.kind_of?(Effective::EventRegistrant)
|
39
|
+
|
40
|
+
@event_registrant = resource
|
41
|
+
@event = resource.event
|
42
|
+
@event_registration = resource.event_registration # Optional
|
43
|
+
|
44
|
+
subject = subject_for(__method__, "Event Registrant Confirmation - #{@event}", resource, opts)
|
45
|
+
headers = headers_for(resource, opts)
|
46
|
+
|
47
|
+
mail(to: resource.email, subject: subject, **headers)
|
48
|
+
end
|
49
|
+
|
14
50
|
protected
|
15
51
|
|
16
52
|
def assigns_for(resource)
|
@@ -220,6 +220,7 @@ module EffectiveEventsEventRegistration
|
|
220
220
|
|
221
221
|
def after_submit_deferred!
|
222
222
|
update_deferred_event_registration!
|
223
|
+
send_event_registration_confirmation!
|
223
224
|
end
|
224
225
|
|
225
226
|
def after_submit_purchased!
|
@@ -227,12 +228,14 @@ module EffectiveEventsEventRegistration
|
|
227
228
|
|
228
229
|
notifications = event.event_notifications.select(&:registrant_purchased?)
|
229
230
|
notifications.each { |notification| notification.notify!(event_registrants: event_registrants) }
|
231
|
+
|
232
|
+
send_event_registration_confirmation! unless submit_order&.delayed?
|
230
233
|
end
|
231
234
|
end
|
232
235
|
|
233
236
|
# Instance Methods
|
234
237
|
def to_s
|
235
|
-
|
238
|
+
event.present? ? "Event registration - #{event}" : model_name.human
|
236
239
|
end
|
237
240
|
|
238
241
|
def in_progress?
|
@@ -358,6 +361,17 @@ module EffectiveEventsEventRegistration
|
|
358
361
|
save!
|
359
362
|
end
|
360
363
|
|
364
|
+
# Not involved in money processing
|
365
|
+
# This will only be called when the order is previously delayed and deferred
|
366
|
+
# And we're going through the registration again with a saved card
|
367
|
+
def checkout!
|
368
|
+
if submit_order.present? && submit_order.delayed? && submit_order.deferred?
|
369
|
+
send_event_registration_confirmation!
|
370
|
+
end
|
371
|
+
|
372
|
+
save!
|
373
|
+
end
|
374
|
+
|
361
375
|
def try_completed!
|
362
376
|
return false unless submitted?
|
363
377
|
return false unless submit_order&.purchased?
|
@@ -462,9 +476,21 @@ module EffectiveEventsEventRegistration
|
|
462
476
|
|
463
477
|
update_submit_fees_and_order! if submit_order.present? && !submit_order.purchased?
|
464
478
|
|
479
|
+
after_commit do
|
480
|
+
send_event_registration_confirmation!
|
481
|
+
end
|
482
|
+
|
465
483
|
true
|
466
484
|
end
|
467
485
|
|
486
|
+
# Sent on registration purchase
|
487
|
+
# Sent on delayed payment date registration submitted
|
488
|
+
# Sent on delayed payment date registration update
|
489
|
+
# Sent on update blank registrants
|
490
|
+
def send_event_registration_confirmation!
|
491
|
+
EffectiveEvents.send_email(:event_registration_confirmation, self)
|
492
|
+
end
|
493
|
+
|
468
494
|
private
|
469
495
|
|
470
496
|
def update_deferred_event_registration!
|
@@ -178,6 +178,21 @@ module Effective
|
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
181
|
+
# Used in email and tickets datatable
|
182
|
+
def full_name
|
183
|
+
if first_name.present?
|
184
|
+
[
|
185
|
+
name,
|
186
|
+
("<small>#{organization || company}</small>" if organization || company.present?),
|
187
|
+
("<small>#{email}</small>" if email.present?)
|
188
|
+
].compact.join('<br>').html_safe
|
189
|
+
elsif owner.present?
|
190
|
+
owner.to_s + ' - GUEST'
|
191
|
+
else
|
192
|
+
'GUEST'
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
181
196
|
def details
|
182
197
|
[
|
183
198
|
(content_tag(:span, 'Member', class: 'badge badge-warning') if member_ticket?),
|
@@ -186,6 +201,10 @@ module Effective
|
|
186
201
|
].compact.join(' ').html_safe
|
187
202
|
end
|
188
203
|
|
204
|
+
def responses
|
205
|
+
[response1.presence, response2.presence, response3.presence].compact.join('<br>').html_safe
|
206
|
+
end
|
207
|
+
|
189
208
|
def purchasable_name
|
190
209
|
["#{event_ticket} - #{name}", details.presence].compact.join('<br>').html_safe
|
191
210
|
end
|
@@ -321,6 +340,11 @@ module Effective
|
|
321
340
|
(waitlisted? && !promoted?)
|
322
341
|
end
|
323
342
|
|
343
|
+
# Manual admin action only
|
344
|
+
def send_confirmation_email!
|
345
|
+
EffectiveEvents.send_email(:event_registrant_confirmation, self)
|
346
|
+
end
|
347
|
+
|
324
348
|
private
|
325
349
|
|
326
350
|
def build_user
|
@@ -31,11 +31,11 @@
|
|
31
31
|
= tab 'Wizard' do
|
32
32
|
= render '/admin/events/form_event_registration_content', event: event
|
33
33
|
|
34
|
-
= tab 'Email' do
|
35
|
-
|
34
|
+
-# = tab 'Email' do
|
35
|
+
-# %p Click New to add one or more emails.
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
-# - datatable = Admin::EffectiveEventNotificationsDatatable.new(event_id: event.id)
|
38
|
+
-# = render_datatable(datatable, inline: true, simple: true)
|
39
39
|
|
40
40
|
= tab 'Access' do
|
41
41
|
= render '/admin/events/form_access', event: event
|
@@ -4,8 +4,10 @@
|
|
4
4
|
- if defined?(EffectiveArticleEditor)
|
5
5
|
= f.article_editor :rich_text_excerpt, label: 'Excerpt', hint: 'Will be used for the events excerpt on index pages.'
|
6
6
|
= f.article_editor :rich_text_body, label: 'Body', hint: 'The main body of your event'
|
7
|
+
= f.article_editor :rich_text_confirmation_email, label: 'Confirmation email', hint: 'Include this content in the event registration confirmation email'
|
7
8
|
- else
|
8
9
|
= f.rich_text_area :rich_text_excerpt, label: 'Excerpt', hint: 'Will be used for the events excerpt on index pages.'
|
9
10
|
= f.rich_text_area :rich_text_body, label: 'Body', hint: 'The main body of your event'
|
11
|
+
= f.rich_text_area :rich_text_confirmation_email, label: 'Confirmation email', hint: 'Include this content in the event registration confirmation email'
|
10
12
|
|
11
13
|
= f.submit
|
@@ -15,5 +15,7 @@
|
|
15
15
|
= render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout))
|
16
16
|
|
17
17
|
- if resource.submit_order.delayed? && resource.submit_order.deferred?
|
18
|
-
=
|
18
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
19
|
+
= f.hidden_field :id
|
20
|
+
= f.save 'Save and Continue'
|
19
21
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
%h2 Event Registrant Confirmation
|
2
|
+
|
3
|
+
%p Event: #{@event.title}
|
4
|
+
%p Date: #{effective_events_event_schedule(@event)}
|
5
|
+
%p Ticket: #{@event_registrant.purchasable_name.gsub('<br>', ' - ').html_safe} - #{price_to_currency(@event_registrant.price)}
|
6
|
+
|
7
|
+
- if @event_registrant.responses.present?
|
8
|
+
%p= @event_registrant.responses
|
9
|
+
|
10
|
+
- if @event_registration.present? && @event_registrant.user == @event_registration.owner
|
11
|
+
%p= link_to('View your registration', effective_events.event_event_registration_url(@event, @event_registration))
|
12
|
+
|
13
|
+
- if @event.rich_text_confirmation_email.present?
|
14
|
+
%hr
|
15
|
+
= @event.rich_text_confirmation_email.to_s.html_safe
|
16
|
+
|
17
|
+
- if @event.delayed_payment?
|
18
|
+
%strong Please note:
|
19
|
+
%ul
|
20
|
+
%li Credit card payment will be processed on #{@event.delayed_payment_date.strftime("%A, %B %d, %Y")}
|
21
|
+
%li Changes and cancellations must be made before this date.
|
22
|
+
%li A receipt will be sent to you after the transaction is completed.
|
@@ -0,0 +1,45 @@
|
|
1
|
+
%h2 Event Registration Confirmation
|
2
|
+
|
3
|
+
%p Event: #{@event.title}
|
4
|
+
%p Date: #{effective_events_event_schedule(@event)}
|
5
|
+
%p= link_to('View your registration', effective_events.event_event_registration_url(@event, @event_registration))
|
6
|
+
|
7
|
+
- if @event.rich_text_confirmation_email.present?
|
8
|
+
%hr
|
9
|
+
= @event.rich_text_confirmation_email.to_s.html_safe
|
10
|
+
|
11
|
+
- if @event.delayed_payment?
|
12
|
+
%strong Please note:
|
13
|
+
%ul
|
14
|
+
%li Credit card payment will be processed on #{@event.delayed_payment_date.strftime("%A, %B %d, %Y")}
|
15
|
+
%li Changes and cancellations must be made before this date.
|
16
|
+
%li A receipt will be sent to you after the transaction is completed.
|
17
|
+
|
18
|
+
%hr
|
19
|
+
|
20
|
+
- responses = Array(@event_registrants).any? { |er| er.responses.present? }
|
21
|
+
|
22
|
+
%table.table
|
23
|
+
%thead
|
24
|
+
%tr
|
25
|
+
%th Qty
|
26
|
+
%th Ticket
|
27
|
+
- if responses
|
28
|
+
%th Details
|
29
|
+
%th Price
|
30
|
+
%tbody
|
31
|
+
- Array(@event_registrants).each do |er|
|
32
|
+
%tr
|
33
|
+
%td 1
|
34
|
+
%td= er.purchasable_name
|
35
|
+
- if responses
|
36
|
+
%td= er.responses
|
37
|
+
%td= price_to_currency(er.price)
|
38
|
+
|
39
|
+
- Array(@event_addons).each do |ea|
|
40
|
+
%tr
|
41
|
+
%td 1
|
42
|
+
%td= ea.purchasable_name
|
43
|
+
- if responses
|
44
|
+
%td= ea.notes
|
45
|
+
%td= price_to_currency(ea.price)
|
data/config/routes.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_events
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.26.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
11
|
+
date: 2024-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -296,7 +296,9 @@ files:
|
|
296
296
|
- app/views/effective/events/_sidebar.html.haml
|
297
297
|
- app/views/effective/events/index.html.haml
|
298
298
|
- app/views/effective/events/show.html.haml
|
299
|
+
- app/views/effective/events_mailer/event_registrant_confirmation.html.haml
|
299
300
|
- app/views/effective/events_mailer/event_registrant_purchased.liquid
|
301
|
+
- app/views/effective/events_mailer/event_registration_confirmation.html.haml
|
300
302
|
- app/views/simple_calendar/_month_calendar.html.haml
|
301
303
|
- config/effective_events.rb
|
302
304
|
- config/locales/effective_events.en.yml
|