From ac03f807c1e89d7e0e566cdbbb1c2f1bf013a5f9 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Fri, 24 Apr 2026 00:55:05 +0200 Subject: [PATCH] =?UTF-8?q?feat(02-product-actions-fixes):=20Phase=2002=20?= =?UTF-8?q?complete=20=E2=80=94=20customization,=20price=20label,=20struct?= =?UTF-8?q?ure=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plan 02-03: Customization save + success modal (5/5 AC) - 26-field squaremeter POST payload (verbose PL dim, qty_alt/qty_alth) - Chain POST /module/ps_shoppingcart/ajax -> Bootstrap #blockcart-modal - Critical fix: moved {/block} so inline script actually renders - __p02p02InFlight re-entrancy guard Plan 02-04: Live cena per-sqm label obok "Dodaj do koszyka" (5/5 AC) - .p02p04-total-price label, gorna .current-price static - Separate __p02p04Bound + setInterval reconciliation - Poll-retry prestashop.on registration Plan 02-05: Struktura materialu w POST payload (4/4 AC) - Enumerate [name^="group["] spoza formy, doklej do payload - Fix: group_5 select w .product-bar-box nie trafial do koszyka Co-Authored-By: Claude Opus 4.7 (1M context) --- .paul/PROJECT.md | 46 ++- .paul/ROADMAP.md | 47 ++- .paul/STATE.md | 54 ++- .paul/changelog/2026-04-24.md | 43 +++ .paul/governance/governance_2026-04-23.jsonl | 30 ++ .paul/governance/governance_2026-04-24.jsonl | 58 ++++ .../02-product-actions-fixes/02-03-SUMMARY.md | 90 +++++ .../02-product-actions-fixes/02-04-PLAN.md | 309 ++++++++++++++++++ .../02-product-actions-fixes/02-04-SUMMARY.md | 175 ++++++++++ .../02-product-actions-fixes/02-05-PLAN.md | 248 ++++++++++++++ .../02-product-actions-fixes/02-05-SUMMARY.md | 125 +++++++ themes/ayon/assets/js/custom.js | 232 +++++++++++-- themes/ayon/templates/catalog/product.tpl | 190 ++++++++++- 13 files changed, 1583 insertions(+), 64 deletions(-) create mode 100644 .paul/changelog/2026-04-24.md create mode 100644 .paul/governance/governance_2026-04-24.jsonl create mode 100644 .paul/phases/02-product-actions-fixes/02-03-SUMMARY.md create mode 100644 .paul/phases/02-product-actions-fixes/02-04-PLAN.md create mode 100644 .paul/phases/02-product-actions-fixes/02-04-SUMMARY.md create mode 100644 .paul/phases/02-product-actions-fixes/02-05-PLAN.md create mode 100644 .paul/phases/02-product-actions-fixes/02-05-SUMMARY.md diff --git a/.paul/PROJECT.md b/.paul/PROJECT.md index 66f4a5e..8258ad5 100644 --- a/.paul/PROJECT.md +++ b/.paul/PROJECT.md @@ -22,14 +22,50 @@ Nowy layout strony produktu ma dać czystszy, bardziej prezentowalny UI konfigur ### ✅ Naprawione (Phase 01) - `.product-variants` (wariant kolorystyczny) — wygląd grid 3×1 wg Figma 27:9867 + klik zmienia wariant in-place (AJAX `action=refresh` + `history.pushState`). -### ⚠️ Do naprawy (Phase 02+) -- Brak `
` / `.product-actions` wokół `product_add_to_cart` w nowym layoucie — „Dodaj do koszyka" prawdopodobnie nie działa. -- Puste bloki `
`: `product-size-data`, `product-protect`, `product-installation`, `product-order-sample`. -- Konfigurator rozmiaru „piece" (crop + odbicie lustrzane) — brak markup'u. -- Brakujące elementy dla pełnego PS `updatedProduct` flow (`.product-cover-thumbnails`, `.js-product-images2-modal`, `.product-details`, `.product-customization`, `.product-additional-info`) — wpływa na edge case'y przy zmianie wariantu z różnymi miniaturami/opisami. +### ✅ Naprawione (Phase 02) +- **Konfigurator „piece"** (Plan 02-01) — crop + odbicie lustrzane, drag + mirror, re-init po AJAX refresh. Reuse `#piece` z shared partial. +- **Add-to-cart submission** (Plan 02-02) — capture-phase native handler w custom.js + inline mirror, blockcart refresh, idempotency guard. Button+qty poza formą `#add-to-cart-or-refresh` — manualny serialize + POST. +- **Customization save + success modal** (Plan 02-03) — full squaremeter payload (26 fields, verbose PL dim), chain POST do `/module/ps_shoppingcart/ajax` → Bootstrap `#blockcart-modal`. `__p02p02InFlight` re-entrancy guard. Inline script finally renders (Plan 02-03 `{/block}` move). +- **Live cena labelka** (Plan 02-04) — `.p02p04-total-price` obok "Dodaj do koszyka", reactively updates z piece dimensions + variant AJAX refresh. Górna `.current-price` zostaje statyczna info-label. +- **Struktura materiału w POST payload** (Plan 02-05) — enumeracja external PS attribute groups (`[name^="group["]` poza formą) w POST payload. Wybrana „Tekstura materiału" (`