five-two-nw-olivander 0.2.0.35 → 0.2.0.37

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20309038b9a2b17f545f6c06658c87f41fc20a565b8d39b6c079894add49c644
4
- data.tar.gz: 5c6429e2fdd1204b7324b36a7c4cd118ea136229b23a56f9ded5cab92fab801a
3
+ metadata.gz: c981a57d42b00be64a2c6916e9407f6359be57a12286db6d107dcd53723ccb51
4
+ data.tar.gz: e4a4b83c85c99d775c66930ab1b3873faa16e5ba3da090e8d6ef3e97153fa1fa
5
5
  SHA512:
6
- metadata.gz: 248d5ca6b004d3f76c47b0a70e5268ec26970df86e7a0e45ba2879cf07468b0f9c71fb045321ccd76c7dea764252fc40a865de5a19a3b14c1f657045f6dedb39
7
- data.tar.gz: 884dd31cca4c245d24b227ca9ae2d7854d36059df578a70bb1325f76758ad87a1eb0b987273db88757d4e332028d277b5d659593dacc6f6b851762c6454f5663
6
+ metadata.gz: aa2450a62d515a7cb15f1fccacab6da0225fbdf7a52d9839f846bd2d7fc65d5420dd2257dd9847873208865454885fd13b9e6285f2e903be5ae54f8963d09ce0
7
+ data.tar.gz: da063e58ceefc6c15684199222f15cacd501dbc781f6d247d5bae47c5a710a7a6b4fc5d85595ac9994cb353f46d4b3caac79c6bd728120c92a89227765aba40a
@@ -3,39 +3,41 @@ module Olivander
3
3
  class ResourceAction
4
4
  attr_accessor :sym, :action, :verb, :confirm, :turbo_frame, :collection,
5
5
  :controller, :crud_action, :show_in_form, :show_in_datatable,
6
- :no_route, :path_helper, :confirm_with, :primary
6
+ :no_route, :path_helper, :confirm_with, :primary,
7
+ :turbo, :html_attributes
7
8
 
8
- def initialize(sym, action: nil, controller: nil, verb: :get, confirm: false,
9
- turbo_frame: nil, collection: false, crud_action: false,
10
- show_in_form: true, show_in_datatable: true, no_route: false,
11
- path_helper: nil, confirm_with: nil, primary: nil)
9
+ def initialize(sym, **kwargs)
12
10
  self.sym = sym
13
- self.action = action || sym
14
- self.controller = controller
15
- self.verb = verb
16
- self.confirm = confirm
17
- self.turbo_frame = turbo_frame
18
- self.collection = collection
19
- self.crud_action = crud_action
20
- self.show_in_form = show_in_form
21
- self.show_in_datatable = show_in_datatable
22
- self.no_route = no_route
23
- self.path_helper = path_helper
24
- self.confirm_with = confirm_with
25
- self.primary = primary || crud_action
11
+ self.action = kwargs[:action] || sym
12
+ self.controller = kwargs[:controller]
13
+ self.verb = kwargs[:verb] || :get
14
+ self.confirm = kwargs[:confirm] || false
15
+ self.turbo_frame = kwargs[:turbo_frame]
16
+ self.turbo = kwargs[:turbo] == true ? true : !turbo_frame.blank?
17
+ self.collection = kwargs[:collection] || false
18
+ self.crud_action = kwargs[:crud_action] || false
19
+ self.show_in_form = kwargs[:show_in_form] || true
20
+ self.show_in_datatable = kwargs[:show_in_datatable] || true
21
+ self.no_route = kwargs[:no_route] || false
22
+ self.path_helper = kwargs[:path_helper]
23
+ self.confirm_with = kwargs[:confirm_with]
24
+ self.primary = kwargs[:primary] || crud_action
25
+ self.html_attributes = kwargs[:html_attributes]
26
26
  end
27
27
 
28
28
  def args_hash(options = nil)
29
29
  {}.tap do |h|
30
- h.merge!(method: verb) if turbo_frame.blank?
30
+ h.merge!(method: verb) unless turbo
31
31
  h.merge!(data: data_hash)
32
+ h.merge!(html_attributes) if html_attributes
32
33
  h.merge!(options) if options.present?
33
34
  end
34
35
  end
35
36
 
36
37
  def data_hash
37
38
  {}.tap do |h|
38
- h.merge!(turbo: true, turbo_method: verb, turbo_frame: turbo_frame) if turbo_frame.present?
39
+ h.merge!(turbo: true, turbo_method: verb) if turbo
40
+ h.merge!(turbo_frame: turbo_frame) if turbo_frame.present?
39
41
 
40
42
  message = confirmation_message
41
43
  h.merge!(confirm_key => message) unless message.blank?
@@ -43,7 +45,7 @@ module Olivander
43
45
  end
44
46
 
45
47
  def confirm_key
46
- turbo_frame.present? ? :turbo_confirm : :confirm
48
+ turbo ? :turbo_confirm : :confirm
47
49
  end
48
50
 
49
51
  def confirmation_message
@@ -63,7 +65,9 @@ module Olivander
63
65
  self.actions = []
64
66
  %i[index new create edit show update destroy].each do |ca|
65
67
  next unless crud_actions.include?(ca)
66
- actions << ResourceAction.new(ca, controller: model, verb: resolve_crud_action_verb(ca), collection: resolve_crud_action_collection(ca), crud_action: true)
68
+
69
+ actions << ResourceAction.new(ca, controller: model, verb: resolve_crud_action_verb(ca),
70
+ collection: resolve_crud_action_collection(ca), crud_action: true)
67
71
  end
