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
@@ -5,6 +5,7 @@ module RailsAdmin
5
5
  module Fields
6
6
  module Types
7
7
  class HancockConnectable < RailsAdmin::Config::Fields::Types::HasManyAssociation
8
+
8
9
  RailsAdmin::Config::Fields::Types::register(self)
9
10
  include RailsAdmin::Engine.routes.url_helpers
10
11
 
@@ -26,6 +27,7 @@ module RailsAdmin
26
27
  scope.unconnected(me).enabled.sorted
27
28
  end
28
29
  end
30
+
29
31
  end
30
32
  end
31
33
  end
@@ -12,15 +12,19 @@ module RailsAdmin
12
12
  register_instance_option :pretty_value do
13
13
  obj = bindings[:object]
14
14
  ret = []
15
- menus = Rails.cache.fetch 'menus' do
16
- if Hancock.mongoid?
15
+ cache_opts = {}
16
+ unless ::Hancock::Pages.config.cache_support
17
+ cache_opts = {expires_in: 10.minutes}
18
+ end
19
+ menus = Rails.cache.fetch 'menus', cache_opts do
20
+ if ::Hancock.mongoid?
17
21
  ::Hancock::Pages::Menu.all.map { |m| {id: m.id.to_s, name: m.name } }
18
22
  else
19
23
  ::Hancock::Pages::Menu.all.map { |m| {id: m.id, name: m.name } }
20
24
  end
21
25
  end
22
26
  menus.each do |m|
23
- if Hancock.mongoid?
27
+ if ::Hancock.mongoid?
24
28
  on = obj.menu_ids.include?(BSON::ObjectId.from_string(m[:id]))
25
29
  else
26
30
  on = obj.menu_ids.include?(m[:id].to_i)
@@ -109,28 +113,28 @@ module RailsAdmin
109
113
  end
110
114
  else
111
115
  if params['ajax'].present?
112
- render text: @object.errors.full_messages.join(', '), layout: false, status: 422
116
+ render plain: @object.errors.full_messages.join(', '), layout: false, status: 422
113
117
  else
114
118
  flash[:error] = @object.errors.full_messages.join(', ')
115
119
  end
116
120
  end
117
121
  rescue Exception => e
118
122
  if params['ajax'].present?
119
- render text: I18n.t('hancock.menu.error', err: e.to_s), status: 422
123
+ render plain: I18n.t('hancock.menu.error', err: e.to_s), status: 422
120
124
  else
121
125
  flash[:error] = I18n.t('hancock.menu.error', err: e.to_s)
122
126
  end
123
127
  end
124
128
  else
125
129
  if params['ajax'].present?
126
- render text: I18n.t('hancock.menu.no_id'), status: 422
130
+ render plain: I18n.t('hancock.menu.no_id'), status: 422
127
131
  else
128
132
  flash[:error] = I18n.t('hancock.menu.no_id')
129
133
  end
130
134
 
131
135
  end
132
136
 
133
- redirect_to :back unless params['ajax'].present?
137
+ redirect_back(fallback_location: dashboard_path) unless params['ajax'].present?
134
138
  end
135
139
  end
136
140
 
@@ -1,5 +1,5 @@
1
1
  module Hancock
2
2
  module Pages
