hancock_cms_pages 1.0.0 → 1.0.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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/hancock/pages/blocksetable.rb +48 -14
  3. data/app/controllers/concerns/hancock/pages/localizeable.rb +5 -5
  4. data/app/controllers/concerns/hancock/pages/nav_menu.rb +10 -5
  5. data/app/controllers/concerns/hancock/pages/seo_pages.rb +3 -3
  6. data/app/helpers/hancock/pages/blocksets_helper.rb +26 -0
  7. data/app/helpers/hancock/pages/pages_helper.rb +11 -0
  8. data/app/models/concerns/hancock/pages/connectable.rb +1 -1
  9. data/app/views/blocks/_cached_blockset_navigation.html.slim +26 -0
  10. data/app/views/blocks/_cached_navigation.html.slim +26 -0
  11. data/app/views/blocks/_header.html.slim +9 -1
  12. data/app/views/hancock/pages/pages/show.html.slim +14 -1
  13. data/app/views/shared/_obj.html.slim +21 -25
  14. data/config/locales/hancock.pages.ru.yml +5 -0
  15. data/hancock_cms_pages.gemspec +3 -3
  16. data/lib/generators/hancock/pages/config/{install_generator.rb → config_generator.rb} +0 -0
  17. data/lib/generators/hancock/pages/config/templates/hancock_pages.erb +19 -6
  18. data/lib/generators/hancock/pages/controllers/decorators_generator.rb +24 -0
  19. data/lib/generators/hancock/pages/{migration_generator.rb → migrations/migrations_generator.rb} +3 -3
  20. data/lib/generators/hancock/pages/{templates → migrations/templates}/migration_blocks.rb +0 -0
  21. data/lib/generators/hancock/pages/{templates → migrations/templates}/migration_pages.rb +0 -0
  22. data/lib/generators/hancock/pages/models/templates/block.erb +5 -5
  23. data/lib/generators/hancock/pages/models/templates/blockset.erb +5 -5
  24. data/lib/generators/hancock/pages/models/templates/menu.erb +5 -5
  25. data/lib/generators/hancock/pages/models/templates/page.erb +7 -7
  26. data/lib/hancock/pages/admin.rb +35 -8
  27. data/lib/hancock/pages/admin/block.rb +14 -1
  28. data/lib/hancock/pages/admin/blockset.rb +34 -11
  29. data/lib/hancock/pages/admin/menu.rb +3 -1
  30. data/lib/hancock/pages/admin/page.rb +35 -5
  31. data/lib/hancock/pages/configuration.rb +28 -5
  32. data/lib/hancock/pages/controllers/pages.rb +10 -1
  33. data/lib/hancock/pages/engine.rb +59 -0
  34. data/lib/hancock/pages/models/active_record/blockset.rb +2 -1
  35. data/lib/hancock/pages/models/block.rb +234 -55
  36. data/lib/hancock/pages/models/blockset.rb +50 -38
  37. data/lib/hancock/pages/models/menu.rb +24 -15
  38. data/lib/hancock/pages/models/mongoid/block.rb +13 -0
  39. data/lib/hancock/pages/models/mongoid/blockset.rb +3 -0
  40. data/lib/hancock/pages/models/mongoid/menu.rb +4 -1
  41. data/lib/hancock/pages/models/mongoid/page.rb +19 -6
  42. data/lib/hancock/pages/models/page.rb +196 -90
  43. data/lib/hancock/pages/rails_admin_ext/hancock_connectable.rb +2 -0
  44. data/lib/hancock/pages/rails_admin_ext/menu.rb +11 -7
  45. data/lib/hancock/pages/version.rb +1 -1
  46. data/lib/hancock/pages/views_whitelist.rb +103 -0
  47. data/lib/hancock_cms_pages.rb +4 -6
  48. data/release.sh +1 -1
  49. metadata +19 -14
  50. data/app/helpers/hancock/pages/pages_helpers.rb +0 -2
@@ -2,13 +2,26 @@ Hancock::Pages.configure do |config|
2
2
  ##### defaults #####
3
3
  # config.menu_max_depth = 2
4
4
  #
5
- # config.seo_support = defined? Hancock::Seo
5
+ # config.seo_support = !!defined? Hancock::Seo
6
+ # config.cache_support = !!defined?(Hancock::Cache)
7
+ # config.insertions_support = true
6
8
  #
