hancock_cms_pages 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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({