effective_resources 2.22.1 → 2.23.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: 9f1b13829195775799805a0687e93edf636a0212ba8605121c0f2b71664bbe4b
4
- data.tar.gz: 6c13fd710c92f283595aebd9ed7553c8b06baef6e91f6bc71719558069ff0748
3
+ metadata.gz: b5203021d6f8cd741603bcf0459f4277f6227c56fde16fd21fb99cae45564667
4
+ data.tar.gz: 505149510d60183e7b0935a043f6be30d96dbb79099225a89c6fdc136ad1100d
5
5
  SHA512:
6
- metadata.gz: 77aed690165d729baaacc3bb62fab2d556ec19f88c0da70e0108a61a1aac6dc8572ca1ed3af96c871b59383846403cd76684723e1d2b1ac8dabe66f2612f455e
7
- data.tar.gz: 1da231ac069c526ff2d4f1e77ef7a9d5f7bea5e005c72bf08bb879854b4761cca71e185b6882919d4fc5b6d8e342d9a5d07cdd70460fe222e7fd921b064e3fb7
6
+ metadata.gz: 5efcc14c75d711551ae84574fd1bb64970273a170c7135a645af656b55be45ea8b71520827950933b13d636a32c51c5b0a4a58326666bbcf8722394ae086b6ad
7
+ data.tar.gz: ca89163745a47fe5be4342149df505800565cf6afc6991a9d765de4099d8b2efe17f570f27026eadaa5f7c6629edcd6d7f25c4f0ba5e6a13ea6b840f52c49f15
@@ -20,12 +20,20 @@ module EffectiveActsAsEmailFormHelper
20
20
  # These defaults are only used when there is no email_template
21
21
  email_defaults = form.object.email_form_defaults(action) unless email_template.present?
22
22
 
23
+ from = email_template&.from || email_defaults[:from] || EffectiveResources.mailer_froms.first
24
+ subject = email_template&.subject || email_defaults[:subject] || ''
25
+ body = email_template&.body || email_defaults[:body] || ''
26
+ content_type = email_template&.content_type || email_defaults[:content_type] || ''
27
+
23
28
  locals = {
24
29
  form: form,
25
30
  email_to: to,
31
+ email_from: from,
32
+ email_subject: subject,
33
+ email_body: body,
34
+ email_content_type: content_type,
26
35
  email_skip: skip,
27
36
  email_action: (action || true),
28
- email_defaults: email_defaults,
29
37
  email_template: email_template,
30
38
  email_variables: variables
31
39
  }
@@ -41,7 +41,7 @@ module ActsAsEmailForm
41
41
  validates :email_form_body, presence: true
42
42
 
43
43
  validate(unless: -> { email_form_from.blank? }) do
44
- self.errors.add(:email_form_from, 'must be a valid email address') unless email_form_from.include?('@')
44
+ errors.add(:email_form_from, 'must be a valid email address') unless email_form_from.include?('@')
45
45
  end
46
46
  end
47
47
 
@@ -60,7 +60,7 @@ module ActsAsEmailForm
60
60
 
61
61
  # Only considered when not using an effective email template
62
62
  def email_form_defaults(action)
63
- { from: nil, subject: nil, body: nil }
63
+ { from: nil, subject: nil, body: nil, content_type: 'text/plain' }
64
64
  end
65
65
 
66
66
  end
@@ -96,7 +96,7 @@ module ActsAsPurchasableWizard
96
96
  # From Billing Step
97
97
  order.billing_address = owner.billing_address if owner.try(:billing_address).present?
98
98
 
99
- # This will update all order items to match the prices from their purchasable
99
+ # This will assign all order items to match the prices from their purchasable
100
100
  order.try(:update_purchasable_attributes)
101
101
 
102
102
  # Handle effective_memberships coupon fees price reduction
@@ -45,25 +45,6 @@ module EffectiveDeviseUser
45
45
  avatar_url :string
46
46
  end
47
47
 
48
- # Devise invitable ignores model validations, so we manually check for duplicate email addresses.
49
- before_save(if: -> { new_record? && try(:invitation_sent_at).present? }) do
50
- if email.blank?
51
- errors.add(:email, "can't be blank")
52
- raise("email can't be blank")
53
- end
54
-
55
- value = email.strip.downcase
56
-
57
- if self.class.where(email: value).present?
58
- errors.add(:email, 'has already been taken')
59
- raise("email has already been taken")
60
- end
61
-
62
- if respond_to?(:alternate_email) && self.class.where(alternate_email: value).present?
63
- errors.add(:email, 'has already been taken')
64
- raise("email has already been taken")
65
- end
66
- end
67
48
 