7
- # config.localize = Hancock.config.localize
9
+ # config.localize = Hancock.config.localize
8
10
  #
9
- # config.breadcrumbs_on_rails_support = defined?(BreadcrumbsOnRails)
11
+ # config.breadcrumbs_on_rails_support = !!defined?(BreadcrumbsOnRails)
10
12
  #
11
- # config.model_settings_support = defined?(RailsAdminModelSettings)
12
- # config.user_abilities_support = defined?(RailsAdminUserAbilities)
13
- # config.ra_comments_support = defined?(RailsAdminComments)
13
+ # config.model_settings_support = !!defined?(RailsAdminModelSettings)
14
+ # config.user_abilities_support = !!defined?(RailsAdminUserAbilities)
15
+ # config.ra_comments_support = !!defined?(RailsAdminComments)
16
+ #
17
+ # config.renderer_lib_extends = [
18
+ # # ::ActionController::Base,
19
+ # ::ActionView::Helpers::TagHelper,
20
+ # ::ActionView::Context
21
+ # ]
22
+ #
23
+ # config.verbose_render = Rails.env.development? or Rails.env.test?
24
+ # config.raven_support = !!(Hancock.config.respond_to?(:raven_support) ? Hancock.config.raven_support : defined?(Raven))
25
+ #
26
+ # config.available_layouts = ["application"]
14
27
  end
@@ -0,0 +1,24 @@
1
+ require 'rails/generators'
2
+
3
+ module Hancock::Pages::Controllers
4
+ class DecoratorsGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../../../../../../app/controllers/concerns/hancock/pages/decorators', __FILE__)
6
+ argument :controllers, type: :array, default: []
7
+
8
+ desc 'Hancock::Pages Controllers generator'
9
+ def decorators
10
+ copied = false
11
+ (controllers == ['all'] ? permitted_controllers : controllers & permitted_controllers).each do |c|
12
+ copied = true
13
+ copy_file "#{c}.rb", "app/controllers/concerns/hancock/pages/decorators/#{c}.rb"
14
+ end
15
+ puts "U need to set controllers`s name. One of this: #{permitted_controllers.join(", ")}." unless copied
16
+ end
17
+
18
+ private
19
+ def permitted_controllers
20
+ ['pages']
21
+ end
22
+
23
+ end
24
+ end
@@ -2,12 +2,12 @@ require 'rails/generators'
2
2
  require 'rails/generators/active_record'
3
3
 
4
4
  module Hancock::Pages
5
- class MigrationGenerator < Rails::Generators::Base
5
+ class MigrationsGenerator < Rails::Generators::Base
6
6
  include ActiveRecord::Generators::Migration
7
7
  source_root File.expand_path('../templates', __FILE__)
8
8
 
9
- desc 'Hancock Pages migration generator'
10
- def install
9
+ desc 'Hancock Pages migrations generator'
10
+ def migrations
11
11
  if Hancock.active_record?
12
12
  %w(pages blocks).each do |table_name|
13
13
  migration_template "migration_#{table_name}.rb", "db/migrate/hancock_create_#{table_name}.rb"
@@ -15,19 +15,19 @@ class <%= camelcased_class_name %> < Hancock::Pages::Block
15
15
  #super(config)
16
16
  end
17
17
 
18
- def admin_can_user_defined_actions
18
+ def self.admin_can_user_defined_actions
19
19
  [].freeze
20
20
  end
21
- def admin_cannot_user_defined_actions
21
+ def self.admin_cannot_user_defined_actions
22
22
  [].freeze
23
23
  end
24
- def manager_can_user_defined_actions
24
+ def self.manager_can_user_defined_actions
25
25
  [].freeze
26
26
  end
27
- def manager_cannot_user_defined_actions
27
+ def self.manager_cannot_user_defined_actions
28
28
  [].freeze
29
29
  end
30
- def rails_admin_user_defined_visible_actions
30
+ def self.rails_admin_user_defined_visible_actions
31
31
  [].freeze
32
32
  end
33
33
 
@@ -12,19 +12,19 @@ class <%= camelcased_class_name %> < Hancock::Pages::Blockset
12
12
  #super(config)
13
13
  end
14
14
 
15
- def admin_can_user_defined_actions
15
+ def self.admin_can_user_defined_actions
16
16
  [].freeze
17
17
  end
