effective_events 0.15.1 → 0.17.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd768661ad3e89bba50c413474a8694263ff5aa2262e9738ad78ac084089df38
4
- data.tar.gz: 7eb9a1b2731464398a4fecc6a0435f94cd6718de3be594b07c88546be4e4ec9c
3
+ metadata.gz: 6adf869c67bd082b19c66a82b5e3ac530a80b97c19e0047f13bdca69f7f1a98e
4
+ data.tar.gz: a1d8cd3df41996b18c2afcf4f2370a69e9d2b353e3bf3ca356808f3802ade723
5
5
  SHA512:
6
- metadata.gz: a554cde3edc18545fda120d05dee465f2ceda1b9d1ceb6da2a8d7786a4b1850d77ebf4b468f355f353afb8a0bf14b4eb51eaf505af5ccb8381ccd49999091270
7
- data.tar.gz: 63711c311814d5c9926be5651f14367f5c00e9adaeeaa7dcd8ce2542b8adc027c32dc27b77bc062dcc981e1901281fb9bd9205944f92755e5f177cf6827ca955
6
+ metadata.gz: b5cb43f659f86669874ea2edca7aa0159aad83c25a85065d2c69ee10d4aaf8392ea8aa1ebc3a171ab95b40f93e8ec3dd2e59aeb9161c8957a94aab60d5247e26
7
+ data.tar.gz: aba17ab942159ea4b5b0cf9c62511f876dbd54b56a864ce584115c07ce2bcd01c02310ceebadafb3548a983b9eeebddd1ccd55dfccde669c231152a35c67c9a8
@@ -18,10 +18,14 @@ module Admin
18
18
  col :title
19
19
  col :category, visible: false
20
20
 
21
- col :early_bird_price, as: :price, visible: event.early_bird_end_at.present?
21
+ col :early_bird_price, as: :price, visible: event&.early_bird_end_at.present?
22
22
  col :regular_price, as: :price
23
23
  col :member_price, as: :price
24
24
 
25
+ col :waitlist
26
+ col :capacity_available, visible: false
27
+ col :capacity, label: 'Capacity Total', visible: false
28
+
25
29
  col :capacity_to_s, label: 'Capacity' do |ticket|
26
30
  if ticket.capacity.present? && ticket.waitlist?
27
31
  "#{ticket.capacity_available} remaining / #{ticket.capacity} total. #{ticket.waitlisted_event_registrants_count} waitlisted."
@@ -44,9 +48,6 @@ module Admin
44
48
  event.event_registrants.purchased.unarchived.count
45
49
  end
46
50
 
47
- col :capacity_available, visible: false
48
- col :capacity, label: 'Capacity Total', visible: false
49
- col :waitlist, visible: false
50
51
 
51
52
  col :question1, visible: false
52
53
  col :question2, visible: false
@@ -4,7 +4,7 @@ module Admin
4
4
  scope :all
5
5
  scope :registerable
6
6
  scope :published
7
- scope :unpublished
7
+ scope :draft
8
8
  scope :upcoming
9
9
  scope :past
10
10
  end
@@ -19,7 +19,12 @@ module Admin
19
19
  end
20
20
 
21
21
  col :slug, visible: false
22
- col :draft
22
+
23
+ col :draft?, as: :boolean, visible: false
24
+ col :published?, as: :boolean
25
+ col :published_start_at
26
+ col :published_end_at
27
+
23
28
  col :start_at, label: 'Start', visible: false
24
29
  col :end_at, label: 'End', visible: false
25
30
  col :excerpt, visible: false
@@ -8,7 +8,7 @@ module Effective
8
8
  raise('expected an Effective::EventRegistrant') unless resource.kind_of?(Effective::EventRegistrant)
9
9
 
10
10
  @assigns = assigns_for(resource)
11
- mail(to: resource.email, **headers_for(resource, opts))
11
+ mail(to: resource.member_email, **headers_for(resource, opts))
12
12
  end
13
13
 