3
- VERSION = "1.0.0".freeze
3
+ VERSION = "1.0.2".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,103 @@
1
+ module Hancock::Pages::ViewsWhitelist
2
+
3
+ def self.included(base)
4
+
5
+ class << base
6
+ def whitelist
7
+ Settings.hancock_pages_blocks_whitelist
8
+ end
9
+ def whitelist_obj
10
+ Settings.getnc(:hancock_pages_blocks_whitelist)
11
+ end
12
+ def whitelist_as_array(exclude_blacklist = false)
13
+ _list = whitelist.lines.map(&:strip).uniq
14
+ (exclude_blacklist ? (_list - blacklist_as_array) : _list)
15
+ end
16
+ def can_render_in_block?(path)
17
+ whitelist_as_array(true).include?(path)
18
+ end
19
+
20
+ def blacklist
21
+ Settings.ns('admin').hancock_pages_blocks_blacklist
22
+ end
23
+ def blacklist_obj
24
+ Settings.ns('admin').getnc(:hancock_pages_blocks_blacklist)
25
+ end
26
+ def blacklist_as_array
27
+ blacklist.lines.map(&:strip).uniq
28
+ end
29
+
30
+ def whitelist_human_names
31
+ Settings.hancock_pages_blocks_human_names
32
+ end
33
+ def whitelist_human_names_obj
34
+ Settings.getnc(:hancock_pages_blocks_human_names)
35
+ end
36
+
37
+ def format_virtual_path(virtual_path, is_partial = nil)
38
+ if virtual_path.is_a?(Hash)
39
+ virtual_path, is_partial = virtual_path[:virtual_path], virtual_path[:is_partial]
40
+ end
41
+ _virtual_path = virtual_path.clone
42
+ path_parts = _virtual_path.split("/")
43
+ is_partial = path_parts.last[0] == "_" if is_partial.nil?
44
+ if is_partial
45
+ fname = path_parts.pop
46
+ _virtual_path = (path_parts << fname[1..-1]).join("/")
47
+ end
48
+ _virtual_path
49
+ end
50
+
51
+
52
+ def whitelist_enum
53
+ # whitelist_as_array.map do |f|
54
+ (whitelist_as_array - blacklist_as_array).uniq.map do |f|
55
+ whitelist_human_names[f] ? ["#{whitelist_human_names[f]} (#{f})", f] : f
56
+ end
57
+ end
58
+
59
+
60
+ def add_view_in_whitelist(path = "", name = "")
61
+ if path.is_a?(Hash)
62
+ path, name = path[:path], path[:name]
63
+ end
64
+ return nil if path.blank?
65
+ path.strip!
66
+ current_whitelist_array = whitelist_as_array
67
+ ret = true
68
+ unless current_whitelist_array.include?(path)
69
+ ret = false
70
+ current_whitelist_array << path
71
+ whitelist_obj.update(raw: current_whitelist_array.join("\n"))
72
+ end
73
+ unless name.blank?
74
+ current_whitelist_human_names = whitelist_human_names
75
+ unless current_whitelist_human_names.keys.include?(path)
76
+ current_whitelist_human_names[path] = name
77
+ whitelist_human_names_obj.update(raw: current_whitelist_human_names.to_yaml)
78
+ end
79
+ end
80
+ return ret
81
+ end
82
+
83
+ def add_view_in_blacklist(path)
84
+ if path.is_a?(Hash)
85
+ path = path[:path]
86
+ end
87
+ return nil if path.blank?
88
+ path.strip!
89
+ current_blacklist_array = blacklist_as_array
90
+ ret = true
91
+ if current_blacklist_array.include?(path)
92
+ ret = false
93
+ current_blacklist_array << path
94
+ blacklist_obj.update(raw: current_blacklist_array.join("\n"))
95
+ end
96
+ return ret
97
+ end
98
+
99
+ end
100
+
101
+ end
102
+
103
+ end
@@ -1,13 +1,9 @@
1
- # unless defined?(Hancock) && Hancock.respond_to?(:orm) && [:active_record, :mongoid].include?(Hancock.orm)
2
- # puts "please use hancock_cms_mongoid or hancock_cms_activerecord"
3
- # puts "also: please use hancock_cms_news_mongoid or hancock_cms_news_activerecord and not hancock_cms_news directly"
4
- # exit 1
5
- # end
6
-
7
1
  require "hancock/pages/version"
8
2
  require 'hancock/pages/engine'
9
3
  require 'hancock/pages/configuration'
10
4
 
5
+ require "hancock/pages/views_whitelist"
6
+
11
7
  require "hancock/pages/routes"
12
8
 
13
9
  require 'hancock/pages/rails_admin_ext/hancock_connectable'
@@ -18,6 +14,8 @@ require 'simple-navigation'
18
14
  module Hancock::Pages
19
15
  include Hancock::Plugin
20
16
 
17
+ include Hancock::Pages::ViewsWhitelist
18
+
21
19
  autoload :Admin, 'hancock/pages/admin'
22
20
  module Admin
23
21
  autoload :Page, 'hancock/pages/admin/page'
data/release.sh CHANGED
@@ -2,5 +2,5 @@
2
2
  bundle update
3
3
  git add --all .
4
4
  git commit -am "${*:1}"
