hancock_cms 2.0.0.2 → 2.0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +4 -0
- data/app/assets/images/{devices → hancock/devise}/login-bg.jpg +0 -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 +11 -37
- data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +90 -0
- data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +42 -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/hancock/rails_admin/plugins.coffee.erb +16 -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 +354 -147
- data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +198 -0
- data/app/assets/stylesheets/hancock/rails_admin/plugins.sass.erb +6 -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 +5 -7
- 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 +51 -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/master_collection.rb +31 -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/models/concerns/hancock/user_defined.rb +53 -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 +1 -11
- data/app/views/layouts/hancock/_assets.html.slim +15 -0
- 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 -38
- data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +24 -0
- data/app/views/rails_admin/main/_form_hancock_enum.html.slim +18 -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 -2
- data/config/initializers/nested_set_patch.rb +76 -73
- data/config/initializers/rails_admin_mongoid_patch.rb +27 -0
- data/config/initializers/sprockets_patch.rb +159 -0
- data/config/locales/en.hancock.yml +1 -0
- data/config/locales/ru.devise.yml +22 -18
- data/config/locales/ru.hancock.yml +5 -5
- data/config/locales/ru.rails_admin.yml +3 -0
- data/hancock_cms.gemspec +7 -2
- 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/raven_generator.rb +13 -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 +146 -33
- data/lib/generators/hancock/cms/templates/Gemfile.erb +4 -5
- 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/hancock_cms.erb +6 -3
- data/lib/generators/hancock/cms/templates/model.erb +5 -6
- data/lib/generators/hancock/cms/templates/raven.erb +13 -0
- data/lib/generators/hancock/cms/templates/robots.txt.erb +6 -2
- 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.rb +153 -21
- data/lib/hancock/admin/embedded_element.rb +7 -2
- data/lib/hancock/configuration.rb +49 -4
- data/lib/hancock/controller.rb +1 -1
- data/lib/hancock/engine.rb +32 -36
- data/lib/hancock/model.rb +10 -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 +33 -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 +2 -6
- 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 +219 -0
- data/lib/hancock/version.rb +1 -1
- data/lib/hancock_cms.rb +12 -9
- data/lib/manual_slug/active_record.rb +8 -8
- data/lib/manual_slug/mongoid.rb +6 -1
- data/lib/rails_admin/custom_show_in_app.rb +21 -32
- data/template.rb +19 -20
- metadata +104 -12
- data/app/controllers/concerns/hancock/no_cache.rb +0 -12
- data/app/models/concerns/hancock/cacheable.rb +0 -51
@@ -1,6 +1,36 @@
|
|
1
1
|
module Hancock
|
2
2
|
include Hancock::PluginConfiguration
|
3
3
|
|
4
|
+
def self.configuration(plugin_name = nil)
|
5
|
+
return @configuration ||= config_class.new if config_class if plugin_name.blank?
|
6
|
+
|
7
|
+
@plugins_cache ||= {}
|
8
|
+
_plugin = nil
|
9
|
+
_plugin = plugin_name if Hancock::PLUGINS.include?(plugin_name)
|
10
|
+
if _plugin.nil?
|
11
|
+
plugin_name = plugin_name.to_s.camelize
|
12
|
+
return _plugin.config unless (_plugin = @plugins_cache[plugin_name]).nil?
|
13
|
+
if Object.const_defined?(plugin_name)
|
14
|
+
_plugin_name_const = plugin_name.constantize
|
15
|
+
_plugin = _plugin_name_const if Hancock::PLUGINS.include?(_plugin_name_const) or _plugin_name_const == Hancock
|
16
|
+
end
|
17
|
+
end
|
18
|
+
if _plugin.nil?
|
19
|
+
if Object.const_defined?("Hancock::#{plugin_name}")
|
20
|
+
_plugin_name_const = "Hancock::#{plugin_name}".constantize
|
21
|
+
_plugin = _plugin_name_const if Hancock::PLUGINS.include?(_plugin_name_const)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
if _plugin
|
25
|
+
@plugins_cache[plugin_name] = _plugin
|
26
|
+
return _plugin.config
|
27
|
+
end
|
28
|
+
return nil
|
29
|
+
end
|
30
|
+
def self.config(plugin_name = nil)
|
31
|
+
configuration(plugin_name)
|
32
|
+
end
|
33
|
+
|
4
34
|
def self.config_class
|
5
35
|
Configuration
|
6
36
|
end
|
@@ -16,6 +46,7 @@ module Hancock
|
|
16
46
|
attr_accessor :error_layout
|
17
47
|
|
18
48
|
attr_accessor :localize
|
49
|
+
attr_accessor :raven_support
|
19
50
|
|
20
51
|
attr_accessor :ability_manager_config
|
21
52
|
attr_accessor :ability_admin_config
|
@@ -29,24 +60,38 @@ module Hancock
|
|
29
60
|
|
30
61
|
attr_accessor :history_tracking
|
31
62
|
|
63
|
+
attr_accessor :mongoid_single_collection
|
64
|
+
|
65
|
+
attr_accessor :navigation_labels
|
66
|
+
|
67
|
+
attr_accessor :erb2coffee_assets
|
68
|
+
|
32
69
|
def initialize
|
33
70
|
@main_index_layout = 'application'
|
34
71
|
@error_layout = 'application'
|
35
72
|
|
36
|
-
@localize = false
|
73
|
+
@localize = !!defined?(RailsAdminMongoidLocalizeField) #false
|
74
|
+
@raven_support = !!defined?(Raven)
|
37
75
|
|
38
76
|
@ability_manager_config = []
|
39
77
|
@ability_admin_config = []
|
40
78
|
|
41
|
-
@recaptcha_support = defined?(Recaptcha)
|
42
|
-
@simple_captcha_support = defined?(SimpleCaptcha)
|
79
|
+
@recaptcha_support = !!defined?(Recaptcha)
|
80
|
+
@simple_captcha_support = !!defined?(SimpleCaptcha)
|
43
81
|
|
44
82
|
@admin_enter_captcha = @recaptcha_support or @simple_captcha_support
|
45
83
|
@registration_captcha = @admin_enter_captcha
|
46
84
|
|
47
85
|
@captcha_on_development = false
|
48
86
|
|
49
|
-
@history_tracking =
|
87
|
+
@history_tracking = true
|
88
|
+
|
89
|
+
@mongoid_single_collection = nil
|
90
|
+
|
91
|
+
@navigation_labels = []
|
92
|
+
|
93
|
+
@erb2coffee_assets = ['hancock/rails_admin/plugins.coffee.erb']
|
94
|
+
|
50
95
|
end
|
51
96
|
end
|
52
97
|
end
|
data/lib/hancock/controller.rb
CHANGED
@@ -8,7 +8,7 @@ module Hancock::Controller
|
|
8
8
|
include Hancock::Pages::NavMenu
|
9
9
|
include Hancock::Pages::Blocksetable
|
10
10
|
end
|
11
|
-
protect_from_forgery with: :exception
|
11
|
+
protect_from_forgery prepend: true, with: :exception
|
12
12
|
helper_method :page_title
|
13
13
|
helper_method :hide_ym_ga
|
14
14
|
end
|
data/lib/hancock/engine.rb
CHANGED
@@ -1,52 +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
|
-
initializer "hancock_cms.email_defaults" do
|
10
|
-
# Write default email settings to DB so they can be changed.
|
11
9
|
|
12
|
-
|
10
|
+
initializer "RailsAdminSettingsPatch (CMS)" do
|
11
|
+
::RailsAdminSettings::Setting.send(:include, Hancock::RailsAdminSettingsPatch)
|
12
|
+
end
|
13
|
+
|
14
|
+
|
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
|
+
|
13
28
|
begin
|
14
29
|
if Settings and Settings.table_exists?
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
19
35
|
end
|
20
36
|
rescue
|
21
37
|
end
|
22
|
-
end
|
23
|
-
# initializer 'hancock_cms.paperclip' do
|
24
|
-
# # require 'paperclip/style'
|
25
|
-
# # module ::Paperclip
|
26
|
-
# # class Style
|
27
|
-
# # alias_method :processor_options_without_auto_orient, :processor_options
|
28
|
-
# # def processor_options
|
29
|
-
# # processor_options_without_auto_orient.merge(auto_orient: false)
|
30
|
-
# # end
|
31
|
-
# # end
|
32
|
-
# # end
|
33
|
-
# end
|
34
38
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
# # Settings.default_email_from(default: 'noreply@site.domain')
|
43
|
-
# # Settings.form_email(default: 'admin@site.domain')
|
44
|
-
# # Settings.email_topic(default: 'с сайта')
|
45
|
-
# Settings.logo_image(kind: :image)
|
46
|
-
# end
|
47
|
-
# rescue
|
48
|
-
# end
|
49
|
-
# 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
|
50
46
|
|
51
47
|
end
|
52
48
|
end
|
data/lib/hancock/model.rb
CHANGED
@@ -4,10 +4,20 @@ 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
|
10
16
|
|
17
|
+
if Hancock.config.mongoid_single_collection
|
18
|
+
include Hancock::MasterCollection
|
19
|
+
end
|
20
|
+
|
11
21
|
if Hancock.config.localize
|
12
22
|
include Hancock::ModelLocalizeable
|
13
23
|
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
|
@@ -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
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rails_admin/config/fields/types/enum'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Fields
|
6
|
+
module Types
|
7
|
+
class HancockEnum < RailsAdmin::Config::Fields::Types::Enum
|
8
|
+
# Register field type for the type loader
|
9
|
+
RailsAdmin::Config::Fields::Types.register(self)
|
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
|
+
|
21
|
+
register_instance_option :partial do
|
22
|
+
:form_hancock_enum
|
23
|
+
end
|
24
|
+
|
25
|
+
register_instance_option :help do
|
26
|
+
'Двойной клик перемещает между списками'
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
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
|