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,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"