- Implemented the Lakeside Orders demo rebrand:

New licensed lake, picnic, dining, server, burger, and food photography.
Rebuilt homepage gallery, logo, colors, copy, menu, specials, and 
exports.
Added dashboard-configurable branding in [settings.php (line 
18)](/Users/tyemeclifford/Documents/GH/fatbottomgrille/views/admin/settings.php:18).
Added a public attribution page and full [image 
credits](/Users/tyemeclifford/Documents/GH/fatbottomgrille/public/assets/images/CREDITS.md).
Migrated existing SQLite menu data and admin email to 
admin@lakesideorders.test.
Verified 51 PHP files, JSON/JavaScript, storefront pages, database 
migration, admin settings, and menu PDF. All passed.
This commit is contained in:
Ty Clifford
2026-06-14 14:26:09 -04:00
parent 03348cad79
commit b14f4c1796
33 changed files with 531 additions and 123 deletions
+19 -2
View File
@@ -567,6 +567,21 @@ final class AdminController extends BaseController
'business.postal_code',
'business.hours',
'business.announcement',
'branding.location_label',
'branding.meta_description',
'branding.hero_eyebrow',
'branding.hero_heading',
'branding.hero_emphasis',
'branding.hero_intro',
'branding.hero_image',
'branding.gallery_picnic_image',
'branding.gallery_patio_image',
'branding.gallery_service_image',
'branding.story_image',
'branding.story_eyebrow',
'branding.story_heading',
'branding.story_text',
'branding.footer_tagline',
'square.environment',
'square.application_id',
'square.location_id',
@@ -687,7 +702,9 @@ final class AdminController extends BaseController
. '/unsubscribe?user=' . $recipient['id'] . '&signature=' . $signature;
$html = '<p>Hi ' . htmlspecialchars((string) $recipient['full_name'], ENT_QUOTES, 'UTF-8') . ',</p>'
. '<div>' . nl2br(htmlspecialchars($content, ENT_QUOTES, 'UTF-8')) . '</div>'
. '<hr><p style="font-size:12px">You received this because you joined the Fat Bottom Grille news list. '
. '<hr><p style="font-size:12px">You received this because you joined the '
. htmlspecialchars((string) $this->config->get('business.name'), ENT_QUOTES, 'UTF-8')
. ' news list. '
. '<a href="' . htmlspecialchars($unsubscribe, ENT_QUOTES, 'UTF-8') . '">Unsubscribe</a></p>';
try {
$this->mailer->send((string) $recipient['email'], $subject, $html);
@@ -724,7 +741,7 @@ final class AdminController extends BaseController
$this->auth->requireStaff();
$orders = $this->db->fetchAll('SELECT * FROM orders ORDER BY placed_at DESC');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="fat-bottom-orders-' . date('Y-m-d') . '.csv"');
header('Content-Disposition: attachment; filename="lakeside-orders-' . date('Y-m-d') . '.csv"');
$output = fopen('php://output', 'wb');
fputcsv($output, [
'Order', 'Placed', 'Customer', 'Email', 'Phone', 'Status', 'Payment',
+8 -1
View File
@@ -48,7 +48,7 @@ final class StoreController extends BaseController
);
View::render('store/home', $this->shared([
'title' => 'Keyser comfort food, ready when you are',
'title' => 'Lakeside food, ready when you are',
'categories' => $categories,
'specials' => $specials,
'featured' => $featured,
@@ -66,6 +66,13 @@ final class StoreController extends BaseController
]));
}
public function credits(): void
{
View::render('store/credits', $this->shared([
'title' => 'Image Credits',
]));
}
public function addToCart(): void
{
Security::verifyCsrf();