Datapath stories, grid repairs, menu v2 pure, hero placeholders, fec test
Batch of 2026-10-28/29 plus 2026-11-03: - NEW vitec:import-datapath-stories: 22 story packages from the agency dump (docx + Links/ assets) as usecase records with content, quotes, images, customer logos, download cards; --repair-quotes normalizes attribution lines; asset backfill for existing stories - /products grid incident repaired (fix_products_grid, fix_graphics_grid, check_grid_page): containers unhidden, 46 duplicate cards soft-deleted, section order restored; BuildProductPortfolio and ImportProductCategoryPages now GUARD against re-runs on pages that already carry vitec_cols_% containers - ' double-encoding fixed: render-pipeline importers write literal apostrophes (ENT_NOQUOTES), fix_double_entities literalizes existing rows - ticket quick wins (ticket_quickwins_20261028), broadcast market page cleanup, AttachCardImages market-card handling, SubmarketWorkbook META REPAIR, story content/video fixes (fix_story_*) - ProvideProductCatalog: transitional v1 fields removed (categories uid/link, legacyGroupFields, item products teaser) - pure v2 shape (ticket 0024-FE); search renderer keeps its teaser - BuildProductOverviews: heroes get the numbered placeholder background (placeholders/pages/<uid>-01.png, wide grey fallback) - backfill on existing pages with empty hero_bgimage, attached at creation for new pages; existing references always win (ticket 0026-FE); 40 placeholder PNGs shipped to fileadmin (not tracked) - AttachPageMedia: --depth=3 with sysfolders as pass-through parents for the overview pages' -08 menu tiles - NEW migrations/fec_isolation_test.sh: two-user live test proving fe_comment ticket isolation (backend verified tight, cross-user sighting traced to the FE page-JSON cache, ticket 0027-BE) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9211c8a395
commit
77661bf0b6
22 files changed
+2103
-63
No files matched your search
@@ -79,6 +79,24 @@ final class BuildProductPortfolioCommand extends Command
|
||||
return Command::FAILURE;
|
||||
}
|
||||
$pageUid = (int)$root['uid'];
|
||||
|
||||
// Guard (2026-10-28, Ticket 0014-FE): nach vitec:wrap-cards-in-grid
|
||||
// stecken die Karten IN vitec_cols-Containern (colPos 221-223), wo
|
||||
// der Slot-Cursor sie nicht sieht - ein Re-Run hat deshalb die 15
|
||||
// Container versteckt und 38 Duplikat-Karten erzeugt (Repair:
|
||||
// migrations/fix_products_grid.php). Auf einer gewickelten Seite
|
||||
// darf dieser Builder nicht mehr laufen.
|
||||
$containerCount = (int)GeneralUtility::makeInstance(ConnectionPool::class)
|
||||
->getConnectionForTable('tt_content')->fetchOne(
|
||||
"SELECT COUNT(*) FROM tt_content WHERE deleted = 0 AND pid = ? AND CType LIKE 'vitec_cols_%'",
|
||||
[$pageUid]
|
||||
);
|
||||
if ($containerCount > 0) {
|
||||
$output->writeln('<error>/products ist grid-gewickelt (' . $containerCount
|
||||
. ' vitec_cols-Container). Ein Re-Run wuerde Karten duplizieren und die Grids verstecken - Abbruch.'
|
||||
. ' Fuer Einzelaenderungen die Karten im BE pflegen oder erst die Grids aufloesen.</error>');
|
||||
return Command::FAILURE;
|
||||
}
|
||||
// the page sits on layout 0 (Default, main only) - the portfolio
|
||||
// needs hero/main/preFooter: 1 "Index Page" (diagnosis 2026-10-27:
|
||||
// the page's own content was all deleted, the rendered payload came
|
||||
@@ -391,7 +409,9 @@ final class BuildProductPortfolioCommand extends Command
|
||||
private function p(string $text): string
|
||||
{
|
||||
$text = trim($text);
|
||||
return $text === '' ? '' : '<p>' . htmlspecialchars($text, ENT_QUOTES | ENT_HTML5) . '</p>';
|
||||
// ENT_NOQUOTES (2026-10-28, Ticket 0014-FE): ENT_QUOTES machte ' zu ',
|
||||
// und die RTE-Persistenz escapte das & gleich nochmal (&apos; im JSON)
|
||||
return $text === '' ? '' : '<p>' . htmlspecialchars($text, ENT_NOQUOTES | ENT_HTML5) . '</p>';
|
||||
}
|
||||
|
||||
private function norm(string $value): string
|
||||
|
||||
Reference in new issue
Block a user