|
|
|
|
|
|
|
module PageHelper
|
|
|
|
@@no_banner = true
|
|
|
|
@@banner_image = nil
|
|
|
|
@@has_content = true
|
|
|
|
@@body_class = nil
|
|
|
|
|
|
|
|
def title(page_title)
|
|
|
|
content_for(:title) { page_title.to_s }
|
|
|
|
end
|
|
|
|
|
|
|
|
def description(page_description)
|
|
|
|
content_for(:description) { page_description.to_s }
|
|
|
|
end
|
|
|
|
|
|
|
|
def banner_image(banner_image, name: nil, id: nil, user_id: nil, src: nil)
|
|
|
|
@@no_banner = false
|
|
|
|
@@banner_image = banner_image
|
|
|
|
content_for(:banner_image) { banner_image.to_s }
|
|
|
|
end
|
|
|
|
|
|
|
|
def has_content?
|
|
|
|
@@has_content
|
|
|
|
end
|
|
|
|
|
|
|
|
def add_stylesheet(sheet)
|
|
|
|
@stylesheets ||= Set.new
|
|
|
|
@stylesheets << sheet
|
|
|
|
end
|
|
|
|
|
|
|
|
def stylesheets
|
|
|
|
html = ''
|
|
|
|
Rack::MiniProfiler.step('inject_css') do
|
|
|
|
html += inject_css!
|
|
|
|
end
|
|
|
|
(@stylesheets || []).each do |css|
|
|
|
|
Rack::MiniProfiler.step("inject_css #{css}") do
|
|
|
|
if css =~ /\.css$/
|
|
|
|
html += stylesheet_link_tag css
|
|
|
|
else
|
|
|
|
html += inject_css! css.to_s
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
html += stylesheet_link_tag 'i18n-debug' if request.params['i18nDebug']
|
|
|
|
return html.html_safe
|
|
|
|
end
|
|
|
|
|
|
|
|
def add_javascript(script)
|
|
|
|
@javascripts ||= Set.new
|
|
|
|
@javascripts << script
|
|
|
|
end
|
|
|
|
|
|
|
|
def javascripts
|
|
|
|
(@javascripts || []).map { |js| javascript_include_tag js.to_s }.join.html_safe
|
|
|
|
end
|
|
|
|
|
|
|
|
def add_inline_script(script)
|
|
|
|
@_inline_scripts ||= Set.new
|
|
|
|
script = Rails.application.assets.find_asset("#{script.to_s}.js").to_s
|
|
|
|
@_inline_scripts << script
|
|
|
|
end
|
|
|
|
|
|
|
|
def inline_scripts
|
|
|
|
return '' unless @_inline_scripts.present?
|
|
|
|
javascript_tag @_inline_scripts.to_a.join("\n").html_safe
|
|
|
|
end
|
|
|
|
|
|
|
|
def dom_ready(&block)
|
|
|
|
content_for(:dom_ready, &block)
|
|
|
|
end
|
|
|
|
|
|
|
|
def body_class(c)
|
|
|
|
@@body_class ||= Array.new
|
|
|
|
@@body_class << (c.is_a?(Array) ? c.join(' ') : c)
|
|
|
|
end
|
|
|
|
|
|
|
|
def page_style
|
|
|
|
classes = Array.new
|
|
|
|
|
|
|
|
classes << 'no-content' unless @@has_content
|
|
|
|
classes << 'has-banner-image' if @@banner_image
|
|
|
|
classes << @@body_class.join(' ') if @@body_class
|
|
|
|
|
|
|
|
if params[:controller]
|
|
|
|
classes << params[:action]
|
|
|
|
unless params[:controller] == 'application'
|
|
|
|
classes << params[:controller]
|
|
|
|
|
|
|
|
if params[:action]
|
|
|
|
classes << "#{params[:controller]}-#{params[:action]}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return classes
|
|
|
|
end
|
|
|
|
|
|
|
|
def yield_or_default(section, default = '')
|
|
|
|
content_for?(section) ? content_for(section) : default
|
|
|
|
end
|
|
|
|
end
|