effective_resources 2.8.9 → 2.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/effective/crud_controller/actions.rb +3 -1
- data/app/controllers/concerns/effective/crud_controller/respond.rb +3 -2
- data/app/helpers/effective_resources_helper.rb +6 -4
- data/app/models/concerns/acts_as_purchasable_wizard.rb +2 -0
- data/app/models/concerns/acts_as_statused.rb +37 -11
- data/app/models/concerns/acts_as_wizard.rb +7 -1
- data/app/views/application/member_action.js.erb +6 -1
- data/lib/effective_resources/engine.rb +1 -3
- data/lib/effective_resources/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e271cc3c7cc6656818fa8584765872c44add6e05f45aebf71b21a2463d27975e
|
4
|
+
data.tar.gz: b96b045469f418016cbef1d000eec3ee3b82b260122eff4a6f160e689f55f0b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b065909664f6d3dfd6cdb6589023dcd743b77feeccf2d98e74ef940780c5a48492681915437975aa7bd988251d768367d50b00f8198de841642af7728425eec7
|
7
|
+
data.tar.gz: 44e79e8885d98c26b5179955f60cc7b775efac0d7804712e4d5556b20df09fc00d6efad0f9db8e40a0e61c959fc355ec5cf7b7314dcec80aceb0f476932fd9a3
|
@@ -185,8 +185,10 @@ module Effective
|
|
185
185
|
respond_to do |format|
|
186
186
|
format.html { }
|
187
187
|
format.js do
|
188
|
+
html_template = action if template_present?(action, format: :html)
|
188
189
|
template = template_present?(action) ? action : 'member_action'
|
189
|
-
|
190
|
+
|
191
|
+
render(template, formats: :js, locals: { action: action, html_template: html_template })
|
190
192
|
end
|
191
193
|
end
|
192
194
|
|
@@ -103,9 +103,10 @@ module Effective
|
|
103
103
|
flash[:danger] ||= danger
|
104
104
|
end
|
105
105
|
|
106
|
-
def template_present?(action)
|
106
|
+
def template_present?(action, format: nil)
|
107
|
+
format = Array(format).presence
|
107
108
|
formats = [(request.format.symbol.to_s.sub('json', 'js').presence || 'html').to_sym]
|
108
|
-
lookup_context.template_exists?(action, _prefixes, formats: formats)
|
109
|
+
lookup_context.template_exists?(action, _prefixes, formats: (format || formats))
|
109
110
|
end
|
110
111
|
|
111
112
|
end
|
@@ -189,13 +189,15 @@ module EffectiveResourcesHelper
|
|
189
189
|
safe = atts.delete(:safe)
|
190
190
|
atts = { :namespace => (effective_resource.namespace.to_sym if effective_resource.namespace), effective_resource.name.to_sym => resource }.compact.merge(atts)
|
191
191
|
|
192
|
-
|
193
|
-
|
192
|
+
partial = (action.present? ? action.to_s : effective_resource.name)
|
193
|
+
|
194
|
+
if lookup_context.template_exists?(partial, controller._prefixes, :partial)
|
195
|
+
return render(partial, atts)
|
194
196
|
end
|
195
197
|
|
196
198
|
effective_resource.view_paths.each do |view_path|
|
197
|
-
if lookup_context.template_exists?(
|
198
|
-
return render(view_path + '/' +
|
199
|
+
if lookup_context.template_exists?(partial, [view_path], :partial)
|
200
|
+
return render(view_path + '/' + partial, atts)
|
199
201
|
end
|
200
202
|
end
|
201
203
|
|
@@ -89,7 +89,9 @@ module ActsAsPurchasableWizard
|
|
89
89
|
raise('already has purchased submit fees') if fees.any?(&:purchased?)
|
90
90
|
|
91
91
|
order = find_or_build_submit_order()
|
92
|
+
raise('expected an Effective::Order') unless order.kind_of?(Effective::Order)
|
92
93
|
raise('already has purchased submit order') if order.purchased?
|
94
|
+
raise('unable to proceed with a voided submit order') if order.try(:voided?)
|
93
95
|
|
94
96
|
true
|
95
97
|
end
|
@@ -39,7 +39,7 @@ module ActsAsStatused
|
|
39
39
|
const_set(:STATUSES, acts_as_statused_options[:statuses])
|
40
40
|
|
41
41
|
before_validation do
|
42
|
-
self.status ||=
|
42
|
+
self.status ||= all_statuses.first
|
43
43
|
|
44
44
|
# Set an existing belongs_to automatically
|
45
45
|
if respond_to?("#{status}_by") && send("#{status}_by").blank?
|
@@ -132,25 +132,51 @@ module ActsAsStatused
|
|
132
132
|
end
|
133
133
|
|
134
134
|
# unapproved!
|
135
|
-
define_method("un#{sym}!") do
|
136
|
-
|
135
|
+
define_method("un#{sym}!") do |atts = {}|
|
136
|
+
raise 'expected a Hash of passed attributes' unless atts.kind_of?(Hash)
|
137
137
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
if respond_to?("#{sym}_by") && send("#{sym}_by").present?
|
143
|
-
self.send("#{sym}_by=", nil)
|
144
|
-
end
|
138
|
+
self.try("#{sym}_at=", nil)
|
139
|
+
self.try("#{sym}_by=", nil)
|
140
|
+
self.try("#{sym}_by_id=", nil)
|
141
|
+
self.try("#{sym}_by_type=", nil)
|
145
142
|
|
146
143
|
status_steps.delete(sym_at)
|
147
144
|
status_steps.delete(sym_by_id)
|
148
145
|
status_steps.delete(sym_by_type)
|
149
146
|
|
150
|
-
|
147
|
+
if status == sym.to_s # I was just this status
|
148
|
+
assign_attributes(status: last_completed_status || all_statuses.first)
|
149
|
+
end
|
150
|
+
|
151
|
+
# Assign atts if present
|
152
|
+
assign_attributes(atts) if atts.present?
|
153
|
+
|
154
|
+
save!
|
151
155
|
end
|
156
|
+
end
|
152
157
|
|
158
|
+
# Regular instance methods
|
159
|
+
# Sort of matches acts_as_wizard
|
160
|
+
def status_keys
|
161
|
+
self.class.const_get(:STATUSES)
|
153
162
|
end
|
163
|
+
|
164
|
+
def all_statuses
|
165
|
+
status_keys
|
166
|
+
end
|
167
|
+
|
168
|
+
def completed_statuses
|
169
|
+
all_statuses.select { |status| has_completed_status?(status) }
|
170
|
+
end
|
171
|
+
|
172
|
+
def last_completed_status
|
173
|
+
all_statuses.reverse.find { |status| has_completed_status?(status) }
|
174
|
+
end
|
175
|
+
|
176
|
+
def has_completed_status?(status)
|
177
|
+
(errors.present? ? status_steps_was : status_steps)["#{status}_at".to_sym].present?
|
178
|
+
end
|
179
|
+
|
154
180
|
end
|
155
181
|
|
156
182
|
module ClassMethods
|
@@ -146,10 +146,16 @@ module ActsAsWizard
|
|
146
146
|
has_completed_step?(required_steps.last)
|
147
147
|
end
|
148
148
|
|
149
|
-
def
|
149
|
+
def reset_all_wizard_steps!
|
150
150
|
update!(wizard_steps: {})
|
151
151
|
end
|
152
152
|
|
153
|
+
def complete_all_wizard_steps!
|
154
|
+
now = Time.zone.now
|
155
|
+
required_steps.each { |step| wizard_steps[step] ||= now }
|
156
|
+
save!
|
157
|
+
end
|
158
|
+
|
153
159
|
def without_current_step(&block)
|
154
160
|
existing = current_step
|
155
161
|
|
@@ -1,7 +1,12 @@
|
|
1
1
|
<% resource = (@_effective_resource || Effective::Resource.new(controller_path)) %>
|
2
2
|
<% @resource = instance_variable_get('@' + resource.name) if resource.name %>
|
3
3
|
|
4
|
-
|
4
|
+
<% if html_template.present? %>
|
5
|
+
EffectiveForm.remote_form_payload = "<%= j(render_resource_partial(@resource, action: action)) %>";
|
6
|
+
<% else %>
|
7
|
+
EffectiveForm.remote_form_payload = "<%= j(render_resource_form(@resource, action: action, safe: true).presence || render_resource_partial(@resource)) %>";
|
8
|
+
<% end %>
|
9
|
+
|
5
10
|
EffectiveForm.remote_form_commit = "<%= params[:commit] %>";
|
6
11
|
EffectiveForm.remote_form_flash = <%= raw flash.to_json %>;
|
7
12
|
|
@@ -46,10 +46,8 @@ module EffectiveResources
|
|
46
46
|
app.config.to_prepare do
|
47
47
|
if defined?(CanCan::Ability)
|
48
48
|
CanCan::Ability.module_eval do
|
49
|
-
CRUD_ACTIONS = [:index, :new, :create, :edit, :update, :show, :destroy]
|
50
|
-
|
51
49
|
def crud
|
52
|
-
|
50
|
+
[:index, :new, :create, :edit, :update, :show, :destroy]
|
53
51
|
end
|
54
52
|
end
|
55
53
|
|
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.
|
4
|
+
version: 2.9.1
|
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: 2023-08-
|
11
|
+
date: 2023-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|