hancock_cms 1.0.1 → 1.0.2.2

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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +4 -0
  3. data/app/assets/images/{rails-admin → hancock/rails_admin}/hancock_logo.svg +0 -0
  4. data/app/assets/javascripts/hancock/cms.coffee +1 -1
  5. data/app/assets/javascripts/hancock/rails_admin/cms.ui.coffee +10 -38
  6. data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +90 -0
  7. data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +41 -0
  8. data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +44 -0
  9. data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +106 -0
  10. data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +8 -0
  11. data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +25 -0
  12. data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +108 -0
  13. data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +12 -0
  14. data/app/assets/javascripts/jquery.placeholder.js +3 -2
  15. data/app/assets/javascripts/rails_admin/custom/ui.coffee +1 -0
  16. data/app/assets/stylesheets/hancock/cms/devise.sass +4 -1
  17. data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +364 -147
  18. data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +198 -0
  19. data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
  20. data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
  21. data/app/controllers/concerns/hancock/errors.rb +4 -6
  22. data/app/controllers/hancock/registrations_controller.rb +2 -7
  23. data/app/controllers/hancock/sessions_controller.rb +3 -7
  24. data/app/helpers/hancock/powered_helper.rb +3 -3
  25. data/app/helpers/hancock/settings_helper.rb +44 -0
  26. data/app/helpers/rails_admin/application/hancock_helper.rb +19 -0
  27. data/app/helpers/rails_admin/hancock/form_builder.rb +44 -0
  28. data/app/helpers/rails_admin/main/hancock_helper.rb +27 -0
  29. data/app/models/concerns/hancock/boolean_field.rb +7 -2
  30. data/app/models/concerns/hancock/decorators/embedded_element.rb +1 -9
  31. data/app/models/concerns/hancock/enableable.rb +1 -0
  32. data/app/models/concerns/hancock/hash_field.rb +9 -8
  33. data/app/models/concerns/hancock/html_field.rb +6 -3
  34. data/app/models/concerns/hancock/insertion_field.rb +115 -0
  35. data/app/models/concerns/hancock/mappable.rb +1 -0
  36. data/app/models/concerns/hancock/model_localizeable.rb +4 -1
  37. data/app/models/concerns/hancock/rails_admin_patch.rb +22 -3
  38. data/app/models/concerns/hancock/sort_field.rb +26 -3
  39. data/app/models/concerns/hancock/sortable.rb +3 -0
  40. data/app/views/blocks/_footer.html.slim +1 -1
  41. data/app/views/devise/passwords/edit.html.slim +0 -2
  42. data/app/views/devise/passwords/new.html.slim +0 -2
  43. data/app/views/devise/registrations/edit.html.slim +0 -2
  44. data/app/views/devise/registrations/new.html.slim +0 -2
  45. data/app/views/devise/sessions/new.html.slim +0 -2
  46. data/app/views/hancock/home/index.html.slim +4 -1
  47. data/app/views/layouts/application.html.slim +7 -6
  48. data/app/views/layouts/hancock/devise/confirmations.html.slim +7 -4
  49. data/app/views/layouts/hancock/devise/passwords.html.slim +7 -4
  50. data/app/views/layouts/hancock/devise/registrations.html.slim +7 -4
  51. data/app/views/layouts/hancock/devise/sessions.html.slim +7 -4
  52. data/app/views/layouts/hancock/devise/unlocks.html.slim +7 -4
  53. data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
  54. data/app/views/layouts/rails_admin/_footer_navigation.html.slim +20 -4
  55. data/app/views/layouts/rails_admin/_navigation.html.slim +13 -47
  56. data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +5 -12
  57. data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +2 -0
  58. data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +3 -0
  59. data/app/views/layouts/rails_admin/application.html.haml +3 -1
  60. data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +24 -0
  61. data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +20 -0
  62. data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
  63. data/app/views/rails_admin/main/_hancock_html_ml.html.slim +31 -34
  64. data/app/views/rails_admin/main/edit.html.haml +18 -0
  65. data/app/views/rails_admin/main/new.html.haml +17 -0
  66. data/app/views/shared/_admin_link.html.slim +4 -3
  67. data/config/initializers/rails_admin_mongoid_patch.rb +27 -0
  68. data/config/locales/en.hancock.yml +1 -0
  69. data/config/locales/ru.devise.yml +22 -18
  70. data/config/locales/ru.hancock.yml +2 -0
  71. data/config/locales/ru.rails_admin.yml +3 -0
  72. data/hancock_cms.gemspec +4 -1
  73. data/lib/filename_to_slug.rb +0 -20
  74. data/lib/generators/hancock/cms/ability_generator.rb +1 -0
  75. data/lib/generators/hancock/cms/admin_generator.rb +1 -0
  76. data/lib/generators/hancock/cms/application_generator.rb +1 -0
  77. data/lib/generators/hancock/cms/assets_generator.rb +1 -0
  78. data/lib/generators/hancock/cms/layout_generator.rb +1 -0
  79. data/lib/generators/hancock/cms/model_generator.rb +1 -0
  80. data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
  81. data/lib/generators/hancock/cms/rack_generator.rb +1 -0
  82. data/lib/generators/hancock/cms/robots_generator.rb +1 -0
  83. data/lib/generators/hancock/cms/scripts_generator.rb +1 -0
  84. data/lib/generators/hancock/cms/setup_generator.rb +149 -32
  85. data/lib/generators/hancock/cms/templates/Gemfile.erb +1 -4
  86. data/lib/generators/hancock/cms/templates/ability.erb +1 -1
  87. data/lib/generators/hancock/cms/templates/admin.erb +12 -4
  88. data/lib/generators/hancock/cms/templates/robots.txt.erb +5 -1
  89. data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
  90. data/lib/generators/hancock/cms/unicorn_god_generator.rb +1 -0
  91. data/lib/generators/hancock/cms/utils.rb +2 -0
  92. data/lib/hancock/admin/embedded_element.rb +7 -2
  93. data/lib/hancock/admin.rb +141 -17
  94. data/lib/hancock/controller.rb +9 -0
  95. data/lib/hancock/engine.rb +28 -36
  96. data/lib/hancock/model.rb +6 -0
  97. data/lib/hancock/models/embedded_element.rb +2 -0
  98. data/lib/hancock/models/mongoid/embedded_element.rb +17 -0
  99. data/lib/hancock/plugin_configuration.rb +1 -1
  100. data/lib/hancock/rails_admin_ext/config.rb +21 -4
  101. data/lib/hancock/rails_admin_ext/hancock_array.rb +19 -0
  102. data/lib/hancock/rails_admin_ext/hancock_enum.rb +10 -0
  103. data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +34 -0
  104. data/lib/hancock/rails_admin_ext/hancock_hash.rb +8 -1
  105. data/lib/hancock/rails_admin_ext/hancock_html.rb +17 -2
  106. data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +1 -5
  107. data/lib/hancock/rails_admin_ext/hancock_slugs.rb +0 -4
  108. data/lib/hancock/rails_admin_ext/patches/field_patch.rb +2 -1
  109. data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +14 -0
  110. data/lib/hancock/rails_admin_ext/patches/group_patch.rb +9 -0
  111. data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +2 -0
  112. data/lib/hancock/rails_admin_ext/patches/has_fields.rb +27 -0
  113. data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +25 -0
  114. data/lib/hancock/rails_admin_settings_patch.rb +195 -11
  115. data/lib/hancock/version.rb +1 -1
  116. data/lib/hancock_cms.rb +10 -9
  117. data/lib/manual_slug/active_record.rb +8 -8
  118. data/lib/rails_admin/custom_show_in_app.rb +21 -32
  119. data/template.rb +11 -10
  120. metadata +74 -5
