hancock_cms 1.0.1 → 1.0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,198 @@
1
+ body.rails_admin .form-horizontal .tab-content .tab-pane > .remove_nested_fields, body.rails_admin .form-horizontal .tab-content .tab-pane > .remove_nested_one_fields
2
+ opacity: 1
3
+ z-index: 10
4
+ left: 50px
5
+ top: 10px
6
+
7
+ body.rails_admin .form-horizontal.denser
8
+ margin-top: 15px
9
+ fieldset > legend
10
+ margin-bottom: 0px
11
+ legend i
12
+ font-size: 14px
13
+
14
+ body.rails_admin .nav.nav-tabs
15
+ margin-bottom: -1px
16
+ border-bottom: 0px
17
+ padding: 0px 5px
18
+
19
+ body.rails_admin .form-horizontal .tab-content .tab-pane
20
+ fieldset
21
+ margin-left: 50px
22
+ margin-right: 25px
23
+
24
+ .form-horizontal.denser
25
+ fieldset.opened
26
+ min-height: 180px
27
+ padding-bottom: 10px
28
+ fieldset
29
+ .form-group
30
+ margin-left: 25px !important
31
+ margin-top: 15px
32
+ margin-bottom: 15px
33
+ fieldset.default_fieldset
34
+ padding-top: 0px
35
+ border: 0px
36
+
37
+ fieldset
38
+ +border-radius(4px)
39
+ border: 1px solid #e3e3e3
40
+ background: #fff
41
+ margin-bottom: 5px
42
+ padding: 0px
43
+ min-height: 30px
44
+ overflow: visible
45
+ padding-top: 29px
46
+ &:first-child
47
+ margin-top: 5px
48
+ &:last-child
49
+ margin-bottom: 0px
50
+ legend
51
+ height: 30px
52
+ padding: 5px 10px
53
+ font-size: 18px
54
+ line-height: 20px
55
+ top: 0px
56
+ position: absolute
57
+ .form-group
58
+ margin-left: 25px
59
+ margin-right: 0px
60
+ margin-top: 15px
61
+ margin-bottom: 15px
62
+ .input-group
63
+ float: none !important
64
+ input[type=checkbox]
65
+ width: 25px !important
66
+ height: 25px !important
67
+ label
68
+ font-size: 13px
69
+ label.dropdown-toggle
70
+ width: auto
71
+ .help-block
72
+ margin-bottom: 0px
73
+ color: #aaaaaa
74
+ font-size: 12px
75
+ line-height: 12px
76
+ .ra-multiselect .ra-multiselect-column
77
+ float: left
78
+ margin-bottom: 5px
79
+
80
+ fieldset.default.hover
81
+ > .leftside_hider
82
+ opacity: 0
83
+
84
+ fieldset.hover
85
+ > .leftside_hider
86
+ opacity: 1.0
87
+
88
+ fieldset
89
+ +transition(all 0.3s)
90
+ position: relative
91
+ > .leftside_hider
92
+ overflow: hidden
93
+ width: 65px
94
+ position: absolute
95
+ top: 30px
96
+ bottom: 0px
97
+ background: rgba(100,100,100,0.05)
98
+ cursor: pointer
99
+ padding: 10px 0px
100
+ z-index: 9
101
+ opacity: 0
102
+ +transition(background 0.3s, opacity 0.2s)
103
+ &:hover
104
+ background: rgba(100,100,100,0.1)
105
+ &:active
106
+ background: rgba(100,100,100,0.075)
107
+
108
+ .scroll_fieldset_block
109
+ overflow: visible
110
+ position: absolute
111
+ width: 45px
112
+ top: 10px
113
+ margin-left: 10px
114
+ height: 126px
115
+ opacity: 0.75
116
+ cursor: pointer
117
+ z-index: 10
118
+ background: #fff
119
+ border: 1px solid #e3e3e3
120
+ +border-radius(4px)
121
+ +transition(scale 0.3s, opacity 0.3s)
122
+ +transform(scale(0))
123
+ transform-origin: top center
124
+ -webkit-transform-origin: top left
125
+ -o-transform-origin: top left
126
+ -moz-transform-origin: top left
127
+ padding: 5px
128
+ +box-shadow(0px 5px 10px -5px rgba(0, 0, 0, 0.5))
129
+ &:hover
130
+ opacity: 1.0
131
+ > *
132
+ height: 35px
133
+ width: 35px
134
+ +border-radius(4px)
135
+ margin-bottom: 5px
136
+ z-index: 11
137
+ display: flex
138
+ align-items: center
139
+ justify-content: center
140
+ background-color: #e53935
141
+ +transition(all 0.3s)
142
+ color: #fff
143
+ &:hover
144
+ background-color: #c73800
145
+ opacity: 1
146
+ &:active
147
+ background-color: #e53935
148
+ opacity: 1
149
+
150
+ .links-list
151
+ width: auto
152
+ display: inline-flex
153
+ background: #fff
154
+ border: 1px solid #e3e3e3
155
+ +border-radius(4px)
156
+ +box-shadow(0px 5px 10px -5px rgba(0, 0, 0, 0.5))
157
+ padding: 3px
158
+
159
+ .select_fieldset
160
+ +transition(all 0.3s)
161
+ overflow: visible
162
+ a, span
163
+ background-color: #e53935
164
+ display: inline-block
165
+ text-align: center
166
+ width: 50px
167
+ height: 29px
168
+ margin-right: 3px
169
+ overflow: hidden
170
+ white-space: nowrap
171
+ text-overflow: ellipsis
172
+ color: #ffffff
173
+ padding: 0px 3px
174
+ font-size: 10px
175
+ line-height: 29px
176
+ text-decoration: none
177
+ +transition(all 0.3s)
178
+ +border-radius(4px)
179
+ &:hover
180
+ background-color: #c73800
181
+ opacity: 1
182
+ &:last-child
183
+ margin-right: 0px
184
+ span
185
+ background-color: lightblue
186
+ cursor: auto
187
+ color: black
188
+ &:hover
189
+ background-color: lightblue
190
+ opacity: 1
191
+
192
+ fieldset.opened, fieldset.default_fieldset
193
+ .scroll_fieldset_block
194
+ +transform(scale(1))
195
+
196
+ fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active
197
+ background-color: #ef3b36
198
+ border-color: #e53a36
@@ -1,4 +1,4 @@
1
1
  @import hancock/cms/mixins
2
2
 
3
3
  @import hancock/rails_admin/cms.theming
4
- @import hancock/rails_admin/custom/theming
4
+ @import hancock/rails_admin/custom/theming
@@ -2,7 +2,7 @@ module Hancock::Decorators
2
2
  module Home
3
3
  extend ActiveSupport::Concern
4
4
 
5
- # included
5
+ # included do
6
6
  # def index
7
7
  # render layout: Hancock.config.main_index_layout
8
8
  # end
@@ -26,12 +26,10 @@ module Hancock::Errors
26
26
  unless exception.nil?
27
27
  Rails.logger.error exception.message
28
28
  Rails.logger.error exception.backtrace.join("\n")
29
- capture_exception(exception) if defined?(Raven)
29
+ Raven.capture_exception(exception) if defined?(Raven)
30
30
  end
31
31
  Rails.logger.error "__________________________"
32
32
  if !user_signed_in?
33
- #scope = rails_admin? ? main_app : self
34
- #redirect_to scope.new_user_session_path, alert: "Необходимо авторизоваться"
35
33
  authenticate_user!
36
34
  else
37
35
  if rails_admin? and can?(:access, :rails_admin)
@@ -44,7 +42,7 @@ module Hancock::Errors
44
42
  end
45
43
 
46
44
  rescue_from ActionController::InvalidAuthenticityToken do |exception|
47
- redirect_to :back, alert: t('hancock.errors.form_expired')
45
+ redirect_back(fallback_location: root_path, alert: t('hancock.errors.form_expired'))
48
46
  end
49
47
  end
50
48
 
@@ -57,7 +55,7 @@ module Hancock::Errors
57
55
  unless exception.nil?
58
56
  Rails.logger.error exception.message
59
57
  Rails.logger.error exception.backtrace.join("\n")
60
- capture_exception(exception) if defined?(Raven)
58
+ Raven.capture_exception(exception) if defined?(Raven)
61
59
  end
62
60
  Rails.logger.error "__________________________".freeze
63
61
  render_error(404)
@@ -76,7 +74,7 @@ module Hancock::Errors
76
74
  Rails.logger.error "__________________________".freeze
77
75
  begin
78
76
  if rails_admin?
79
- render text: t('hancock.errors.internal_error_full', klass: exception.class.name, message: exception.message), status: 500
77
+ render plain: t('hancock.errors.internal_error_full', klass: exception.class.name, message: exception.message), status: 500
80
78
  return
81
79
  end
82
80
  rescue Exception => e
@@ -1,20 +1,15 @@
1
1
  class Hancock::RegistrationsController < Devise::RegistrationsController
2
2
  prepend_before_action :check_recaptcha, only: [:create]
3
3
 
4
- private
4
+ # private :check_recaptcha
5
5
  def check_recaptcha
6
6
  if Hancock.config.recaptcha_support and (!Rails.env.development? or Hancock.config.captcha_on_development)
7
- if verify_recaptcha
8
- true
9
- else
7
+ unless verify_recaptcha
10
8
  self.resource = resource_class.new sign_up_params
11
9
  self.resource.valid?
12
10
  @recaptcha_error = "Вы робот?".freeze
13
11
  respond_with_navigational(resource) { render :new }
14
12
  end
15
-
16
- else
17
- true
18
13
  end
19
14
  end
20
15
 
@@ -1,21 +1,17 @@
1
1
  class Hancock::SessionsController < Devise::SessionsController
2
2
  prepend_before_action :check_recaptcha, only: [:create]
3
+ prepend_before_action :require_no_authentication, :only => [ :new, :create ]
3
4
 
4
- private
5
+ # private :check_recaptcha
5
6
  def check_recaptcha
6
7
  if Hancock.config.recaptcha_support and (!Rails.env.development? or Hancock.config.captcha_on_development)
7
- if verify_recaptcha
8
- true
9
- else
8
+ unless verify_recaptcha
10
9
  self.resource = resource_class.new sign_in_params
11
10
  resource.errors.add(:email, "Неверный e-mail или пароль".freeze)
12
11
  resource.errors.add(:password, "Неверный e-mail или пароль".freeze)
13
12
  @recaptcha_error = "Вы робот?".freeze
14
13
  respond_with_navigational(resource) { render :new }
15
14
  end
16
-
17
- else
18
- true
19
15
  end
20
16
  end
21
17
 
@@ -15,7 +15,7 @@ module Hancock::PoweredHelper
15
15
  # "hancock-goto-disabled": true
16
16
  # }
17
17
  # }
18
- # ret << link_to("Hancock CMS", "http://hancock.redrocks.pro/", _attrs)
18
+ # ret << link_to("Hancock CMS", "https://hancock.redrocks.pro/", _attrs)
19
19
  # ret.join.html_safe
20
20
  # end
21
21
  # end
@@ -29,12 +29,12 @@ module Hancock::PoweredHelper
29
29
  _attrs = {
30
30
  class: "created_by",
31
31
  target: "_blank",
32
- title: "Hancock Creative studio",
32
+ title: "Redrocks Creative studio",
33
33
  data: {
34
34
  "hancock-goto-disabled": true
35
35
  }
36
36
  }.freeze
37
- ret << link_to("Redrocks studio".freeze, "http://redrocks.pro/".freeze, _attrs)
37
+ ret << link_to("Redrocks studio".freeze, "https://redrocks.pro/".freeze, _attrs)
38
38
  ret.join.html_safe
39
39
  end
40
40
  end