68
72
  end
69
73
 
@@ -85,29 +89,29 @@ module Olivander
85
89
  end
86
90
 
87
91
  def crud_actions
88
- actions.select{ |x| x.crud_action }
92
+ actions.select { |x| x.crud_action }
89
93
  end
90
94
 
91
95
  def member_actions
92
- actions.select{ |x| !x.collection }
96
+ actions.select { |x| !x.collection }
93
97
  end
94
98
 
95
99
  def collection_actions
96
- actions.select{ |x| x.collection }
100
+ actions.select { |x| x.collection }
97
101
  end
98
102
 
99
103
  def datatable_bulk_actions
100
- collection_actions.select{ |x| x.show_in_datatable && !x.crud_action }
104
+ collection_actions.select { |x| x.show_in_datatable && !x.crud_action }
101
105
  end
102
106
 
103
107
  def unpersisted_crud_actions
104
108
  allowed = %i[index new]
105
- crud_actions.select{ |x| allowed.include?(x.sym) }
109
+ crud_actions.select { |x| allowed.include?(x.sym) }
106
110
  end
107
111
 
108
112
  def persisted_crud_actions
109
113
  allowed = %i[show edit destroy]
110
- crud_actions.select{ |x| allowed.include?(x.sym) }
114
+ crud_actions.select { |x| allowed.include?(x.sym) }
111
115
  end
112
116
  end
113
117
 
@@ -123,25 +127,18 @@ module Olivander
123
127
  end
124
128
 
125
129
  class_methods do
126
- def resource(model, only: DEFAULT_CRUD_ACTIONS, except: [], namespaces: [], &block)
130
+ def resource(model, only: DEFAULT_CRUD_ACTIONS, except: [], namespaces: [])
127
131
  self.current_resource = RoutedResource.new(model, namespaces, DEFAULT_CRUD_ACTIONS & (only - except))
128
132
  yield if block_given?
129
133
  resources[model] = current_resource
130
134
  self.current_resource = nil
131
135
  end
132
136
 
133
- def action(sym, verb: :get, confirm: false, turbo_frame: nil, collection: false, show_in_datatable: true,
134
- show_in_form: true, no_route: false, controller: nil, action: nil, path_helper: nil,
135
- confirm_with: nil, primary: nil
136
- )
137
+ def action(sym, **kwargs)
137
138
  raise 'Must be invoked in a resource block' unless current_resource.present?
138
139
 
139
140
  controller ||= current_resource.model
140
- current_resource.actions << ResourceAction.new(
141
- sym, action: action, controller: controller, verb: verb, confirm: confirm, turbo_frame: turbo_frame, collection: collection,
142
- show_in_datatable: show_in_datatable, show_in_form: show_in_form, no_route: no_route, path_helper: path_helper,
143
- confirm_with: confirm_with, primary: primary
144
- )
141
+ current_resource.actions << ResourceAction.new(sym, **kwargs)
145
142
  end
146
143
 
147
144
  def build_routes(mapper)
@@ -185,13 +182,16 @@ module Olivander
185
182
  end
186
183
  end
187
184
 
188
- mapper.new do
189
- mapper.get :new
190
- end if r.collection_actions.select{ |x| x.action == :new }.size.positive?
185
+ if r.collection_actions.select { |x| x.action == :new }.size.positive?
186
+ mapper.new do
187
+ mapper.get :new
188
+ end
189
+ end
191
190
 
192
191
  mapper.member do
193
192
  r.member_actions.each do |ma|
194
193
  next if ma.no_route
194
+
195
195
  if ma.confirm
196
196
  mapper.get ma.action, action: "confirm_#{ma.action}"
197
197
  set_controller_and_helper(ma)
@@ -36,8 +36,9 @@ module Olivander
36
36
  end
37
37
 
38
38
  def authorized_resource_actions(resource, for_action: :show)
39
+ action_klass = action_klass_for(resource)
39
40
  action_resource = action_resource_for(resource)
40
- raw_name = action_resource.name
41
+ raw_name = action_klass.name
41
42
  plural_name = raw_name.demodulize.underscore.pluralize
42
43
  routed_resource = Olivander::CurrentContext.application_context.route_builder.resources[plural_name.to_sym]
43
44
  return [] if routed_resource.nil?
@@ -63,9 +64,13 @@ module Olivander
63
64
  end
64
65
  end
65
66
 
66
- def action_resource_for(resource)
67
+ def action_klass_for(resource)
67
68
  klazz = resource.is_a?(Class) ? resource : resource.class
68
- klazz.respond_to?(:action_resource) ? klazz.action_resource : klazz
69
+ klazz.respond_to?(:action_klass) ? klazz.action_klass : klazz
70
+ end
71
+
72
+ def action_resource_for(resource)
73
+ resource.respond_to?(:action_resource) ? resource.action_resource : resource
69
74
  end
70
75
 
71
76
  def authorized_resource_action?(action, resource, except = nil)
@@ -2,5 +2,5 @@
2
2
 
3
3
  # needed for gem
4
4
  module Olivander
5
- VERSION = '0.2.0.35'
5
+ VERSION = '0.2.0.37'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: five-two-nw-olivander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.35
4
+ version: 0.2.0.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Dennis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-23 00:00:00.000000000 Z
11
+ date: 2024-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chartkick