68
49
  # Clear the provider if an oauth signed in user resets password
69
50
  before_save(if: -> { persisted? && encrypted_password_changed? }) do
@@ -245,6 +226,30 @@ module EffectiveDeviseUser
245
226
  super(value.to_s.strip.downcase.presence)
246
227
  end
247
228
 
229
+ # Devise invitable ignores model validations, so we manually check for duplicate email addresses.
230
+ def invite!(invited_by = nil, options = {})
231
+ if new_record?
232
+ value = email.to_s.strip.downcase
233
+
234
+ if value.blank?
235
+ errors.add(:email, "can't be blank")
236
+ return false
237
+ end
238
+
239
+ if self.class.where(email: value).present?
240
+ errors.add(:email, 'has already been taken')
241
+ return false
242
+ end
243
+
244
+ if respond_to?(:alternate_email) && self.class.where(alternate_email: value).present?
245
+ errors.add(:email, 'has already been taken')
246
+ return false
247
+ end
248
+ end
249
+
250
+ super
251
+ end
252
+
248
253
  def reinvite!
249
254
  invite!
250
255
  end
@@ -258,6 +263,13 @@ module EffectiveDeviseUser
258
263
  false
259
264
  end
260
265
 
266
+ # This allows the Sign Up form to work for existing users with a pending invitation
267
+ # It assigns the attributes from the sign_up_params, saves the user, accepts the invitation
268
+ # Note that this action skips the invitation_token validation and is therefore insecure.
269
+ def allow_sign_up_from_invitation?
270
+ true
271
+ end
272
+
261
273
  def inactive_message
262
274
  (respond_to?(:archived?) && archived?) ? :archived : super
263
275
  end
@@ -4,26 +4,18 @@
4
4
  = form.check_box :email_form_skip, label: 'Do not send email'
5
5
 
6
6
  = form.hide_if :email_form_skip, true do
7
+ - errors = form.object.errors.present?
8
+
7
9
  - if email_to.present?
8
10
  = form.static_field :email_form_to, label: 'To', value: (email_to.try(:email) || email_to)
9
11
 
10
- - if form.object.errors.present?
11
- = form.select :email_form_from, mailer_froms_collection(), label: 'From'
12
- = form.text_field :email_form_subject, label: 'Subject'
13
- = form.text_area :email_form_body, label: 'Body', rows: 10
14
-
15
- - elsif email_template.present?
16
- -# email_template is an Effective::EmailTemplate
17
- - from_value = email_template.from || EffectiveResources.mailer_froms.first
18
- = form.select :email_form_from, mailer_froms_collection(), label: 'From', value: from_value
19
- = form.text_field :email_form_subject, label: 'Subject', value: email_template.subject
20
- = form.text_area :email_form_body, label: 'Body', value: email_template.body, rows: 10
12
+ = form.select :email_form_from, mailer_froms_collection(), label: 'From', value: (email_from unless errors)
13
+ = form.text_field :email_form_subject, label: 'Subject', value: (email_subject unless errors)
21
14
 
15
+ - if email_content_type == 'text/html'
16
+ = form.article_editor :email_form_body, label: 'Body', mode: :email, value: (email_body unless errors)
22
17
  - else
23
- - from_value = email_defaults[:from] || EffectiveResources.mailer_froms.first
24
- = form.select :email_form_from, mailer_froms_collection(), label: 'From', value: from_value
25
- = form.text_field :email_form_subject, label: 'Subject', value: (email_defaults[:subject] || '')
26
- = form.text_area :email_form_body, label: 'Body', rows: 10, value: (email_defaults[:body] || '')
18
+ = form.text_area :email_form_body, label: 'Body', rows: 10, value: (email_body unless errors)
27
19
 
28
20
  - if email_variables.present?
29
21
  %p The available variables are:
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '2.22.1'.freeze
2
+ VERSION = '2.23.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.22.1
4
+ version: 2.23.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-04 00:00:00.000000000 Z
11
+ date: 2024-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails