hancock_cms 1.0.1 → 1.0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +4 -0
  3. data/app/assets/images/{rails-admin → hancock/rails_admin}/hancock_logo.svg +0 -0
  4. data/app/assets/javascripts/hancock/cms.coffee +1 -1
  5. data/app/assets/javascripts/hancock/rails_admin/cms.ui.coffee +10 -38
  6. data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +90 -0
  7. data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +41 -0
  8. data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +44 -0
  9. data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +106 -0
  10. data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +8 -0
  11. data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +25 -0
  12. data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +108 -0
  13. data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +12 -0
  14. data/app/assets/javascripts/jquery.placeholder.js +3 -2
  15. data/app/assets/javascripts/rails_admin/custom/ui.coffee +1 -0
  16. data/app/assets/stylesheets/hancock/cms/devise.sass +4 -1
  17. data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +364 -147
  18. data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +198 -0
  19. data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
  20. data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
  21. data/app/controllers/concerns/hancock/errors.rb +4 -6
  22. data/app/controllers/hancock/registrations_controller.rb +2 -7
  23. data/app/controllers/hancock/sessions_controller.rb +3 -7
  24. data/app/helpers/hancock/powered_helper.rb +3 -3
  25. data/app/helpers/hancock/settings_helper.rb +44 -0
  26. data/app/helpers/rails_admin/application/hancock_helper.rb +19 -0
  27. data/app/helpers/rails_admin/hancock/form_builder.rb +44 -0
  28. data/app/helpers/rails_admin/main/hancock_helper.rb +27 -0
  29. data/app/models/concerns/hancock/boolean_field.rb +7 -2
  30. data/app/models/concerns/hancock/decorators/embedded_element.rb +1 -9
  31. data/app/models/concerns/hancock/enableable.rb +1 -0
  32. data/app/models/concerns/hancock/hash_field.rb +9 -8
  33. data/app/models/concerns/hancock/html_field.rb +6 -3
  34. data/app/models/concerns/hancock/insertion_field.rb +115 -0
  35. data/app/models/concerns/hancock/mappable.rb +1 -0
  36. data/app/models/concerns/hancock/model_localizeable.rb +4 -1
  37. data/app/models/concerns/hancock/rails_admin_patch.rb +22 -3
  38. data/app/models/concerns/hancock/sort_field.rb +26 -3
  39. data/app/models/concerns/hancock/sortable.rb +3 -0
  40. data/app/views/blocks/_footer.html.slim +1 -1
  41. data/app/views/devise/passwords/edit.html.slim +0 -2
  42. data/app/views/devise/passwords/new.html.slim +0 -2
  43. data/app/views/devise/registrations/edit.html.slim +0 -2
  44. data/app/views/devise/registrations/new.html.slim +0 -2
  45. data/app/views/devise/sessions/new.html.slim +0 -2
  46. data/app/views/hancock/home/index.html.slim +4 -1
  47. data/app/views/layouts/application.html.slim +7 -6
  48. data/app/views/layouts/hancock/devise/confirmations.html.slim +7 -4
  49. data/app/views/layouts/hancock/devise/passwords.html.slim +7 -4
  50. data/app/views/layouts/hancock/devise/registrations.html.slim +7 -4
  51. data/app/views/layouts/hancock/devise/sessions.html.slim +7 -4
  52. data/app/views/layouts/hancock/devise/unlocks.html.slim +7 -4
  53. data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
  54. data/app/views/layouts/rails_admin/_footer_navigation.html.slim +20 -4
  55. data/app/views/layouts/rails_admin/_navigation.html.slim +13 -47
  56. data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +5 -12
  57. data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +2 -0
  58. data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +3 -0
  59. data/app/views/layouts/rails_admin/application.html.haml +3 -1
  60. data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +24 -0
  61. data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +20 -0
  62. data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
  63. data/app/views/rails_admin/main/_hancock_html_ml.html.slim +31 -34
  64. data/app/views/rails_admin/main/edit.html.haml +18 -0
  65. data/app/views/rails_admin/main/new.html.haml +17 -0
  66. data/app/views/shared/_admin_link.html.slim +4 -3
  67. data/config/initializers/rails_admin_mongoid_patch.rb +27 -0
  68. data/config/locales/en.hancock.yml +1 -0
  69. data/config/locales/ru.devise.yml +22 -18
  70. data/config/locales/ru.hancock.yml +2 -0
  71. data/config/locales/ru.rails_admin.yml +3 -0
  72. data/hancock_cms.gemspec +4 -1
  73. data/lib/filename_to_slug.rb +0 -20
  74. data/lib/generators/hancock/cms/ability_generator.rb +1 -0
  75. data/lib/generators/hancock/cms/admin_generator.rb +1 -0
  76. data/lib/generators/hancock/cms/application_generator.rb +1 -0
  77. data/lib/generators/hancock/cms/assets_generator.rb +1 -0
  78. data/lib/generators/hancock/cms/layout_generator.rb +1 -0
  79. data/lib/generators/hancock/cms/model_generator.rb +1 -0
  80. data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
  81. data/lib/generators/hancock/cms/rack_generator.rb +1 -0
  82. data/lib/generators/hancock/cms/robots_generator.rb +1 -0
  83. data/lib/generators/hancock/cms/scripts_generator.rb +1 -0
  84. data/lib/generators/hancock/cms/setup_generator.rb +149 -32
  85. data/lib/generators/hancock/cms/templates/Gemfile.erb +1 -4
  86. data/lib/generators/hancock/cms/templates/ability.erb +1 -1
  87. data/lib/generators/hancock/cms/templates/admin.erb +12 -4
  88. data/lib/generators/hancock/cms/templates/robots.txt.erb +5 -1
  89. data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
  90. data/lib/generators/hancock/cms/unicorn_god_generator.rb +1 -0
  91. data/lib/generators/hancock/cms/utils.rb +2 -0
  92. data/lib/hancock/admin/embedded_element.rb +7 -2
  93. data/lib/hancock/admin.rb +141 -17
  94. data/lib/hancock/controller.rb +9 -0
  95. data/lib/hancock/engine.rb +28 -36
  96. data/lib/hancock/model.rb +6 -0
  97. data/lib/hancock/models/embedded_element.rb +2 -0
  98. data/lib/hancock/models/mongoid/embedded_element.rb +17 -0
  99. data/lib/hancock/plugin_configuration.rb +1 -1
  100. data/lib/hancock/rails_admin_ext/config.rb +21 -4
  101. data/lib/hancock/rails_admin_ext/hancock_array.rb +19 -0
  102. data/lib/hancock/rails_admin_ext/hancock_enum.rb +10 -0
  103. data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +34 -0
  104. data/lib/hancock/rails_admin_ext/hancock_hash.rb +8 -1
  105. data/lib/hancock/rails_admin_ext/hancock_html.rb +17 -2
  106. data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +1 -5
  107. data/lib/hancock/rails_admin_ext/hancock_slugs.rb +0 -4
  108. data/lib/hancock/rails_admin_ext/patches/field_patch.rb +2 -1
  109. data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +14 -0
  110. data/lib/hancock/rails_admin_ext/patches/group_patch.rb +9 -0
  111. data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +2 -0
  112. data/lib/hancock/rails_admin_ext/patches/has_fields.rb +27 -0
  113. data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +25 -0
  114. data/lib/hancock/rails_admin_settings_patch.rb +195 -11
  115. data/lib/hancock/version.rb +1 -1
  116. data/lib/hancock_cms.rb +10 -9
  117. data/lib/manual_slug/active_record.rb +8 -8
  118. data/lib/rails_admin/custom_show_in_app.rb +21 -32
  119. data/template.rb +11 -10
  120. metadata +74 -5
@@ -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
@@ -88,4 +88,5 @@ module Hancock::Mappable
88
88
  map_address
89
89
  end
90
90
  end
91
+
91
92
  end
@@ -1,12 +1,14 @@
1
1
  module Hancock::ModelLocalizeable
2
2
  extend ActiveSupport::Concern
3
3
 
4
- module ClassMethods
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
- module ClassMethods
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
- to_param.gsub("::", "~").underscore
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
- module ClassMethods
5
- def sort_field(prefix = '')
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, type: Integer
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
@@ -4,5 +4,8 @@ module Hancock::Sortable
4
4
 
5
5
  included do
6
6
  sort_field
7
+
8
+ before_create :set_default_order_value
7
9
  end
10
+
8
11
  end
@@ -1 +1 @@
1
- p = Settings.copyright(default: "© Copyright {{year|2016}} | Etc", kind: :html).html_safe
1
+ p = Settings.copyright(default: "© Copyright {{year|2017}} | Etc", kind: :html).html_safe
@@ -1,4 +1,3 @@
1
- / h2 Change your password
2
1
  .devise-box
3
2
  .white-box
4
3
  = simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
@@ -15,7 +14,6 @@
15
14
 
16
15
  .form-group
17
16
  / = f.label :password_confirmation
18
- / br
19
17
  / .form-control = f.password_field :password_confirmation, label: I18n.t("shared.password_confirmation"), autocomplete: "off", placeholder: I18n.t("shared.password_confirmation")
20
18
  = f.input :password_confirmation, as: :password, autocomplete: 'off', title: I18n.t("shared.password_confirmation"), placeholder: I18n.t("shared.password_confirmation"), label: false, wrapper_html: {class: "form-control"}
21
19
 
@@ -1,4 +1,3 @@
1
- / h2 Forgot your password?
2
1
  .devise-box
3
2
  .white-box
4
3
  = simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|
@@ -6,7 +5,6 @@
6
5
  h2.title Забыли пароль?
7
6
  .form-group
8
7
  / = f.label :email
9
- / br/
10
8
  / .form-control = f.email_field :email, autofocus: true, placeholder: I18n.t("shared.email")
11
9
  = f.input :email, as: :email, autocomplete: 'off', title: I18n.t("shared.email"), placeholder: I18n.t("shared.email"), label: false, wrapper_html: {class: "form-control"}
12
10
 
@@ -1,4 +1,3 @@
1
- / h2 Редактирование профиля
2
1
  .devise-box
3
2
  .white-box
4
3
  = simple_form_for(resource, as: resource_name, url: user_registration_path) do |f|
@@ -18,7 +17,6 @@
18
17
 
19
18
  .form-group
20
19
  / = f.label :password_confirmation
21
- / br
22
20
  / .form-control = f.password_field :password_confirmation, label: I18n.t("shared.password_confirmation"), autocomplete: "off", placeholder: I18n.t("shared.password_confirmation")
23
21
  = f.input :password_confirmation, as: :password, autocomplete: 'off', title: I18n.t("shared.password_confirmation"), placeholder: I18n.t("shared.password_confirmation"), label: false, wrapper_html: {class: "form-control"}
24
22
 
@@ -1,4 +1,3 @@
1
- /h2 Регистрация
2
1
  .devise-box
3
2
  .white-box
4
3
  = simple_form_for(resource, as: resource_name, url: user_registration_path) do |f|
@@ -18,7 +17,6 @@
18
17
 
19
18
  .form-group
20
19
  / = f.label :password_confirmation
21
- / br
22
20
  / .form-control = f.password_field :password_confirmation, label: I18n.t("shared.password_confirmation"), autocomplete: "off", placeholder: I18n.t("shared.password_confirmation")
23
21
  = f.input :password_confirmation, as: :password, autocomplete: 'off', title: I18n.t("shared.password_confirmation"), placeholder: I18n.t("shared.password_confirmation"), label: false, wrapper_html: {class: "form-control"}
24
22
 
@@ -1,6 +1,4 @@
1
- / h2= I18n.t("shared.enter_site")
2
1
  .devise-box
3
- / = resource.errors.inspect if resource
4
2
  .white-box
5
3
  = simple_form_for(resource, as: resource_name, url: user_session_path) do |f|
6
4
  / = devise_error_messages!
@@ -1 +1,4 @@
1
- div hancock_cms test app
1
+ div Hancock CMS Application
2
+
3
+ - if defined?(Hancock::Pages) and @seo_page
4
+ = render file: "hancock/pages/pages/show"
@@ -9,18 +9,19 @@ html lang="ru"
9
9
 
10
10
  / - cache 'favicons', skip_digest: true do
11
11
  / = render partial: 'blocks/favicon'
12
-
12
+
13
13
  - async = false #Rails.env.production?
14
- = stylesheet_link_tag "application", media: "all", async: async
15
- = javascript_include_tag "application", async: async
14
+ - defer = true #Rails.env.production?
15
+ = stylesheet_link_tag "application", media: "all", async: async, defer: defer
16
+ = javascript_include_tag "application", async: async, defer: defer
16
17
  /[if lt IE 9]
17
- = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async
18
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async, defer: defer
18
19
  - cache 'layouts/application/custom_head', skip_digest: true do
19
20
  - _cache_key = ['views/layouts/application/custom_head']
20
21
  css:
21
- #{Settings.ns('application_layout').custom_css(default: '', kind: :css, label: "Дополнительный CSS", cache_keys: _cache_key)}
22
+ #{{Settings.ns('application_layout').custom_css(default: '', kind: :css, label: "Дополнительный CSS", cache_keys: _cache_key)}}
22
23
  javascript:
23
- #{Settings.ns('application_layout').custom_js(default: '', kind: :js, label: "Дополнительный JS", cache_keys: _cache_key)}
24
+ #{{Settings.ns('application_layout').custom_js(default: '', kind: :js, label: "Дополнительный JS", cache_keys: _cache_key)}}
24
25
 
25
26
  body{class="application_layout #{controller_name} #{action_name} #{controller_name}_#{action_name}"}
26
27
 
@@ -6,13 +6,16 @@ html lang="ru"
6
6
  title= yield(:title) || page_title
7
7
  = yield :meta
8
8
  = csrf_meta_tags
9
- = render partial: 'blocks/favicon'
9
+
10
+ / - cache 'favicons', skip_digest: true do
11
+ / = render partial: 'blocks/favicon'
10
12
 
11
13
  - async = false #Rails.env.production?
12
- = stylesheet_link_tag "application", media: "all", async: async
13
- = javascript_include_tag "application", async: async
14
+ - defer = false #Rails.env.production?
15
+ = stylesheet_link_tag "application", media: "all", defer: defer
16
+ = javascript_include_tag "application", defer: defer
14
17
  /[if lt IE 9]
15
- = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async
18
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", defer: defer
16
19
 
17
20
  body
18
21
  #preloader
@@ -6,13 +6,16 @@ html lang="ru"
6
6
  title= yield(:title) || page_title
7
7
  = yield :meta
8
8
  = csrf_meta_tags
9
- = render partial: 'blocks/favicon'
9
+
10
+ / - cache 'favicons', skip_digest: true do
11
+ / = render partial: 'blocks/favicon'
10
12
 
11
13
  - async = false #Rails.env.production?
12
- = stylesheet_link_tag "application", media: "all", async: async
13
- = javascript_include_tag "application", async: async
14
+ - defer = false #Rails.env.production?
15
+ = stylesheet_link_tag "application", media: "all", defer: defer
16
+ = javascript_include_tag "application", defer: defer
14
17
  /[if lt IE 9]
15
- = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async
18
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", defer: defer
16
19
 
17
20
  body
18
21
  #preloader
@@ -6,13 +6,16 @@ html lang="ru"
6
6
  title= yield(:title) || page_title
7
7
  = yield :meta
8
8
  = csrf_meta_tags
9
- = render partial: 'blocks/favicon'
9
+
10
+ / - cache 'favicons', skip_digest: true do
11
+ / = render partial: 'blocks/favicon'
10
12
 
11
13
  - async = false #Rails.env.production?
12
- = stylesheet_link_tag "application", media: "all", async: async
13
- = javascript_include_tag "application", async: async
14
+ - defer = false #Rails.env.production?
15
+ = stylesheet_link_tag "application", media: "all", defer: defer
16
+ = javascript_include_tag "application", defer: defer
14
17
  /[if lt IE 9]
15
- = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async
18
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", defer: defer
16
19
 
17
20
  body
18
21
  #preloader
@@ -6,13 +6,16 @@ html lang="ru"
6
6
  title= yield(:title) || page_title
7
7
  = yield :meta
8
8
  = csrf_meta_tags
9
- = render partial: 'blocks/favicon'
9
+
10
+ / - cache 'favicons', skip_digest: true do
11
+ / = render partial: 'blocks/favicon'
10
12
 
11
13
  - async = false #Rails.env.production?
12
- = stylesheet_link_tag "application", media: "all", async: async
13
- = javascript_include_tag "application", async: async
14
+ - defer = false #Rails.env.production?
15
+ = stylesheet_link_tag "application", media: "all", defer: defer
16
+ = javascript_include_tag "application", defer: defer
14
17
  /[if lt IE 9]
15
- = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async
18
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", defer: defer
16
19
 
17
20
  body
18
21
  #preloader
@@ -6,13 +6,16 @@ html lang="ru"
6
6
  title= yield(:title) || page_title
7
7
  = yield :meta
8
8
  = csrf_meta_tags
9
- = render partial: 'blocks/favicon'
9
+
10
+ / - cache 'favicons', skip_digest: true do
11
+ / = render partial: 'blocks/favicon'
10
12
 
11
13
  - async = false #Rails.env.production?
12
- = stylesheet_link_tag "application", media: "all", async: async
13
- = javascript_include_tag "application", async: async
14
+ - defer = false #Rails.env.production?
15
+ = stylesheet_link_tag "application", media: "all", defer: defer
16
+ = javascript_include_tag "application", defer: defer
14
17
  /[if lt IE 9]
15
- = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async
18
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", defer: defer
16
19
 
17
20
  body
18
21
  #preloader
@@ -1,2 +1,2 @@
1
- = "2016 © Hancock By "
2
- = link_to "Redrocks", "http://redrocks.pro", title: "Redrocks", target: "_blank"
1
+ = "2016-#{Time.new.year} © Hancock By "
2
+ = link_to "Redrocks", "https://redrocks.pro", title: "Redrocks", target: "_blank"
@@ -1,20 +1,36 @@
1
1
  ul
2
2
  - actions(:root).each do |action|
3
3
  - next if action.action_name.to_s == "dashboard"
4
- - data_method = nil if action.http_methods.include?(:get)
5
4
  - data_method = "post" if action.http_methods.include?(:post)
6
5
  - data_method = "put" if action.http_methods.include?(:put)
7
6
  - data_method = "delete" if action.http_methods.include?(:delete)
7
+ - data_method = nil if action.http_methods.include?(:get)
8
8
 
9
9
  li{class="#{action.action_name} footer-nav-link"}
10
- = link_to wording_for(:menu, action), {action: action.action_name, controller: 'rails_admin/main'}, class: (action.pjax? ? "pjax" : ""), title: wording_for(:menu, action), data: data_method ? {method: data_method, confirm: t("admin.actions.#{action.action_name}.confirm")} : nil
10
+ / = link_to wording_for(:menu, action), {action: action.action_name, controller: 'rails_admin/main'}, class: (action.pjax? ? "pjax" : ""), title: wording_for(:menu, action), data: data_method ? {method: data_method, confirm: t("admin.actions.#{action.action_name}.confirm")} : nil
11
+ ruby:
12
+ opts = {}
13
+ opts[:action] = action.action_name
14
+ opts[:controller] = 'rails_admin/main'
15
+ html_opts = {}
16
+ html_opts[:class] = (action.pjax? ? "pjax" : "")
17
+ html_opts[:title] = wording_for(:menu, action)
18
+ html_opts[:data] = {
19
+ method: data_method,
20
+ confirm: (data_method ? t("admin.actions.#{action.action_name}.confirm") : nil)
21
+ }.compact
22
+
23
+ = link_to opts, html_opts
24
+ span
25
+ = content_tag :i, '', class: action.link_icon
26
+ / = link_to wording_for(:menu, action), opts, html_opts
11
27
 
12
28
  - if main_app_root_path = (main_app.root_path rescue false)
13
29
  li.footer-nav-link = link_to main_app_root_path, title: "На сайт".freeze
14
30
  span
15
31
  i.fa.fa-home
16
32
 
17
- - if logout_path.present?
18
- li.footer-nav-link = link_to logout_path, title: "Выйти".freeze, method: logout_method
33
+ - if signed_in? and logout_path.present?
34
+ li.footer-nav-link = link_to logout_path, title: "Выйти".freeze, method: logout_method, confirm: t("admin.logout.confirm")
19
35
  span
20
36
  i.fa.fa-power-off
@@ -1,19 +1,6 @@
1
- /.logo-block
2
- / = link_to dashboard_path, title: "Hancock CMS".freeze, class: "admin-title".freeze
3
- / = image_tag "rails-admin/hancock_logo.svg", title: "Hancock CMS".freeze, alt: "Hancock CMS".freeze, class: "hancock-main-logo"
4
- /
5
- /.top-nav
6
- / .left-nav
7
- / .top-nav-project = link_to dashboard_path, title: "Административная панель".freeze
8
- / - plugin_name = _get_plugin_name[0] || 'Rails'
9
- / span = "Административная панель: #{plugin_name}".freeze
10
- / .right-nav
11
- / = render partial: "layouts/rails_admin/secondary_navigation"
12
-
13
-
14
1
  .navbar-header-brand
15
2
  = link_to dashboard_path, title: "Hancock CMS".freeze, class: "admin-title".freeze
16
- = image_tag "rails-admin/hancock_logo.svg", title: "Hancock CMS".freeze, alt: "Hancock CMS".freeze, class: "hancock-main-logo"
3
+ = image_tag "hancock/rails_admin/hancock_logo.svg", title: "Hancock CMS".freeze, alt: "Hancock CMS".freeze, class: "hancock-main-logo"
17
4
 
18
5
  .navbar-container.container-fluid
19
6
  .plugin-name-panel
@@ -37,37 +24,16 @@
37
24
  li.user-logout-action
38
25
  = link_to logout_path, title: "Выйти".freeze, method: logout_method
39
26
  span Выйти
40
-
41
- /.user_root_link = edit_user_link
42
-
43
-
44
- /.app-header.fixed
45
- / .app-header-inner
46
- / .brand-title
47
- / h2 = link_to dashboard_path, title: "Hancock CMS".freeze, class: "admin-title".freeze
48
- / span = image_tag "rails-admin/hancock_logo.svg", title: "Hancock CMS".freeze, alt: "Hancock CMS".freeze
49
- /
50
- / .top-nav-left
51
- / .top-nav-project = link_to dashboard_path, title: "Административная панель".freeze
52
- / - plugin_name = _get_plugin_name[0] || 'Rails'
53
- / span = "Административная панель: #{plugin_name}".freeze
54
- / /
55
- / .top-nav-right
56
- / = render partial: "layouts/rails_admin/secondary_navigation"
57
- / ul.nav.navbar-nav.root_links
58
- / - actions(:root).each do |action|
59
- / / li.top-nav-control-panel = link_to "", { action: action.action_name, controller: 'rails_admin/main' }, class: action.pjax? ? "pjax" : ""
60
- / li.top-nav-control-panel = link_to "/admin", title: "Контрольная панель"
27
+
28
+ / - if main_app_root_path = (main_app.root_path rescue false)
29
+ / li.top-nav-goto-home = link_to main_app_root_path, title: "На главную".freeze
61
30
  / span
62
- / i.fa.fa-server
63
- - if main_app_root_path = (main_app.root_path rescue false)
64
- li.top-nav-goto-home = link_to main_app_root_path, title: "На главную".freeze
65
- span
66
- i.fa.fa-home
67
- - if _current_user
68
- - if user_link = edit_user_link
69
- li.top-nav-user_root_link = edit_user_link
70
- - if logout_path.present?
71
- li.top-nav-logout = link_to logout_path, title: "Выйти".freeze, method: logout_method
72
- span
73
- i.fa.fa-sign-out
31
+ / i.fa.fa-home
32
+ /
33
+ / - if _current_user
34
+ / - if user_link = edit_user_link
35
+ / li.top-nav-user_root_link = edit_user_link
36
+ / - if logout_path.present?
37
+ / li.top-nav-logout = link_to logout_path, title: "Выйти".freeze, method: logout_method
38
+ / span
39
+ / i.fa.fa-sign-out
@@ -1,13 +1,16 @@
1
1
  ul.nav.navbar-nav.root_links
2
2
  - actions(:root).each do |action|
3
3
  - next if action.action_name.to_s == "dashboard"
4
- - data_method = nil if action.http_methods.include?(:get)
5
4
  - data_method = "post" if action.http_methods.include?(:post)
6
5
  - data_method = "put" if action.http_methods.include?(:put)
7
6
  - data_method = "delete" if action.http_methods.include?(:delete)
7
+ - data_method = nil if action.http_methods.include?(:get)
8
8
 
9
9
  li{class="#{action.action_name}_root_link top-nav-control-panel"}
10
- = link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, class: (action.pjax? ? "pjax" : ""), data: data_method ? {method: data_method, confirm: t("admin.actions.#{action.action_name}.confirm")} : nil
10
+ / = link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, class: (action.pjax? ? "pjax" : ""), data: data_method ? {method: data_method, confirm: t("admin.actions.#{action.action_name}.confirm")} : nil
11
+ = link_to { action: action.action_name, controller: 'rails_admin/main' }, class: (action.pjax? ? "pjax" : ""), data: data_method ? {method: data_method, confirm: t("admin.actions.#{action.action_name}.confirm")} : nil
12
+ span
13
+ = content_tag :i, '', class: action.link_icon
11
14
 
12
15
 
13
16
  - if main_app_root_path = (main_app.root_path rescue false)
@@ -20,13 +23,3 @@ ul.nav.navbar-nav.root_links
20
23
  li.top-nav-logout = link_to logout_path, title: "Выйти".freeze, method: logout_method
21
24
  span
22
25
  i.fa.fa-sign-out
23
-
24
- / - if main_app_root_path = (main_app.root_path rescue false)
25
- / li= link_to t('admin.home.name').capitalize, main_app_root_path
26
- / - if _current_user
27
- / - if user_link = edit_user_link
28
- / li= user_link
29
- / - if logout_path.present?
30
- / li= link_to content_tag('span', t('admin.misc.log_out'), class: 'label label-important'), logout_path, method: logout_method
31
- / - if _current_user.respond_to?(:email) && _current_user.email.present?
32
- / li= image_tag "#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", style: 'padding-top:5px'
@@ -0,0 +1,2 @@
1
+ ul.nav.nav-pills.nav-stacked= hancock_main_navigation
2
+ ul.nav.nav-pills.nav-stacked= static_navigation
@@ -0,0 +1,3 @@
1
+ = text_field_tag 'navigation_filter', '', placeholder: 'Filter...', class: 'navigation_filter_field', autofocus: (action_name=="dashboard")
2
+ span.clear_navigation_filter_field
3
+ i.fa.fa-close
@@ -18,7 +18,9 @@
18
18
  = render "layouts/rails_admin/navigation"
19
19
 
20
20
  .admin-menubar.admin-menubar-fixed.admin-menubar-dark
21
- .toolbar
21
+ .navigation-filter
22
+ = render "layouts/rails_admin/sidebar_navigation_filter"
23
+ .toolbar.custom_scroll
22
24
  = render "layouts/rails_admin/sidebar_navigation"
23
25
  .admin-menubar-footer
24
26
  = render "layouts/rails_admin/footer_navigation"