effective_resources 1.8.17 → 1.8.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/helpers/effective_acts_as_email_form_helper.rb +32 -0
- data/app/models/concerns/acts_as_email_form.rb +74 -0
- data/app/views/effective/acts_as_email_form/_fields.html.haml +33 -0
- data/lib/effective_resources/engine.rb +1 -0
- data/lib/effective_resources/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 180638d525bdd6d499cddd67f09595509685ebbfdc59e69ea16d89fdef6ff1fa
|
4
|
+
data.tar.gz: e9687c798dceef560a070a4631876ca17b401cf2e7d993c7df98dbe5af5febc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41b62506a91d29ebe9049ce5de063e18412ba60cf4d63636e2cbe245d2b972a8a767d4645d2f42f5b4923b73eb867b4ea0ed508bda1ab55747d68f46dc1db4af
|
7
|
+
data.tar.gz: de31440669699862980273c6b1ce68b786057d200b524ec1ad0a54a09d73b8fbae9bfb372918b263fe8bc23254329ca15feb305adab7a683d86833738d0c5f6c
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module EffectiveActsAsEmailFormHelper
|
4
|
+
|
5
|
+
def email_form_fields(form, action = nil, skip: true, to: nil, variables: nil, partial: nil)
|
6
|
+
raise('expected a form') unless form.respond_to?(:object)
|
7
|
+
|
8
|
+
resource = form.object
|
9
|
+
raise('expected an acts_as_email_form resource') unless resource.class.respond_to?(:acts_as_email_form?)
|
10
|
+
|
11
|
+
# Load the template.
|
12
|
+
email_template = if action.present? && resource.email_form_effective_email_templates?
|
13
|
+
Effective::EmailTemplate.where(template_name: action).first!
|
14
|
+
end
|
15
|
+
|
16
|
+
# These defaults are only used when there is no email_template
|
17
|
+
email_defaults = form.object.email_form_defaults(action) unless email_template.present?
|
18
|
+
|
19
|
+
locals = {
|
20
|
+
form: form,
|
21
|
+
email_to: to,
|
22
|
+
email_skip: skip,
|
23
|
+
email_action: (action || true),
|
24
|
+
email_defaults: email_defaults,
|
25
|
+
email_template: email_template,
|
26
|
+
email_variables: variables
|
27
|
+
}
|
28
|
+
|
29
|
+
render(partial: (partial || 'effective/acts_as_email_form/fields'), locals: locals)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# ActsAsEmailForm
|
2
|
+
# Adds an email_form_skip, email_form_from, email_form_subject, email_form_body attr_accessors
|
3
|
+
# And some helpful methods to render and validate a Email to Send form
|
4
|
+
# That should work with or without effective_email_templates to send an email on a model
|
5
|
+
|
6
|
+
module ActsAsEmailForm
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
module Base
|
10
|
+
def acts_as_email_form
|
11
|
+
include ::ActsAsEmailForm
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
included do
|
16
|
+
# Yes, we are submitting an email form
|
17
|
+
attr_accessor :email_form_action
|
18
|
+
|
19
|
+
# Skip sending the email entirely
|
20
|
+
attr_accessor :email_form_skip
|
21
|
+
|
22
|
+
# The email From / Subject / Body fields
|
23
|
+
attr_accessor :email_form_from
|
24
|
+
attr_accessor :email_form_subject
|
25
|
+
attr_accessor :email_form_body
|
26
|
+
|
27
|
+
effective_resource do
|
28
|
+
email_form_action :string, permitted: true
|
29
|
+
email_form_skip :boolean, permitted: true
|
30
|
+
|
31
|
+
email_form_from :string, permitted: true
|
32
|
+
email_form_subject :string, permitted: true
|
33
|
+
email_form_body :text, permitted: true
|
34
|
+
end
|
35
|
+
|
36
|
+
with_options(if: -> { email_form_action.present? && !email_form_skip? }) do
|
37
|
+
validates :email_form_from, presence: true
|
38
|
+
validates :email_form_subject, presence: true
|
39
|
+
validates :email_form_body, presence: true
|
40
|
+
|
41
|
+
validate(unless: -> { email_form_from.blank? }) do
|
42
|
+
self.errors.add(:email_form_from, 'must be a valid email address') unless email_form_from.include?('@')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
if defined?(EffectiveEmailTemplates)
|
47
|
+
validates :email_form_subject, liquid: true, if: -> { email_form_effective_email_templates? }
|
48
|
+
validates :email_form_body, liquid: true, if: -> { email_form_effective_email_templates? }
|
49
|
+
end
|
50
|
+
|
51
|
+
def email_form_params
|
52
|
+
{ from: email_form_from, subject: email_form_subject, body: email_form_body }.compact
|
53
|
+
end
|
54
|
+
|
55
|
+
def email_form_skip?
|
56
|
+
EffectiveResources.truthy?(email_form_skip)
|
57
|
+
end
|
58
|
+
|
59
|
+
def email_form_effective_email_templates?
|
60
|
+
!!defined?(EffectiveEmailTemplates)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Only considered when not using an effective email template
|
64
|
+
def email_form_defaults(action)
|
65
|
+
{ from: nil, subject: nil, body: nil }
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
module ClassMethods
|
71
|
+
def acts_as_email_form?; true; end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
= form.hidden_field :email_form_action, value: email_action
|
2
|
+
|
3
|
+
- if email_skip
|
4
|
+
= form.check_box :email_form_skip, label: 'Do not send email'
|
5
|
+
|
6
|
+
= form.hide_if :email_form_skip, true do
|
7
|
+
- if email_to.present? && form.respond_to?(:static_field)
|
8
|
+
= form.static_field :email_form_to, label: 'To', value: (email_to.respond_to?(:email) ? email_to.email : email_to)
|
9
|
+
|
10
|
+
- if form.object.errors.present?
|
11
|
+
= form.text_field :email_form_from, 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
|
+
= form.text_field :email_form_from, label: 'From', value: email_template.from
|
18
|
+
= form.text_field :email_form_subject, label: 'Subject', value: email_template.subject
|
19
|
+
= form.text_area :email_form_body, label: 'Body', value: email_template.body, rows: 10
|
20
|
+
|
21
|
+
- else
|
22
|
+
= form.text_field :email_form_from, label: 'From', value: (email_defaults[:from] || '')
|
23
|
+
= form.text_field :email_form_subject, label: 'Subject', value: (email_defaults[:subject] || '')
|
24
|
+
= form.text_area :email_form_body, label: 'Body', rows: 10, value: (email_defaults[:body] || '')
|
25
|
+
|
26
|
+
- if email_variables.present?
|
27
|
+
%p The available variables are:
|
28
|
+
|
29
|
+
%ul
|
30
|
+
- email_variables.each do |variable|
|
31
|
+
%li {{ #{variable} }}
|
32
|
+
|
33
|
+
%small.text-muted Only a developer can add additional variables
|
@@ -23,6 +23,7 @@ module EffectiveResources
|
|
23
23
|
initializer 'effective_resources.active_record' do |app|
|
24
24
|
ActiveSupport.on_load :active_record do
|
25
25
|
ActiveRecord::Base.extend(ActsAsArchived::Base)
|
26
|
+
ActiveRecord::Base.extend(ActsAsEmailForm::Base)
|
26
27
|
ActiveRecord::Base.extend(ActsAsTokened::Base)
|
27
28
|
ActiveRecord::Base.extend(ActsAsSlugged::Base)
|
28
29
|
ActiveRecord::Base.extend(ActsAsStatused::Base)
|
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: 1.8.
|
4
|
+
version: 1.8.18
|
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: 2021-04-
|
11
|
+
date: 2021-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -133,10 +133,12 @@ files:
|
|
133
133
|
- app/controllers/concerns/effective/wizard_controller/before_actions.rb
|
134
134
|
- app/controllers/concerns/effective/wizard_controller/save.rb
|
135
135
|
- app/controllers/concerns/effective/wizard_controller/wicked_overrides.rb
|
136
|
+
- app/helpers/effective_acts_as_email_form_helper.rb
|
136
137
|
- app/helpers/effective_resources_helper.rb
|
137
138
|
- app/helpers/effective_resources_private_helper.rb
|
138
139
|
- app/helpers/effective_resources_wizard_helper.rb
|
139
140
|
- app/models/concerns/acts_as_archived.rb
|
141
|
+
- app/models/concerns/acts_as_email_form.rb
|
140
142
|
- app/models/concerns/acts_as_slugged.rb
|
141
143
|
- app/models/concerns/acts_as_statused.rb
|
142
144
|
- app/models/concerns/acts_as_tokened.rb
|
@@ -177,6 +179,7 @@ files:
|
|
177
179
|
- app/views/application/show.html.haml
|
178
180
|
- app/views/application/show.js.erb
|
179
181
|
- app/views/application/update.js.erb
|
182
|
+
- app/views/effective/acts_as_email_form/_fields.html.haml
|
180
183
|
- app/views/effective/resource/_actions.html.haml
|
181
184
|
- app/views/effective/resource/_actions_dropleft.html.haml
|
182
185
|
- app/views/effective/resource/_actions_glyphicons.html.haml
|