14
14
  protected
@@ -41,10 +41,11 @@ module Effective
41
41
 
42
42
  has_one_attached :file
43
43
 
44
+ acts_as_role_restricted if respond_to?(:acts_as_role_restricted)
45
+ acts_as_published
44
46
  acts_as_slugged
45
- log_changes if respond_to?(:log_changes)
46
47
  acts_as_tagged if respond_to?(:acts_as_tagged)
47
- acts_as_role_restricted if respond_to?(:acts_as_role_restricted)
48
+ log_changes if respond_to?(:log_changes)
48
49
 
49
50
  effective_resource do
50
51
  title :string
@@ -52,8 +53,9 @@ module Effective
52
53
  category :string
53
54
  slug :string
54
55
 
55
- draft :boolean
56
- published_at :datetime
56
+ published_start_at :datetime
57
+ published_end_at :datetime
58
+ legacy_draft :boolean # No longer used. To be removed.
57
59
 
58
60
  start_at :datetime
59
61
  end_at :datetime
@@ -87,9 +89,6 @@ module Effective
87
89
  base
88
90
  }
89
91
 
90
- scope :published, -> { where(draft: false).where(arel_table[:published_at].lt(Time.zone.now)) }
91
- scope :unpublished, -> { where(draft: true).or(where(arel_table[:published_at].gteq(Time.zone.now))) }
92
-
93
92
  scope :upcoming, -> { where(arel_table[:end_at].gt(Time.zone.now)) }
94
93
  scope :past, -> { where(arel_table[:end_at].lteq(Time.zone.now)) }
95
94
 
@@ -136,7 +135,6 @@ module Effective
136
135
  scope :delayed_payment_date_upcoming, -> { delayed.where(arel_table[:delayed_payment_date].gt(Time.zone.today)) }
137
136
 
138
137
  validates :title, presence: true, length: { maximum: 255 }
139
- validates :published_at, presence: true, unless: -> { draft? }
140
138
  validates :start_at, presence: true
141
139
  validates :end_at, presence: true
142
140
  validates :external_registration_url, url: true
@@ -168,10 +166,6 @@ module Effective
168
166
  errors.add(:delayed_payment, 'no delayed payment processor available') unless EffectiveOrders.try(:delayed?)
169
167
  end
170
168
 
171
- validate(if: -> { delayed_payment_date && registration_end_at }) do
172
- errors.add(:delayed_payment_date, 'must be after registration end date') unless registration_end_at < delayed_payment_date
173
- end
174
-
175
169
  validate(if: -> { file.attached? }) do
176
170
  errors.add(:file, 'must be an image') unless file.image?
177
171
  end
@@ -196,13 +190,6 @@ module Effective
196
190
  event_tickets.any? { |et| et.waitlist? }
197
191
  end
198
192
 
199
- def published?
200
- return false if draft?
201
- return false if published_at.blank?
202
-
203
- published_at < Time.zone.now
204
- end
205
-
206
193
  def registerable?
207
194
  return false unless published?
208
195
  return false if closed?
@@ -247,10 +234,11 @@ module Effective
247
234
  Event.new(attributes.except('id', 'updated_at', 'created_at')).tap do |event|
248
235
  event.title = event.title + ' (Copy)'
249
236
  event.slug = event.slug + '-copy'
250
- event.draft = true
251
237
 
252
238
  event.rich_text_body = rich_text_body
253
239
  event.rich_text_excerpt = rich_text_excerpt
240
+
241
+ event.assign_attributes(published_start_at: nil, published_end_at: nil)
254
242
  end
255
243
  end
256
244
 
@@ -150,6 +150,8 @@ module Effective
150
150
  update_column(:started_at, Time.zone.now)
151
151
 
152
152
  event_registrants.each do |event_registrant|
153
+ next if event_registrant.member_email.blank?
154
+
153
155
  begin
154
156
  EffectiveEvents.send_email(email_template, event_registrant, email_notification_params)