@@ -27,4 +27,13 @@ module Hancock::Controller
27
27
  def hide_ym_ga
28
28
  false
29
29
  end
30
+
31
+ # HARD Rails5 compatibility
32
+ def redirect_back(fallback_location:, **args)
33
+ if referer = request.headers["Referer"]
34
+ redirect_to referer, **args
35
+ else
36
+ redirect_to fallback_location, **args
37
+ end
38
+ end
30
39
  end
@@ -1,56 +1,48 @@
1
1
  module Hancock
2
- class Engine < ::Rails::Engine
3
- # isolate_namespace Hancock
2
+ class Engine < ::Rails::Engine
3
+ # isolate_namespace Hancock
4
4
 
5
5
  # rake_tasks do
6
6
  # require File.expand_path('../tasks', __FILE__)
7
7
  # end
8
8
 
9
+
9
10
  initializer "RailsAdminSettingsPatch (CMS)" do
10
11
  ::RailsAdminSettings::Setting.send(:include, Hancock::RailsAdminSettingsPatch)
11
12
  end
12
13
 
13
- initializer "hancock_cms.email_defaults" do
14
- # Write default email settings to DB so they can be changed.
15
14
 
16
- #temp
15
+ config.to_prepare do
16
+ require 'rails_admin/hancock/form_builder'
17
+
18
+ ::RailsAdmin::MainController.send(:include, ::RailsAdmin::Application::HancockHelper)
19
+ ::RailsAdmin::MainController.send(:include, ::RailsAdmin::Main::HancockHelper)
20
+ # ::RailsAdmin::ApplicationHelper.send(:include, ::RailsAdmin::Hancock::FormBuilder)
21
+
22
+ ::RailsAdmin::ApplicationController.send(:helper, ::RailsAdmin::Application::HancockHelper)
23
+ ::RailsAdmin::ApplicationController.send(:helper, ::RailsAdmin::Main::HancockHelper)
24
+ end
25
+
26
+ config.after_initialize do
27
+
17
28
  begin
