* move reaction icons to base layout * fix reactions count specs?? * also fix article specs
116 lines
6.9 KiB
Text
116 lines
6.9 KiB
Text
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<% title = yield(:title) %>
|
|
<title><%= title || community_name.to_s %></title>
|
|
<% unless internal_navigation? %>
|
|
<meta name="last-updated" content="<%= Time.current %>">
|
|
<meta name="user-signed-in" content="<%= user_signed_in? %>">
|
|
<meta name="head-cached-at" content="<%= Time.current.to_i %>">
|
|
<% if Settings::General.payment_pointer.present? %>
|
|
<!-- Experimental web monetization payment pointer for micropayments -->
|
|
<!-- It lets readers make micropayments to websites they visit. -->
|
|
<!-- This is step 1: Get live in production to test for platform-wide payment pointer. -->
|
|
<!-- Step 2: Allow authors to set their payment pointer so they can directly monetize their content based on visitors. -->
|
|
<!-- Step 3: Enable further functionality based on what we learn from this experimentation and how the ecosystem evolves. -->
|
|
<meta name="monetization" content="<%= Settings::General.payment_pointer %>">
|
|
<% end %>
|
|
<meta name="environment" content="<%= Rails.env %>">
|
|
<%= render "layouts/styles", qualifier: "main" %>
|
|
<%= javascript_include_tag "base", defer: true %>
|
|
<% if user_signed_in? %>
|
|
<%= javascript_packs_with_chunks_tag "base", "baseInitializers", "Search", "runtimeBanner", "onboardingRedirectCheck", "contentDisplayPolicy", "baseTracking", defer: true %>
|
|
<% else %>
|
|
<%= javascript_packs_with_chunks_tag "base", "baseInitializers", "Search", "runtimeBanner", "baseTracking", defer: true %>
|
|
<% end %>
|
|
<%= yield(:page_meta) %>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
|
|
<%= favicon_link_tag Images::Optimizer.call(Settings::General.favicon_url, width: 32) %>
|
|
<link rel="apple-touch-icon" href="<%= optimized_image_url(Settings::General.logo_png, width: 180, fetch_format: "png") %>">
|
|
<link rel="apple-touch-icon" sizes="152x152" href="<%= optimized_image_url(Settings::General.logo_png, width: 152, fetch_format: "png") %>">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="<%= optimized_image_url(Settings::General.logo_png, width: 180, fetch_format: "png") %>">
|
|
<link rel="apple-touch-icon" sizes="167x167" href="<%= optimized_image_url(Settings::General.logo_png, width: 167, fetch_format: "png") %>">
|
|
<link href="<%= optimized_image_url(Settings::General.logo_png, width: 192, fetch_format: "png") %>" rel="icon" sizes="192x192" />
|
|
<link href="<%= optimized_image_url(Settings::General.logo_png, width: 128, fetch_format: "png") %>" rel="icon" sizes="128x128" />
|
|
<meta name="apple-mobile-web-app-title" content="<%= Settings::General.app_domain %>">
|
|
<meta name="application-name" content="<%= Settings::General.app_domain %>">
|
|
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
|
|
<meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)">
|
|
<link rel="search" href="<%= URL.url("open-search.xml") %>" type="application/opensearchdescription+xml" title="<%= community_name %>" />
|
|
|
|
<meta property="forem:name" content="<%= community_name %>" />
|
|
<meta property="forem:logo" content="<%= optimized_image_url(Settings::General.logo_png, width: 512, fetch_format: "png") %>" />
|
|
<meta property="forem:domain" content="<%= Settings::General.app_domain %>" />
|
|
<% end %>
|
|
</head>
|
|
<% unless internal_navigation? %>
|
|
<% cache(release_adjusted_cache_key("top-html-and-config--#{user_signed_in?}")) do %>
|
|
<body
|
|
class="<%= Settings::UserExperience.default_font.tr("_", "-") %>-article-body default-header"
|
|
data-user-status="<%= j(user_logged_in_status) %>"
|
|
data-community-name="<%= j(community_name) %>"
|
|
data-locale="<%= j(I18n.locale) %>"
|
|
data-honeybadger-key="<%= j(ApplicationConfig["HONEYBADGER_JS_API_KEY"]) %>"
|
|
data-deployed-at="<%= j(ForemInstance.deployed_at) %>"
|
|
data-latest-commit-id="<%= j(ForemInstance.latest_commit_id) %>"
|
|
data-ga-tracking="<%= j(Settings::General.ga_tracking_id) %>"
|
|
data-ga4-tracking-id="<%= j(Settings::General.ga_analytics_4_id) %>">
|
|
<%# Repeat of stylesheets in <head> to fix rendering glitch: https://github.com/forem/forem/issues/12377 %>
|
|
<%= render "layouts/styles", qualifier: "secondary" %>
|
|
<div id="body-styles">
|
|
<style>
|
|
:root {
|
|
--accent-brand-lighter-rgb: <%= Color::CompareHex.new([Settings::UserExperience.primary_brand_color_hex]).brightness(1.35, only_values: true) %>;
|
|
--accent-brand-rgb: <%= Color::CompareHex.new([Settings::UserExperience.primary_brand_color_hex]).brightness(1, only_values: true) %>;
|
|
--accent-brand-darker-rgb: <%= Color::CompareHex.new([Settings::UserExperience.primary_brand_color_hex]).brightness(0.8, only_values: true) %>;
|
|
}
|
|
</style>
|
|
</div>
|
|
<% if user_signed_in? %>
|
|
<%= render "layouts/user_config" %>
|
|
<% end %>
|
|
<div id="audiocontent" data-podcast="">
|
|
<%= yield(:audio) %>
|
|
</div>
|
|
<%= render "layouts/top_bar" %>
|
|
<div id="active-broadcast" class="broadcast-wrapper"></div>
|
|
<% end %>
|
|
<% end %>
|
|
<% if Settings::General.payment_pointer.present? %>
|
|
<div id="base-payment-pointer" data-payment-pointer="<%= Settings::General.payment_pointer %>"></div>
|
|
<% end %>
|
|
<div id="page-content" class="wrapper <%= view_class %>" data-current-page="<%= current_page %>">
|
|
<% if flash[:global_notice] %>
|
|
<div class="crayons-banner" id="setup-banner" aria-live="polite">
|
|
<%== flash[:global_notice] %>
|
|
</div>
|
|
<% end %>
|
|
<div id="page-content-inner">
|
|
<div id="page-route-change" class="screen-reader-only" aria-live="polite" aria-atomic="true"></div>
|
|
|
|
<% if @hero_html && @hero_display_ad.blank? %>
|
|
<aside id="hero-html-wrapper" aria-label="Campaign banner" class="overflow-x-hidden" data-name="<%= @hero_area.name %>">
|
|
<script>
|
|
// Make sure html variant element has id hero-html-wrapper and data-name as its name
|
|
if (localStorage.getItem('exited_hero') === '<%= @hero_area.name.html_safe %>') {
|
|
document.getElementById('hero-html-wrapper').style.display = 'none';
|
|
}
|
|
</script>
|
|
<%= @hero_html.html_safe %>
|
|
</aside>
|
|
<% end %>
|
|
<%= yield %>
|
|
<div id="runtime-banner-container"></div>
|
|
</div>
|
|
</div>
|
|
<% unless internal_navigation? %>
|
|
<% cache("footer-and-signup-modal-#{user_signed_in?}-#{ForemInstance.deployed_at}-#{Settings::General.admin_action_taken_at&.rfc3339}", expires_in: 24.hours) do %>
|
|
<%= render "layouts/footer" %>
|
|
<%= render "layouts/signup_modal" unless user_signed_in? %>
|
|
<% end %>
|
|
<div id="i18n-translations" data-translations="<%= { I18n.locale.to_sym => { core: I18n::JS.translations[I18n.locale.to_sym][:core] } }.to_json %>"></div>
|
|
<%= render "articles/reaction_category_resources" %>
|
|
</body>
|
|
</html>
|
|
<% end %>
|