@@ -0,0 +1,44 @@
1
+ module Hancock::SettingsHelper
2
+
3
+ def hancock_settings(key, options = {}, &block)
4
+ if key.is_a?(Hash)
5
+ key, options = key[:key], key
6
+ end
7
+ ns = options.delete(:ns)
8
+ settings_scope = options.delete(:settings_scope) || Settings.ns(ns)
9
+ key ||= options.delete(:key)
10
+ options.delete(:key)
11
+
12
+ cache_keys = options[:cache_keys_str] || options[:cache_keys] || options[:cache_key] || []
13
+ if cache_keys.is_a?(::Array)
14
+ cache_keys = cache_keys.map { |k| k.to_s.strip }.join(" ")
15
+ else
16
+ cache_keys = cache_keys.to_s.strip
17
+ end
18
+ options.delete(:cache_keys)
19
+ options.delete(:cache_key)
20
+
21
+ # options[:loadable] = cache_keys.blank? if options[:loadable].nil? # temporary
22
+ options[:cache_keys_str] = cache_keys
23
+ options[:kind] ||= :html
24
+
25
+ options[:default] = capture(&block) if block
26
+ case (options.delete(:as) || :value).to_sym
27
+ when :value
28
+ ret = settings_scope.__send__(key, options)
29
+ when :object
30
+ ret = settings_scope.getnc(key)
31
+ ret.loadable ||= options[:loadable]
32
+ _old_cache_keys = options[:cache_keys_str].strip.split(" ")
33
+ options[:cache_keys_str] = (_old_cache_keys + ret.cache_keys).uniq
34
+ if (options[:cache_keys_str] - _old_cache_keys).blank?
35
+ ret.cache_keys_str = options[:cache_keys_str]
36
+ end
37
+ ret.save unless ret.changes.blank?
38
+ ret
39
+ else
40
+ ret = settings_scope.__send__(key, options)
41
+ end
42
+ end
43
+
44
+ end
@@ -0,0 +1,19 @@
1
+ require 'rails_admin/application_helper'
2
+ module RailsAdmin::Application
3
+ module HancockHelper
4
+
5
+ def hancock_navigation(nodes_stack, nodes, level = 0)
6
+ nodes.collect do |node|
7
+ model_param = node.abstract_model.to_param
8
+ url = rails_admin.url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
9
+ level_class = " nav-level-#{level}" if level > 0
10
+ nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : ''
11
+ li = content_tag :li, data: {model: model_param, "name-synonyms": node.name_synonyms} do
12
+ link_to nav_icon + capitalize_first_letter(node.label_plural), url, class: "pjax#{level_class}", title: capitalize_first_letter(node.label_plural)
13
+ end
14
+ li + hancock_navigation(nodes_stack, nodes_stack.select { |n| n.parent.to_s == node.abstract_model.model_name }, level + 1)
15
+ end.join.html_safe
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,44 @@
1
+ require 'rails_admin/form_builder'
2
+ module RailsAdmin::Hancock
3
+ class FormBuilder < ::RailsAdmin::FormBuilder
4
+
5
+ def fieldset_for(fieldset, nested_in)
6
+ fields = fieldset.with(
7
+ form: self,
8
+ object: @object,
9
+ view: @template,
10
+ controller: @template.controller,
11
+ ).visible_fields
12
+ return if fields.empty?
13
+
14
+ _defailt_fieldset = fieldset.name == :default
15
+ @template.content_tag :fieldset, class: _defailt_fieldset ? 'default_fieldset' : '' do
16
+ if fieldset.leftside_hider
17
+ leftside_hider = @template.content_tag(:div, class: 'control-group leftside_hider', title: _defailt_fieldset ? "" : "Свернуть блок") do
18
+ @template.content_tag(:div, class: 'scroll_fieldset_block') do
19
+ ret = []
20
+ ret << @template.content_tag(:div, class: 'scroll_fieldset_top', title: "Вверх блока") do
21
+ @template.content_tag(:i, "", class: 'fa fa-arrow-up')
22
+ end
23
+ ret << @template.content_tag(:div, class: 'select_fieldset', title: "Выбрать другой блок") do
24
+ @template.content_tag(:i, "", class: 'fa fa-indent')
25
+ end
26
+ ret << @template.content_tag(:div, class: 'scroll_fieldset_bottom', title: "Вниз блока") do
27
+ @template.content_tag(:i, "", class: 'fa fa-arrow-down')
28
+ end
29
+ ret.join.html_safe
30
+ end
31
+ end
32
+ end
33
+
34
+ contents = []
35
+ contents << @template.content_tag(:legend, %(<i class="icon-chevron-#{(fieldset.active? ? 'down' : 'right')}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
36
+ contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
37
+ contents << leftside_hider if fieldset.leftside_hider and leftside_hider
38
+ contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
39
+ contents.join.html_safe
40
+ end
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,27 @@
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 hancock_main_navigation
13
+ nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
14
+ node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
15
+
16
+ nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes|
17
+ nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
18
+ li_stack = hancock_navigation nodes_stack, nodes
19
+
20
+ label = navigation_label || t('admin.misc.navigation')
21
+
22
+ %(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present?
23
+ end.join.html_safe
24
+ end
25
+
26
+ end
27
+ end
@@ -1,11 +1,13 @@
1
1
  module Hancock::BooleanField
2
2
  extend ActiveSupport::Concern
3
- module ClassMethods
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
@@ -5,4 +5,5 @@ module Hancock::Enableable
5
5
  included do
6
6
  boolean_field(:enabled)
7
7
  end
8
+
8
9
  end
@@ -2,7 +2,7 @@ if Hancock.mongoid?
2
2
  module Hancock::HashField
3
3
  extend ActiveSupport::Concern
4
4
 
5
- module ClassMethods
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 <<-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
- EVAL
66
+ RUBY
67
67
 
68
68
  else
69
- class_eval <<-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
- EVAL
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
- module ClassMethods
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
- class_eval <<-EVAL
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
- EVAL
31
+ RUBY
30
32
  end
31
33
  end
34
+
32
35
  end
33
36
  end