155
157
  rescue => e
@@ -32,7 +32,6 @@ module Effective
32
32
  company :string
33
33
 
34
34
  blank_registrant :boolean
35
- member_registrant :boolean
36
35
 
37
36
  waitlisted :boolean
38
37
  promoted :boolean # An admin marked this registrant as promoted from the waitlist
@@ -59,8 +58,6 @@ module Effective
59
58
 
60
59
  scope :sorted, -> { order(:last_name) }
61
60
  scope :deep, -> { includes(:event, :event_ticket, :owner) }
62
-
63
- #scope :registered, -> { purchased_or_deferred.unarchived }
64
61
  scope :registered, -> { where.not(registered_at: nil) }
65
62
 
66
63
  before_validation(if: -> { event_registration.present? }) do
@@ -69,7 +66,7 @@ module Effective
69
66
  end
70
67
 
71
68
  before_validation(if: -> { blank_registrant? }) do
72
- assign_attributes(user: nil, first_name: nil, last_name: nil, email: nil)
69
+ assign_attributes(user: nil, first_name: nil, last_name: nil, email: nil, company: nil)
73
70
  end
74
71
 
75
72
  before_validation(if: -> { user.present? }) do
@@ -89,22 +86,24 @@ module Effective
89
86
  validates :email, email: true
90
87
 
91
88
  # Member Only Ticket
92
- with_options(if: -> { event_ticket&.member_only? }, unless: -> { blank_registrant? }) do
89
+ with_options(if: -> { event_ticket&.member_only? && present_registrant? }) do
93
90
  validates :user_id, presence: { message: 'Please select a member' }
94
91
  end
95
92
 
96
93
  # Regular Ticket
97
- with_options(if: -> { event_ticket&.regular? }, unless: -> { blank_registrant? }) do
98
- validates :first_name, presence: true
99
- validates :last_name, presence: true
100
- validates :email, presence: true
94
+ with_options(if: -> { event_ticket&.regular? && present_registrant? }) do
95
+ validates :first_name, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:first_name) }
96
+ validates :last_name, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:last_name) }
97
+ validates :email, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:email) }
98
+ validates :company, presence: true, unless: -> { EffectiveEvents.event_registrant_required_fields.exclude?(:company) }
101
99
  end
102
100
 
103
- with_options(if: -> { event_ticket&.member_or_non_member? && !blank_registrant? }) do
104
- validates :user_id, presence: { message: 'Please select a member' }, unless: -> { first_name.present? || last_name.present? || email.present? }
105
- validates :first_name, presence: true, unless: -> { user.present? }
106
- validates :last_name, presence: true, unless: -> { user.present? }
107
- validates :email, presence: true, unless: -> { user.present? }
101
+ with_options(if: -> { event_ticket&.member_or_non_member? && present_registrant? }) do
102
+ validates :user_id, presence: { message: 'Please select a member' }, unless: -> { first_name.present? || last_name.present? }
103
+ validates :first_name, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:first_name) }
104
+ validates :last_name, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:last_name) }
105
+ validates :email, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:email) }
106
+ validates :company, presence: true, unless: -> { user.present? || EffectiveEvents.event_registrant_required_fields.exclude?(:company) }
108
107
  end
109
108
 
110
109
  after_defer do
@@ -138,7 +137,15 @@ module Effective
138
137
  end
139
138
 
140
139
  def member_present?
141
- user&.is?(:member) || (blank_registrant? && member_registrant?)
140
+ user&.is?(:member)
141
+ end
142
+
143
+ def member_email
144
+ email.presence || user&.email
145
+ end
146
+
147
+ def present_registrant?
148
+ !blank_registrant?
142
149
  end
143
150
 
144
151
  def tax_exempt
@@ -164,6 +171,24 @@ module Effective
164
171
  registered!
165
172
  end
166
173
 
