module Hancock::Pages::Models::Block
Public Instance Methods
block_content(clear_insertions = true)
click to toggle source
# File lib/hancock/pages/models/block.rb, line 39 def block_content(clear_insertions = true) if clear_insertions.is_a?(Hash) clear_insertions = clear_insertions[:clear_insertions] end if @content_used.nil? if content.nil? @content_used = true '' else # content.gsub(/\{\{(.*?)\}\}/) do # {{"some_text"}} #temporary disabled - need tests # _content = content.gsub(/\{\{(['"])(.*?)(\1)\}\}/) do # $2 # end.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do _content = content.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do if $4 == "FILE" and $3.blank? clear_insertions ? "" : $1 elsif $4 =~ /\ABS\|(.*?)\Z/ and $3.blank? clear_insertions ? "" : $1 elsif $3 == "self" and !$4.blank? if clear_insertions "" elsif Hancock::Pages.config.insertions_support get_insertion($4) else $1 end else (Settings and !$4.blank? and $3 != "self") ? Settings.ns($3).get($4).val : "" #temp end end @content_used = true _content end else '' end end
block_content_html(clear_insertions = true)
click to toggle source
# File lib/hancock/pages/models/block.rb, line 77 def block_content_html(clear_insertions = true) if clear_insertions.is_a?(Hash) clear_insertions = clear_insertions[:clear_insertions] end if @content_html_used.nil? if content_html.nil? @content_html_used = true '' else # content.gsub(/\{\{(.*?)\}\}/) do # {{"some_text"}} #temporary disabled - need tests # _content_html = content_html.gsub(/\{\{(['"])(.*?)(\1)\}\}/) do # $2 # end.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do _content_html = content_html.gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do if $4 == "FILE" and $3.blank? clear_insertions ? "" : $1 elsif $4 =~ /\ABS\|(.*?)\Z/ and $3.blank? clear_insertions ? "" : $1 elsif $3 == "self" and !$4.blank? if clear_insertions "" elsif Hancock::Pages.config.insertions_support get_insertion($4) else $1 end else (Settings and !$4.blank? and $3 != "self") ? Settings.ns($3).get($4).val : "" #temp end end @content_html_used = true _content_html end else '' end end
can_render?()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 29 def can_render? Hancock::Pages::can_render_in_block?(self.file_path) end
file_exists?()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 326 def file_exists? file_fullpath(true).exist? end
file_fullpath(with_ext = false, ext = ".html.slim")
click to toggle source
# File lib/hancock/pages/models/block.rb, line 314 def file_fullpath(with_ext = false, ext = ".html.slim") if with_ext.is_a?(String) ext, with_ext = with_ext, true end ret = nil unless self.file_path.blank? ret = self.file_path_for_fs ret += ext if with_ext ret = Rails.root.join("views", ret) end return ret end
file_path_as_partial()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 120 def file_path_as_partial self.file_pathname_as_partial.to_s end
file_path_for_fs()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 127 def file_path_for_fs self.file_pathname_for_fs.to_s end
file_pathname_as_partial()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 117 def file_pathname_as_partial self.file_pathname.dirname.join("_#{self.file_pathname.basename}") end
file_pathname_for_fs()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 124 def file_pathname_for_fs self.partial ? self.file_pathname_as_partial : self.file_pathname end
has_content?()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 146 def has_content? @content_used.nil? && !content.blank? end
has_content_html?()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 149 def has_content_html? @content_html_used.nil? && !content_html.blank? end
rails_admin_label()
click to toggle source
# File lib/hancock/pages/models/block.rb, line 131 def rails_admin_label if !self.name.blank? self.name elsif self.render_file and !self.file_path.blank? _human_name = Hancock::Pages.whitelist_human_names[self.file_path] if _human_name.blank? self.file_path_for_fs else _human_name end else self.id end end
render_or_content(view = Hancock::Pages::PagesController.new, opts = {}) { |ret| ... }
click to toggle source
# File lib/hancock/pages/models/block.rb, line 236 def render_or_content(view = Hancock::Pages::PagesController.new, opts = {}) if view.is_a?(Hash) view, opts = view.delete(:view) || Hancock::Pages::PagesController.new, view end Hancock::Pages.config.renderer_lib_extends.each do |lib_extends| unless view.class < lib_extends if view.respond_to?(:prepend) view.prepend lib_extends else view.extend lib_extends end end end ret = "" hancock_env = {block: self, called_from: [{object: self, method: :render_or_content}]} hancock_env[:called_from].unshift(opts.delete(:called_from)) if opts and opts[:called_from].present? locals = {} locals[:hancock_env] = hancock_env unless self.file_path.blank? opts.merge!(partial: self.file_path, locals: locals) # ret = view.render_to_string(opts) rescue self.content ret = begin view.render_to_string(opts) if can_render? rescue Exception => exception if Hancock::Pages.config.verbose_render Rails.logger.error exception.message Rails.logger.error exception.backtrace.join("\n") puts exception.message puts exception.backtrace.join("\n") end Raven.capture_exception(exception) if Hancock::Pages.config.raven_support self.content end # ret = view.render(opts) rescue self.content else opts.merge!(partial: self.file_path, locals: locals) ret = self.block_content(false).gsub("{{FILE}}") do # view.render_to_string(opts) rescue nil begin view.render_to_string(opts) if can_render? rescue Exception => exception if Hancock::Pages.config.verbose_render Rails.logger.error exception.message Rails.logger.error exception.backtrace.join("\n") puts exception.message puts exception.backtrace.join("\n") end Raven.capture_exception(exception) if Hancock::Pages.config.raven_support nil end # view.render(opts) rescue nil end.gsub(/\{\{BS\|(.*?)\}\}/) do bs = Hancock::Pages::Blockset.enabled.where(name: $1).first # view.render_blockset(bs, called_from: :render_or_content) rescue nil if bs if bs begin view.render_blockset(bs, called_from: {object: self, method: :render_or_content}) rescue Exception => exception if Hancock::Pages.config.verbose_render Rails.logger.error exception.message Rails.logger.error exception.backtrace.join("\n") puts exception.message puts exception.backtrace.join("\n") end Raven.capture_exception(exception) if Hancock::Pages.config.raven_support nil end end end end ret = yield ret if block_given? return (ret.is_a?(Array) ? ret.join.html_safe : ret) # return ret end
render_or_content_html(view = Hancock::Pages::PagesController.new, opts = {}) { |ret| ... }
click to toggle source
# File lib/hancock/pages/models/block.rb, line 153 def render_or_content_html(view = Hancock::Pages::PagesController.new, opts = {}) if view.is_a?(Hash) view, opts = view.delete(:view) || Hancock::Pages::PagesController.new, view end Hancock::Pages.config.renderer_lib_extends.each do |lib_extends| unless view.class < lib_extends if view.respond_to?(:prepend) view.prepend lib_extends else view.extend lib_extends end end end ret = "" hancock_env = {block: self, called_from: [{object: self, method: :render_or_content_html}]} hancock_env[:called_from].unshift(opts.delete(:called_from)) if opts and opts[:called_from].present? locals = {} locals[:hancock_env] = hancock_env if self.render_file and !self.file_path.blank? opts.merge!(partial: self.file_path, locals: locals) # ret = view.render_to_string(opts) rescue self.content_html.html_safe ret = begin view.render_to_string(opts) if can_render? rescue Exception => exception if Hancock::Pages.config.verbose_render Rails.logger.error exception.message Rails.logger.error exception.backtrace.join("\n") puts exception.message puts exception.backtrace.join("\n") end Raven.capture_exception(exception) if Hancock::Pages.config.raven_support self.content_html.html_safe end else opts.merge!(partial: self.file_path, locals: locals) # ret = self.block_content_html(false).gsub(/(\{\{(([^\.]*?)\.)?(.*?)\}\})/) do ret = self.block_content_html(false).gsub("{{FILE}}") do # view.render(opts) rescue nil begin view.render(opts) if can_render? rescue Exception => exception if Hancock::Pages.config.verbose_render Rails.logger.error exception.message Rails.logger.error exception.backtrace.join("\n") puts exception.message puts exception.backtrace.join("\n") end Raven.capture_exception(exception) if Hancock::Pages.config.raven_support nil end end.gsub(/\{\{BS\|(.*?)\}\}/) do bs = Hancock::Pages::Blockset.enabled.where(name: $1).first # view.render_blockset(bs, called_from: :render_or_content_html) rescue nil if bs if bs begin view.render_blockset(bs, called_from: {object: self, method: :render_or_content_html}) rescue Exception => exception if Hancock::Pages.config.verbose_render Rails.logger.error exception.message Rails.logger.error exception.backtrace.join("\n") puts exception.message puts exception.backtrace.join("\n") end Raven.capture_exception(exception) if Hancock::Pages.config.raven_support nil end end end.html_safe end if use_wrapper _attrs = { class: wrapper_class, id: wrapper_id }.merge(wrapper_attributes) ret = view.content_tag wrapper_tag, ret, _attrs end ret = yield ret if block_given? return (ret.is_a?(Array) ? ret.join.html_safe : ret) # return ret end
wrapper_attributes=(val)
click to toggle source
# File lib/hancock/pages/models/block.rb, line 350 def wrapper_attributes=(val) if val.is_a? (String) begin begin self[:wrapper_attributes] = JSON.parse(val) rescue self[:wrapper_attributes] = YAML.load(val) end rescue end elsif val.is_a?(Hash) self[:wrapper_attributes] = val else self[:wrapper_attributes] = wrapper_attributes end end