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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c981a57d42b00be64a2c6916e9407f6359be57a12286db6d107dcd53723ccb51
|
4
|
+
data.tar.gz: e4a4b83c85c99d775c66930ab1b3873faa16e5ba3da090e8d6ef3e97153fa1fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,
|
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.
|
19
|
-
self.
|
20
|
-
self.
|
21
|
-
self.
|
22
|
-
self.
|
23
|
-
self.
|
24
|
-
self.
|
25
|
-
self.
|
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)
|
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
|
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
|
-
|
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
|
-
|
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: []
|
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,
|
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
|
-
|
189
|
-
mapper.
|
190
|
-
|
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 =
|
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
|
67
|
+
def action_klass_for(resource)
|
67
68
|
klazz = resource.is_a?(Class) ? resource : resource.class
|
68
|
-
klazz.respond_to?(:
|
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)
|
data/lib/olivander/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2024-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chartkick
|