discourse/app/views/layouts/application.html.erb
Sam a3e8c3cd7b FEATURE: Native theme support
This feature introduces the concept of themes. Themes are an evolution
of site customizations.

Themes introduce two very big conceptual changes:

- A theme may include other "child themes", children can include grand
children and so on.

- A theme may specify a color scheme

The change does away with the idea of "enabled" color schemes.

It also adds a bunch of big niceties like

- You can source a theme from a git repo

- History for themes is much improved

- You can only have a single enabled theme. Themes can be selected by
    users, if you opt for it.

On a technical level this change comes with a whole bunch of goodies

- All CSS is now compiled using a custom pipeline that uses libsass
    see /lib/stylesheet

- There is a single pipeline for css compilation (in the past we used
    one for customizations and another one for the rest of the app

- The stylesheet pipeline is now divorced of sprockets, there is no
   reliance on sprockets for CSS bundling

- CSS is generated with source maps everywhere (including themes) this
    makes debugging much easier

- Our "live reloader" is smarter and avoid a flash of unstyled content
   we run a file watcher in "puma" in dev so you no longer need to run
   rake autospec to watch for CSS changes
2017-04-12 10:53:49 -04:00

126 lines
3.9 KiB
Plaintext

<!DOCTYPE html>
<html lang="<%= SiteSetting.default_locale %>" class="<%= html_classes %>">
<head>
<meta charset="utf-8">
<title><%= content_for?(:title) ? yield(:title) + ' - ' + SiteSetting.title : SiteSetting.title %></title>
<meta name="description" content="<%= @description_meta || SiteSetting.site_description %>">
<meta name="discourse_theme_key" content="<%= theme_key %>">
<%= render partial: "layouts/head" %>
<%= render partial: "common/special_font_face" %>
<%= render partial: "common/discourse_stylesheet" %>
<%= discourse_csrf_tags %>
<%- if SiteSetting.enable_escaped_fragments? %>
<meta name="fragment" content="!">
<%- end %>
<%- if shared_session_key %>
<meta name="shared_session_key" content="<%= shared_session_key %>">
<%- end %>
<script>
window.EmberENV = window.EmberENV || {};
window.EmberENV['FORCE_JQUERY'] = true;
</script>
<%= script "locales/#{I18n.locale}" %>
<%= script "ember_jquery" %>
<%= script "preload-store" %>
<%= script "vendor" %>
<%= script "pretty-text-bundle" %>
<%= script "application" %>
<%- if allow_plugins? %>
<%= script "plugin" %>
<%- end %>
<%- if allow_third_party_plugins? %>
<%= script "plugin-third-party" %>
<%- end %>
<%- if staff? %>
<script src="<%= Discourse.base_uri %>/extra-locales/admin"></script>
<%= script "admin" %>
<%- end %>
<%- unless customization_disabled? %>
<%= raw theme_lookup("head_tag") %>
<%- end %>
<%= render_google_universal_analytics_code %>
<link rel="manifest" href="<%= Discourse.base_uri %>/manifest.json">
<%- if SiteSetting.native_app_install_banner? %>
<meta name="apple-itunes-app" content="app-id=1173672076">
<%- end %>
<%= yield :head %>
</head>
<body class="<%= body_classes %>">
<%= render_google_tag_manager_code %>
<div class='debug-eyeline'></div>
<noscript data-path="<%= request.env['PATH_INFO'] %>">
<%= render partial: 'header' %>
<div id="main-outlet" class="wrap">
<!-- preload-content: -->
<%= yield %>
<!-- :preload-content -->
<footer>
<nav itemscope itemtype='http://schema.org/SiteNavigationElement'>
<a href='<%= path "/" %>'><%= t 'home_title' %></a>
<%= link_to t('js.filters.categories.title'), path("/categories") %>
<%= link_to t('guidelines_topic.title'), path("/guidelines") %>
<%= link_to t('tos_topic.title'), path("/tos") %>
<%= link_to t('privacy_topic.title'), path("/privacy") %>
</nav>
</footer>
</div>
<footer id='noscript-footer'>
<p><%= t 'powered_by_html' %></p>
</footer>
</noscript>
<%- unless customization_disabled? || loading_admin? %>
<%= theme_lookup("header") %>
<%- end %>
<section id='main'>
</section>
<div id='offscreen-content'>
</div>
<% unless current_user %>
<form id='hidden-login-form' method="post" action="<%=main_app.login_path%>" style="display: none;">
<input name="username" type="text" id="signin_username">
<input name="password" type="password" id="signin_password">
<input name="redirect" type="hidden">
<input type="submit" id="signin-button" value="<%= t 'log_in' %>">
</form>
<% end %>
<%- if @preloaded.present? %>
<script>
(function() {
var ps = require('preload-store').default;
<%- @preloaded.each do |key, json| %>
ps.store("<%= key %>", <%= escape_unicode(json) %>);
<% end %>
})();
</script>
<%- end %>
<%= yield :data %>
<%= render :partial => "common/discourse_javascript" %>
<%= render_google_analytics_code %>
<%- unless customization_disabled? %>
<%= raw theme_lookup("body_tag") %>
<%- end %>
</body>
</html>