Cattura periodica client-side (con consenso), storage ActiveStorage e overlay allineato all’immagine. Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
2.9 KiB
ERB
50 lines
2.9 KiB
ERB
<!DOCTYPE html>
|
|
<html lang="<%= current_locale %>">
|
|
<head>
|
|
<title><%= t("admin.layout.title") %></title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="robots" content="noindex, nofollow">
|
|
<%= csrf_meta_tags %>
|
|
<link rel="stylesheet" href="/admin.css?v=15">
|
|
<% if content_for?(:replay_archive_styles) %>
|
|
<link rel="stylesheet" href="/marketing.css?v=42">
|
|
<% end %>
|
|
<% if controller_name == "dashboard" %>
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js" crossorigin="anonymous"></script>
|
|
<script src="/admin-dashboard.js?v=1" defer></script>
|
|
<% end %>
|
|
<link rel="stylesheet" href="/confirm-forms.css?v=4">
|
|
<script src="/confirm-forms.js?v=7" defer></script>
|
|
</head>
|
|
<body class="<%= content_for?(:body_class) ? yield(:body_class) : 'admin-body' %>">
|
|
<header class="admin-header">
|
|
<h1>MATCH <span>LIVE</span> TV — Admin</h1>
|
|
<nav class="admin-nav">
|
|
<% if admin_logged_in? %>
|
|
<%= link_to t("admin.layout.nav.dashboard"), admin_root_path, class: ("active" if controller_name == "dashboard") %>
|
|
<% ops_critical = Ops::Incident.critical_open.count %>
|
|
<%= link_to admin_ops_path, class: ("active" if controller_name == "ops") do %>
|
|
<%= t("admin.layout.nav.ops") %><% if ops_critical.positive? %> <span class="admin-nav-badge"><%= ops_critical %></span><% end %>
|
|
<% end %>
|
|
<%= link_to t("admin.layout.nav.announcements"), admin_announcements_path, class: ("active" if controller_name == "announcements") %>
|
|
<%= link_to t("admin.layout.nav.clubs"), admin_clubs_path, class: ("active" if controller_name.in?(%w[clubs teams club_recordings])) %>
|
|
<%= link_to t("admin.layout.nav.billing"), admin_billing_path, class: ("active" if controller_name.in?(%w[billing billing_invoices])) %>
|
|
<%= link_to t("admin.layout.nav.youtube"), admin_youtube_platform_path, class: ("active" if controller_name == "youtube") %>
|
|
<%= link_to t("admin.layout.nav.sessions"), admin_sessions_path, class: ("active" if controller_name == "sessions") %>
|
|
<%= link_to t("admin.layout.nav.analytics"), admin_analytics_path, class: ("active" if controller_name == "analytics") %>
|
|
<%= link_to t("admin.layout.nav.stream_nodes"), admin_stream_nodes_path, class: ("active" if controller_name == "stream_nodes") %>
|
|
<%= link_to t("admin.layout.nav.password"), edit_admin_password_path %>
|
|
<%= button_to t("admin.layout.nav.logout"), admin_logout_path, method: :delete %>
|
|
<% end %>
|
|
<%= render "shared/language_switcher", locale_path: admin_locale_path %>
|
|
</nav>
|
|
</header>
|
|
|
|
<main class="admin-main">
|
|
<% if flash[:notice] %><div class="admin-flash"><%= flash[:notice] %></div><% end %>
|
|
<% if flash[:alert] %><div class="admin-flash"><%= flash[:alert] %></div><% end %>
|
|
<%= yield %>
|
|
</main>
|
|
</body>
|
|
</html>
|