18
29
  if Settings and Settings.table_exists?
19
- # Settings.default_email_from(default: 'noreply@site.domain')
20
- # Settings.form_email(default: 'admin@site.domain')
21
- # Settings.email_topic(default: 'с сайта')
22
- Settings.logo_image(kind: :image)
30
+ if Settings.file_uploads_supported
31
+ if !RailsAdminSettings::Setting.ns("main").where(key: "logo_image").exists?
32
+ Settings.logo_image(kind: :image)
33
+ end
34
+ end
23
35
  end
24
36
  rescue
25
37
  end
26
- end
27
- # initializer 'hancock_cms.paperclip' do
28
- # # require 'paperclip/style'
29
- # # module ::Paperclip
30
- # # class Style
31
- # # alias_method :processor_options_without_auto_orient, :processor_options
32
- # # def processor_options
33
- # # processor_options_without_auto_orient.merge(auto_orient: false)
34
- # # end
35
- # # end
36
- # # end
37
- # end
38
38
 
39
- # config.after_initialize do
40
- # # trigger autoload so models are registered in Mongoid::Elasticearch
41
- # # Hancock.config.search_models.map(&:constantize)
42
- #
43
- # # Write default email settings to DB so they can be changed.
44
- # begin
45
- # if Settings and Settings.table_exists?
46
- # # Settings.default_email_from(default: 'noreply@site.domain')
47
- # # Settings.form_email(default: 'admin@site.domain')
48
- # # Settings.email_topic(default: 'с сайта')
49
- # Settings.logo_image(kind: :image)
50
- # end
51
- # rescue
52
- # end
53
- # end
39
+ # clear empty history for prevent admin panel crashs
40
+ begin
41
+ ::Hancock.clear_history_from_empty_objects
42
+ rescue
43
+ end
44
+
45
+ end
54
46
 
55
47
  end
56
48
  end
data/lib/hancock/model.rb CHANGED
@@ -4,6 +4,12 @@ module Hancock
4
4
  included do
5
5
  Hancock.register_model(self)
6
6
 
7
+ def self.inherited(base)
8
+ super
9
+ Hancock.register_model(base)
10
+ Hancock.register_model(self)
11
+ end
12
+
7
13
  if Hancock.mongoid?
8
14
  include Mongoid::Document
9
15
  include Mongoid::Timestamps::Short
@@ -2,11 +2,13 @@ module Hancock
2
2
  module Models
3
3
  module EmbeddedElement
4
4
  extend ActiveSupport::Concern
5
+
5
6
  include Hancock::Model
