mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-21 09:07:49 +08:00
JS assets defined under `admin/` in plugins are compiled into a separate bundle that should be loaded for staff users only, but we currently load it for all users including normal users and anons. This is wasteful and unexpected since it could cause errors if an asset in the admin bundle of a plugin imports a module from the admin bundle in core (which doesn't get loaded for non-staff users).
152 lines
5.5 KiB
Text
Vendored
152 lines
5.5 KiB
Text
Vendored
<!DOCTYPE html>
|
|
<html lang="<%= html_lang %>" class="<%= html_classes %>">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title><%= title_content %></title>
|
|
<meta name="description" content="<%= description_content %>">
|
|
<meta name="discourse_theme_id" content="<%= theme_id %>">
|
|
<meta name="discourse_current_homepage" content="<%= current_homepage %>">
|
|
|
|
<%- if GlobalSetting.early_hint_header_mode == "prefetch" %>
|
|
<%= render partial: "common/discourse_preload_stylesheet" %>
|
|
<%- end %>
|
|
<%= render partial: "layouts/head" %>
|
|
<%= 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 %>
|
|
|
|
<%= build_plugin_html 'server:before-script-load' %>
|
|
|
|
<% add_resource_preload_list(script_asset_path("start-discourse"), "script") %>
|
|
<% add_resource_preload_list(script_asset_path("browser-update"), "script") %>
|
|
<link rel="preload" href="<%= script_asset_path "start-discourse" %>" as="script" nonce="<%= csp_nonce_placeholder %>">
|
|
<link rel="preload" href="<%= script_asset_path "browser-update" %>" as="script" nonce="<%= csp_nonce_placeholder %>">
|
|
|
|
<%= preload_script 'browser-detect' %>
|
|
|
|
<%= preload_script "vendor" %>
|
|
<%= preload_script "discourse" %>
|
|
<%- Discourse.find_plugin_js_assets(include_official: allow_plugins?, include_unofficial: allow_third_party_plugins?, request: request, include_admin_asset: staff?).each do |file| %>
|
|
<%= preload_script file %>
|
|
<%- end %>
|
|
|
|
<%= preload_script_url ExtraLocalesController.url("main"), type_module: true %>
|
|
<%= preload_script_url ExtraLocalesController.url("mf"), type_module: true %>
|
|
<%- if ExtraLocalesController.client_overrides_exist? %>
|
|
<%= preload_script_url ExtraLocalesController.url("overrides"), type_module: true %>
|
|
<%- end %>
|
|
|
|
<%- if staff? %>
|
|
<%= preload_script_url ExtraLocalesController.url("admin"), type_module: true %>
|
|
<%= preload_script "admin" %>
|
|
<%- end %>
|
|
|
|
<%- if admin? %>
|
|
<%= preload_script_url ExtraLocalesController.url("wizard"), type_module: true %>
|
|
<%- end %>
|
|
|
|
<%- unless customization_disabled? %>
|
|
<%= theme_translations_lookup %>
|
|
<%= theme_js_lookup %>
|
|
<%= theme_lookup("head_tag") %>
|
|
<%- end %>
|
|
|
|
<%= render_google_tag_manager_head_code %>
|
|
<%= render_google_universal_analytics_code %>
|
|
<%= render_adobe_analytics_tags_code %>
|
|
|
|
<link id="manifest-link" rel="manifest" href=<%= manifest_url %> crossorigin="use-credentials">
|
|
|
|
<%- if include_ios_native_app_banner? %>
|
|
<meta name="apple-itunes-app" content="app-id=<%= SiteSetting.ios_app_id %><%= ios_app_argument %>">
|
|
<%- end %>
|
|
|
|
<%= yield :head %>
|
|
|
|
<%= build_plugin_html 'server:before-head-close' %>
|
|
|
|
<%= tag.meta id: 'data-discourse-setup', data: client_side_setup_data %>
|
|
|
|
<meta name="discourse/config/environment" content="<%=u discourse_config_environment %>" />
|
|
<%- if authentication_data %>
|
|
<meta id="data-authentication" data-authentication-data="<%= authentication_data %>">
|
|
<%- end %>
|
|
</head>
|
|
|
|
<body class="<%= body_classes %>">
|
|
<%- if include_splash_screen? %>
|
|
<%= render partial: "common/discourse_splash" %>
|
|
<%- end %>
|
|
|
|
<discourse-assets>
|
|
<discourse-assets-stylesheets>
|
|
<%= render partial: "common/discourse_stylesheet" %>
|
|
</discourse-assets-stylesheets>
|
|
<discourse-assets-json>
|
|
<div class="hidden" id="data-preloaded" data-preloaded="<%= preloaded_json %>"></div>
|
|
</discourse-assets-json>
|
|
<discourse-assets-icons></discourse-assets-icons>
|
|
</discourse-assets>
|
|
|
|
<%- if allow_plugins? %>
|
|
<%= build_plugin_html 'server:after-body-open' %>
|
|
<%- end -%>
|
|
|
|
<%= render_google_tag_manager_body_code %>
|
|
<noscript data-path="<%= request.env['PATH_INFO'] %>">
|
|
<%= escape_noscript do %>
|
|
<%= render partial: "layouts/noscript_header" %>
|
|
|
|
<div id="main-outlet" class="wrap" role="main">
|
|
<!-- preload-content: -->
|
|
<%= yield %>
|
|
<!-- :preload-content -->
|
|
</div>
|
|
|
|
<%= render partial: "layouts/noscript_footer" %>
|
|
<% end %>
|
|
</noscript>
|
|
|
|
<%- unless customization_disabled? %>
|
|
<%= theme_lookup("header") %>
|
|
<%- end %>
|
|
|
|
<%- if allow_plugins? %>
|
|
<%= build_plugin_html 'server:header' %>
|
|
<%- end %>
|
|
|
|
<section id='main'>
|
|
</section>
|
|
|
|
<% 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 %>
|
|
|
|
<script defer src="<%= script_asset_path "start-discourse" %>" nonce="<%= csp_nonce_placeholder %>"></script>
|
|
|
|
<%= yield :data %>
|
|
|
|
<script defer src="<%= script_asset_path "browser-update" %>" nonce="<%= csp_nonce_placeholder %>"></script>
|
|
|
|
<%- unless customization_disabled? %>
|
|
<%= theme_lookup("body_tag") %>
|
|
<%- end %>
|
|
|
|
<%- if allow_plugins? %>
|
|
<%= build_plugin_html 'server:before-body-close' %>
|
|
<%- end %>
|
|
|
|
<script nonce="<%= csp_nonce_placeholder %>">/* Workaround for https://bugs.webkit.org/show_bug.cgi?id=209261 */</script>
|
|
</body>
|
|
</html>
|