174
+ def waitlist!
175
+ raise('expected a waitlist? event_ticket') unless event_ticket.waitlist?
176
+
177
+ update!(waitlisted: true)
178
+ orders.reject(&:purchased?).each { |order| order.update_purchasable_attributes! }
179
+
180
+ true
181
+ end
182
+
183
+ def unwaitlist!
184
+ raise('expected a waitlist? event_ticket') unless event_ticket.waitlist?
185
+
186
+ update!(waitlisted: false)
187
+ orders.reject(&:purchased?).each { |order| order.update_purchasable_attributes! }
188
+
189
+ true
190
+ end
191
+
167
192
  def promote!
168
193
  raise('expected a waitlist? event_ticket') unless event_ticket.waitlist?
169
194
 
@@ -68,7 +68,6 @@ module Effective
68
68
  validates :early_bird_price, numericality: { greater_than_or_equal_to: 0, allow_blank: true }
69
69
 
70
70
  validates :capacity, numericality: { greater_than_or_equal_to: 0, allow_blank: true }
71
- validates :capacity, numericality: { greater_than_or_equal_to: 1, message: 'must have a non-zero capacity when using waitlist' }, if: -> { waitlist? }
72
71
 
73
72
  def to_s
74
73
  title.presence || 'New Event Ticket'
@@ -1,4 +1,10 @@
1
1
  = effective_form_with(model: [:admin, event_addon], engine: true) do |f|
2
+ - if inline_datatable?
3
+ = f.hidden_field :event_id
4
+ - else
5
+ = f.select :event_id, Effective::Event.sorted.all,
6
+ 'data-load-ajax-url': effective_events.new_admin_event_addon_path,
7
+ 'data-load-ajax-div': '#effective-events-event-addon-ajax'
2
8
  = f.hidden_field :event_id
3
9
 
4
10
  - if f.object.new_record?
@@ -11,11 +17,10 @@
11
17
  - else
12
18
  = f.static_field :owner
13
19
 
14
- = render 'admin/event_addons/fields', f: f, event: event_addon.event
20
+ #effective-events-event-addon-ajax
21
+ - if f.object.event.present?
22
+ = render 'admin/event_addons/fields', f: f, event: event_addon.event
15
23
 
16
24
  = f.check_box :archived, label: "Archive this addon. It will be displayed as archived on the owner's event registration"
17
25
 
18
- - if f.object.new_record?
19
- = f.submit 'Save and Mark Registered'
20
- - else
21
- = f.submit 'Save'
26
+ = f.submit 'Save'
@@ -1,5 +1,10 @@
1
1
  = effective_form_with(model: [:admin, event_registrant], engine: true) do |f|
2
- = f.hidden_field :event_id
2
+ - if inline_datatable?
3
+ = f.hidden_field :event_id
4
+ - else
5
+ = f.select :event_id, Effective::Event.sorted.all,
6
+ 'data-load-ajax-url': effective_events.new_admin_event_registrant_path,
7
+ 'data-load-ajax-div': '#effective-events-event-registrant-ajax'
3
8
 
4
9
  - if f.object.new_record?
5
10
  -# User
@@ -13,11 +18,10 @@
13
18
 
14
19
  = f.datetime_field :registered_at, required: true
15
20
 
16
- = render 'effective/event_registrants/fields', f: f, event: event_registrant.event, namespace: :admin
21
+ #effective-events-event-registrant-ajax
22
+ - if f.object.event.present?
23
+ = render 'effective/event_registrants/fields', f: f, event: event_registrant.event, namespace: :admin
17
24
 
18
25
  = f.check_box :archived, label: "Archive this registrant. It will be displayed as archived on the owner's event registration"
19
26
 
20
- - if f.object.new_record?
21
- = f.submit 'Save and Mark Registered'
22
- - else
23
- = f.submit 'Save'
27
+ = f.submit 'Save'
@@ -11,18 +11,17 @@
11
11
  = f.show_if(:category, 'Regular') do
12
12
  .alert.alert-info.mb-4
13
13
  %strong Regular Ticket:
14
- Anyone will be able to purchase this ticket. They will be asked for a first name, last name and email. Will not display the dropdown list of related members. Only the regular price applies.
14
+ Anyone will be able to purchase this ticket. They will be asked for a first and last name. Will not display the dropdown list of all members. Only the regular price applies.
15
15
 
16
16
  = f.show_if(:category, 'Member Only') do
17
17
  .alert.alert-info.mb-4
18
18
  %strong Member Only Ticket:
19
- Only members will be able to purchase this ticket. They must select a member from the dropdown list of related members. Only the member price applies.
19
+ Only members will be able to purchase this ticket. They must select a member from the dropdown list of all members. Only the member price applies.
20
20
 
21
21
  = f.show_if(:category, 'Member or Non-Member') do
22
22
  .alert.alert-info.mb-4
23
23
  %strong Member or Non-Member Ticket:
24
- Anyone will be able to purchase this ticket. They can select a member from the dropdown list of related members to receive the member pricing.
25
- Or, they can enter a first name, last name and email to receive the regular pricing.
24
+ Anyone will be able to purchase this ticket. They can select a member from the dropdown list of all members to receive the member pricing or they can enter a first name and last name to receive the regular pricing.
26
25
 
27
26
  .col
28
27
  = f.number_field :capacity, hint: "The number of registrations will be limited to capacity.<br>Leave blank for unlimited capacity."
@@ -1,6 +1,16 @@
1
1
  = effective_form_with(model: [:admin, event], engine: true) do |f|
2
2
  = f.text_field :title, label: "Title"
3
3
 
4
+ -# acts_as_published
5
+ = f.hide_if(:save_as_draft, true) do
6
+ .row
7
+ .col-md-6
8
+ = f.datetime_field :published_start_at, hint: 'The event will be available starting on this date and time. Leave blank to use the current date and time.'
9
+ .col-md-6
10
+ = f.datetime_field :published_end_at, hint: 'The event will no longer be available after this date and time. Leave blank for no end date.', date_linked: false
11
+
12
+ = f.check_box :save_as_draft, label: "Save as a draft. It will not appear on the website and can only be accessed by admin users."
13
+
4
14
  - if f.object.persisted? || f.object.errors.include?(:slug)
5
15
  - current_url = (effective_events.event_url(f.object) rescue nil)
6
16
  = f.text_field :slug, hint: "The slug controls this event's internet address. Be careful, changing the slug will break links that other websites may have to the old address.<br>#{('This event is currently reachable via ' + link_to(current_url.gsub(f.object.slug, '<strong>' + f.object.slug + '</strong>').html_safe, current_url)) if current_url }".html_safe
@@ -14,10 +24,6 @@
14
24
  - if event.class.respond_to?(:acts_as_tagged?)
15
25
  = render 'effective/tags/fields', f: f
16
26
 
17
- = f.check_box :draft, hint: 'Save this event as a draft. It will not be accessible on the website.'
18
- .row
19
- .col-md-6= f.datetime_field :published_at, label: 'Publish date', hint: 'When should this be displayed on the website.'
20
-
21
27
  .row
22
28
  .col-md-6= f.datetime_field :start_at, label: "Event Start"
23
29
  .col-md-6= f.datetime_field :end_at, label: "Event End"
@@ -17,10 +17,6 @@
17
17
  - else
18
18
  = f.hidden_field :blank_registrant, value: false
19
19
 
20
- - if ticket.member_or_non_member?
21
- = f.show_if(:blank_registrant, true, nested: true) do
22
- = f.check_box :member_registrant, label: 'Yes, this ticket will be for a member'
23
-
24
20
  = f.show_if(:blank_registrant, false, nested: true) do
25
21
  %hr
26
22
 