6
7
  include Hancock::Enableable
7
8
  include Hancock::Sortable
8
9
 
9
10
  include Hancock.orm_specific('EmbeddedElement')
11
+
10
12
  end
11
13
  end
12
14
  end
@@ -8,6 +8,23 @@ module Hancock
8
8
 
9
9
  included do
10
10
  field :name, type: String, localize: Hancock.configuration.localize, default: ""
11
+
12
+ # stolen from https://github.com/mongoid/mongoid-history/blob/master/lib/mongoid/history/trackable.rb#L171
13
+ def embed_method_for_parent
14
+ ret = nil
15
+ if self._parent
16
+ ret = self._parent.relations.values.find do |relation|
17
+ if ::Mongoid::Compatibility::Version.mongoid3?
18
+ relation.class_name == self.metadata.class_name.to_s && relation.name == self.metadata.name
19
+ else
20
+ relation.class_name == self.relation_metadata.class_name.to_s &&
21
+ relation.name == self.relation_metadata.name
22
+ end
23
+ end
24
+ end
25
+ ret and ret.name
26
+ end
27
+
11
28
  end
12
29
 
13
30
  end
@@ -5,7 +5,7 @@ module Hancock::PluginConfiguration
5
5
  @configuration ||= config_class.new if config_class
6
6
  end
7
7
  def config
8
- @configuration ||= config_class.new if config_class
8
+ configuration
9
9
  end
10
10
 
11
11
  def configure
@@ -50,6 +50,18 @@ module Hancock
50
50
  action_visible_for(:multiple_file_upload_collection, Proc.new { false })
51
51
  end
52
52
 
53
+ if defined?(RailsAdminUserAbilities)
54
+ action_visible_for(:user_abilities, Proc.new { false })
55
+ action_visible_for(:model_accesses, Proc.new { false })
56
+ end
57
+
58
+ if defined?(RailsAdminComments)
59
+ action_visible_for(:comments, Proc.new { false })
60
+ action_visible_for(:model_comments, Proc.new { false })
61
+ end
62
+
63
+ action_visible_for(:sort_embedded, Proc.new { false })
64
+
53
65
  end
54
66
 
55
67
  def add_action(action_name)
@@ -99,7 +111,7 @@ module Hancock
99
111
  else
100
112
  ret = false
101
113
  if bindings[:abstract_model].model.respond_to?(:rails_admin_visible_actions)
102
- ret = bindings[:abstract_model].model.rails_admin_visible_actions.include?(action)
114
+ ret = bindings[:abstract_model].model.rails_admin_visible_actions.include?(action.to_sym)
103
115
  else
104
116
  if visibility = Hancock.rails_admin_config.actions_visibility[action]
105
117
  if visibility.is_a?(Proc)
@@ -109,7 +121,8 @@ module Hancock
109
121
  end
110
122
  end
111
123
  end # if bindings[:abstract_model].model.respond_to?(:rails_admin_visible_actions)
112
- ret
124
+ _context = bindings[:controller] || bindings[:view]
125
+ ret and _context and _context.can?(action, bindings[:abstract_model].model)
113
126
  end # !bindings or bindings[:abstract_model].blank?
114
127
  end # visible do
115
128
  end # rails_admin_actions.send(action) do
@@ -118,6 +131,7 @@ module Hancock
118
131
 
119
132
  end
120
133
 
134
+
121
135
  def cancancan_admin_rules(ability_object)
122
136
  Hancock.config.ability_admin_config.each do |config|
123
137
  _model = config[:model]
@@ -125,9 +139,11 @@ module Hancock
125
139
  ability_object.send(config[:method], config[:actions], _model)
126
140
  end
127
141
  Hancock::MODELS.each do |_model|
128
- ability_object.can _model.admin_can_actions, _model
142
+ ability_object.can _model.admin_can_actions, _model
143
+ ability_object.cannot _model.admin_cannot_actions, _model
129
144
  end
130
145
  end
146
+
131
147
  def cancancan_manager_rules(ability_object)
132
148
  Hancock.config.ability_manager_config.each do |config|
133
149
  _model = config[:model]
