format :html do
view :raw do
%(
#{ head_title }
#{ head_buttons }
#{ head_stylesheets }
#{ head_javascript }
)
end
view :core do |args|
case
when focal? then CGI.escapeHTML _render_raw(args)
when @mainline then "(*head)"
else _render_raw(args)
end
end
def head_title
title = root.card && root.card.name
title = nil if title.blank?
title = params[:action] if title=='*placeholder'
%(
#{title ? "#{title} - " : ''}#{ Card.global_setting :title })
end
def head_buttons
bits = [favicon]
if root.card
bits << universal_edit_button
# RSS # move to mods!
if root.card.type_id == SearchTypeID
bits << rss_link
end
end
bits.compact.join "\n "
end
def favicon
[:favicon, :logo].each do |name|
if (c = Card[name]) && c.type_id == ImageID && !c.db_content.blank?
href = subformat(c)._render_source size: :small
return %{}
end
end
end
def universal_edit_button
return if root.card.new_record? || !root.card.ok?(:update)
href = root.path view: :edit
%{}
end
def rss_link
opts = { format: :rss }
root.search_params[:vars].each { |key, val| opts["_#{key}"] = val }
href = page_path root.card.cardname, opts
%{}
end
def head_stylesheets
manual_style = params[:style]
style_card = Card[manual_style] if manual_style
style_card ||= root.card.rule_card :style
@css_path =
if params[:debug] == 'style'
page_path(style_card.cardname, item: :import, format: :css)
elsif style_card
card_path style_card.machine_output_url
end
return unless @css_path
%{}
end
def head_javascript
varvals = [
"window.wagn={rootPath:'#{ Card.config.relative_url_root }'}",
# tinyMCE doesn't load on non-root wagns w/o preinit line
"window.tinyMCEPreInit={base:\"#{card_path 'assets/tinymce'}\",query:'3.5.9',suffix:''}"
]
card.have_recaptcha_keys? &&
varvals << "wagn.recaptchaKey='#{Card.config.recaptcha_public_key}'"
(c = Card[:double_click]) && !Card.toggle(c.content) &&
varvals << 'wagn.noDoubleClick=true'
@css_path &&
varvals << "wagn.cssPath='#{@css_path}'"
manual_script = params[:script]
script_card = Card[manual_script] if manual_script
script_card ||= root.card.rule_card :script
@js_tag =
if params[:debug] == 'script'
script_card.format(:js).render_core item: :include_tag
elsif script_card
javascript_include_tag script_card.machine_output_url
end
ie9_card = Card[:script_html5shiv_printshiv]
<<-HTML
#{ javascript_tag do varvals * ';' end }
#{ @js_tag if @js_tag }
#{ javascript_tag { "wagn.setTinyMCEConfig('#{ escape_javascript Card.global_setting(:tiny_mce).to_s }')" } }
#{ google_analytics_head_javascript }
HTML
end
def google_analytics_head_javascript
return unless (ga_key = Card.global_setting(:google_analytics_key))
<<-JAVASCRIPT
JAVASCRIPT
end
end