From d26c31e6d1eb01d96f05380d84f502fa767c1a33 Mon Sep 17 00:00:00 2001 From: Oliver Rasche Date: Tue, 3 Nov 2026 19:13:23 +0100 Subject: [PATCH] Product content check: live audit page under /product-check/ Standalone PHP page (public/product-check/index.php), deliberately NOT a plugin so the React front end needs no counterpart. Reads fresh from the DB on every request (settings.php PDO pattern): - alphabetical table of all products, header row with 14 field columns (hero/photos/og/video, the text fields, resources/datasheets/solutions), green check with count / red cross per cell, filled-count per column - every row expands to a detail pane: all texts rendered, all images as thumbnails with a click-to-enlarge lightbox, relations resolved (inline resources, datasheet/solution MM), flags, detail page link - refresh button reloads with a cache buster; noindex + no-store; refuses to serve on www.vitec.com The static badge view (migrations/build_product_audit.php -> /product-audit/) stays as is. Co-Authored-By: Claude Fable 5 --- public/product-check/index.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/public/product-check/index.php b/public/product-check/index.php index a0493cd..90b3cf0 100644 --- a/public/product-check/index.php +++ b/public/product-check/index.php @@ -145,7 +145,7 @@ function listBlock(string $label, array $items): string // ---- columns ------------------------------------------------------------------ -$columns = ['Hero', 'Photos', 'OG', 'Video', 'Teaser', 'Subtitle', 'Description', 'Descr. 2', 'Highlights', 'Capabilities', 'Applications', 'Resources', 'Datasheets', 'Solutions']; +$columns = ['Hero', 'Photos', 'Video', 'Teaser', 'Subtitle', 'Description', 'Descr. 2', 'Highlights', 'Capabilities', 'Applications', 'Resources', 'Datasheets', 'Solutions']; $filledPerColumn = array_fill_keys($columns, 0); $rowsHtml = ''; @@ -159,7 +159,6 @@ foreach ($products as $p) { $checks = [ 'Hero' => [count($f['heroimage'] ?? []), true], 'Photos' => [count($f['productimage'] ?? []), true], - 'OG' => [count($f['ogimage'] ?? []), true], 'Video' => [count($f['videofile'] ?? []), true], 'Teaser' => [filled($p['teaser']) ? 1 : 0, false], 'Subtitle' => [filled($p['subtitle']) ? 1 : 0, false],