@@ -135,7 +151,8 @@ module Hancock
135
151
  ability_object.send(config[:method], config[:actions], _model)
136
152
  end
137
153
  Hancock::MODELS.each do |_model|
138
- ability_object.can _model.manager_can_actions, _model
154
+ ability_object.can _model.manager_can_actions, _model
155
+ ability_object.cannot _model.manager_cannot_actions, _model
139
156
  end
140
157
  end
141
158
 
@@ -0,0 +1,19 @@
1
+ require 'hancock_enum_with_custom'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class HancockArray < RailsAdmin::Config::Fields::Types::HancockEnumWithCustom
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types.register(self)
10
+
11
+ register_instance_option :multiple do
12
+ true
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -8,6 +8,16 @@ module RailsAdmin
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types.register(self)
10
10
 
11
+ register_instance_option :searchable do
12
+ true
13
+ end
14
+ register_instance_option :searchable_columns do
15
+ [{column: "#{abstract_model.table_name}.#{enum_method}" , type: :string}]
16
+ end
17
+ register_instance_option :queryable do
18
+ true
19
+ end
20
+
11
21
  register_instance_option :partial do
12
22
  :form_hancock_enum
13
23
  end
@@ -0,0 +1,34 @@
1
+ require 'hancock_enum'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class HancockEnumWithCustom < RailsAdmin::Config::Fields::Types::HancockEnum
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types.register(self)
10
+ register_instance_option :help do
11
+ 'Выберите из списка или введите свой вариант'
12
+ end
13
+
14
+ register_instance_option :enum do
15
+ []
16
+ end
17
+
18
+ register_instance_option :unique do
19
+ true
20
+ end
21
+
22
+ register_instance_option :selection do
23
+ ([enum] + [form_value]).flatten.uniq
24
+ end
25
+
26
+ register_instance_option :partial do
27
+ :form_hancock_enum_with_custom
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -26,6 +26,13 @@ module RailsAdmin
26
26
  true
27
27
  end
28
28
 
29
+ register_instance_option :searchable do
30
+ string_method.to_s
31
+ end
32
+ register_instance_option :queryable do
33
+ true
34
+ end
35
+
29
36
 
30
37
  ############ localize ######################
31
38
  register_instance_option :translations_field do
@@ -33,7 +40,7 @@ module RailsAdmin
33
40
  end
34
41
 
35
42
  register_instance_option :localized? do
36
- @abstract_model.model_name.constantize.public_instance_methods.include?(translations_field)
43
+ @abstract_model.model.public_instance_methods.include?(translations_field)
37
44
  end
38
45
 
39
46
  register_instance_option :pretty_value do
@@ -13,6 +13,13 @@ module RailsAdmin
13
13
  "#{name}_html".to_sym
14
14
  end
15
15
 
16
+ register_instance_option :searchable do
17
+ html_method.to_s
18
+ end
19
+ register_instance_option :queryable do
20
+ true
21
+ end
22
+
16
23
  register_instance_option :clear_method do
17
24
  "#{name}_clear".to_sym
18
25
  end
@@ -37,6 +44,14 @@ module RailsAdmin
37
44
  true
38
45
  end
39
46
 
47
+ register_instance_option :help do
48
+ if @abstract_model.model.respond_to?(:insertions_fields)
49
+ if @abstract_model.model.insertions_fields.include?(name)
50
+ 'Можно использовать вставки'
51
+ end
52
+ end
53
+ end
54
+
40
55
 
41
56
  ############ localize ######################
42
57
  register_instance_option :html_translations_field do
@@ -61,8 +76,8 @@ module RailsAdmin
61
76
  end
62
77
 
63
78
  register_instance_option :localized? do
64
- @abstract_model.model_name.constantize.public_instance_methods.include?(html_translations_field) and
65
- @abstract_model.model_name.constantize.public_instance_methods.include?(clear_translations_field)
79
+ @abstract_model.model.public_instance_methods.include?(html_translations_field) and
80
+ @abstract_model.model.public_instance_methods.include?(clear_translations_field)
66
81
  end
67
82
 
68
83
  register_instance_option :allowed_methods do
@@ -28,11 +28,7 @@ module RailsAdmin
28
28
  def nested_form
