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) <noreply@anthropic.com>
3.7 KiB
3.7 KiB
2026-04-24
Co zrobiono
- [Phase 02, Plan 02-03] Customization save + success modal w nowym layoucie — 5/5 AC pass, milestone production-ready
- Task 1: Playwright capture OLD layout payload (26 fields, verbose PL dim format) — IP gate temporary flip do
255.255.255.255, restored - Task 2: Injection squaremeter fields (
discretion=on,dimVERBOSE,qty_alt/qty_alth,calculated_total,product_total_price_calc) w POST do/pl/koszyk - Task 3: Chain POST do
/module/ps_shoppingcart/ajax→ render Bootstrap#blockcart-modalz "Kontynuuj zakupy" + "Przejdź do kasy" - Krytyczny fix: przeniesiono
{/block}tak żeby inline script rzeczywiście renderował (Smarty{extends}renderuje tylko blocki — Plan 02-02 mirror był dead code) - Dodano
__p02p02InFlightre-entrancy guard (fix double POST) - basePrice fallback przez
meta[property="product:price:amount"](w NEW layout brak#product_base_price) - AC-5 regression test OLD layout: zero zmian, handler inert (
p02p02Bound=falsew OLD) - [Phase 02, Plan 02-04] Live cena per-sqm labelka obok "Dodaj do koszyka" w nowym layoucie — 5/5 AC pass
- Task 1:
__p02p04EnsureLabel+__p02p04RecalcPrice+ delegated input bindings (custom.js + inline mirror w product.tpl) - Task 2: FTP deploy iteracyjny (iterations: 226/226 na każdym deployu)
- Task 3: Live Playwright verification wszystkich 5 AC — user pivot mid-task: label obok buttona zamiast nadpisywania
.current-price(gorna cena "Od XXX zł / m²" zostaje statyczna) - Scope pivot: label obok buttona zamiast nadpisywania
.current-price— user request - Fix: separate
__p02p04Boundguard (stale-cache custom.js nie blokuje inline mirror rejestracji) - Fix: synchronous IIFE init zamiast
jQuery(document).ready(ready nie firuje konsekwentnie w inline Smarty block) - Fix:
setInterval 10×500msinitial render retry (squaremeter init overwrituje.current-pricepost pierwszy recalc) - Fix: poll-retry rejestracja
prestashop.on('updatedProduct')(prestashop bundle loads after inline script parse) - [Phase 02, Plan 02-05] Struktura materiału w POST payload (production bug fix) — 4/4 AC pass
- Diagnoza Playwright:
<select id="group_5" name="group[5]">(Tekstura materiału) POZA formą#add-to-cart-or-refreshw.product-bar-box→$form.serialize()nie łapie → PS saves default - Task 1: Enumerate
[name^="group["]spoza formy, encodeURI + doklej do payload (custom.js + inline mirror, identyczna logika) - Task 2: FTP deploy 226/226
- Task 3: Playwright network capture:
group%5B5%5D=16w payload,id_product_attribute=4175(new combination), cart pokazuje "Extra fine" - Future-proof: enumeracja wszystkich grup (nie hardcode group[5]) — kolejne atrybuty automatycznie pokryte
Zmienione pliki
themes/ayon/assets/js/custom.js(+175 linii handler update, +55 linii Plan 02-04 block, +13 linii Plan 02-05 externalGroups)themes/ayon/templates/catalog/product.tpl(block move fix + inline mirror update + 50 linii Plan 02-04 IIFE + 13 linii Plan 02-05 mirror).paul/STATE.md(Plan 02-03/02-04/02-05 decisions + loop position + phase 02 COMPLETE).paul/PROJECT.md(evolved: Phase 02 requirements shipped, Established Patterns aggregated, Key Decisions table).paul/ROADMAP.md(Plan 02-05 added + Phase 02 COMPLETE).paul/phases/02-product-actions-fixes/02-03-SUMMARY.md(created).paul/phases/02-product-actions-fixes/02-04-SUMMARY.md(created).paul/phases/02-product-actions-fixes/02-04-PLAN.md(created).paul/phases/02-product-actions-fixes/02-05-PLAN.md(created).paul/phases/02-product-actions-fixes/02-05-SUMMARY.md(created).claude/memory/feedback_ftp_autoupload.md(created).claude/memory/project_newwalls_layout_context.md(created).claude/memory/MEMORY.md(2 new entries)