Add menu enable toggle, user status, and mobile/UI polish
- Admin menu page: mobile item cards now put Actions in the top-right
corner next to Status, matching the desktop row layout instead of
stacking at the bottom; same treatment applied to announcements and
users for consistency across all three admin lists
- Center button label text everywhere via .btn { justify-content: center }
instead of one-off overrides
- Add a Disable/Enable Menu toggle to the admin menu toolbar; the public
menu page shows its existing "menu being updated" message while disabled
- Add an Enabled/Disabled status to user accounts, with its own toggle
badge, guardrails against disabling your own account or the last
enabled account, and an immediate session kick for anyone disabled
mid-session
- Fix the announcement banner / hero tagline "·" separators to hide only
when their neighboring text actually wraps onto a different line,
instead of a fixed breakpoint or always-on dot
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
eab20899de
commit
cd4c6c1969
13 files changed
+405
-50
No files matched your search
+31
@@ -42,6 +42,7 @@ function init_db_schema(PDO $pdo): void {
|
||||
username TEXT UNIQUE NOT NULL,
|
||||
password_hash TEXT NOT NULL,
|
||||
role TEXT NOT NULL DEFAULT 'admin',
|
||||
is_enabled INTEGER NOT NULL DEFAULT 1,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
@@ -86,8 +87,31 @@ function init_db_schema(PDO $pdo): void {
|
||||
kitchen_close_time TEXT NULL,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Single-row table (id is pinned to 1) for site-wide toggles that
|
||||
-- don't belong to any one record — starting with whether the
|
||||
-- public menu page shows its items at all.
|
||||
CREATE TABLE IF NOT EXISTS site_settings (
|
||||
id INTEGER PRIMARY KEY CHECK (id = 1),
|
||||
menu_enabled INTEGER NOT NULL DEFAULT 1,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
");
|
||||
|
||||
// users.is_enabled shipped after the initial release — CREATE TABLE IF
|
||||
// NOT EXISTS above is a no-op against an existing table, so an install
|
||||
// from before this needs the column added explicitly, once.
|
||||
$hasIsEnabled = false;
|
||||
foreach ($pdo->query("PRAGMA table_info(users)") as $col) {
|
||||
if ($col['name'] === 'is_enabled') {
|
||||
$hasIsEnabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$hasIsEnabled) {
|
||||
$pdo->exec("ALTER TABLE users ADD COLUMN is_enabled INTEGER NOT NULL DEFAULT 1");
|
||||
}
|
||||
|
||||
// Seed default admin user if table is empty (username: admin / password: password)
|
||||
$stmt = $pdo->query("SELECT COUNT(*) as count FROM users");
|
||||
$userCount = $stmt->fetchColumn();
|
||||
@@ -125,4 +149,11 @@ function init_db_schema(PDO $pdo): void {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Seed the singleton settings row (menu on by default) if it doesn't exist yet.
|
||||
$stmt = $pdo->query("SELECT COUNT(*) as count FROM site_settings");
|
||||
$settingsCount = $stmt->fetchColumn();
|
||||
if ($settingsCount == 0) {
|
||||
$pdo->exec("INSERT INTO site_settings (id, menu_enabled) VALUES (1, 1)");
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user