Success stories: downloads and product sections become real plugins
- comparison report migrations/check_product_downloads.php (kept, read-only): download records vs. the delivered product workbooks - 34 of 74 workbook products have a datasheet, the entire Datapath line has none in the pool (import came from vitec.com; queued for Joe), ~35 orphan datasheets belong to products without records; a vitec:link-product-downloads re-run added seven clean links (Artio x2, Diamond-H, the three TOUGH records, X-View) - RTE resolution fixed at the root: ContentElementResolver and ContainerChildrenProcessor passed bodytext RAW into the payload, so t3:// links leaked unresolved; both now run RTE columns (bodytext, vitec_quote) through RteResolver::html() - the imported "Download Success Story" RTE buttons carried the wrong link identifier (tx_vitec_download -> download, one-time migration fix_download_record_links.php) AND old-site uids - missing here or, worse, accidentally pointing at foreign PDFs. New vitec:convert-story-download-buttons replaces them with real vitec_downloadcard plugins: the download is resolved by STORY title (manual map for ISR / "Okada Manilla", exact-title fallback for suffixless PDFs like "Lord's Cricket Ground"); 29 converted, 4 stories without a delivered PDF have their button hidden. New FlexForm layout "Success Story Download" (story_download) applied everywhere; the FE renders it as the previous centered button - the ADIB "Featured Products" text section (the only one site-wide, verified by scan_story_headers.php) is now ONE vitec_productlist with hand-picked products via old-name aliases and the new FlexForm layout "Success Story Products" (story_products); the four text elements are deleted. vitec:convert-story-product-sections stays re-runnable for future imports - the productlist envelope additionally carries "columns" (= number of products, capped at 4) so the story grid renders as many columns as it has products - additive key, available to every product list; and hand-picked lists now ship successStories as an empty array (the empty category selection used to aggregate stories over the WHOLE tree, leaking story cards into the section) - the story downloadcards carry header "Downloads" (set on convert and backfilled): the front end builds the story anchor nav from element headers, so the section now appears there - diagnosis scripts kept: check_download_record, check_story_elements, scan_story_headers; verified live on the ADIB payload (structured download object, productlist [5,18,6], texts 10 -> 5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
80f6da7949
commit
d87e64f73b
12 files changed
+763
-2
No files matched your search
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
// Scan: all text-element headers inside usecase content, grouped. READ-ONLY.
|
||||
error_reporting(E_ALL); ini_set('display_errors', '1');
|
||||
$root = null; $dir = __DIR__;
|
||||
for ($i = 0; $i < 5; $i++) { if (is_file($dir . '/config/system/settings.php')) { $root = $dir; break; } $dir = dirname($dir); }
|
||||
if ($root === null) { exit("no root\n"); }
|
||||
$db = (require $root . '/config/system/settings.php')['DB']['Connections']['Default'];
|
||||
$pdo = new PDO(sprintf('mysql:host=%s;port=%s;dbname=%s;charset=utf8mb4', $db['host'] ?? 'localhost', $db['port'] ?? 3306, $db['dbname'] ?? ''), $db['user'] ?? '', $db['password'] ?? '', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]);
|
||||
echo "=== Header von text-Elementen in Story-Content (gruppiert) ===\n";
|
||||
foreach ($pdo->query("SELECT TRIM(header) h, COUNT(*) c FROM tt_content WHERE deleted = 0 AND tx_vitec_usecase_content > 0 AND CType = 'text' AND TRIM(COALESCE(header,'')) <> '' GROUP BY TRIM(header) ORDER BY c DESC, h") as $r) {
|
||||
printf(" %3d x %s\n", $r['c'], $r['h']);
|
||||
}
|
||||
echo "\n=== CTypes in Story-Content gesamt ===\n";
|
||||
foreach ($pdo->query("SELECT CType, COUNT(*) c FROM tt_content WHERE deleted = 0 AND tx_vitec_usecase_content > 0 GROUP BY CType ORDER BY c DESC") as $r) {
|
||||
printf(" %3d x %s\n", $r['c'], $r['CType']);
|
||||
}
|
||||
|
||||
echo "\n=== Header von Kind-Elementen in Story-vitec_columns ===\n";
|
||||
foreach ($pdo->query(
|
||||
"SELECT TRIM(c.header) h, c.CType, COUNT(*) n FROM tt_content c
|
||||
WHERE c.deleted = 0 AND TRIM(COALESCE(c.header,'')) <> ''
|
||||
AND c.tx_container_parent IN (
|
||||
SELECT p.uid FROM tt_content p
|
||||
WHERE p.deleted = 0 AND p.tx_vitec_usecase_content > 0 AND p.CType = 'vitec_columns')
|
||||
GROUP BY TRIM(c.header), c.CType ORDER BY n DESC, h"
|
||||
) as $r) {
|
||||
printf(" %3d x %-14s %s\n", $r['n'], $r['CType'], $r['h']);
|
||||
}
|
||||
Reference in new issue
Block a user