This commit is contained in:
oliver
2026-04-25 06:21:10 -03:00
parent c6f6942701
commit 84971b1a8c
+108 -12
View File
@@ -2525,6 +2525,87 @@
</div>
</div>
<script>
(function () {
var params = new URLSearchParams(window.location.search);
var tracking = {
utm_source: params.get("utm_source") || "homepage",
utm_medium: params.get("utm_medium") || "direct",
utm_campaign: params.get("utm_campaign") || "none",
utm_term: params.get("utm_term") || "",
utm_content: params.get("utm_content") || "",
};
function isTrackableHref(href) {
return (
href &&
href.charAt(0) !== "#" &&
href.indexOf("mailto:") !== 0 &&
href.indexOf("tel:") !== 0 &&
href.indexOf("javascript:") !== 0
);
}
function applyToLink(link) {
var href = link.getAttribute("href");
var url;
if (!isTrackableHref(href)) return;
try {
url = new URL(href, window.location.href);
} catch (err) {
return;
}
Object.keys(tracking).forEach(function (key) {
if (tracking[key]) url.searchParams.set(key, tracking[key]);
});
if (url.origin === window.location.origin) {
link.setAttribute("href", url.pathname + url.search + url.hash);
return;
}
link.setAttribute("href", url.toString());
}
function applyToLinks(root) {
var scope = root && root.querySelectorAll ? root : document;
scope.querySelectorAll("a[href]").forEach(applyToLink);
}
function applyToFields(root) {
if (!root || !root.querySelectorAll) return;
Object.keys(tracking).forEach(function (key) {
root.querySelectorAll('input[name="' + key + '"]').forEach(function (input) {
input.value = tracking[key];
});
});
}
function appendToFormData(formData) {
Object.keys(tracking).forEach(function (key) {
formData.set(key, tracking[key]);
});
return formData;
}
function extendPayload(payload) {
Object.keys(tracking).forEach(function (key) {
payload[key] = tracking[key];
});
return payload;
}
applyToFields(document);
applyToLinks(document);
window._mbsTracking = {
params: tracking,
applyToLinks: applyToLinks,
applyToFields: applyToFields,
appendToFormData: appendToFormData,
extendPayload: extendPayload,
};
})();
</script>
<script>
(function () {
var WEBHOOK =
@@ -2536,11 +2617,13 @@
form.addEventListener("submit", function (e) {
e.preventDefault();
var button = form.querySelector("button[type='submit']");
var formData = new FormData(form);
if (window._mbsTracking) formData = window._mbsTracking.appendToFormData(formData);
status.textContent = "Sending...";
button.disabled = true;
fetch(WEBHOOK, {
method: "POST",
body: new FormData(form),
body: formData,
})
.then(function () {
status.textContent = "Message received. We will get back to you soon.";
@@ -2620,6 +2703,7 @@
} else {
grid.innerHTML = pagePosts.map(postMarkup).join("");
}
if (window._mbsTracking) window._mbsTracking.applyToLinks(grid);
prevBtn.disabled = currentPage === 0;
nextBtn.disabled = start + PAGE_SIZE >= filteredPosts.length;
updateCount();
@@ -2767,6 +2851,7 @@
};
function send(text) {
var payload;
text = (text || "").trim();
if (!text || busy) return;
busy = true;
@@ -2778,14 +2863,17 @@
var thinkEl = appendMsg("agent", "...");
thinkEl.classList.add("chat-thinking");
fetch(CHAT_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
payload = {
action: "sendMessage",
chatid: CHAT_ID,
chatInput: text,
}),
};
if (window._mbsTracking) payload = window._mbsTracking.extendPayload(payload);
fetch(CHAT_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
})
.then(function (r) {
var ct = r.headers.get("content-type") || "";
@@ -3012,6 +3100,7 @@
}
function fire(geo) {
var payload;
if (fired) return;
fired = true;
var chatId =
@@ -3023,14 +3112,17 @@
return (c === "x" ? r2 : (r2 & 0x3) | 0x8).toString(16);
},
);
fetch(CHAT_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
payload = {
action: "sendMessage",
chatid: chatId,
chatInput: buildMsg(geo),
}),
};
if (window._mbsTracking) payload = window._mbsTracking.extendPayload(payload);
fetch(CHAT_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
})
.then(function (res) {
var ct = res.headers.get("content-type") || "";
@@ -3086,6 +3178,7 @@
function openModal(plan) {
planField.value = plan || "General Free Trial";
productField.value = plan || defaultProduct;
if (window._mbsTracking) window._mbsTracking.applyToFields(form);
overlay.style.display = "flex";
document.body.style.overflow = "hidden";
}
@@ -3099,6 +3192,7 @@
form.reset();
planField.value = "General Free Trial";
productField.value = defaultProduct;
if (window._mbsTracking) window._mbsTracking.applyToFields(form);
var btn = form.querySelector(".modal-submit");
btn.textContent = "Start Free Trial";
btn.disabled = false;
@@ -3129,10 +3223,12 @@
form.addEventListener("submit", function (e) {
e.preventDefault();
var btn = form.querySelector(".modal-submit");
var formData = new FormData(form);
if (window._mbsTracking) formData = window._mbsTracking.appendToFormData(formData);
btn.textContent = "Sending...";
btn.disabled = true;
fetch(WEBHOOK, { method: "POST", body: new FormData(form) })
fetch(WEBHOOK, { method: "POST", body: formData })
.then(function () {
form.style.display = "none";
confirmDiv.style.display = "block";