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
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rails_admin/main_helper'
|
2
|
+
module RailsAdmin::Main
|
3
|
+
module HancockHelper
|
4
|
+
|
5
|
+
def hancock_rails_admin_form_for(*args, &block)
|
6
|
+
options = args.extract_options!.reverse_merge(builder: RailsAdmin::Hancock::FormBuilder)
|
7
|
+
(options[:html] ||= {})[:novalidate] ||= !RailsAdmin::Config.browser_validations
|
8
|
+
|
9
|
+
form_for(*(args << options), &block) << after_nested_form_callbacks
|
10
|
+
end
|
11
|
+
|
12
|
+
def ordered_nodes_stack(nodes_stack = nil, node_model_names = nil)
|
13
|
+
_controller = (defined?(controller) ? controller : self)
|
14
|
+
nodes_stack ||= RailsAdmin::Config.visible_models(controller: _controller)
|
15
|
+
node_model_names ||= nodes_stack.collect { |c| c.abstract_model.model_name }
|
16
|
+
|
17
|
+
_order_array = _controller._current_user.navigation_labels if _controller._current_user and _controller._current_user.respond_to?(:navigation_labels)
|
18
|
+
_order_array ||= Hancock.config.navigation_labels
|
19
|
+
_order_array = _order_array.clone.reverse
|
20
|
+
|
21
|
+
ret = {}
|
22
|
+
grouped_nodes_stack = nodes_stack.group_by(&:navigation_label)
|
23
|
+
navigation_labels = grouped_nodes_stack.keys
|
24
|
+
navigation_labels.sort! do |label_1, label_2|
|
25
|
+
label_1_index = _order_array.index(label_1) || -1
|
26
|
+
label_2_index = _order_array.index(label_2) || -1
|
27
|
+
label_2_index <=> label_1_index
|
28
|
+
end
|
29
|
+
navigation_labels.each do |label|
|
30
|
+
ret[label] = grouped_nodes_stack[label]
|
31
|
+
end
|
32
|
+
ret
|
33
|
+
end
|
34
|
+
|
35
|
+
def hancock_main_navigation
|
36
|
+
nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
|
37
|
+
node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
|
38
|
+
_ordered_nodes_stack = ordered_nodes_stack(nodes_stack, node_model_names)
|
39
|
+
|
40
|
+
_ordered_nodes_stack.collect do |navigation_label, nodes|
|
41
|
+
nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
|
42
|
+
li_stack = hancock_navigation nodes_stack, nodes
|
43
|
+
|
44
|
+
label = navigation_label || t('admin.misc.navigation')
|
45
|
+
|
46
|
+
%(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
|
47
|
+
end.join.html_safe
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
module Hancock::BooleanField
|
2
2
|
extend ActiveSupport::Concern
|
3
|
-
|
3
|
+
|
4
|
+
class_methods do
|
5
|
+
|
4
6
|
def boolean_field(name, default = true)
|
5
7
|
if default.is_a?(Hash)
|
6
8
|
default = default[:default]
|
7
9
|
end
|
8
|
-
|
10
|
+
|
9
11
|
if Hancock.mongoid?
|
10
12
|
field name, type: Mongoid::Boolean, default: default
|
11
13
|
end
|
@@ -16,6 +18,9 @@ module Hancock::BooleanField
|
|
16
18
|
elsif name == 'enabled'
|
17
19
|
scope :disabled, -> { where(enabled: false) }
|
18
20
|
end
|
21
|
+
|
19
22
|
end
|
23
|
+
|
20
24
|
end
|
25
|
+
|
21
26
|
end
|
@@ -3,15 +3,7 @@ module Hancock::Decorators
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
|
7
|
-
# def image_styles
|
8
|
-
# super
|
9
|
-
# end
|
10
|
-
#
|
11
|
-
# def image_jcrop_options
|
12
|
-
# super
|
13
|
-
# end
|
14
|
-
#
|
6
|
+
|
15
7
|
# ############# rails_admin ##############
|
16
8
|
# def self.rails_admin_add_fields
|
17
9
|
# [] #super
|
@@ -2,7 +2,7 @@ if Hancock.mongoid?
|
|
2
2
|
module Hancock::HashField
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
|
5
|
+
class_methods do
|
6
6
|
def hancock_cms_hash_field(name, opts = {})
|
7
7
|
opts.merge!({type: Hash, default: {}})
|
8
8
|
field "#{name}_hash", opts
|
@@ -14,7 +14,7 @@ if Hancock.mongoid?
|
|
14
14
|
if opts[:localize]
|
15
15
|
meth_str_t = "#{meth_str}_translations".freeze
|
16
16
|
meth_hsh_t = "#{meth_hsh}_translations".freeze
|
17
|
-
class_eval <<-
|
17
|
+
class_eval <<-RUBY
|
18
18
|
def #{meth_str_t}=(val)
|
19
19
|
return self.#{meth_hsh_t} = {} if val.blank?
|
20
20
|
_hash = {}
|
@@ -63,10 +63,10 @@ if Hancock.mongoid?
|
|
63
63
|
end
|
64
64
|
true
|
65
65
|
end
|
66
|
-
|
66
|
+
RUBY
|
67
67
|
|
68
68
|
else
|
69
|
-
class_eval <<-
|
69
|
+
class_eval <<-RUBY
|
70
70
|
def #{meth_str}=(val)
|
71
71
|
return self.#{meth_hsh} = {} if val.blank?
|
72
72
|
if val.is_a?(String)
|
@@ -105,9 +105,10 @@ if Hancock.mongoid?
|
|
105
105
|
true
|
106
106
|
end
|
107
107
|
end
|
108
|
-
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
108
|
+
RUBY
|
109
|
+
end #if opts[:localize]
|
110
|
+
end #def hancock_cms_hash_field(name, opts = {})
|
111
|
+
end # class_methods do
|
112
|
+
|
112
113
|
end
|
113
114
|
end
|
@@ -2,7 +2,7 @@ if Hancock.mongoid?
|
|
2
2
|
module Hancock::HtmlField
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
|
5
|
+
class_methods do
|
6
6
|
def hancock_cms_html_field(name, opts = {})
|
7
7
|
clear_by_default = opts.delete(:clear_by_default)
|
8
8
|
clear_by_default = false unless clear_by_default == true
|
@@ -12,7 +12,9 @@ if Hancock.mongoid?
|
|
12
12
|
field _html_field_name, opts
|
13
13
|
field "#{name}_clear", type: Boolean, default: clear_by_default, localize: opts[:localize]
|
14
14
|
|
15
|
-
|
15
|
+
insertions_for(name) if respond_to?(:insertions_for)
|
16
|
+
|
17
|
+
class_eval <<-RUBY
|
16
18
|
def #{name}
|
17
19
|
self.#{_html_field_name} ||= ""
|
18
20
|
return self.#{_html_field_name} unless self.#{name}_clear
|
@@ -26,8 +28,9 @@ if Hancock.mongoid?
|
|
26
28
|
self.#{_html_field_name} ||= ""
|
27
29
|
Rails::Html::FullSanitizer.new.sanitize(self.#{_html_field_name}.strip)
|
28
30
|
end
|
29
|
-
|
31
|
+
RUBY
|
30
32
|
end
|
31
33
|
end
|
34
|
+
|
32
35
|
end
|
33
36
|
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
module Hancock::InsertionField
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
class_attribute :added_insertions, :removed_insertions, :insertions_fields
|
6
|
+
self.removed_insertions ||= []
|
7
|
+
self.added_insertions ||= []
|
8
|
+
self.insertions_fields ||= {}
|
9
|
+
def possible_insertions
|
10
|
+
self.class.possible_insertions
|
11
|
+
end
|
12
|
+
|
13
|
+
# /(\[\[(\w+?)\]\] | \{\{(self\.(\w+?))\}\} | \{\{(([\w\-\.]+?)\.(\w+?))\}\} | \{\{(\w+?)\}\} | \{\{(BS\|(\w+?))\}\})/
|
14
|
+
#
|
15
|
+
# reg1 = /\[\[(?<new_bs>(?<new_bs_name>\w+?))\]\]/i
|
16
|
+
# reg2 = /\{\{(?<insertion_old>self\.(?<insertion_old_name>\w+?))\}\}/i
|
17
|
+
# reg3 = /\{\{(?<setting_with_ns>(?<setting_with_ns_ns>[\w\-\.]+?)\.(?<setting_with_ns_name>\w+?))\}\}/i
|
18
|
+
# reg4 = /\{\{(?<setting>(?<setting_name>\w+?))\}\}/i
|
19
|
+
# reg5 = /\{\{(?<old_bs>BS\|(?<old_bs_name>\w+?))\}\}/i
|
20
|
+
# reg6 = /\{\{\{\{(?<insertion>(?<insertion_name>\w+?))\}\}\}\}/i
|
21
|
+
private
|
22
|
+
def process_with_insertions(_data)
|
23
|
+
if _data.nil?
|
24
|
+
''
|
25
|
+
else
|
26
|
+
if _data.is_a?(Symbol)
|
27
|
+
if insertions_fields.include?(_data)
|
28
|
+
_data = self.send(_data)
|
29
|
+
else
|
30
|
+
return ''
|
31
|
+
end
|
32
|
+
end
|
33
|
+
# {{self.%insertion%}}
|
34
|
+
_ret = _data.gsub(/\{\{self\.(.*?)\}\}/) do
|
35
|
+
get_insertion($1)
|
36
|
+
# {{"some_text"}} #temporary disabled - need tests
|
37
|
+
# end.gsub(/\{\{(['"])(.*?)(\1)\}\}/) do
|
38
|
+
# $2
|
39
|
+
# {{%ns%.%key%}}
|
40
|
+
end.gsub(/\{\{(([^\.]*?)\.)?(.*?)\}\}/) do
|
41
|
+
(Settings and !$3.nil? and $2 != "self") ? Settings.ns($2).get($3).val : "" #temp
|
42
|
+
end
|
43
|
+
_ret
|
44
|
+
end
|
45
|
+
end
|
46
|
+
def get_insertion(name)
|
47
|
+
begin
|
48
|
+
self.send(name) if possible_insertions.include?(name)
|
49
|
+
rescue
|
50
|
+
""
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class_methods do
|
56
|
+
def insertions_field(name, opts = {type: String, default: ''})
|
57
|
+
field name, opts
|
58
|
+
insertions_for name, opts
|
59
|
+
end
|
60
|
+
def insertions_for(name, opts = {})
|
61
|
+
return if name.blank?
|
62
|
+
name = name.to_sym
|
63
|
+
return if insertions_fields.keys.include?(name)
|
64
|
+
(opts.delete(:add_insertions) || []).each do |_ins|
|
65
|
+
add_insertion _ins
|
66
|
+
end
|
67
|
+
(["page_#{name}", name.to_s] + (opts.delete(:remove_insertions) || [])).uniq.each do |_ins|
|
68
|
+
remove_insertion _ins
|
69
|
+
end
|
70
|
+
_method_name = opts[:as].present? ? opts[:as] : "page_#{name}"
|
71
|
+
insertions_fields[name] = {
|
72
|
+
method: _method_name,
|
73
|
+
options: opts
|
74
|
+
}
|
75
|
+
if _method_name
|
76
|
+
class_eval <<-RUBY
|
77
|
+
def #{_method_name}
|
78
|
+
process_with_insertions(#{name})
|
79
|
+
end
|
80
|
+
RUBY
|
81
|
+
end
|
82
|
+
name
|
83
|
+
end
|
84
|
+
|
85
|
+
def insertion(name, opts = {})
|
86
|
+
name = name.to_s.strip
|
87
|
+
if opts[:remove]
|
88
|
+
self.removed_insertions << name unless self.removed_insertions.include?(name)
|
89
|
+
else
|
90
|
+
self.added_insertions << name unless self.added_insertions.include?(name)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
def add_insertion(name)
|
94
|
+
insertion(name.to_s.strip)
|
95
|
+
end
|
96
|
+
def remove_insertion(name, opts = {})
|
97
|
+
insertion(name.to_s.strip, opts.merge({remove: true}))
|
98
|
+
end
|
99
|
+
|
100
|
+
def default_insertions
|
101
|
+
# self.fields.keys # we was here but inheritance and we need check
|
102
|
+
|
103
|
+
# # version with store in
|
104
|
+
# return @default_insertions unless @default_insertions.nil?
|
105
|
+
# @default_insertions =
|
106
|
+
self.fields.select { |_name, _field|
|
107
|
+
_field.options[:klass] and self <= _field.options[:klass]
|
108
|
+
}.keys
|
109
|
+
end
|
110
|
+
def possible_insertions
|
111
|
+
@possible_insertions ||= (default_insertions + added_insertions).map(&:to_s).uniq - removed_insertions.map(&:to_s)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
if Hancock.mongoid?
|
2
|
+
module Hancock::MasterCollection
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
if Hancock.config.mongoid_single_collection
|
7
|
+
if Hancock.config.mongoid_single_collection == true
|
8
|
+
_collection_name = :hancock_master_collection
|
9
|
+
else
|
10
|
+
_collection_name = Hancock.config.mongoid_single_collection
|
11
|
+
end
|
12
|
+
store_in collection: _collection_name
|
13
|
+
|
14
|
+
field(:_type, default: self.name, type: String)
|
15
|
+
default_scope -> { where(_type: self.name) }
|
16
|
+
|
17
|
+
def self.hereditary?
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.inherited(subclass)
|
22
|
+
subclass.field(:_id, default: -> { BSON::ObjectId.new }, type: BSON::ObjectId, pre_processed: true, overwrite: true)
|
23
|
+
subclass.field(:_type, default: subclass.name, type: String, overwrite: true)
|
24
|
+
subclass.default_scope -> { where(_type: subclass.name) }
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -1,12 +1,14 @@
|
|
1
1
|
module Hancock::ModelLocalizeable
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
|
-
|
4
|
+
class_methods do
|
5
|
+
|
5
6
|
def convert2localize
|
6
7
|
self.all.to_a.map do |p|
|
7
8
|
p.convert2localize
|
8
9
|
end
|
9
10
|
end
|
11
|
+
|
10
12
|
end
|
11
13
|
|
12
14
|
def convert2localize(save_it = true)
|
@@ -30,4 +32,5 @@ module Hancock::ModelLocalizeable
|
|
30
32
|
end
|
31
33
|
self.save if save_it
|
32
34
|
end
|
35
|
+
|
33
36
|
end
|
@@ -5,9 +5,25 @@ module Hancock::RailsAdminPatch
|
|
5
5
|
self.class.rails_admin_model
|
6
6
|
end
|
7
7
|
|
8
|
-
|
8
|
+
def admin_can_actions
|
9
|
+
self.class.admin_can_actions
|
10
|
+
end
|
11
|
+
def admin_cannot_actions
|
12
|
+
self.class.admin_cannot_actions
|
13
|
+
end
|
14
|
+
def manager_can_actions
|
15
|
+
self.class.manager_can_actions
|
16
|
+
end
|
17
|
+
def manager_cannot_actions
|
18
|
+
self.class.manager_cannot_actions
|
19
|
+
end
|
20
|
+
|
21
|
+
class_methods do
|
9
22
|
def rails_admin_model
|
10
|
-
|
23
|
+
name.split('::').collect(&:underscore).join('~')
|
24
|
+
end
|
25
|
+
def rails_admin_param_key
|
26
|
+
name.split('::').collect(&:underscore).join('_')
|
11
27
|
end
|
12
28
|
|
13
29
|
def rails_admin_add_fields
|
@@ -17,6 +33,9 @@ module Hancock::RailsAdminPatch
|
|
17
33
|
def rails_admin_add_config(config)
|
18
34
|
end
|
19
35
|
|
36
|
+
def rails_admin_name_synonyms
|
37
|
+
''.freeze
|
38
|
+
end
|
20
39
|
|
21
40
|
|
22
41
|
def admin_can_default_actions
|
@@ -57,7 +76,7 @@ module Hancock::RailsAdminPatch
|
|
57
76
|
(manager_can_default_actions + manager_can_add_actions + manager_can_user_defined_actions).uniq.freeze
|
58
77
|
end
|
59
78
|
def manager_cannot_default_actions
|
60
|
-
[].freeze
|
79
|
+
[:model_accesses, :user_abilities].freeze
|
61
80
|
end
|
62
81
|
def manager_cannot_add_actions
|
63
82
|
[].freeze
|
@@ -1,12 +1,17 @@
|
|
1
1
|
module Hancock::SortField
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
class_methods do
|
5
|
+
|
6
|
+
def sort_field(prefix = '', opts = {type: Integer, default: 0})
|
7
|
+
if prefix.is_a?(Hash)
|
8
|
+
opts = prefix
|
9
|
+
prefix = opts.delete(:prefix) || ""
|
10
|
+
end
|
6
11
|
prefix = "#{prefix}_" unless prefix == ''
|
7
12
|
|
8
13
|
if Hancock.mongoid?
|
9
|
-
field "#{prefix}order".to_sym,
|
14
|
+
field "#{prefix}order".to_sym, opts
|
10
15
|
alias_method "#{prefix}sort", "#{prefix}order"
|
11
16
|
scope "#{prefix}ordered".to_sym, -> { asc("#{prefix}order".to_sym) }
|
12
17
|
scope "#{prefix}sorted".to_sym, -> { asc("#{prefix}order".to_sym) }
|
@@ -15,6 +20,24 @@ module Hancock::SortField
|
|
15
20
|
scope "#{prefix}ordered".to_sym, -> { order("#{prefix}order".to_sym => :asc) }
|
16
21
|
scope "#{prefix}sorted".to_sym, -> { order("#{prefix}order".to_sym => :asc) }
|
17
22
|
end
|
23
|
+
|
24
|
+
|
25
|
+
class_eval <<-RUBY
|
26
|
+
def set_default_#{prefix}order_value
|
27
|
+
if (_embed_method = self.try(:embed_method_for_parent))
|
28
|
+
begin
|
29
|
+
if (self.#{prefix}order.nil? or self.#{prefix}order == 0) and (_parent = self._parent)
|
30
|
+
self.#{prefix}order = _parent.send(_embed_method).max("#{prefix}order").to_i + 1
|
31
|
+
end
|
32
|
+
rescue
|
33
|
+
end
|
34
|
+
end
|
35
|
+
self.#{prefix}order ||= 0
|
36
|
+
self
|
37
|
+
end
|
38
|
+
RUBY
|
18
39
|
end
|
40
|
+
|
19
41
|
end
|
42
|
+
|
20
43
|
end
|