18
- def admin_cannot_user_defined_actions
18
+ def self.admin_cannot_user_defined_actions
19
19
  [].freeze
20
20
  end
21
- def manager_can_user_defined_actions
21
+ def self.manager_can_user_defined_actions
22
22
  [].freeze
23
23
  end
24
- def manager_cannot_user_defined_actions
24
+ def self.manager_cannot_user_defined_actions
25
25
  [].freeze
26
26
  end
27
- def rails_admin_user_defined_visible_actions
27
+ def self.rails_admin_user_defined_visible_actions
28
28
  [].freeze
29
29
  end
30
30
 
@@ -15,19 +15,19 @@ class <%= camelcased_class_name %> < Hancock::Pages::Menu
15
15
  #super(config)
16
16
  end
17
17
 
18
- def admin_can_user_defined_actions
18
+ def self.admin_can_user_defined_actions
19
19
  [].freeze
20
20
  end
21
- def admin_cannot_user_defined_actions
21
+ def self.admin_cannot_user_defined_actions
22
22
  [].freeze
23
23
  end
24
- def manager_can_user_defined_actions
24
+ def self.manager_can_user_defined_actions
25
25
  [].freeze
26
26
  end
27
- def manager_cannot_user_defined_actions
27
+ def self.manager_cannot_user_defined_actions
28
28
  [].freeze
29
29
  end
30
- def rails_admin_user_defined_visible_actions
30
+ def self.rails_admin_user_defined_visible_actions
31
31
  [].freeze
32
32
  end
33
33
 
@@ -3,9 +3,9 @@ class <%= camelcased_class_name %> < Hancock::Pages::Page
3
3
  # has_and_belongs_to_many :menus, inverse_of: :pages, class_name: "Hancock::Pages::Menu"
4
4
 
5
5
  # if Hancock.rails4?
6
- # belongs_to :connectable, polymorphic: true, overwrite: true
6
+ # belongs_to :hancock_connectable, polymorphic: true, overwrite: true
7
7
  # else
8
- # belongs_to :connectable, polymorphic: true, overwrite: true, optional: true
8
+ # belongs_to :hancock_connectable, polymorphic: true, overwrite: true, optional: true
9
9
  # end
10
10
 
11
11
  # def nav_options_additions
@@ -21,19 +21,19 @@ class <%= camelcased_class_name %> < Hancock::Pages::Page
21
21
  #super(config)
22
22
  end
23
23
 
24
- def admin_can_user_defined_actions
24
+ def self.admin_can_user_defined_actions
25
25
  [].freeze
26
26
  end
27
- def admin_cannot_user_defined_actions
27
+ def self.admin_cannot_user_defined_actions
28
28
  [].freeze
29
29
  end
30
- def manager_can_user_defined_actions
30
+ def self.manager_can_user_defined_actions
31
31
  [].freeze
32
32
  end
33
- def manager_cannot_user_defined_actions
33
+ def self.manager_cannot_user_defined_actions
34
34
  [].freeze
35
35
  end
36
- def rails_admin_user_defined_visible_actions
36
+ def self.rails_admin_user_defined_visible_actions
37
37
  [].freeze
38
38
  end
39
39
 
@@ -1,21 +1,34 @@
1
1
  module Hancock::Pages
2
2
  module Admin
3
3
 
4
- def self.menu_block(is_active = false)
4
+ def self.menu_block(is_active = false, options = {})
5
+ if is_active.is_a?(Hash)
6
+ is_active, options = (is_active[:active] || false), is_active
7
+ end
8
+
5
9
  Proc.new {
6
10
  active false
7
- label I18n.t('hancock.menu_title')
8
- field :menus
11
+ label options[:label] || I18n.t('hancock.menu_title')
12
+ field :menus, :hancock_multiselect do
13
+ searchable :name, :text_slug
14
+ end
9
15
  field :fullpath, :string do
10
16
  help I18n.t('hancock.with_final_slash')
17
+ searchable true
11
18
  end
12
19
  field :regexp, :string do
13
20
  help I18n.t('hancock.page_url_regex')
21
+ searchable true
14
22
  end
15
23
  field :redirect, :string do
16
24
  help I18n.t('hancock.final_in_menu')
25
+ searchable true
26
+ end
27
+ field :text_slug do
28
+ searchable true
17
29
  end
18
- field :text_slug
30
+
31
+ Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields] || {})
19
32
 
