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 <noreply@anthropic.com>
This commit is contained in:
orascheandClaude Fable 5 committed 2026-11-03 19:13:23 +01:00
1 parent ed3ced42b3
commit d26c31e6d1
1 file changed
+1 -2
+1 -2
View File
@@ -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],