/* buy.js — page-local checkout helper (progressive enhancement). * * The checkout itself is a native
that posts * basket=[{"product_id":12,"qty":1}] + clear=1 to * https://20.odoo4projects.com/shop/post_basket. With JavaScript off it still works. * * This file only adds attribution: on submit it appends the utm_* hidden inputs * from the cookies, then lets the native submit proceed (it never preventDefault). * * The UTM helpers mirror `script.js` `buyNow()` — the main page's checkout path. * If that changes, change this too. */ (function () { 'use strict'; /* ---- UTM tracking helpers (verbatim from script.js) ---- */ function getCookie(name) { var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); return match ? decodeURIComponent(match[2]) : null; } function getStoredUTM() { var utm = {}; var keys = ['source', 'medium', 'campaign']; for (var i = 0; i < keys.length; i++) { var val = getCookie('utm_' + keys[i]); if (val) utm[keys[i]] = val; } return utm; } function appendToForm(form) { var stored = getStoredUTM(); var keys = ['source', 'medium', 'campaign']; for (var i = 0; i < keys.length; i++) { if (stored[keys[i]] && !form.elements['utm_' + keys[i]]) { var input = document.createElement('input'); input.type = 'hidden'; input.name = 'utm_' + keys[i]; input.value = stored[keys[i]]; form.appendChild(input); } } } /* ---- Progressive enhancement: add UTM inputs to the native basket form ---- Capture phase, so the inputs are in the form before the browser serialises it. No preventDefault — the native POST proceeds untouched. */ document.addEventListener('submit', function (e) { var form = e.target; if (!form || form.tagName !== 'FORM') return; if (!form.querySelector('input[name="basket"]')) return; appendToForm(form); }, true); })();