20
33
  if block_given?
21
34
  yield self
@@ -23,19 +36,33 @@ module Hancock::Pages
23
36
  }
24
37
  end
25
38
 
26
- def self.wrapper_block(is_active = false)
39
+ def self.wrapper_block(is_active = false, options = {})
40
+ if is_active.is_a?(Hash)
41
+ is_active, options = (is_active[:active] || false), is_active
42
+ end
43
+
27
44
  Proc.new {
28
45
  active is_active
46
+ options[:label] and label(options[:label])
29
47
  field :use_wrapper, :toggle
30
- field :wrapper_tag, :string
31
- field :wrapper_class, :string
32
- field :wrapper_id, :string
48
+ field :wrapper_tag, :string do
49
+ searchable true
50
+ end
51
+ field :wrapper_class, :string do
52
+ searchable true
53
+ end
54
+ field :wrapper_id, :string do
55
+ searchable true
56
+ end
33
57
  field :wrapper_attributes, :text do
58
+ searchable true
34
59
  formatted_value do
35
60
  bindings[:object] and bindings[:object].wrapper_attributes ? bindings[:object].wrapper_attributes.to_json : "{}"
36
61
  end
37
62
  end
38
63
 
64
+ Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields] || {})
65
+
39
66
  if block_given?
40
67
  yield self
41
68
  end
@@ -7,8 +7,10 @@ module Hancock::Pages
7
7
  elsif nav_label.is_a?(Array)
8
8
  nav_label, fields = nil, nav_label
9
9
  end
