effective_resources 1.8.0 → 1.8.1

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: 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