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