Add show management and going-live controls to admin

- admin/shows.php: list shows
- admin/show_edit.php: add, edit and delete shows, with validated
  background image uploads saved under generated names
- admin/index.php: queue the next show, switch the live show, or clear
  the queue
- includes/broadcasts.php: setBroadcastShow() and clearQueuedShow(),
  shared by the dashboard and cli/set_show.php
- includes/admin_layout.php: flash messages and Shows nav link

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Daniel MesserandClaude Opus 5.5 committed 2026-10-29 13:48:14 -05:00
1 parent babb71660c
commit 6e61fc6bda
7 files changed
+297 -12

No files matched your search

+11
View File
@@ -10,6 +10,12 @@ function e(string $s): string {
return htmlspecialchars($s, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}
// One-time status message shown at the top of the next admin page (for post-redirect-get)
function flash(string $message, string $type = 'success'): void {
startAdminSession();
$_SESSION['flash'] = ['message' => $message, 'type' => $type];
}
function adminHeader(string $title, ?array $admin = null): void {
?>
<!DOCTYPE HTML>
@@ -56,6 +62,7 @@ function adminHeader(string $title, ?array $admin = null): void {
<?php if ($admin): ?>
<ul class="admin-nav">
<li><a href="index.php">Dashboard</a></li>
<li><a href="shows.php">Shows</a></li>
<li><a href="../live.php">View live page</a></li>
</ul>
<form method="post" action="logout.php">
@@ -72,6 +79,10 @@ function adminHeader(string $title, ?array $admin = null): void {
<h2><?= e($title) ?></h2>
</header>
<?php
if (!empty($_SESSION['flash'])) {
echo '<p class="admin-message ' . e($_SESSION['flash']['type']) . '">' . e($_SESSION['flash']['message']) . "</p>\n";
unset($_SESSION['flash']);
}
}
function adminFooter(): void {