29
29
  false
30
30
  end
31
-
32
- # def method_name
33
- # "#{super.to_s.singularize}_ids".to_sym
34
- # end
35
-
31
+
36
32
  # Reader for validation errors of the bound object
37
33
  def errors
38
34
  bindings[:object].errors[name]
@@ -8,10 +8,6 @@ module RailsAdmin
8
8
  # Register field type for the type loader
9
9
  RailsAdmin::Config::Fields::Types::register(self)
10
10
 
11
- register_instance_option :searchable do
12
- true
13
- end
14
-
15
11
  register_instance_option :enum_method do
16
12
  :slugs
17
13
  end
@@ -5,8 +5,9 @@ module RailsAdmin
5
5
 
6
6
  class Base
7
7
  register_instance_option :weight do
8
- name.to_sym == :default ? -1_000_000 : 0
8
+ 0
9
9
  end
10
+
10
11
  end
11
12
 
12
13
  end
@@ -0,0 +1,14 @@
1
+ require 'rails_admin'
2
+ module RailsAdmin
3
+ module Config
4
+ module Fields
5
+
6
+ class Group
7
+ register_instance_option :leftside_hider do
8
+ true
9
+ end
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -15,6 +15,15 @@ module RailsAdmin
15
15
  a.weight <=> b.weight
16
16
  end
17
17
  end
18
+
19
+ def group(name, &block)
20
+ _groups = parent.groups rescue root.groups
21
+ group = _groups.detect { |g| name == g.name }
22
+ group ||= (parent.groups << RailsAdmin::Config::Fields::Group.new(self, name)).last
23
+ group.tap { |g| g.section = self }.instance_eval(&block) if block
24
+ group
25
+ end
26
+
18
27
  end
19
28
 
20
29
  end
@@ -27,6 +27,7 @@ module Hancock::RailsAdminGroupPatch
27
27
  end
28
28
 
29
29
  _group_fields.each_pair do |name, type|
30
+ next if type == false
30
31
  if type.blank?
31
32
  field name
32
33
  else
@@ -44,6 +45,7 @@ module Hancock::RailsAdminGroupPatch
44
45
 
45
46
  else
46
47
  fields.each_pair do |name, type|
48
+ next if type == false
47
49
  if type.nil?
48
50
  config.field name
49
51
  else
@@ -0,0 +1,27 @@
1
+ require 'rails_admin'
2
+ module RailsAdmin
3
+ module Config
4
+ # Provides accessors and autoregistering of model's fields.
5
+ module HasFields
6
+
7
+ protected
8
+
9
+ # Raw fields.
10
+ # Recursively returns parent section's raw fields
11
+ # Duping it if accessed for modification.
12
+ def _fields(readonly = false)
13
+ return @_fields if @_fields
14
+ return @_ro_fields if readonly && @_ro_fields
15
+
16
+ if self.class == RailsAdmin::Config::Sections::Base
17
+ @_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
18
+ else
19
+ # parent is RailsAdmin::Config::Model, recursion is on Section's classes
20
+ @_ro_fields ||= parent.send(self.class.superclass.to_s.underscore.split('/').last)._fields(true)
21
+ @_ro_fields.freeze if Rails.env.production? or Rails.env.staging?
22
+ end
23
+ readonly ? @_ro_fields : (@_fields ||= @_ro_fields.collect(&:clone))
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ require 'rails_admin'
2
+ module RailsAdmin
3
+ module Config
4
+
5
+ class Model
6
+ register_instance_option :navigation_icon do
7
+ abstract_model.model.try('rails_admin_navigation_icon')
8
+ end
9
+
10
+ register_instance_option :name_synonyms do
11
+ if name_synonyms_method
12
+ ret = abstract_model.model.try(name_synonyms_method)
13
+ ret = ret.join(" ") if ret.is_a?(Array)
14
+ else
15
+ ret = ''
16
+ end
17
+ ret.freeze
18
+ end
19
+ register_instance_option :name_synonyms_method do
20
+ :rails_admin_name_synonyms
21
+ end
22
+ end
23
+
24
+ end
25
+ end