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.
- checksums.yaml +4 -4
- data/app/controllers/concerns/hancock/pages/blocksetable.rb +48 -14
- data/app/controllers/concerns/hancock/pages/localizeable.rb +5 -5
- data/app/controllers/concerns/hancock/pages/nav_menu.rb +10 -5
- data/app/controllers/concerns/hancock/pages/seo_pages.rb +3 -3
- data/app/helpers/hancock/pages/blocksets_helper.rb +26 -0
- data/app/helpers/hancock/pages/pages_helper.rb +11 -0
- data/app/models/concerns/hancock/pages/connectable.rb +1 -1
- data/app/views/blocks/_cached_blockset_navigation.html.slim +26 -0
- data/app/views/blocks/_cached_navigation.html.slim +26 -0
- data/app/views/blocks/_header.html.slim +9 -1
- data/app/views/hancock/pages/pages/show.html.slim +14 -1
- data/app/views/shared/_obj.html.slim +21 -25
- data/config/locales/hancock.pages.ru.yml +5 -0
- data/hancock_cms_pages.gemspec +3 -3
- data/lib/generators/hancock/pages/config/{install_generator.rb → config_generator.rb} +0 -0
- data/lib/generators/hancock/pages/config/templates/hancock_pages.erb +19 -6
- data/lib/generators/hancock/pages/controllers/decorators_generator.rb +24 -0
- data/lib/generators/hancock/pages/{migration_generator.rb → migrations/migrations_generator.rb} +3 -3
- data/lib/generators/hancock/pages/{templates → migrations/templates}/migration_blocks.rb +0 -0
- data/lib/generators/hancock/pages/{templates → migrations/templates}/migration_pages.rb +0 -0
- data/lib/generators/hancock/pages/models/templates/block.erb +5 -5
- data/lib/generators/hancock/pages/models/templates/blockset.erb +5 -5
- data/lib/generators/hancock/pages/models/templates/menu.erb +5 -5
- data/lib/generators/hancock/pages/models/templates/page.erb +7 -7
- data/lib/hancock/pages/admin.rb +35 -8
- data/lib/hancock/pages/admin/block.rb +14 -1
- data/lib/hancock/pages/admin/blockset.rb +34 -11
- data/lib/hancock/pages/admin/menu.rb +3 -1
- data/lib/hancock/pages/admin/page.rb +35 -5
- data/lib/hancock/pages/configuration.rb +28 -5
- data/lib/hancock/pages/controllers/pages.rb +10 -1
- data/lib/hancock/pages/engine.rb +59 -0
- data/lib/hancock/pages/models/active_record/blockset.rb +2 -1
- data/lib/hancock/pages/models/block.rb +234 -55
- data/lib/hancock/pages/models/blockset.rb +50 -38
- data/lib/hancock/pages/models/menu.rb +24 -15
- data/lib/hancock/pages/models/mongoid/block.rb +13 -0
- data/lib/hancock/pages/models/mongoid/blockset.rb +3 -0
- data/lib/hancock/pages/models/mongoid/menu.rb +4 -1
- data/lib/hancock/pages/models/mongoid/page.rb +19 -6
- data/lib/hancock/pages/models/page.rb +196 -90
- data/lib/hancock/pages/rails_admin_ext/hancock_connectable.rb +2 -0
- data/lib/hancock/pages/rails_admin_ext/menu.rb +11 -7
- data/lib/hancock/pages/version.rb +1 -1
- data/lib/hancock/pages/views_whitelist.rb +103 -0
- data/lib/hancock_cms_pages.rb +4 -6
- data/release.sh +1 -1
- metadata +19 -14
- data/app/helpers/hancock/pages/pages_helpers.rb +0 -2
@@ -9,6 +9,8 @@ module Hancock::Pages
|
|
9
9
|
attr_accessor :menu_max_depth
|
10
10
|
|
11
11
|
attr_accessor :seo_support
|
12
|
+
attr_accessor :cache_support
|
13
|
+
attr_accessor :insertions_support
|
12
14
|
|
13
15
|
attr_accessor :localize
|
14
16
|
|
@@ -18,18 +20,39 @@ module Hancock::Pages
|
|
18
20
|
attr_accessor :user_abilities_support
|
19
21
|
attr_accessor :ra_comments_support
|
20
22
|
|
23
|
+
attr_accessor :renderer_lib_extends
|
24
|
+
|
25
|
+
attr_accessor :verbose_render
|
26
|
+
attr_accessor :raven_support
|
27
|
+
|
28
|
+
attr_accessor :available_layouts
|
29
|
+
|
21
30
|
def initialize
|
22
31
|
@menu_max_depth = 2
|
23
32
|
|
24
|
-
@seo_support
|
33
|
+
@seo_support = !!defined? Hancock::Seo
|
34
|
+
@cache_support = !!defined?(Hancock::Cache)
|
35
|
+
@insertions_support = true
|
25
36
|
|
26
37
|
@localize = Hancock.config.localize
|
27
38
|
|
28
|
-
@breadcrumbs_on_rails_support = defined?(BreadcrumbsOnRails)
|
39
|
+
@breadcrumbs_on_rails_support = !!defined?(BreadcrumbsOnRails)
|
40
|
+
|
41
|
+
@model_settings_support = !!defined?(RailsAdminModelSettings)
|
42
|
+
@user_abilities_support = !!defined?(RailsAdminUserAbilities)
|
43
|
+
@ra_comments_support = !!defined?(RailsAdminComments)
|
44
|
+
|
45
|
+
@renderer_lib_extends = [
|
46
|
+
# ::ActionController::Base,
|
47
|
+
::ActionView::Helpers::TagHelper,
|
48
|
+
::ActionView::Context
|
49
|
+
]
|
50
|
+
|
51
|
+
@verbose_render = Rails.env.development? or Rails.env.test?
|
52
|
+
@raven_support = !!(Hancock.config.respond_to?(:raven_support) ? Hancock.config.raven_support : defined?(Raven))
|
53
|
+
|
54
|
+
@available_layouts = ["application"]
|
29
55
|
|
30
|
-
@model_settings_support = defined?(RailsAdminModelSettings)
|
31
|
-
@user_abilities_support = defined?(RailsAdminUserAbilities)
|
32
|
-
@ra_comments_support = defined?(RailsAdminComments)
|
33
56
|
end
|
34
57
|
end
|
35
58
|
end
|
@@ -3,6 +3,11 @@ module Hancock::Pages
|
|
3
3
|
module Pages
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
+
included do
|
7
|
+
include ActionView::Helpers::TagHelper
|
8
|
+
include ActionView::Context
|
9
|
+
end
|
10
|
+
|
6
11
|
def show
|
7
12
|
if @seo_page.nil? || !@seo_page.persisted?
|
8
13
|
if !params[:id].blank? or !params[:slug].blank?
|
@@ -18,6 +23,10 @@ module Hancock::Pages
|
|
18
23
|
if Hancock::Pages.config.breadcrumbs_on_rails_support
|
19
24
|
add_breadcrumb @seo_page.name, @seo_page.slug
|
20
25
|
end
|
26
|
+
|
27
|
+
if Hancock::Pages.config.available_layouts.include?(@seo_page.layout_name)
|
28
|
+
render layout: @seo_page.layout_name
|
29
|
+
end
|
21
30
|
end
|
22
31
|
|
23
32
|
private
|
@@ -27,7 +36,7 @@ module Hancock::Pages
|
|
27
36
|
|
28
37
|
def after_initialize
|
29
38
|
end
|
30
|
-
|
39
|
+
|
31
40
|
end
|
32
41
|
end
|
33
42
|
end
|
data/lib/hancock/pages/engine.rb
CHANGED
@@ -1,5 +1,64 @@
|
|
1
1
|
module Hancock::Pages
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
# isolate_namespace Hancock::Pages
|
4
|
+
|
5
|
+
# initializer "hancock_cms_pages.blocksets_settings" do
|
6
|
+
# # Write default email settings to DB so they can be changed.
|
7
|
+
#
|
8
|
+
# #temp
|
9
|
+
# begin
|
10
|
+
# if Settings and Settings.table_exists?
|
11
|
+
# Settings.hancock_pages_blocks_whitelist(default: '', kind: :text, label: 'Белый список блоков')
|
12
|
+
# Settings.hancock_pages_blocks_human_names(default: '', kind: :yaml, label: 'Имена блоков')
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# # if Settings and Settings.table_exists? and Hancock::Pages.model_settings_support
|
16
|
+
# # Hancock::Pages::Blockset.settings.blocks_whitelist(default: '', kind: :text, label: 'Белый список блоков')
|
17
|
+
# # Hancock::Pages::Blockset.settings.blocks_human_names(default: '', kind: :yaml, label: 'Имена блоков')
|
18
|
+
# #
|
19
|
+
# #
|
20
|
+
# # _setting_existed = !Hancock::Cache::Fragment.settings.getnc('detecting').nil?
|
21
|
+
# # unless _setting_existed
|
22
|
+
# # Hancock::Pages::Blockset.settings.blocks_whitelist(kind: :text, default: '', label: 'Белый список блоков')
|
23
|
+
# # Hancock::Pages::Blockset.settings.unload!
|
24
|
+
# # _setting = Hancock::Pages::Blockset.settings.getnc('blocks_whitelist')
|
25
|
+
# # if _setting
|
26
|
+
# # _setting.for_admin = true
|
27
|
+
# # _setting.perform_caching = false
|
28
|
+
# # _setting.save
|
29
|
+
# # end
|
30
|
+
# # end
|
31
|
+
# #
|
32
|
+
# #
|
33
|
+
# # _setting_existed = !Hancock::Cache::Fragment.settings.getnc('detecting').nil?
|
34
|
+
# # unless _setting_existed
|
35
|
+
# # Hancock::Pages::Blockset.settings.blocks_human_names(default: '', kind: :yaml, label: 'Имена блоков')
|
36
|
+
# # Hancock::Pages::Blockset.settings.unload!
|
37
|
+
# # _setting = Hancock::Pages::Blockset.settings.getnc('blocks_human_names')
|
38
|
+
# # if _setting
|
39
|
+
# # _setting.for_admin = true
|
40
|
+
# # _setting.perform_caching = false
|
41
|
+
# # _setting.save
|
42
|
+
# # end
|
43
|
+
# # end
|
44
|
+
# #
|
45
|
+
# # end
|
46
|
+
# rescue
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
|
50
|
+
config.after_initialize do
|
51
|
+
# Write default email settings to DB so they can be changed.
|
52
|
+
begin
|
53
|
+
if Settings and Settings.table_exists?
|
54
|
+
Settings.hancock_pages_blocks_whitelist(default: '', kind: :text, label: 'Белый список блоков') unless RailsAdminSettings::Setting.ns("main").where(key: "hancock_pages_blocks_whitelist").exists?
|
55
|
+
Settings.hancock_pages_blocks_human_names(default: '', kind: :yaml, label: 'Имена блоков') unless RailsAdminSettings::Setting.ns("main").where(key: "hancock_pages_blocks_human_names").exists?
|
56
|
+
|
57
|
+
Settings.ns('admin').hancock_pages_blocks_blacklist(default: '', kind: :text, label: 'Черный список блоков') unless RailsAdminSettings::Setting.ns("admin").where(key: "hancock_pages_blocks_blacklist").exists?
|
58
|
+
end
|
59
|
+
rescue
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
4
63
|
end
|
5
64
|
end
|
@@ -11,7 +11,8 @@ module Hancock::Pages
|
|
11
11
|
translates :name
|
12
12
|
end
|
13
13
|
|
14
|
-
has_many :
|
14
|
+
has_many :blocks, class_name: "Hancock::Pages::Blockset", inverse_of: :blockset
|
15
|
+
accepts_nested_attributes_for :blocks, allow_destroy: true
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
@@ -6,6 +6,10 @@ module Hancock::Pages
|
|
6
6
|
include Hancock::Enableable
|
7
7
|
include ManualSlug
|
8
8
|
|
9
|
+
if Hancock::Pages.config.insertions_support
|
10
|
+
include Hancock::InsertionField
|
11
|
+
end
|
12
|
+
|
9
13
|
include Hancock::Pages.orm_specific('Block')
|
10
14
|
|
11
15
|
included do
|
@@ -21,6 +25,93 @@ module Hancock::Pages
|
|
21
25
|
after_initialize do
|
22
26
|
self.file_pathname = Pathname.new(file_path) unless file_path.nil?
|
23
27
|
end
|
28
|
+
|
29
|
+
def can_render?
|
30
|
+
Hancock::Pages::can_render_in_block?(self.file_path)
|
31
|
+
end
|
32
|
+
|
33
|
+
if Hancock::Pages.config.insertions_support
|
34
|
+
# insertions_for(:content)
|
35
|
+
insertions_for(:content_html)
|
36
|
+
alias :block_content :page_content
|
37
|
+
alias :block_content_html :page_content_html
|
38
|
+
end
|
39
|
+
def block_content(clear_insertions = true)
|
40
|
+
if clear_insertions.is_a?(Hash)
|
41
|
+
clear_insertions = clear_insertions[:clear_insertions]
|
42
|
+
end
|
43
|
+
if @content_used.nil?
|
44
|
+
if content.nil?
|
45
|
+
@content_used = true
|
46
|
+
''
|
47
|
+
else
|
48
|
+
# content.gsub(/\{\{(.*?)\}\}/) do
|
49
|
+
# {{"some_text"}} #temporary disabled - need tests
|
50
|
+
# _content = content.gsub(/\{\{(['"])(.*?)(\1)\}\}/) do
|
51
|
+
# $2
|
52
|
+
# end.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do
|
53
|
+
_content = content.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do
|
54
|
+
if $4 == "FILE" and $3.blank?
|
55
|
+
clear_insertions ? "" : $1
|
56
|
+
elsif $4 =~ /\ABS\|(.*?)\Z/ and $3.blank?
|
57
|
+
clear_insertions ? "" : $1
|
58
|
+
elsif $3 == "self" and !$4.blank?
|
59
|
+
if clear_insertions
|
60
|
+
""
|
61
|
+
elsif Hancock::Pages.config.insertions_support
|
62
|
+
get_insertion($4)
|
63
|
+
else
|
64
|
+
$1
|
65
|
+
end
|
66
|
+
else
|
67
|
+
(Settings and !$4.blank? and $3 != "self") ? Settings.ns($3).get($4).val : "" #temp
|
68
|
+
end
|
69
|
+
end
|
70
|
+
@content_used = true
|
71
|
+
_content
|
72
|
+
end
|
73
|
+
else
|
74
|
+
''
|
75
|
+
end
|
76
|
+
end
|
77
|
+
def block_content_html(clear_insertions = true)
|
78
|
+
if clear_insertions.is_a?(Hash)
|
79
|
+
clear_insertions = clear_insertions[:clear_insertions]
|
80
|
+
end
|
81
|
+
if @content_html_used.nil?
|
82
|
+
if content_html.nil?
|
83
|
+
@content_html_used = true
|
84
|
+
''
|
85
|
+
else
|
86
|
+
# content.gsub(/\{\{(.*?)\}\}/) do
|
87
|
+
# {{"some_text"}} #temporary disabled - need tests
|
88
|
+
# _content_html = content_html.gsub(/\{\{(['"])(.*?)(\1)\}\}/) do
|
89
|
+
# $2
|
90
|
+
# end.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do
|
91
|
+
_content_html = content_html.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do
|
92
|
+
if $4 == "FILE" and $3.blank?
|
93
|
+
clear_insertions ? "" : $1
|
94
|
+
elsif $4 =~ /\ABS\|(.*?)\Z/ and $3.blank?
|
95
|
+
clear_insertions ? "" : $1
|
96
|
+
elsif $3 == "self" and !$4.blank?
|
97
|
+
if clear_insertions
|
98
|
+
""
|
99
|
+
elsif Hancock::Pages.config.insertions_support
|
100
|
+
get_insertion($4)
|
101
|
+
else
|
102
|
+
$1
|
103
|
+
end
|
104
|
+
else
|
105
|
+
(Settings and !$4.blank? and $3 != "self") ? Settings.ns($3).get($4).val : "" #temp
|
106
|
+
end
|
107
|
+
end
|
108
|
+
@content_html_used = true
|
109
|
+
_content_html
|
110
|
+
end
|
111
|
+
else
|
112
|
+
''
|
113
|
+
end
|
114
|
+
end
|
24
115
|
end
|
25
116
|
|
26
117
|
def file_pathname_as_partial
|
@@ -37,70 +128,97 @@ module Hancock::Pages
|
|
37
128
|
self.file_pathname_for_fs.to_s
|
38
129
|
end
|
39
130
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
48
|
-
if @content_used.nil?
|
49
|
-
@content_used = true
|
50
|
-
if content.nil?
|
51
|
-
''
|
131
|
+
def rails_admin_label
|
132
|
+
if !self.name.blank?
|
133
|
+
self.name
|
134
|
+
elsif self.render_file and !self.file_path.blank?
|
135
|
+
_human_name = Hancock::Pages.whitelist_human_names[self.file_path]
|
136
|
+
if _human_name.blank?
|
137
|
+
self.file_path_for_fs
|
52
138
|
else
|
53
|
-
|
54
|
-
content.gsub(/\{\{(([^\.]*?)\.)?(.*?)\}\}/) do
|
55
|
-
if $3 == "FILE" and $2.blank?
|
56
|
-
clear_insertions ? "" : $0
|
57
|
-
else
|
58
|
-
(Settings and !$3.blank?) ? Settings.ns($2).get($3).val : "" #temp
|
59
|
-
end
|
60
|
-
end
|
139
|
+
_human_name
|
61
140
|
end
|
62
141
|
else
|
63
|
-
|
142
|
+
self.id
|
64
143
|
end
|
65
144
|
end
|
145
|
+
|
146
|
+
def has_content?
|
147
|
+
@content_used.nil? && !content.blank?
|
148
|
+
end
|
66
149
|
def has_content_html?
|
67
150
|
@content_html_used.nil? && !content_html.blank?
|
68
151
|
end
|
69
|
-
|
70
|
-
|
71
|
-
|
152
|
+
|
153
|
+
def render_or_content_html(view = Hancock::Pages::PagesController.new, opts = {})
|
154
|
+
if view.is_a?(Hash)
|
155
|
+
view, opts = view.delete(:view) || Hancock::Pages::PagesController.new, view
|
72
156
|
end
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
content_html.gsub(/\{\{(([^\.]*?)\.)?(.*?)\}\}/) do
|
80
|
-
if $3 == "FILE" and $2.blank?
|
81
|
-
clear_insertions ? "" : $0
|
82
|
-
else
|
83
|
-
(Settings and !$3.blank?) ? Settings.ns($2).get($3).val : "" #temp
|
84
|
-
end
|
157
|
+
Hancock::Pages.config.renderer_lib_extends.each do |lib_extends|
|
158
|
+
unless view.class < lib_extends
|
159
|
+
if view.respond_to?(:prepend)
|
160
|
+
view.prepend lib_extends
|
161
|
+
else
|
162
|
+
view.extend lib_extends
|
85
163
|
end
|
86
164
|
end
|
87
|
-
else
|
88
|
-
''
|
89
165
|
end
|
90
|
-
end
|
91
166
|
|
92
|
-
def render_or_content_html(view, opts = {})
|
93
|
-
if view.is_a?(Hash)
|
94
|
-
view, opts = view.delete(:view), view
|
95
|
-
end
|
96
167
|
ret = ""
|
168
|
+
hancock_env = {block: self, called_from: [{object: self, method: :render_or_content_html}]}
|
169
|
+
hancock_env[:called_from].unshift(opts.delete(:called_from)) if opts and opts[:called_from].present?
|
170
|
+
locals = {}
|
171
|
+
locals[:hancock_env] = hancock_env
|
172
|
+
|
97
173
|
if self.render_file and !self.file_path.blank?
|
98
|
-
opts.merge!(partial: self.file_path, locals:
|
99
|
-
ret = view.
|
174
|
+
opts.merge!(partial: self.file_path, locals: locals)
|
175
|
+
# ret = view.render_to_string(opts) rescue self.content_html.html_safe
|
176
|
+
ret = begin
|
177
|
+
view.render_to_string(opts) if can_render?
|
178
|
+
rescue Exception => exception
|
179
|
+
if Hancock::Pages.config.verbose_render
|
180
|
+
Rails.logger.error exception.message
|
181
|
+
Rails.logger.error exception.backtrace.join("\n")
|
182
|
+
puts exception.message
|
183
|
+
puts exception.backtrace.join("\n")
|
184
|
+
end
|
185
|
+
Raven.capture_exception(exception) if Hancock::Pages.config.raven_support
|
186
|
+
self.content_html.html_safe
|
187
|
+
end
|
100
188
|
else
|
101
|
-
opts.merge!(partial: self.file_path, locals:
|
189
|
+
opts.merge!(partial: self.file_path, locals: locals)
|
190
|
+
# ret = self.block_content_html(false).gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do
|
102
191
|
ret = self.block_content_html(false).gsub("{{FILE}}") do
|
103
|
-
view.render(opts) rescue nil
|
192
|
+
# view.render(opts) rescue nil
|
193
|
+
begin
|
194
|
+
view.render(opts) if can_render?
|
195
|
+
rescue Exception => exception
|
196
|
+
if Hancock::Pages.config.verbose_render
|
197
|
+
Rails.logger.error exception.message
|
198
|
+
Rails.logger.error exception.backtrace.join("\n")
|
199
|
+
puts exception.message
|
200
|
+
puts exception.backtrace.join("\n")
|
201
|
+
end
|
202
|
+
Raven.capture_exception(exception) if Hancock::Pages.config.raven_support
|
203
|
+
nil
|
204
|
+
end
|
205
|
+
end.gsub(/\{\{BS\|(.*?)\}\}/) do
|
206
|
+
bs = Hancock::Pages::Blockset.enabled.where(name: $1).first
|
207
|
+
# view.render_blockset(bs, called_from: :render_or_content_html) rescue nil if bs
|
208
|
+
if bs
|
209
|
+
begin
|
210
|
+
view.render_blockset(bs, called_from: {object: self, method: :render_or_content_html})
|
211
|
+
rescue Exception => exception
|
212
|
+
if Hancock::Pages.config.verbose_render
|
213
|
+
Rails.logger.error exception.message
|
214
|
+
Rails.logger.error exception.backtrace.join("\n")
|
215
|
+
puts exception.message
|
216
|
+
puts exception.backtrace.join("\n")
|
217
|
+
end
|
218
|
+
Raven.capture_exception(exception) if Hancock::Pages.config.raven_support
|
219
|
+
nil
|
220
|
+
end
|
221
|
+
end
|
104
222
|
end.html_safe
|
105
223
|
end
|
106
224
|
if use_wrapper
|
@@ -111,25 +229,86 @@ module Hancock::Pages
|
|
111
229
|
ret = view.content_tag wrapper_tag, ret, _attrs
|
112
230
|
end
|
113
231
|
ret = yield ret if block_given?
|
114
|
-
return ret
|
232
|
+
return (ret.is_a?(Array) ? ret.join.html_safe : ret)
|
233
|
+
# return ret
|
115
234
|
end
|
116
235
|
|
117
|
-
def render_or_content(view, opts = {})
|
236
|
+
def render_or_content(view = Hancock::Pages::PagesController.new, opts = {})
|
118
237
|
if view.is_a?(Hash)
|
119
|
-
view, opts = view.delete(:view), view
|
238
|
+
view, opts = view.delete(:view) || Hancock::Pages::PagesController.new, view
|
239
|
+
end
|
240
|
+
Hancock::Pages.config.renderer_lib_extends.each do |lib_extends|
|
241
|
+
unless view.class < lib_extends
|
242
|
+
if view.respond_to?(:prepend)
|
243
|
+
view.prepend lib_extends
|
244
|
+
else
|
245
|
+
view.extend lib_extends
|
246
|
+
end
|
247
|
+
end
|
120
248
|
end
|
249
|
+
|
121
250
|
ret = ""
|
251
|
+
hancock_env = {block: self, called_from: [{object: self, method: :render_or_content}]}
|
252
|
+
hancock_env[:called_from].unshift(opts.delete(:called_from)) if opts and opts[:called_from].present?
|
253
|
+
locals = {}
|
254
|
+
locals[:hancock_env] = hancock_env
|
255
|
+
|
122
256
|
unless self.file_path.blank?
|
123
|
-
opts.merge!(partial: self.file_path, locals:
|
124
|
-
|
257
|
+
opts.merge!(partial: self.file_path, locals: locals)
|
258
|
+
|
259
|
+
# ret = view.render_to_string(opts) rescue self.content
|
260
|
+
ret = begin
|
261
|
+
view.render_to_string(opts) if can_render?
|
262
|
+
rescue Exception => exception
|
263
|
+
if Hancock::Pages.config.verbose_render
|
264
|
+
Rails.logger.error exception.message
|
265
|
+
Rails.logger.error exception.backtrace.join("\n")
|
266
|
+
puts exception.message
|
267
|
+
puts exception.backtrace.join("\n")
|
268
|
+
end
|
269
|
+
Raven.capture_exception(exception) if Hancock::Pages.config.raven_support
|
270
|
+
self.content
|
271
|
+
end
|
272
|
+
# ret = view.render(opts) rescue self.content
|
125
273
|
else
|
126
|
-
opts.merge!(partial: self.file_path, locals:
|
274
|
+
opts.merge!(partial: self.file_path, locals: locals)
|
127
275
|
ret = self.block_content(false).gsub("{{FILE}}") do
|
128
|
-
view.
|
276
|
+
# view.render_to_string(opts) rescue nil
|
277
|
+
begin
|
278
|
+
view.render_to_string(opts) if can_render?
|
279
|
+
rescue Exception => exception
|
280
|
+
if Hancock::Pages.config.verbose_render
|
281
|
+
Rails.logger.error exception.message
|
282
|
+
Rails.logger.error exception.backtrace.join("\n")
|
283
|
+
puts exception.message
|
284
|
+
puts exception.backtrace.join("\n")
|
285
|
+
end
|
286
|
+
Raven.capture_exception(exception) if Hancock::Pages.config.raven_support
|
287
|
+
nil
|
288
|
+
end
|
289
|
+
# view.render(opts) rescue nil
|
290
|
+
end.gsub(/\{\{BS\|(.*?)\}\}/) do
|
291
|
+
bs = Hancock::Pages::Blockset.enabled.where(name: $1).first
|
292
|
+
# view.render_blockset(bs, called_from: :render_or_content) rescue nil if bs
|
293
|
+
if bs
|
294
|
+
begin
|
295
|
+
view.render_blockset(bs, called_from: {object: self, method: :render_or_content})
|
296
|
+
rescue Exception => exception
|
297
|
+
if Hancock::Pages.config.verbose_render
|
298
|
+
Rails.logger.error exception.message
|
299
|
+
Rails.logger.error exception.backtrace.join("\n")
|
300
|
+
puts exception.message
|
301
|
+
puts exception.backtrace.join("\n")
|
302
|
+
end
|
303
|
+
Raven.capture_exception(exception) if Hancock::Pages.config.raven_support
|
304
|
+
nil
|
305
|
+
end
|
306
|
+
end
|
129
307
|
end
|
130
308
|
end
|
131
309
|
ret = yield ret if block_given?
|
132
|
-
return ret
|
310
|
+
return (ret.is_a?(Array) ? ret.join.html_safe : ret)
|
311
|
+
# return ret
|
133
312
|
end
|
134
313
|
|
135
314
|
def file_fullpath(with_ext = false, ext = ".html.slim")
|