effective_resources 0.8.26 → 0.9.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 +4 -4
- data/app/helpers/effective_resources_helper.rb +22 -19
- data/app/models/effective/resources/actions.rb +5 -4
- data/app/views/effective/resource/_actions.html.haml +13 -6
- data/app/views/effective/resource/_actions_dropleft.html.haml +4 -4
- data/lib/effective_resources/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b065e313e4557d61719a9164d5ac32226a8070e4
|
4
|
+
data.tar.gz: 2e451c636d5644ff487a5df44c546053675eaed6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d428a2f4135014eb14d5bd92734e327cb1befff5acbc0e2c7b5c9d9a58c07e34aeca29531f8228e1614ac046bccd30d9c43665e3ec594bdead3018cb7b5febc5
|
7
|
+
data.tar.gz: c072a4f0c130c92e5b7c2ac57a299b6e61c092c8b3d8d17a59a51d8af49ffb1292b2006aae0a38a2720eee2a04679b088141d108d3fda37ba0bff45f7f60652f
|
@@ -38,46 +38,49 @@ module EffectiveResourcesHelper
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
|
42
|
-
(atts = instance; instance = nil) if instance.kind_of?(Hash) && atts.blank?
|
43
|
-
render_resource_actions(resource, instance, atts.merge(crud: true), &block)
|
44
|
-
end
|
45
|
-
|
41
|
+
# Renders the effective/resource view partial for this resource
|
46
42
|
# resource is an Effective::Resource
|
47
|
-
# instance is an ActiveRecord thing
|
48
|
-
#
|
49
|
-
|
43
|
+
# instance is an ActiveRecord thing, an Array of ActiveRecord things, or nil
|
44
|
+
# Atts are everything else. Interesting ones include:
|
45
|
+
|
46
|
+
# partial: :dropleft|:glyphicons|string
|
47
|
+
# locals: {} render locals
|
48
|
+
# you can also pass all action names and true/false such as edit: true, show: false
|
50
49
|
def render_resource_actions(resource, instance = nil, atts = {}, &block)
|
51
50
|
(atts = instance; instance = nil) if instance.kind_of?(Hash) && atts.blank?
|
52
51
|
raise 'expected first argument to be an Effective::Resource' unless resource.kind_of?(Effective::Resource)
|
53
52
|
raise 'expected attributes to be a Hash' unless atts.kind_of?(Hash)
|
54
53
|
|
55
|
-
instance = instance || instance_variable_get('@' + resource.name) || resource.instance
|
56
|
-
raise "unable to find resource instance. Either pass the instance as the second argument, or assign @#{resource.name}" unless instance
|
57
|
-
|
58
|
-
crud = atts.delete(:crud) || false
|
59
54
|
locals = atts.delete(:locals) || {}
|
60
55
|
namespace = atts.delete(:namespace) || (resource.namespace.to_sym if resource.namespace)
|
61
56
|
partial = atts.delete(:partial)
|
57
|
+
spacer_template = locals.delete(:spacer_template)
|
62
58
|
|
63
59
|
partial = case partial
|
64
60
|
when String
|
65
61
|
partial
|
66
62
|
when Symbol
|
67
|
-
['effective/resource/actions', partial.to_s].join('_')
|
63
|
+
['effective/resource/actions'.freeze, partial.to_s].join('_')
|
68
64
|
else
|
69
|
-
'effective/resource/actions'
|
65
|
+
'effective/resource/actions'.freeze
|
70
66
|
end + '.html'.freeze
|
71
67
|
|
72
|
-
actions = (
|
73
|
-
|
68
|
+
actions = (instance ? resource.resource_member_actions : resource.resource_collection_actions)
|
69
|
+
actions = (actions & resource.crud_actions) if atts.delete(:crud)
|
70
|
+
raise "unknown action for #{resource.name}: #{(atts.keys - actions).join(' ')}." if (atts.keys - actions).present?
|
74
71
|
|
75
|
-
actions = actions - atts.reject { |_, v| v }.keys + atts.select { |_, v| v }.keys
|
76
|
-
actions
|
72
|
+
actions = (actions - atts.reject { |_, v| v }.keys + atts.select { |_, v| v }.keys).uniq
|
73
|
+
actions.select! { |action| EffectiveResources.authorized?(controller, action, (Array(instance).first || resource.klass)) }
|
77
74
|
|
78
75
|
locals = { resource: instance, effective_resource: resource, namespace: namespace, actions: actions }.compact.merge(locals)
|
79
76
|
|
80
|
-
|
77
|
+
if instance.kind_of?(Array) # Render as collection mode
|
78
|
+
render(partial: partial, collection: instance, as: :resource, locals: locals.except(:resource), spacer_template: spacer_template)
|
79
|
+
elsif block_given?
|
80
|
+
render(partial, locals) { yield }
|
81
|
+
else
|
82
|
+
render(partial, locals)
|
83
|
+
end
|
81
84
|
end
|
82
85
|
|
83
86
|
# When called from /admin/things/new.html.haml this will render 'admin/things/form', or 'things/form', or 'thing/form'
|
@@ -70,13 +70,14 @@ module Effective
|
|
70
70
|
end
|
71
71
|
|
72
72
|
# Used by render_resource_actions helper
|
73
|
-
# All the actions we can actually make a link to
|
74
|
-
def
|
73
|
+
# All the actions we can actually make a link to but not submits
|
74
|
+
def resource_member_actions
|
75
75
|
(routes.keys & [:show, :edit, :destroy]) + member_get_actions
|
76
76
|
end
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
# Used by render_resource_actions helper for the index screens or new record
|
79
|
+
def resource_collection_actions
|
80
|
+
(routes.keys & [:new]) + collection_get_actions
|
80
81
|
end
|
81
82
|
|
82
83
|
# GET actions
|
@@ -1,15 +1,22 @@
|
|
1
|
+
- if actions.index(:new)
|
2
|
+
- name = effective_resource.human_name.titleize
|
3
|
+
= link_to "New #{name}", effective_resource.action_path(:new), title: "New #{name}", class: 'btn btn-primary'
|
4
|
+
|
1
5
|
- if actions.index(:edit)
|
2
6
|
= link_to 'Edit', effective_resource.action_path(:edit, resource), title: "Edit #{resource}", class: 'btn btn-secondary'
|
3
7
|
|
4
8
|
- if actions.index(:show)
|
5
9
|
= link_to 'View', effective_resource.action_path(:show, resource), title: resource.to_s, class: 'btn btn-secondary'
|
6
10
|
|
7
|
-
- (actions - [:edit, :show, :destroy]).each do |action|
|
8
|
-
|
9
|
-
|
11
|
+
- (actions - [:new, :edit, :show, :destroy]).each do |action|
|
12
|
+
- if effective_resource.member_post_actions.include?(action)
|
13
|
+
= link_to action.to_s.titleize, effective_resource.action_path(action, resource), class: 'btn btn-secondary',
|
14
|
+
title: "#{action} #{resource}", data: { method: :post, confirm: "#{action.to_s.titleize} #{resource}?"}
|
15
|
+
- else
|
16
|
+
= link_to action.to_s.titleize, effective_resource.action_path(action), class: 'btn btn-secondary', title: action.to_s.titleize
|
10
17
|
|
11
|
-
= yield
|
18
|
+
= yield if block_given?
|
12
19
|
|
13
20
|
- if actions.index(:destroy)
|
14
|
-
= link_to
|
15
|
-
title: "Delete #{resource}", data: { method: :delete, confirm: "
|
21
|
+
= link_to 'Delete', effective_resource.action_path(:destroy, resource), class: 'btn btn-danger',
|
22
|
+
title: "Delete #{resource}", data: { method: :delete, confirm: "Delete #{resource}?" }
|
@@ -7,10 +7,10 @@
|
|
7
7
|
|
8
8
|
- (actions - [:edit, :show, :destroy]).each do |action|
|
9
9
|
= dropdown_link_to action.to_s.titleize, effective_resource.action_path(action, resource),
|
10
|
-
title: "#{action} #{resource}", data: { method: :post, confirm: "
|
10
|
+
title: "#{action} #{resource}", data: { method: :post, confirm: "#{action.to_s.titleize} #{resource}?"}
|
11
11
|
|
12
|
-
= yield
|
12
|
+
= yield if block_given?
|
13
13
|
|
14
14
|
- if actions.index(:destroy)
|
15
|
-
= dropdown_link_to
|
16
|
-
title: "Delete #{resource}", data: { method: :delete, confirm: "
|
15
|
+
= dropdown_link_to 'Delete', effective_resource.action_path(:destroy, resource),
|
16
|
+
title: "Delete #{resource}", data: { method: :delete, confirm: "Delete #{resource}?" }
|