effective_resources 0.8.16 → 0.8.17

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
  SHA1:
3
- metadata.gz: 7619108179839c52910a9c48bd64dc6cde187aab
4
- data.tar.gz: c56da3425ba5cc69e42a619221525eaa24ec1907
3
+ metadata.gz: 9c0e50888b940fed7fd30a30e86abf390c57612d
4
+ data.tar.gz: c3cf4e2fbf45755c70a3886a055f0d6f945c1885
5
5
  SHA512:
6
- metadata.gz: 2005053efb36c11fb1d185477c1a7c7811e225454fb6363afd5e195b7bedf8077c22b2011c8b70435bff73068bd5ebcc3d744c6a5335bd643857b2fd0347fe8d
7
- data.tar.gz: b9e96d197b49b499be1b0f0713e0fb888a5ca84677ded50bf0120a8f06bd551189ba2858c749a9c1f7ea10c0e3627103bddc6d227e9e40795abdf339c8b582c1
6
+ metadata.gz: 915f86a6d94c9a928c17e8c8b2ac92990e61dc11625409942e9b95ec2aedc0814b85cc25a4afa0e71a362d84dd7e8216f6dddcb0d3001714e1f81128964a6e96
7
+ data.tar.gz: ef320f2ce953259fff1db2745e20d3c9a78b9cef271bfea2676587a61af5f14c7819b40830f2897a3cfbced147fb6b14982db4c33cd7a376e8d65dbd3f615b5b
@@ -38,6 +38,33 @@ module EffectiveResourcesHelper
38
38
  end
39
39
  end
40
40
 
41
+ # resource: resource is an
42
+ # show: true, edit: true, destroy: true
43
+ def render_resource_actions(resource, effective_resource: nil, namespace: nil, partial: nil, **atts, &block)
44
+ effective_resource ||= atts.delete(:resource)
45
+ effective_resource ||= controller.class.effective_resource if controller.class.respond_to?(:effective_resource)
46
+ effective_resource ||= Effective::Resource.new(controller_path)
47
+ raise 'Expected resource: value to be an Effective::Resource instance' unless effective_resource.kind_of?(Effective::Resource)
48
+
49
+ namespace ||= effective_resource.namespace&.to_sym
50
+
51
+ partial = case partial
52
+ when String
53
+ partial
54
+ when Symbol
55
+ ['effective/resource/actions', partial.to_s].join('_')
56
+ else
57
+ 'effective/resource/actions'
58
+ end
59
+
60
+ actions = effective_resource.resource_actions - atts.reject { |_, v| v }.keys + atts.select { |_, v| v }.keys
61
+ actions = actions.uniq.select { |action| EffectiveResources.authorized?(controller, action, resource) }
62
+
63
+ locals = { resource: resource, effective_resource: effective_resource, namespace: namespace, actions: actions }
64
+
65
+ block_given? ? render(partial, locals) { yield } : render(partial, locals)
66
+ end
67
+
41
68
  # When called from /admin/things/new.html.haml this will render 'admin/things/form', or 'things/form', or 'thing/form'
42
69
  def render_resource_form(resource, atts = {})
43
70
  raise 'expected attributes to be a Hash. Try passing action: action if rendering custom action' unless atts.kind_of?(Hash)
@@ -67,6 +67,12 @@ module Effective
67
67
  routes.keys
68
68
  end
69
69
 
70
+ # Used by render_resource_actions helper
71
+ # All the actions we can actually make a link to
72
+ def resource_actions
73
+ (routes.keys & [:show, :edit, :destroy]) + member_actions
74
+ end
75
+
70
76
  # GET actions
71
77
  def collection_actions
72
78
  routes.values.map { |route| route.defaults[:action].to_sym if is_collection_route?(route) }.compact - crud_actions
@@ -0,0 +1,15 @@
1
+ - if actions.index(:edit)
2
+ = link_to 'Edit', effective_resource.action_path(:edit, resource), title: "Edit #{resource}", class: 'btn btn-secondary'
3
+
4
+ - if actions.index(:show)
5
+ = link_to 'View', effective_resource.action_path(:show, resource), title: resource.to_s, class: 'btn btn-secondary'
6
+
7
+ - (actions - [:edit, :show, :destroy]).each do |action|
8
+ = link_to action.to_s.titleize, effective_resource.action_path(action, resource), class: 'btn btn-secondary',
9
+ title: "#{action} #{resource}", data: { method: :post, confirm: "Really #{action} #{resource}?"}
10
+
11
+ = yield
12
+
13
+ - if actions.index(:destroy)
14
+ = link_to "Delete #{resource}", effective_resource.action_path(:destroy, resource), class: 'btn btn-danger',
15
+ title: "Delete #{resource}", data: { method: :delete, confirm: "Really delete #{resource}?" }
@@ -0,0 +1,16 @@
1
+ = dropdown(variation: :dropleft) do
2
+ - if actions.index(:edit)
3
+ = dropdown_link_to 'Edit', effective_resource.action_path(:edit, resource), title: "Edit #{resource}"
4
+
5
+ - if actions.index(:show)
6
+ = dropdown_link_to 'View', effective_resource.action_path(:show, resource), title: resource.to_s
7
+
8
+ - (actions - [:edit, :show, :destroy]).each do |action|
9
+ = dropdown_link_to action.to_s.titleize, effective_resource.action_path(action, resource),
10
+ title: "#{action} #{resource}", data: { method: :post, confirm: "Really #{action} #{resource}?"}
11
+
12
+ = yield
13
+
14
+ - if actions.index(:destroy)
15
+ = dropdown_link_to "Delete #{resource}", effective_resource.action_path(:destroy, resource),
16
+ title: "Delete #{resource}", data: { method: :delete, confirm: "Really delete #{resource}?" }
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '0.8.16'.freeze
2
+ VERSION = '0.8.17'.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: 0.8.16
4
+ version: 0.8.17
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-05-24 00:00:00.000000000 Z
11
+ date: 2018-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -64,6 +64,8 @@ files:
64
64
  - app/views/application/new.html.haml
65
65
  - app/views/application/show.html.haml
66
66
  - app/views/application/update.js.erb
67
+ - app/views/effective/resource/_actions.html.haml
68
+ - app/views/effective/resource/_actions_dropleft.html.haml
67
69
  - config/effective_resources.rb
68
70
  - lib/effective_resources.rb
69
71
  - lib/effective_resources/engine.rb