@@ -1,3 +1,10 @@
1
- - # Choose member
2
- = f.hidden_field :user_type, value: current_user.class.name
3
- = f.select :user_id, effective_events_event_registrant_user_collection(f.object), required: true, hint: effective_events_event_registrant_user_hint()
1
+ - # Choose ANY member
2
+ - klass = (f.object.user || current_user).class
3
+ - ajax_url = (@select2_users_ajax_path || effective_memberships.member_users_membership_select2_ajax_index_path) unless Rails.env.test?
4
+
5
+ = f.hidden_field :user_type, value: klass.name
6
+ = f.select :user_id, klass.all, ajax_url: ajax_url, label: 'Member', required: true, hint: effective_events_event_registrant_user_hint()
7
+
8
+ - # Choose RELATED ORGANIZATION member
9
+ -# = f.hidden_field :user_type, value: current_user.class.name
10
+ -# = f.select :user_id, effective_events_event_registrant_user_collection(f.object), required: true, hint: effective_events_event_registrant_user_hint()
@@ -1,6 +1,13 @@
1
- - # Choose member
2
- = f.hidden_field :user_type, value: current_user.class.name
3
- = f.select :user_id, effective_events_event_registrant_user_collection(f.object), hint: effective_events_event_registrant_user_hint()
1
+ - # Choose ANY member
2
+ - klass = (f.object.user || current_user).class
3
+ - ajax_url = (@select2_users_ajax_path || effective_memberships.member_users_membership_select2_ajax_index_path) unless Rails.env.test?
4
+
5
+ = f.hidden_field :user_type, value: klass.name
6
+ = f.select :user_id, klass.all, ajax_url: ajax_url, label: 'Member', hint: effective_events_event_registrant_user_hint()
7
+
8
+ - # Choose RELATED ORGANIZATION member
9
+ -# = f.hidden_field :user_type, value: current_user.class.name
10
+ -# = f.select :user_id, effective_events_event_registrant_user_collection(f.object), hint: effective_events_event_registrant_user_hint()
4
11
 
5
12
  = f.show_if(:user_id, '', nested: true) do
6
13
  %p.text-center - or -
@@ -1,8 +1,8 @@
1
1
  - # Choose non-member
2
2
  .row
3
- .col-md= f.text_field :first_name, required: true
4
- .col-md= f.text_field :last_name, required: true
3
+ .col-md= f.text_field :first_name
4
+ .col-md= f.text_field :last_name
5
5
 
6
6
  .row
7
- .col-md= f.email_field :email, required: true
7
+ .col-md= f.email_field :email
8
8
  .col-md= f.text_field :company
@@ -13,7 +13,7 @@
13
13
  %th Ticket
14
14
  - if member_column
15
15
  %th Member Price
16
- %th #{'Regualar ' if member_column}Price
16
+ %th #{'Regular ' if member_column}Price
17
17
 
18
18
  %tbody
19
19
  - tickets.each do |ticket|
@@ -3,17 +3,16 @@
3
3
 
4
4
  - if resource.submit_order.deferred?
5
5
  = card do
6
- = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout), skip_order: resource.submit_order.delayed?)
6
+ = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout))
7
7
  - elsif resource.event.registerable? == false
8
8
  .alert.alert-danger Your selected event is no longer available for registration.
9
9
  - elsif resource.unavailable_event_tickets.present?
10
10
  .alert.alert-danger Your selected number of event tickets are no longer available.
11
11
  - elsif resource.unavailable_event_products.present?
12
12
  .alert.alert-danger Your selected number of event add-ons are no longer available.
13
-
14
13
  - else
15
14
  = card do
16
- = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout), skip_order: resource.submit_order.delayed?)
15
+ = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout))
17
16
 
18
17
  - if resource.submit_order.delayed? && resource.submit_order.deferred?
19
18
  = link_to 'Save and Continue', wizard_path(:submitted), class: 'btn btn-primary'
@@ -4,8 +4,8 @@
4
4
  - raise('expected a submitted event_registration') unless resource.submitted?
5
5
  - raise('expected a deffered event_registration submit_order') unless resource.submit_order&.deferred?
6
6
 
