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.
- checksums.yaml +4 -4
- data/.gitattributes +4 -0
- data/app/assets/images/{rails-admin → hancock/rails_admin}/hancock_logo.svg +0 -0
- data/app/assets/javascripts/hancock/cms.coffee +1 -1
- data/app/assets/javascripts/hancock/rails_admin/cms.ui.coffee +10 -38
- data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +90 -0
- data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +41 -0
- data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +44 -0
- data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +106 -0
- data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +8 -0
- data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +25 -0
- data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +108 -0
- data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +12 -0
- data/app/assets/javascripts/jquery.placeholder.js +3 -2
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +1 -0
- data/app/assets/stylesheets/hancock/cms/devise.sass +4 -1
- data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +364 -147
- data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +198 -0
- data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
- data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
- data/app/controllers/concerns/hancock/errors.rb +4 -6
- data/app/controllers/hancock/registrations_controller.rb +2 -7
- data/app/controllers/hancock/sessions_controller.rb +3 -7
- data/app/helpers/hancock/powered_helper.rb +3 -3
- data/app/helpers/hancock/settings_helper.rb +44 -0
- data/app/helpers/rails_admin/application/hancock_helper.rb +19 -0
- data/app/helpers/rails_admin/hancock/form_builder.rb +44 -0
- data/app/helpers/rails_admin/main/hancock_helper.rb +27 -0
- data/app/models/concerns/hancock/boolean_field.rb +7 -2
- data/app/models/concerns/hancock/decorators/embedded_element.rb +1 -9
- data/app/models/concerns/hancock/enableable.rb +1 -0
- data/app/models/concerns/hancock/hash_field.rb +9 -8
- data/app/models/concerns/hancock/html_field.rb +6 -3
- data/app/models/concerns/hancock/insertion_field.rb +115 -0
- data/app/models/concerns/hancock/mappable.rb +1 -0
- data/app/models/concerns/hancock/model_localizeable.rb +4 -1
- data/app/models/concerns/hancock/rails_admin_patch.rb +22 -3
- data/app/models/concerns/hancock/sort_field.rb +26 -3
- data/app/models/concerns/hancock/sortable.rb +3 -0
- data/app/views/blocks/_footer.html.slim +1 -1
- data/app/views/devise/passwords/edit.html.slim +0 -2
- data/app/views/devise/passwords/new.html.slim +0 -2
- data/app/views/devise/registrations/edit.html.slim +0 -2
- data/app/views/devise/registrations/new.html.slim +0 -2
- data/app/views/devise/sessions/new.html.slim +0 -2
- data/app/views/hancock/home/index.html.slim +4 -1
- data/app/views/layouts/application.html.slim +7 -6
- data/app/views/layouts/hancock/devise/confirmations.html.slim +7 -4
- data/app/views/layouts/hancock/devise/passwords.html.slim +7 -4
- data/app/views/layouts/hancock/devise/registrations.html.slim +7 -4
- data/app/views/layouts/hancock/devise/sessions.html.slim +7 -4
- data/app/views/layouts/hancock/devise/unlocks.html.slim +7 -4
- data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
- data/app/views/layouts/rails_admin/_footer_navigation.html.slim +20 -4
- data/app/views/layouts/rails_admin/_navigation.html.slim +13 -47
- data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +5 -12
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +2 -0
- data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +3 -0
- data/app/views/layouts/rails_admin/application.html.haml +3 -1
- data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +24 -0
- data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +20 -0
- data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
- data/app/views/rails_admin/main/_hancock_html_ml.html.slim +31 -34
- data/app/views/rails_admin/main/edit.html.haml +18 -0
- data/app/views/rails_admin/main/new.html.haml +17 -0
- data/app/views/shared/_admin_link.html.slim +4 -3
- data/config/initializers/rails_admin_mongoid_patch.rb +27 -0
- data/config/locales/en.hancock.yml +1 -0
- data/config/locales/ru.devise.yml +22 -18
- data/config/locales/ru.hancock.yml +2 -0
- data/config/locales/ru.rails_admin.yml +3 -0
- data/hancock_cms.gemspec +4 -1
- data/lib/filename_to_slug.rb +0 -20
- data/lib/generators/hancock/cms/ability_generator.rb +1 -0
- data/lib/generators/hancock/cms/admin_generator.rb +1 -0
- data/lib/generators/hancock/cms/application_generator.rb +1 -0
- data/lib/generators/hancock/cms/assets_generator.rb +1 -0
- data/lib/generators/hancock/cms/layout_generator.rb +1 -0
- data/lib/generators/hancock/cms/model_generator.rb +1 -0
- data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
- data/lib/generators/hancock/cms/rack_generator.rb +1 -0
- data/lib/generators/hancock/cms/robots_generator.rb +1 -0
- data/lib/generators/hancock/cms/scripts_generator.rb +1 -0
- data/lib/generators/hancock/cms/setup_generator.rb +149 -32
- data/lib/generators/hancock/cms/templates/Gemfile.erb +1 -4
- data/lib/generators/hancock/cms/templates/ability.erb +1 -1
- data/lib/generators/hancock/cms/templates/admin.erb +12 -4
- data/lib/generators/hancock/cms/templates/robots.txt.erb +5 -1
- data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
- data/lib/generators/hancock/cms/unicorn_god_generator.rb +1 -0
- data/lib/generators/hancock/cms/utils.rb +2 -0
- data/lib/hancock/admin/embedded_element.rb +7 -2
- data/lib/hancock/admin.rb +141 -17
- data/lib/hancock/controller.rb +9 -0
- data/lib/hancock/engine.rb +28 -36
- data/lib/hancock/model.rb +6 -0
- data/lib/hancock/models/embedded_element.rb +2 -0
- data/lib/hancock/models/mongoid/embedded_element.rb +17 -0
- data/lib/hancock/plugin_configuration.rb +1 -1
- data/lib/hancock/rails_admin_ext/config.rb +21 -4
- data/lib/hancock/rails_admin_ext/hancock_array.rb +19 -0
- data/lib/hancock/rails_admin_ext/hancock_enum.rb +10 -0
- data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +34 -0
- data/lib/hancock/rails_admin_ext/hancock_hash.rb +8 -1
- data/lib/hancock/rails_admin_ext/hancock_html.rb +17 -2
- data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +1 -5
- data/lib/hancock/rails_admin_ext/hancock_slugs.rb +0 -4
- data/lib/hancock/rails_admin_ext/patches/field_patch.rb +2 -1
- data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +14 -0
- data/lib/hancock/rails_admin_ext/patches/group_patch.rb +9 -0
- data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +2 -0
- data/lib/hancock/rails_admin_ext/patches/has_fields.rb +27 -0
- data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +25 -0
- data/lib/hancock/rails_admin_settings_patch.rb +195 -11
- data/lib/hancock/version.rb +1 -1
- data/lib/hancock_cms.rb +10 -9
- data/lib/manual_slug/active_record.rb +8 -8
- data/lib/rails_admin/custom_show_in_app.rb +21 -32
- data/template.rb +11 -10
- metadata +74 -5
data/lib/hancock/controller.rb
CHANGED
|
@@ -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
|
data/lib/hancock/engine.rb
CHANGED
|
@@ -1,56 +1,48 @@
|
|
|
1
1
|
module Hancock
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
@@ -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
|
|
@@ -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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
65
|
-
@abstract_model.
|
|
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
|
|
@@ -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
|