effective_resources 0.8.6 → 0.8.7
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/README.md +3 -4
- data/app/controllers/concerns/effective/crud_controller.rb +84 -25
- data/app/helpers/effective_resources_helper.rb +2 -2
- data/app/views/application/create.js.erb +2 -2
- data/app/views/application/destroy.js.erb +2 -2
- data/app/views/application/update.js.erb +2 -2
- data/lib/effective_resources/version.rb +1 -1
- data/lib/effective_resources.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ecad33788aad8f500973e4bce6486b1cd844c79
|
4
|
+
data.tar.gz: dda9302fd764fb11f1ec14946fa8b75fca388659
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62b2d628abef9e7c481211cc449d795f0e480af7187b1741f9c8446bea6f3fbbcca169e9f43b2eedef0f634574ddb6bae6fa67a0c7cb27a14d137e24e7809b60
|
7
|
+
data.tar.gz: 3aed9366a8292394a3cdecc420d6e607dcb62bbad965fa5948ec6c39df98a29b79d99026c88198c70799014d1fb602b93e08fb47bb2e61877fe184672509de72
|
data/README.md
CHANGED
@@ -61,10 +61,9 @@ class PostsController < ApplicationController
|
|
61
61
|
params.require(:post).permit(:id, :author_id, :category, :title, :body)
|
62
62
|
end
|
63
63
|
|
64
|
-
#
|
65
|
-
|
66
|
-
|
67
|
-
permitted_params.slice(:author_id, :category)
|
64
|
+
# Pass /things/new?duplicate_id=3
|
65
|
+
def duplicate_resource(resource)
|
66
|
+
resource_klass.new(resource.attributes.slice('job_site', 'address'))
|
68
67
|
end
|
69
68
|
|
70
69
|
end
|
@@ -49,6 +49,7 @@ module Effective
|
|
49
49
|
#
|
50
50
|
# submit :toggle, 'Blacklist', if: -> { sync? }, class: 'btn btn-primary'
|
51
51
|
# submit :toggle, 'Whitelist', if: -> { !sync? }, class: 'btn btn-primary'
|
52
|
+
# submit :save, 'Save', success: -> { "#{self} was saved okay!" }
|
52
53
|
|
53
54
|
def submit(action, commit = nil, args = {})
|
54
55
|
raise 'expected args to be a Hash or false' unless args.kind_of?(Hash) || args == false
|
@@ -95,6 +96,8 @@ module Effective
|
|
95
96
|
# resource_scope do
|
96
97
|
# { user_id: current_user.id }
|
97
98
|
# end
|
99
|
+
# Nested controllers? sure
|
100
|
+
# resource_scope -> { User.find(params[:user_id]).things }
|
98
101
|
|
99
102
|
# Return value should be:
|
100
103
|
# a Relation: Thing.where(user: current_user)
|
@@ -201,12 +204,24 @@ module Effective
|
|
201
204
|
|
202
205
|
respond_to do |format|
|
203
206
|
if save_resource(resource, action)
|
204
|
-
|
207
|
+
format.html do
|
208
|
+
flash[:success] ||= resource_flash(:success, resource, action)
|
209
|
+
redirect_to(resource_redirect_path)
|
210
|
+
end
|
205
211
|
|
206
|
-
format.
|
207
|
-
|
212
|
+
format.js do
|
213
|
+
if commit_action[:redirect].present?
|
214
|
+
flash[:success] ||= resource_flash(:success, resource, action)
|
215
|
+
redirect_to(resource_redirect_path)
|
216
|
+
else
|
217
|
+
flash.now[:success] ||= resource_flash(:success, resource, action)
|
218
|
+
reload_resource
|
219
|
+
# create.js.erb
|
220
|
+
end
|
221
|
+
end
|
208
222
|
else
|
209
|
-
flash.
|
223
|
+
flash.delete(:success)
|
224
|
+
flash.now[:danger] ||= resource_flash(:danger, resource, action)
|
210
225
|
|
211
226
|
format.html { render :new }
|
212
227
|
format.js {} # create.js.erb
|
@@ -245,15 +260,27 @@ module Effective
|
|
245
260
|
|
246
261
|
respond_to do |format|
|
247
262
|
if save_resource(resource, action)
|
248
|
-
|
263
|
+
format.html do
|
264
|
+
flash[:success] ||= resource_flash(:success, resource, action)
|
265
|
+
redirect_to(resource_redirect_path)
|
266
|
+
end
|
249
267
|
|
250
|
-
format.
|
251
|
-
|
268
|
+
format.js do
|
269
|
+
if commit_action[:redirect].present?
|
270
|
+
flash[:success] ||= resource_flash(:success, resource, action)
|
271
|
+
redirect_to(resource_redirect_path)
|
272
|
+
else
|
273
|
+
flash.now[:success] ||= resource_flash(:success, resource, action)
|
274
|
+
reload_resource
|
275
|
+
# update.js.erb
|
276
|
+
end
|
277
|
+
end
|
252
278
|
else
|
253
|
-
flash.
|
279
|
+
flash.delete(:success)
|
280
|
+
flash.now[:danger] ||= resource_flash(:danger, resource, action)
|
254
281
|
|
255
282
|
format.html { render :edit }
|
256
|
-
format.js {} # update.js.erb
|
283
|
+
format.js { } # update.js.erb
|
257
284
|
end
|
258
285
|
end
|
259
286
|
end
|
@@ -261,20 +288,38 @@ module Effective
|
|
261
288
|
def destroy
|
262
289
|
self.resource = resource_scope.find(params[:id])
|
263
290
|
|
291
|
+
action = :destroy
|
264
292
|
@page_title ||= "Destroy #{resource}"
|
265
|
-
EffectiveResources.authorize!(self,
|
293
|
+
EffectiveResources.authorize!(self, action, resource)
|
266
294
|
|
267
295
|
respond_to do |format|
|
268
|
-
if save_resource(resource,
|
269
|
-
|
296
|
+
if save_resource(resource, action)
|
297
|
+
format.html do
|
298
|
+
flash[:success] ||= resource_flash(:success, resource, action)
|
299
|
+
redirect_to(resource_redirect_path)
|
300
|
+
end
|
270
301
|
|
271
|
-
format.
|
272
|
-
|
302
|
+
format.js do
|
303
|
+
if commit_action[:redirect].present?
|
304
|
+
flash[:success] ||= resource_flash(:success, resource, action)
|
305
|
+
redirect_to(resource_redirect_path)
|
306
|
+
else
|
307
|
+
flash.now[:success] ||= resource_flash(:success, resource, action)
|
308
|
+
# delete.js.erb
|
309
|
+
end
|
310
|
+
end
|
273
311
|
else
|
274
|
-
flash.
|
312
|
+
flash.delete(:success)
|
313
|
+
|
314
|
+
format.html do
|
315
|
+
flash[:danger] ||= resource_flash(:danger, resource, action)
|
316
|
+
redirect_to(resource_redirect_path)
|
317
|
+
end
|
275
318
|
|
276
|
-
format.
|
277
|
-
|
319
|
+
format.js do
|
320
|
+
flash.now[:danger] ||= resource_flash(:danger, resource, action)
|
321
|
+
# destroy.js.erb
|
322
|
+
end
|
278
323
|
end
|
279
324
|
end
|
280
325
|
end
|
@@ -284,10 +329,10 @@ module Effective
|
|
284
329
|
raise 'expected post, patch or put http action' unless (request.post? || request.patch? || request.put?)
|
285
330
|
|
286
331
|
if save_resource(resource, action)
|
287
|
-
flash[:success] ||=
|
332
|
+
flash[:success] ||= resource_flash(:success, resource, action)
|
288
333
|
redirect_to(referer_redirect_path || resource_redirect_path)
|
289
334
|
else
|
290
|
-
flash.now[:danger] ||=
|
335
|
+
flash.now[:danger] ||= resource_flash(:danger, resource, action)
|
291
336
|
|
292
337
|
if resource_edit_path && (referer_redirect_path || '').end_with?(resource_edit_path)
|
293
338
|
@page_title ||= "Edit #{resource}"
|
@@ -315,7 +360,7 @@ module Effective
|
|
315
360
|
|
316
361
|
successes = 0
|
317
362
|
|
318
|
-
|
363
|
+
ActiveRecord::Base.transaction do
|
319
364
|
successes = resources.select do |resource|
|
320
365
|
begin
|
321
366
|
resource.public_send("#{action}!") if EffectiveResources.authorized?(self, action, resource)
|
@@ -336,7 +381,7 @@ module Effective
|
|
336
381
|
|
337
382
|
resource.current_user ||= current_user if resource.respond_to?(:current_user=)
|
338
383
|
|
339
|
-
|
384
|
+
ActiveRecord::Base.transaction do
|
340
385
|
begin
|
341
386
|
if resource.public_send("#{action}!") == false
|
342
387
|
raise("failed to #{action} #{resource}")
|
@@ -346,7 +391,7 @@ module Effective
|
|
346
391
|
run_callbacks(:resource_save)
|
347
392
|
return true
|
348
393
|
rescue => e
|
349
|
-
resource.restore_attributes(['status', 'state'])
|
394
|
+
resource.restore_attributes(['status', 'state']) if resource.respond_to?(:restore_attributes)
|
350
395
|
|
351
396
|
flash.delete(:success)
|
352
397
|
flash.now[:danger] = flash_danger(resource, action, e: e)
|
@@ -359,7 +404,7 @@ module Effective
|
|
359
404
|
end
|
360
405
|
|
361
406
|
def reload_resource
|
362
|
-
self.resource
|
407
|
+
self.resource.reload if resource.respond_to?(:reload)
|
363
408
|
end
|
364
409
|
|
365
410
|
# Should return a new resource based on the passed one
|
@@ -367,6 +412,18 @@ module Effective
|
|
367
412
|
resource.dup
|
368
413
|
end
|
369
414
|
|
415
|
+
def resource_flash(status, resource, action)
|
416
|
+
message = commit_action[status].respond_to?(:call) ? instance_exec(&commit_action[status]) : commit_action[status]
|
417
|
+
return message if message.present?
|
418
|
+
|
419
|
+
message || case status
|
420
|
+
when :success then flash_success(resource, action)
|
421
|
+
when :danger then flash_danger(resource, action)
|
422
|
+
else
|
423
|
+
raise "unknown resource flash status: #{status}"
|
424
|
+
end
|
425
|
+
end
|
426
|
+
|
370
427
|
def resource_redirect_path
|
371
428
|
redirect = commit_action[:redirect].respond_to?(:call) ? instance_exec(&commit_action[:redirect]) : commit_action[:redirect]
|
372
429
|
|
@@ -402,7 +459,7 @@ module Effective
|
|
402
459
|
def referer_redirect_path
|
403
460
|
url = request.referer.to_s
|
404
461
|
|
405
|
-
return if (resource && resource.destroyed? && url.include?("/#{resource.to_param}"))
|
462
|
+
return if (resource && resource.respond_to?(:destroyed?) && resource.destroyed? && url.include?("/#{resource.to_param}"))
|
406
463
|
return if url.include?('duplicate_id=')
|
407
464
|
return unless (Rails.application.routes.recognize_path(URI(url).path) rescue false)
|
408
465
|
|
@@ -480,7 +537,9 @@ module Effective
|
|
480
537
|
end
|
481
538
|
|
482
539
|
def commit_action
|
483
|
-
self.class.submits[params[:commit].to_s] ||
|
540
|
+
self.class.submits[params[:commit].to_s] ||
|
541
|
+
self.class.submits.find { |_, v| v[:action] == :save }&.last ||
|
542
|
+
{ action: :save }
|
484
543
|
end
|
485
544
|
|
486
545
|
# Returns an ActiveRecord relation based on the computed value of `resource_scope` dsl method
|
@@ -39,8 +39,8 @@ module EffectiveResourcesHelper
|
|
39
39
|
end
|
40
40
|
|
41
41
|
# When called from /admin/things/new.html.haml this will render 'admin/things/form', or 'things/form', or 'thing/form'
|
42
|
-
def render_resource_form(resource)
|
43
|
-
atts = {:namespace => (resource.namespace.to_sym if resource.namespace.present?), resource.name.to_sym => instance_variable_get('@' + resource.name)}.compact
|
42
|
+
def render_resource_form(resource, atts = {})
|
43
|
+
atts = {:namespace => (resource.namespace.to_sym if resource.namespace.present?), resource.name.to_sym => instance_variable_get('@' + resource.name)}.compact.merge(atts)
|
44
44
|
|
45
45
|
if lookup_context.template_exists?('form', controller._prefixes, :partial)
|
46
46
|
render 'form', atts
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% resource = (@_effective_resource || Effective::Resource.new(controller_path)) %>
|
2
2
|
<% @resource = instance_variable_get('@' + resource.name) if resource.name %>
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
EffectiveForm.remote_form_payload = $("<div><%= j render_resource_form(resource) %></div>");
|
5
|
+
EffectiveForm.remote_form_flash = <%= raw flash.to_json %>;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% resource = (@_effective_resource || Effective::Resource.new(controller_path)) %>
|
2
2
|
<% @resource = instance_variable_get('@' + resource.name) if resource.name %>
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
EffectiveForm.remote_form_payload = $("<div><%= j render_resource_form(resource) %></div>");
|
5
|
+
EffectiveForm.remote_form_flash = <%= raw flash.to_json %>;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% resource = (@_effective_resource || Effective::Resource.new(controller_path)) %>
|
2
2
|
<% @resource = instance_variable_get('@' + resource.name) if resource.name %>
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
EffectiveForm.remote_form_payload = $("<div><%= j render_resource_form(resource) %></div>");
|
5
|
+
EffectiveForm.remote_form_flash = <%= raw flash.to_json %>;
|
data/lib/effective_resources.rb
CHANGED
@@ -24,7 +24,7 @@ module EffectiveResources
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.authorize!(controller, action, resource)
|
27
|
-
raise Effective::AccessDenied unless authorized?(controller, action, resource)
|
27
|
+
raise Effective::AccessDenied.new('Access Denied', action, resource) unless authorized?(controller, action, resource)
|
28
28
|
end
|
29
29
|
|
30
30
|
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: 0.8.
|
4
|
+
version: 0.8.7
|
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: 2018-04-
|
11
|
+
date: 2018-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|