effective_resources 1.8.0 → 1.8.1

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
  SHA256:
3
- metadata.gz: bfeb432c164a66cacd2997275b2a19c1cd27bc35aceb3176d4f8ab30b51fac39
4
- data.tar.gz: a90b68b3736546c7b6999e4d9b795d57a53fa508f4e94d34610a12ca7ca418a2
3
+ metadata.gz: ba1ab3c1064882ff12132711f5b5e52baffd2448ca53097739f6fc5da17ded8e
4
+ data.tar.gz: 0444d91c34c0e2bccae26dbd042d80d491d829e19f6f0dccf720ad975eb0ee14
5
5
  SHA512:
6
- metadata.gz: 8302e898ba4b18d7791a15585e3f9b7c099402f2079958a1af3ec113f05b3fdffc9e56cf58ff8740f21a1c663a0163e571f755d030bc57a45ecf4a05160705b5
7
- data.tar.gz: 2982d3550eb4bf9f2288082dd2e85ce4c60eafc7c9076056f698b8e7b5d0f362c8efd115be9447fbff754dac33d6c61fc80805e98bdbf28ef0c1c44dfae29c06
6
+ metadata.gz: 1bed68ed75113db85e5a10372dd148847464855f7bee2d4699366efdb3df2046a1e8ca001c9c6fadee838b6f67b5f900ca7429a9888b286c66db1db17d2e7996
7
+ data.tar.gz: 0caf48a95cb7600b104fe0ca679c9780552fc99f61e1f8ce005b5e24f241a93cd340c6222ee3ce43a6ab85e93380511d1b5184c25795a5138423fb35b2cbd78c
@@ -36,8 +36,8 @@ module Effective
36
36
  raise 'expected an ActiveRecord resource' unless resource.respond_to?(:errors)
37
37
 
38
38
  messages = resource.errors.map do |error|
39
- attribute = error.respond_to?(:attribute) ? error.attribute : error.first
40
- message = error.respond_to?(:message) ? error.message : error.last
39
+ attribute = error.respond_to?(:attribute) ? error.attribute : error
40
+ message = error.respond_to?(:message) ? error.message : resource.errors[attribute].to_sentence
41
41
 
42
42
  if message[0] == message[0].upcase # If the error begins with a capital letter
43
43
  message
@@ -196,6 +196,7 @@ module EffectiveResourcesHelper
196
196
 
197
197
  render(resource, atts) # Will raise the regular error
198
198
  end
199
+ alias_method :render_resource, :render_resource_partial
199
200
 
200
201
  # Tableize attributes
201
202
  # This is used by effective_orders, effective_logging, effective_trash and effective_mergery
@@ -66,6 +66,7 @@ module EffectiveDeviseUser
66
66
 
67
67
  module ClassMethods
68
68
  def permitted_sign_up_params # Should contain all fields as per views/users/_sign_up_fields
69
+ raise('please define a self.permitted_sign_up_params')
69
70
  [:email, :password, :password_confirmation, :first_name, :last_name, :name, :login]
70
71
  end
71
72
 
@@ -152,8 +153,6 @@ module EffectiveDeviseUser
152
153
  def send_devise_notification(notification, *args)
153
154
  raise('expected args Hash') unless args.respond_to?(:last) && args.last.kind_of?(Hash)
154
155
 
155
-
156
-
157
156
  if defined?(Tenant)
158
157
  tenant = Tenant.current || raise('expected a current tenant')
159
158
  args.last[:tenant] ||= tenant
@@ -7,6 +7,7 @@ module Effective
7
7
  include Effective::Resources::Init
8
8
  include Effective::Resources::Instance
9
9
  include Effective::Resources::Forms
10
+ include Effective::Resources::Generator
10
11
  include Effective::Resources::Klass
11
12
  include Effective::Resources::Model
12
13
  include Effective::Resources::Naming
@@ -0,0 +1,31 @@
1
+ module Effective
2
+ module Resources
3
+ module Generator
4
+
5
+ def module_name
6
+ return nil unless class_name.split('::').length > 1
7
+ class_name.split('::').first
8
+ end
9
+
10
+ # Acpa
11
+ def module_namespace
12
+ return nil unless namespaces.present?
13
+ Array(namespaces + [nil]).map { |name| name.to_s.classify } * '::'
14
+ end
15
+
16
+ # Admin::Courses
17
+ def module_namespaced
18
+ (Array(namespaces).map { |name| name.to_s.classify } + [plural_name.classify.pluralize]) * '::'
19
+ end
20
+
21
+ def namespaced_class_name # 'Admin::Effective::Post'
22
+ (Array(namespaces).map { |name| name.to_s.classify } + [class_name]) * '::'
23
+ end
24
+
25
+ def namespaced_module_name # 'Admin::EffectivePosts'
26
+ Array(namespaces).map { |name| name.to_s.classify }.join('::') + '::' + class_name.gsub('::', '')
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -72,8 +72,7 @@ module Effective
72
72
  def _klass_by_name(input)