5
- git push -u origin origin master
5
+ git push -u origin master
6
6
  rake release
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hancock_cms_pages
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Kiseliev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-22 00:00:00.000000000 Z
11
+ date: 2017-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,20 +44,20 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.0'
48
- - - "<="
47
+ version: 1.0.2
48
+ - - "<"
49
49
  - !ruby/object:Gem::Version
50
- version: '2.0'
50
+ version: 2.1.x
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: '1.0'
58
- - - "<="
57
+ version: 1.0.2
58
+ - - "<"
59
59
  - !ruby/object:Gem::Version
60
- version: '2.0'
60
+ version: 2.1.x
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: simple-navigation
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -72,7 +72,7 @@ dependencies:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
- description: 'hancock_cms_pages '
75
+ description: hancock_cms_pages
76
76
  email:
77
77
  - dev@redrocks.pro
78
78
  executables: []
@@ -97,8 +97,9 @@ files:
97
97
  - app/controllers/concerns/hancock/pages/nav_menu.rb
98
98
  - app/controllers/concerns/hancock/pages/seo_pages.rb
99
99
  - app/controllers/hancock/pages/pages_controller.rb
100
+ - app/helpers/hancock/pages/blocksets_helper.rb
100
101
  - app/helpers/hancock/pages/canonical_helper.rb
101
- - app/helpers/hancock/pages/pages_helpers.rb
102
+ - app/helpers/hancock/pages/pages_helper.rb
102
103
  - app/models/concerns/hancock/pages/canonicalable.rb
103
104
  - app/models/concerns/hancock/pages/connectable.rb
104
105
  - app/models/concerns/hancock/pages/decorators/block.rb
@@ -109,6 +110,8 @@ files:
109
110
  - app/models/hancock/pages/blockset.rb
110
111
  - app/models/hancock/pages/menu.rb
111
112
  - app/models/hancock/pages/page.rb
113
+ - app/views/blocks/_cached_blockset_navigation.html.slim
114
+ - app/views/blocks/_cached_navigation.html.slim
112
115
  - app/views/blocks/_header.html.slim
113
116
  - app/views/hancock/pages/pages/show.html.slim
114
117
  - app/views/rails_admin/main/_hancock_connectable.html.slim
@@ -118,9 +121,12 @@ files:
118
121
  - config/initializers/hancock_pages.rb
119
122
  - config/locales/hancock.pages.ru.yml
120
123
  - hancock_cms_pages.gemspec
121
- - lib/generators/hancock/pages/config/install_generator.rb
124
+ - lib/generators/hancock/pages/config/config_generator.rb
122
125
  - lib/generators/hancock/pages/config/templates/hancock_pages.erb
123
- - lib/generators/hancock/pages/migration_generator.rb
126
+ - lib/generators/hancock/pages/controllers/decorators_generator.rb
127
+ - lib/generators/hancock/pages/migrations/migrations_generator.rb
128
+ - lib/generators/hancock/pages/migrations/templates/migration_blocks.rb
129
+ - lib/generators/hancock/pages/migrations/templates/migration_pages.rb
124
130
  - lib/generators/hancock/pages/models/block_generator.rb
125
131
  - lib/generators/hancock/pages/models/blockset_generator.rb
126
132
  - lib/generators/hancock/pages/models/decorators_generator.rb
@@ -130,8 +136,6 @@ files:
130
136
  - lib/generators/hancock/pages/models/templates/blockset.erb
131
137
  - lib/generators/hancock/pages/models/templates/menu.erb
132
138
  - lib/generators/hancock/pages/models/templates/page.erb
133
- - lib/generators/hancock/pages/templates/migration_blocks.rb
134
- - lib/generators/hancock/pages/templates/migration_pages.rb
135
139
  - lib/hancock/pages/admin.rb
136
140
  - lib/hancock/pages/admin/block.rb
137
141
  - lib/hancock/pages/admin/blockset.rb
@@ -156,6 +160,7 @@ files:
156
160
  - lib/hancock/pages/rails_admin_ext/menu.rb
157
161
  - lib/hancock/pages/routes.rb
158
162
  - lib/hancock/pages/version.rb
163
+ - lib/hancock/pages/views_whitelist.rb
159
164
  - lib/hancock_cms_pages.rb
160
165
  - release.sh
161
166
  homepage: https://github.com/red-rocks/hancock_cms_pages
@@ -1,2 +0,0 @@
1
- module Hancock::Pages::PagesHelper
2
- end