Restructure the Dockerfile and the CSS/JS files so that we only rebuild the CSS and JS when they change, not on every commit. Before it took several minutes to rebuild the Docker image after every commit, even when the JS/CSS files didn't change. This also made pulling images slower. This requires refactoring the CSS and JS to not use embedded Ruby (ERB) templates, since this made the CSS and JS dependent on the Ruby codebase, which is why we had to rebuild the assets after every Ruby change.
110 lines
4.1 KiB
Plaintext
110 lines
4.1 KiB
Plaintext
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<%= NewRelic::Agent.browser_timing_header rescue "" %>
|
|
<meta charset="utf-8">
|
|
<title><%= page_title %></title>
|
|
|
|
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
|
<%= render_meta_links @current_item if @current_item.respond_to?(:paginate) %>
|
|
<%= tag.link rel: "canonical", href: canonical_url %>
|
|
<%= tag.link rel: "search", type: "application/opensearchdescription+xml", href: opensearch_url(format: :xml, version: 2), title: "Search posts" %>
|
|
|
|
<%= csrf_meta_tag %>
|
|
<% unless CurrentUser.enable_desktop_mode? %>
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<% end %>
|
|
<% if CurrentUser.user.blacklisted_tags.present? %>
|
|
<meta name="blacklisted-tags" content="<%= CurrentUser.user.blacklisted_tags.gsub(/(?:\r|\n)+/, ",") %>">
|
|
<% end %>
|
|
|
|
<%= tag.meta name: "autocomplete-tag-prefixes", content: AutocompleteService::TAG_PREFIXES.to_json %>
|
|
|
|
<%# XXX hack to only load Ruffle on Flash posts %>
|
|
<% if controller_name == "posts" && action_name == "show" && @post&.is_flash? %>
|
|
<%= javascript_pack_tag "application", "flash" %>
|
|
<% else %>
|
|
<%= javascript_pack_tag "application" %>
|
|
<% end %>
|
|
|
|
<%= stylesheet_pack_tag "application" %>
|
|
<% if CurrentUser.user.custom_style.present? && params.fetch(:css, "true").truthy? %>
|
|
<%= stylesheet_link_tag custom_style_users_path(md5: Digest::MD5.hexdigest(CurrentUser.user.custom_style)), media: "screen" %>
|
|
<% end %>
|
|
|
|
<% if current_page?(root_url) %>
|
|
<%= json_ld_website_data %>
|
|
<% end %>
|
|
|
|
<%= tag.meta name: "description", content: meta_description %>
|
|
<%= tag.meta property: "og:type", content: "website" %>
|
|
<%= tag.meta property: "og:site_name", content: Danbooru.config.app_name %>
|
|
<%= tag.meta property: "og:title", content: page_title %>
|
|
<%= tag.meta property: "og:description", content: meta_description %>
|
|
<%= tag.meta property: "og:url", content: request.original_url %>
|
|
|
|
<% if Danbooru.config.twitter_username.present? %>
|
|
<%= tag.meta name: "twitter:site", content: "@#{Danbooru.config.twitter_username}" %>
|
|
<% end %>
|
|
|
|
<%= tag.meta name: "twitter:title", content: page_title %>
|
|
<%= tag.meta name: "twitter:description", content: meta_description %>
|
|
|
|
<%= tag.meta name: "git-hash", content: Rails.application.config.x.git_hash %>
|
|
<%= tag.meta name: "theme-color", content: "hsl(213, 100%, 50%)" %>
|
|
|
|
<%= yield :html_header %>
|
|
<%= raw Danbooru.config.custom_html_header_content %>
|
|
</head>
|
|
<%= tag.body **body_attributes(CurrentUser.user, params, @current_item) do %>
|
|
<%= render "news_updates/listing" %>
|
|
|
|
<header id="top">
|
|
<%= link_to Danbooru.config.app_name, root_path, id: "app-name-header", class: "heading" %>
|
|
|
|
<div id="maintoggle" class="mobile-only">
|
|
<a href="#"><%= menu_icon(id: "maintoggle-on") %></a>
|
|
<a href="#"><%= close_icon(id: "maintoggle-off", style: "display: none;") %></a>
|
|
</div>
|
|
|
|
<nav id="nav">
|
|
<%= render "layouts/main_links" %>
|
|
<% if content_for(:secondary_links).present? %>
|
|
<menu id="subnav-menu">
|
|
<%= yield :secondary_links %>
|
|
</menu>
|
|
<% end %>
|
|
</nav>
|
|
</header>
|
|
|
|
<div id="page">
|
|
<%= render "users/verification_notice" %>
|
|
|
|
<% if !CurrentUser.is_anonymous? && !CurrentUser.is_gold? && !CurrentUser.user.is_banned? && cookies[:hide_upgrade_account_notice].blank? && params[:action] != "upgrade_information" %>
|
|
<%= render "users/upgrade_notice" %>
|
|
<% end %>
|
|
|
|
<%= render "users/ban_notice" %>
|
|
|
|
<% if params[:controller] != "dmails" && has_unread_dmails?(CurrentUser.user) %>
|
|
<%= render "users/dmail_notice" %>
|
|
<% end %>
|
|
|
|
<div class="notice notice-info" id="notice" style="<%= "display: none;" unless flash[:notice] %>">
|
|
<span class="prose"><%= format_text(flash[:notice], inline: true) %>.</span>
|
|
<a href="#" id="close-notice-link">close</a>
|
|
</div>
|
|
|
|
<%= yield :layout %>
|
|
</div>
|
|
|
|
<div id="tooltips">
|
|
<div id="post-tooltips"></div>
|
|
<div id="user-tooltips"></div>
|
|
<div id="popup-menus"></div>
|
|
</div>
|
|
|
|
<%= render "static/footer" %>
|
|
<% end %>
|
|
</html>
|