73
73
  input = input.to_s
74
74
  input = input[1..-1] if input.start_with?('/')
75
-
76
- names = input.split('/')
75
+ names = input.split(%r{\/|::})
77
76
 
78
77
  # Classify based on namespace
79
78
  # acpa/admin/shirts
@@ -50,14 +50,6 @@ module Effective
50
50
  class_name.split('::')[0...-1].map { |name| name.underscore } * '/'
51
51
  end
52
52
 
53
- def namespaced_class_name # 'Admin::Effective::Post'
54
- (Array(namespaces).map { |name| name.to_s.classify } + [class_name]) * '::'
55
- end
56
-
57
- def namespaced_module_name # 'Admin::EffectivePosts'
58
- Array(namespaces).map { |name| name.to_s.classify }.join('::') + '::' + class_name.gsub('::', '')
59
- end
60
-
61
53
  def namespace # 'admin/things'
62
54
  (namespaces.join('/') if namespaces.present?)
63
55
  end
@@ -74,6 +66,15 @@ module Effective
74
66
  name.pluralize.gsub('::', ' ').underscore.gsub('_', ' ')
75
67
  end
76
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
+
77
78
  end
78
79
  end
79
80
  end
@@ -1,25 +1,52 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Effective
2
4
  module Resources
3
5
  module Paths
4
6
 
7
+ def tenant_path
8
+ return unless tenant.present?
9
+ Tenant.engine_path(tenant).sub("#{Rails.root}/", '')
10
+ end
11
+
5
12
  def model_file
6
- File.join('app/models', class_path.to_s, "#{name}.rb")
13
+ File.join(*[tenant_path, 'app/models', class_path, "#{name}.rb"].compact)
7
14
  end
8
15
 
9
16
  def controller_file
10
- File.join('app/controllers', namespace.to_s, "#{plural_name}_controller.rb")
17
+ File.join(*[tenant_path, 'app/controllers', class_path, namespace, "#{plural_name}_controller.rb"].compact)
11
18
  end
12
19
 
13
20
  def datatable_file
14
- File.join('app/datatables', namespace.to_s, "#{plural_name}_datatable.rb")
21
+ File.join(*[tenant_path, 'app/datatables', class_path, namespace, "#{plural_name}_datatable.rb"].compact)
15
22
  end
16
23
 
17
24
  def view_file(action = :index, partial: false)
18
- File.join('app/views', namespace.to_s, (namespace.present? ? '' : class_path), plural_name, "#{'_' if partial}#{action}.html.haml")
25
+ File.join(*[tenant_path, 'app/views', class_path, namespace, plural_name, "#{'_' if partial}#{action}.html.haml"].compact)
26
+ end
27
+
28
+ def view_file_path(action = :index)
29
+ File.join(*[class_path, namespace, plural_name, action].compact)
19
30
  end
20
31
 
21
32
  def flat_view_file(action = :index, partial: false)
22
- File.join('app/views', plural_name, "#{'_' if partial}#{action}.html.haml")
33
+ File.join(*[tenant_path, 'app/views', class_path, plural_name, "#{'_' if partial}#{action}.html.haml"].compact)
34
+ end
35
+
36
+ def routes_file
37
+ File.join(*[tenant_path, 'config/routes.rb'].compact)
38
+ end
39
+
40
+ def abilities_file
41
+ File.join(*[tenant_path, 'app/models/', class_path, 'ability.rb'].compact)
42
+ end
43
+
44
+ def menu_file
45
+ File.join(*[tenant_path, 'app/views/layouts', class_path, '_navbar.html.haml'].compact)
46
+ end
47
+
48
+ def admin_menu_file
49
+ File.join(*[tenant_path, 'app/views/layouts', class_path, '_navbar_admin.html.haml'].compact)
23
50
  end
24
51
 
25
52
  # Used by render_resource_partial and render_resource_form to guess the view path
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '1.8.0'.freeze
2
+ VERSION = '1.8.1'.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: 1.8.0
4
+ version: 1.8.1
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-02-24 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -155,6 +155,7 @@ files:
155
155
  - app/models/effective/resources/attributes.rb
156
156
  - app/models/effective/resources/controller.rb
157
157
  - app/models/effective/resources/forms.rb
158
+ - app/models/effective/resources/generator.rb
158
159
  - app/models/effective/resources/init.rb
159
160
  - app/models/effective/resources/instance.rb
160
161
  - app/models/effective/resources/klass.rb