effective_resources 1.9.1 → 1.9.5
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/controllers/concerns/effective/crud_controller/actions.rb +2 -2
- data/app/controllers/concerns/effective/crud_controller/dsl.rb +14 -2
- data/app/controllers/concerns/effective/crud_controller.rb +8 -7
- data/app/models/concerns/acts_as_wizard.rb +14 -3
- data/app/models/effective/resource.rb +1 -1
- data/app/models/effective/resources/generator.rb +4 -4
- data/app/models/effective/resources/init.rb +4 -1
- data/app/models/effective/resources/klass.rb +1 -1
- data/app/models/effective/resources/naming.rb +0 -10
- data/app/models/effective/resources/paths.rb +1 -2
- data/app/models/effective/resources/tenants.rb +20 -0
- data/lib/effective_resources/version.rb +1 -1
- data/lib/effective_resources.rb +18 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83e99f559d60204f03679abaeacb94f0406596ca751221002c69adcb2cea52ee
|
4
|
+
data.tar.gz: 7ff7732c4b04ffeff143812216af2e03a81008830fba3681614c44d59552959b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1884f93d5785dde2523add135e534d86a18880fe9cc1ded09d73a915ed1ce8c842907e63a0a9e1ac7aa829489b55d3f1eaf0de2be4add65cfaa806e0701fd422
|
7
|
+
data.tar.gz: 7f88e77db260d68330f44868d79f8aebfd7458e19a3b4a4a205811071d2e3abc32f69777dd2ac2c6b964c0df4e1efde54e7b0233705ee7fd6d906e95facf9d1f
|
@@ -9,7 +9,7 @@ module Effective
|
|
9
9
|
@page_title ||= resource_plural_name.titleize
|
10
10
|
|
11
11
|
self.resources ||= resource_scope.all if resource_scope.respond_to?(:all)
|
12
|
-
@datatable = resource_datatable(
|
12
|
+
@datatable = resource_datatable()
|
13
13
|
|
14
14
|
run_callbacks(:resource_render)
|
15
15
|
end
|
@@ -214,7 +214,7 @@ module Effective
|
|
214
214
|
@page_title ||= "#{action.to_s.titleize} #{resource_plural_name.titleize}"
|
215
215
|
|
216
216
|
if request.get?
|
217
|
-
@datatable = resource_datatable(
|
217
|
+
@datatable = resource_datatable()
|
218
218
|
run_callbacks(:resource_render)
|
219
219
|
|
220
220
|
view = lookup_context.template_exists?(action, _prefixes) ? action : :index
|
@@ -61,7 +61,20 @@ module Effective
|
|
61
61
|
raise 'expected a label or block' unless (label || block_given?)
|
62
62
|
|
63
63
|
instance_exec do
|
64
|
-
before_action(opts)
|
64
|
+
before_action(opts) do
|
65
|
+
@page_title ||= (block_given? ? instance_exec(&block) : label).to_s
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# datatable -> { MyDatatable.new }, only: [:index]
|
71
|
+
def datatable(obj = nil, opts = {}, &block)
|
72
|
+
raise 'expected a proc or block' unless (obj.respond_to?(:call) || block_given?)
|
73
|
+
|
74
|
+
instance_exec do
|
75
|
+
before_action(opts) do
|
76
|
+
@datatable ||= (block_given? ? instance_exec(&block) : obj.call)
|
77
|
+
end
|
65
78
|
end
|
66
79
|
end
|
67
80
|
|
@@ -84,7 +97,6 @@ module Effective
|
|
84
97
|
else
|
85
98
|
define_method(:resource_scope_relation) { return obj }
|
86
99
|
end
|
87
|
-
|
88
100
|
end
|
89
101
|
|
90
102
|
end
|
@@ -108,15 +108,16 @@ module Effective
|
|
108
108
|
resource_scope.where_values_hash.symbolize_keys
|
109
109
|
end
|
110
110
|
|
111
|
-
def resource_datatable
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
111
|
+
def resource_datatable
|
112
|
+
# This might have been done from a before action or dsl method
|
113
|
+
unless @datatable.nil?
|
114
|
+
raise('expected @datatable to be an Effective::Datatable') unless @datatable.kind_of?(Effective::Datatable)
|
115
|
+
|
116
|
+
@datatable.effective_resource = effective_resource
|
117
|
+
return @datatable
|
118
118
|
end
|
119
119
|
|
120
|
+
datatable_klass = effective_resource.datatable_klass
|
120
121
|
return unless datatable_klass.present?
|
121
122
|
|
122
123
|
datatable = datatable_klass.new(resource_datatable_attributes)
|
@@ -76,7 +76,11 @@ module ActsAsWizard
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def next_step
|
79
|
-
|
79
|
+
first_uncompleted_step ||
|
80
|
+
last_completed_step ||
|
81
|
+
required_steps.reverse.find { |step| can_visit_step?(step) } ||
|
82
|
+
required_steps.first ||
|
83
|
+
:start
|
80
84
|
end
|
81
85
|
|
82
86
|
def previous_step(step)
|
@@ -89,6 +93,13 @@ module ActsAsWizard
|
|
89
93
|
previous.blank? || has_completed_step?(previous)
|
90
94
|
end
|
91
95
|
|
96
|
+
def has_completed_all_previous_steps?(step)
|
97
|
+
index = required_steps.index(step).to_i
|
98
|
+
previous = required_steps[0...index]
|
99
|
+
|
100
|
+
previous.blank? || previous.all? { |step| has_completed_step?(step) }
|
101
|
+
end
|
102
|
+
|
92
103
|
def has_completed_last_step?
|
93
104
|
has_completed_step?(required_steps.last)
|
94
105
|
end
|
@@ -97,12 +108,12 @@ module ActsAsWizard
|
|
97
108
|
|
98
109
|
def can_revisit_completed_steps(step)
|
99
110
|
return (step == required_steps.last) if has_completed_last_step?
|
100
|
-
|
111
|
+
has_completed_all_previous_steps?(step)
|
101
112
|
end
|
102
113
|
|
103
114
|
def cannot_revisit_completed_steps(step)
|
104
115
|
return (step == required_steps.last) if has_completed_last_step?
|
105
|
-
|
116
|
+
has_completed_all_previous_steps?(step) && !has_completed_step?(step)
|
106
117
|
end
|
107
118
|
|
108
119
|
end
|
@@ -14,7 +14,7 @@ module Effective
|
|
14
14
|
include Effective::Resources::Paths
|
15
15
|
include Effective::Resources::Relation
|
16
16
|
include Effective::Resources::Sql
|
17
|
-
|
17
|
+
include Effective::Resources::Tenants
|
18
18
|
|
19
19
|
# In practice, this is initialized two ways
|
20
20
|
# With a klass and a namespace from effective_datatables
|
@@ -30,19 +30,19 @@ module Effective
|
|
30
30
|
|
31
31
|
# Tenants
|
32
32
|
def tenant_controller_path
|
33
|
-
(Tenant.module_name.downcase + '/' + controller_path) if
|
33
|
+
(Tenant.module_name.downcase + '/' + controller_path) if tenant?
|
34
34
|
end
|
35
35
|
|
36
36
|
def tenant_namespaced_class_name
|
37
|
-
(Tenant.module_name + '::' + namespaced_class_name) if
|
37
|
+
(Tenant.module_name + '::' + namespaced_class_name) if tenant?
|
38
38
|
end
|
39
39
|
|
40
40
|
def tenant_namespaced_module_name
|
41
|
-
(Tenant.module_name + '::' + namespaced_module_name) if
|
41
|
+
(Tenant.module_name + '::' + namespaced_module_name) if tenant?
|
42
42
|
end
|
43
43
|
|
44
44
|
def tenant_class_name
|
45
|
-
(Tenant.module_name + '::' + class_name) if
|
45
|
+
(Tenant.module_name + '::' + class_name) if tenant?
|
46
46
|
end
|
47
47
|
|
48
48
|
end
|
@@ -8,7 +8,10 @@ module Effective
|
|
8
8
|
|
9
9
|
def _initialize_input(input, namespace: nil, relation: nil)
|
10
10
|
@initialized_name = input
|
11
|
-
|
11
|
+
|
12
|
+
# Sets the class but also namespaces
|
13
|
+
@model_klass = _klass_by_input(input)
|
14
|
+
@model_klass = _klass_by_input(relation) unless relation.nil?
|
12
15
|
|
13
16
|
# Consider controller_name
|
14
17
|
if @model_klass && input.kind_of?(String) && namespace.blank?
|
@@ -40,7 +40,7 @@ module Effective
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def find_tenant_datatable_klass
|
43
|
-
return unless
|
43
|
+
return unless tenant?
|
44
44
|
|
45
45
|
"::#{tenant_controller_path.classify.pluralize}Datatable".safe_constantize ||
|
46
46
|
"::#{tenant_controller_path.classify}Datatable".safe_constantize ||
|
@@ -65,16 +65,6 @@ module Effective
|
|
65
65
|
def human_plural_name
|
66
66
|
name.pluralize.gsub('::', ' ').underscore.gsub('_', ' ')
|
67
67
|
end
|
68
|
-
|
69
|
-
def tenant
|
70
|
-
return nil unless defined?(Tenant)
|
71
|
-
return nil unless klass.present?
|
72
|
-
return nil unless class_name.include?('::')
|
73
|
-
|
74
|
-
name = class_name.split('::').first.downcase.to_sym
|
75
|
-
name if Rails.application.config.tenants[name].present?
|
76
|
-
end
|
77
|
-
|
78
68
|
end
|
79
69
|
end
|
80
70
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Effective
|
2
|
+
module Resources
|
3
|
+
module Tenants
|
4
|
+
|
5
|
+
def tenant?
|
6
|
+
defined?(::Tenant)
|
7
|
+
end
|
8
|
+
|
9
|
+
def tenant
|
10
|
+
return unless tenant?
|
11
|
+
return nil unless klass.present?
|
12
|
+
return nil unless class_name.include?('::')
|
13
|
+
|
14
|
+
name = class_name.split('::').first.downcase.to_sym
|
15
|
+
name if Rails.application.config.tenants[name].present?
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/effective_resources.rb
CHANGED
@@ -33,6 +33,24 @@ module EffectiveResources
|
|
33
33
|
|
34
34
|
# Utilities
|
35
35
|
|
36
|
+
# This looks up the best class give the name
|
37
|
+
# If the Tenant is present, use those classes first.
|
38
|
+
def self.best(name)
|
39
|
+
klass = if defined?(Tenant)
|
40
|
+
('::' + Tenant.module_name + '::' + name).safe_constantize ||
|
41
|
+
('::' + Tenant.module_name + '::Effective::' + name).safe_constantize
|
42
|
+
end
|
43
|
+
|
44
|
+
klass ||= begin
|
45
|
+
('::' + name).safe_constantize ||
|
46
|
+
('::Effective::' + name).safe_constantize
|
47
|
+
end
|
48
|
+
|
49
|
+
raise("unable to find best #{name}") if klass.blank?
|
50
|
+
|
51
|
+
klass
|
52
|
+
end
|
53
|
+
|
36
54
|
def self.truthy?(value)
|
37
55
|
if defined?(::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES) # Rails <5
|
38
56
|
::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES.include?(value)
|
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: 1.9.
|
4
|
+
version: 1.9.5
|
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: 2021-11-
|
11
|
+
date: 2021-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -184,6 +184,7 @@ files:
|
|
184
184
|
- app/models/effective/resources/paths.rb
|
185
185
|
- app/models/effective/resources/relation.rb
|
186
186
|
- app/models/effective/resources/sql.rb
|
187
|
+
- app/models/effective/resources/tenants.rb
|
187
188
|
- app/views/application/_flash.html.haml
|
188
189
|
- app/views/application/create.js.erb
|
189
190
|
- app/views/application/destroy.js.erb
|