10
+
10
11
  Proc.new {
11
12
  navigation_label(!nav_label.blank? ? nav_label : I18n.t('hancock.pages'))
13
+ object_label_method :rails_admin_label
12
14
 
13
15
  field :enabled, :toggle do
14
16
  searchable false
@@ -32,7 +34,14 @@ module Hancock::Pages
32
34
  searchable true
33
35
  end
34
36
 
35
- field :file_path, :string do
37
+ # field :file_path, :string do
38
+ # searchable true
39
+ # end
40
+ field :file_path, :enum do
41
+ enum do
42
+ Hancock::Pages.whitelist_enum || []
43
+ end
44
+ multiple false
36
45
  searchable true
37
46
  end
38
47
  field :content, :hancock_html do
@@ -56,6 +65,10 @@ module Hancock::Pages
56
65
  # field :content_html, :ck_editor
57
66
  # field :content_clear, :toggle
58
67
 
68
+ if Hancock::Pages.config.insertions_support
69
+ group :insertions, &Hancock::Admin.insertions_block
70
+ end
71
+
59
72
  Hancock::RailsAdminGroupPatch::hancock_cms_group(self, fields)
60
73
 
61
74
  # field :blocksets do
@@ -20,7 +20,37 @@ module Hancock::Pages
20
20
  searchable true
21
21
  end
22
22
 
23
- group :wrapper, &Hancock::Pages::Admin.wrapper_block
23
+ group :blocks do
24
+ weight 10
25
+ active false
26
+ field :blocks do
27
+ eager_load(false) rescue nil
28
+ queryable true
29
+ searchable do
30
+ [
31
+ {blocks: :_id},
32
+ {blocks: :name},
33
+ {blocks: :menu_link_content},
34
+ {blocks: :pageblock_selector},
35
+ {blocks: :file_path},
36
+ {blocks: :content_html}
37
+ ]
38
+ end
39
+ # searchable_columns do
40
+ # [
41
+ # { column: "#{abstract_model.table_name}.blocks.name", type: :string },
42
+ # { column: "#{abstract_model.table_name}.blocks.menu_link_content", type: :string },
43
+ # { column: "#{abstract_model.table_name}.blocks.pageblock_selector", type: :string },
44
+ # { column: "#{abstract_model.table_name}.blocks.file_path", type: :string },
45
+ # { column: "#{abstract_model.table_name}.blocks.content_html", type: :string }
46
+ # ]
47
+ # end
48
+ end
49
+ end
50
+
51
+ group(:wrapper, &Hancock::Pages::Admin.wrapper_block do
52
+ weight 5
53
+ end)
24
54
  # group :wrapper do
25
55
  # active false
26
56
  # field :use_wrapper, :toggle
@@ -34,13 +64,6 @@ module Hancock::Pages
34
64
  # end
35
65
  # end
36
66
 
37
- group :blocks do
38
- active false
39
- field :blocks do
40
- searchable :name
41
- end
42
- end
43
-
44
67
  Hancock::RailsAdminGroupPatch::hancock_cms_group(self, fields)
45
68
 
46
69
  # field :blocks do
@@ -57,9 +80,9 @@ module Hancock::Pages
57
80
  # end
58
81
 
59
82
  sort_embedded(
60
- {
61
- fields: [:blocks]
62
- }
83
+ {
84
+ fields: [:blocks]
85
+ }
63
86
  )
64
87
 
65
88
  if block_given?
@@ -34,7 +34,9 @@ module Hancock::Pages
34
34
  formatted_value {}
35
35
  end
36
36
 
37
- group :caching, &Hancock::Admin.caching_block
37
+ if Hancock::Pages.config.cache_support
38
+ group :caching, &Hancock::Cache::Admin.caching_block
39
+ end
38
40
 
39
41
  Hancock::RailsAdminGroupPatch::hancock_cms_group(self, fields)
40
42
 
@@ -22,7 +22,7 @@ module Hancock::Pages
22
22
  field :name do
23
23
  searchable true
24
24
  end
25
- field :connectable do
25
+ field :hancock_connectable do
26
26
  searchable :name
27
27
  end
28
28
  field :fullpath do
@@ -36,17 +36,33 @@ module Hancock::Pages
36
36
  end
37
37
  field :slug do
38
38
  searchable true
39
+ searchable_columns do
40
+ [{column: "#{abstract_model.table_name}._slugs", type: :string}]
41
+ end
42
+ queryable true
43
+ end
44
+
45
+ # group :content, &Hancock::Admin.content_block(excluded_fields: [:excerpt])
46
+ group :content, &Hancock::Admin.content_block(excerpt: false)
47
+ if Hancock::Pages.config.cache_support
48
+ group :caching, &Hancock::Cache::Admin.caching_block
39
49
  end
40
50
  end
41
51
 
42
52
  edit do
43
53
  field :enabled, :toggle
44
54
  field :name
45
- field :connectable do
55
+ field :layout_name, :enum do
56
+ enum do
57
+ ::Hancock::Pages.config.available_layouts
58
+ end
59
+ end
60
+ field :hancock_connectable do
46
61
  read_only true
47
62
  end
48
63
 
49
- group :content, &Hancock::Admin.content_block(excluded_fields: [:excerpt])
64
+ # group :content, &Hancock::Admin.content_block(excluded_fields: [:excerpt])
65
+ group :content, &Hancock::Admin.content_block(excerpt: false)
50
66
  # group :content do
51
67
  # active false
52
68
  # field :excerpt, :hancock_html
@@ -57,6 +73,8 @@ module Hancock::Pages
57
73
  # # field :content_clear, :toggle
58
74
  # end
59
75
 
76
+ group :wrapper, &Hancock::Pages::Admin.wrapper_block
77
+
60
78
 
61
79
  group :menu, &Hancock::Pages::Admin.menu_block
62
80
  # group :menu do
@@ -75,9 +93,15 @@ module Hancock::Pages
75
93
  # field :text_slug
76
94
  # end
77
95
 
96
+ if Hancock::Pages.config.cache_support
97
+ group :caching, &Hancock::Cache::Admin.caching_block
98
+ end
99
+
78
100
  Hancock::RailsAdminGroupPatch::hancock_cms_group(self, fields)
79
101
 
80
- group :seo_n_sitemap, &Hancock::Seo::Admin.seo_n_sitemap_block
102
+ if Hancock::Pages.config.seo_support
103
+ group :seo_n_sitemap, &Hancock::Seo::Admin.seo_n_sitemap_block
104
+ end
81
105
  # group :seo do
82
106
  # active false
83
107
  # field :seo
@@ -87,7 +111,13 @@ module Hancock::Pages
87
111
  # field :sitemap_data
88
112
  # end
89
113
 
90
- # group :caching, &Hancock::Admin.caching_block
114
+ if Hancock::Pages.config.cache_support
115
+ group :caching, &Hancock::Cache::Admin.caching_block
116
+ end
117
+
118
+ if Hancock::Pages.config.insertions_support
119
+ group :insertions, &Hancock::Admin.insertions_block
120
+ end
91
121
  end
92
122
 
93
123
  nested_set({