7
- - if resource.event.delayed?
8
- - raise('expected event delayed_payment_date to match order delayed_payment_date') unless resource.event.delayed_payment_date == resource.submit_order.delayed_payment_date
7
+ -# - if resource.event.delayed?
8
+ -# - raise('expected event delayed_payment_date to match order delayed_payment_date') unless resource.event.delayed_payment_date == resource.submit_order.delayed_payment_date
9
9
 
10
10
  .mb-4
11
11
  = link_to "Return to Dashboard", return_to_dashboard_path, class: 'btn btn-lg btn-primary btn-block'
@@ -18,6 +18,10 @@ EffectiveEvents.setup do |config|
18
18
  # Hint text for event images attachments
19
19
  config.events_hint_text = 'Hint text that includes required image dimensions'
20
20
 
21
+ # Validations for Event Registrants
22
+ # config.event_registrant_required_fields = [:first_name, :last_name, :email, :company]
23
+ config.event_registrant_required_fields = [:first_name, :last_name, :email]
24
+
21
25
  # Mailer Settings
22
26
  # Please see config/initializers/effective_resources.rb for default effective_* gem mailer settings
23
27
  #
data/config/routes.rb CHANGED
@@ -44,6 +44,8 @@ EffectiveEvents::Engine.routes.draw do
44
44
  resources :event_registrants, except: [:show] do
45
45
  post :promote, on: :member
46
46
  post :unpromote, on: :member
47
+ post :waitlist, on: :member
48
+ post :unwaitlist, on: :member
47
49
 
48
50
  post :archive, on: :member
49
51
  post :unarchive, on: :member
@@ -6,8 +6,9 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
6
6
  t.string :category
7
7
  t.string :slug
8
8
 
9
- t.boolean :draft, default: false
10
- t.datetime :published_at
9
+ t.datetime :published_start_at
10
+ t.datetime :published_end_at
11
+ t.boolean :legacy_draft, default: false
11
12
 
12
13
  t.datetime :start_at
13
14
  t.datetime :end_at
@@ -83,7 +84,6 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
83
84
  t.text :notes
84
85
 
85
86
  t.boolean :blank_registrant, default: false
86
- t.boolean :member_registrant, default: false
87
87
 
88
88
  t.boolean :waitlisted, default: false
89
89
  t.boolean :promoted, default: false
data/db/seeds.rb CHANGED
@@ -13,7 +13,7 @@ event = Effective::Event.create!(
13
13
  rich_text_excerpt: '<p>This is a great event</p>',
14
14
  rich_text_body: '<p>This is a really great event!</p>',
15
15
 
16
- published_at: Time.zone.now,
16
+ published_start_at: Time.zone.now,
17
17
  start_at: (now + 1.week),
18
18
  end_at: (now + 1.week + 1.hour),
19
19
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveEvents
2
- VERSION = '0.15.1'.freeze
2
+ VERSION = '0.17.0'.freeze
3
3
  end
@@ -9,7 +9,7 @@ module EffectiveEvents
9
9
  :events_table_name, :event_registrants_table_name, :event_tickets_table_name,
10
10
  :event_registrations_table_name, :event_products_table_name, :event_addons_table_name, :event_notifications_table_name,
11
11
  :mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :mailer_subject,
12
- :layout, :per_page, :use_effective_roles, :categories, :events_hint_text,
12
+ :layout, :per_page, :use_effective_roles, :categories, :events_hint_text, :event_registrant_required_fields,
13
13
  :event_registration_class_name
14
14
  ]
15
15
  end
@@ -28,4 +28,8 @@ module EffectiveEvents
28
28
  Array(config[:categories]) - [nil, false, '']
29
29
  end
30
30
 
31
+ def event_registrant_required_fields
32
+ (Array(config[:event_registrant_required_fields]) - [nil, false, '']).map(&:to_sym)
33
+ end
34
+
31
35
  end
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: 0.15.1
4
+ version: 0.17.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-06-25 00:00:00.000000000 Z
11
+ date: 2024-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails