From ad6d72da2b3c664b3a8db09640f1a9c43da62e03 Mon Sep 17 00:00:00 2001 From: Nathan Melehan Date: Tue, 14 Jul 2026 20:28:22 +0000 Subject: [PATCH] Theme updates - Remove requests to promo code endpoint from footer markup --- .../common-partials/dist/js/footer-inline.js | 118 +++++++++++++++++- _vendor/modules.txt | 2 +- go.mod | 2 +- go.sum | 2 + 4 files changed, 121 insertions(+), 3 deletions(-) diff --git a/_vendor/github.com/linode/linode-docs-theme/common-partials/dist/js/footer-inline.js b/_vendor/github.com/linode/linode-docs-theme/common-partials/dist/js/footer-inline.js index 55ff15050c9..c4c4420314a 100644 --- a/_vendor/github.com/linode/linode-docs-theme/common-partials/dist/js/footer-inline.js +++ b/_vendor/github.com/linode/linode-docs-theme/common-partials/dist/js/footer-inline.js @@ -1 +1,117 @@ -(()=>{function s(e=0){let o=new Date;return o.setTime(o.getTime()+e*24*60*60*1e3),o}function d(e){if(localStorage.getItem(e)===null)return;let o=new Date,t=localStorage.getItem(`${e}_exp`),r=t!==null?new Date(t):o;if(isNaN(r)){localStorage.removeItem(`${e}_exp`);return}o=0&&document.cookie.indexOf(`${e}=${o}`)<0&&!r)return;let l=t!==null?`expires=${t.toUTCString()}; `:"";document.cookie=`${e}=${o}; domain=.linode.com; ${l}path=/; secure; samesite=lax; `}function a(e){let o=new URL(window.location.href),t=o.searchParams.get(e.param);if(e.local&&d(e.local),!t||e.regex&&!t.match(e.regex))return;let r=e.days?s(e.days):null;e.local&&f(e.local,t,r),e.cookie&&p(e.cookie,t,r)}a({param:"r",cookie:"referralCode",days:14,regex:/^[0-9a-f]{40}$/i});var h=Object.fromEntries(document.cookie.split(/\s*;\s*/).map(e=>e.split(/\s*=\s*/))),g=document.getElementsByTagName("body")[0];h.referralCode&&g.classList.add("js-is-referral"),a({param:"promo",cookie:"promoCode",local:"promoCode",days:1,regex:/^[0-9a-z-_]*$/i}),a({param:"promo_length",cookie:"promoLength",local:"promoLength",days:1,regex:/^[0-9]*$/}),a({param:"promo_value",cookie:"promoValue",local:"promoValue",days:1,regex:/^[0-9]*$/});function k(e,o){Array.from(document.querySelectorAll('a[href*="login.linode.com"][href*="/signup"]')).forEach(r=>{let l=new URL(r.href);if(l.searchParams.has("promo")){if(!r.hasAttribute("data-promo-override")||!o)return;l.searchParams.delete("promo")}e&&l.searchParams.set("promo",e),r.href=l.toString()})}function w(e,o){Array.from(document.querySelectorAll('form[action*="login.linode.com/signup"]')).forEach(r=>{let l=new URL(r.action),m=r.querySelector('input[name="promo"]');if(m){if(!m.hasAttribute("data-promo-override")||!o)return;m.remove()}if(e){let i=document.createElement("input");i.setAttribute("type","hidden"),i.setAttribute("name","promo"),i.setAttribute("value",e),r.appendChild(i)}})}function n(e,o){k(e,o),w(e,o)}var c=Object.fromEntries(document.cookie.split(/\s*;\s*/).map(e=>e.split(/\s*=\s*/))),u=localStorage.getItem("promoCode");c.referralCode?n("",!0):u||c.promoCode?n(u||c.promoCode,!0):fetch("https://www.linode.com/wp-json/linode/v1/promo-data").then(e=>{if(!e.ok)throw new Error("");return e}).then(e=>e.json()).then(e=>{e.global&&e.global.promo_code&&n(e.global.promo_code,!1)}).catch(e=>{})})(); +(() => { + function daysFromNow(days = 0) { + let d = /* @__PURE__ */ new Date(); + d.setTime(d.getTime() + days * 24 * 60 * 60 * 1e3); + return d; + } + function expireFromLocal(name) { + if (null === localStorage.getItem(name)) return; + let now = /* @__PURE__ */ new Date(), exp_value = localStorage.getItem(`${name}_exp`), exp_date = null !== exp_value ? new Date(exp_value) : now; + if (isNaN(exp_date)) { + localStorage.removeItem(`${name}_exp`); + return; + } + if (now < exp_date) return; + localStorage.removeItem(name); + localStorage.removeItem(`${name}_exp`); + } + function saveToLocal(name, value, exp_date = null, overwrite = true) { + let saved = localStorage.getItem(name); + if (null !== saved && saved !== value && !overwrite) return; + localStorage.setItem(name, value); + if (null !== exp_date) { + localStorage.setItem(`${name}_exp`, exp_date.toUTCString()); + } + } + function saveToCookie(name, value, exp_date = null, overwrite = true) { + value = encodeURIComponent(value); + if (document.cookie.indexOf(`${name}=`) >= 0 && document.cookie.indexOf(`${name}=${value}`) < 0 && !overwrite) return; + let expires = null !== exp_date ? `expires=${exp_date.toUTCString()}; ` : ""; + document.cookie = `${name}=${value}; domain=.akamai.com; ${expires}path=/; secure; samesite=lax; `; + } + function storeParams(args) { + let url = new URL(window.location.href), param_value = url.searchParams.get(args.param); + if (args.local) expireFromLocal(args.local); + if (!param_value) return; + if (args.regex && !param_value.match(args.regex)) return; + let exp_date = args.days ? daysFromNow(args.days) : null; + if (args.local) saveToLocal(args.local, param_value, exp_date); + if (args.cookie) saveToCookie(args.cookie, param_value, exp_date); + } + storeParams({ + "param": "r", + "cookie": "referralCode", + "days": 14, + "regex": /^[0-9a-f]{40}$/i + }); + var cookies = Object.fromEntries(document.cookie.split(/\s*;\s*/).map((c) => c.split(/\s*=\s*/))); + var body = document.getElementsByTagName("body")[0]; + if (cookies.referralCode) { + body.classList.add("js-is-referral"); + } + storeParams({ + "param": "promo", + "cookie": "promoCode", + "local": "promoCode", + "days": 1, + "regex": /^[0-9a-z-_]*$/i + }); + storeParams({ + "param": "promo_length", + "cookie": "promoLength", + "local": "promoLength", + "days": 1, + "regex": /^[0-9]*$/ + }); + storeParams({ + "param": "promo_value", + "cookie": "promoValue", + "local": "promoValue", + "days": 1, + "regex": /^[0-9]*$/ + }); + function updateLinkPromoCodes(promo, should_override) { + let $links = Array.from(document.querySelectorAll(`a[href*="login.linode.com"][href*="/signup"]`)); + $links.forEach(($link) => { + let link_url = new URL($link.href); + if (link_url.searchParams.has("promo")) { + if (!$link.hasAttribute("data-promo-override")) return; + if (!should_override) return; + link_url.searchParams.delete("promo"); + } + if (promo) { + link_url.searchParams.set("promo", promo); + } + $link.href = link_url.toString(); + }); + } + function updateFormPromoCodes(promo, should_override) { + let $forms = Array.from(document.querySelectorAll(`form[action*="login.linode.com/signup"]`)); + $forms.forEach(($form) => { + let form_url = new URL($form.action), $promo_field = $form.querySelector('input[name="promo"]'); + if ($promo_field) { + if (!$promo_field.hasAttribute("data-promo-override")) return; + if (!should_override) return; + $promo_field.remove(); + } + if (promo) { + let $new_promo_field = document.createElement("input"); + $new_promo_field.setAttribute("type", "hidden"); + $new_promo_field.setAttribute("name", "promo"); + $new_promo_field.setAttribute("value", promo); + $form.appendChild($new_promo_field); + } + }); + } + function updatePromoCodes(promo, should_override) { + updateLinkPromoCodes(promo, should_override); + updateFormPromoCodes(promo, should_override); + } + var cookies2 = Object.fromEntries(document.cookie.split(/\s*;\s*/).map((c) => c.split(/\s*=\s*/))); + var localPromoCode = localStorage.getItem("promoCode"); + if (cookies2.referralCode) { + updatePromoCodes("", true); + } else if (localPromoCode || cookies2.promoCode) { + updatePromoCodes(localPromoCode || cookies2.promoCode, true); + } +})(); diff --git a/_vendor/modules.txt b/_vendor/modules.txt index 78972a5ca9a..45f8505154e 100644 --- a/_vendor/modules.txt +++ b/_vendor/modules.txt @@ -1,4 +1,4 @@ -# github.com/linode/linode-docs-theme v0.0.0-20260623051305-cc683752dce9 +# github.com/linode/linode-docs-theme v0.0.0-20260714195911-d7bad1a0f68a # github.com/gohugoio/hugo-mod-jslibs-dist/alpinejs/v3 v3.21300.20800 # github.com/gohugoio/hugo-mod-jslibs/turbo/v8 v8.20000.20400 # github.com/hotwired/turbo v8.0.4+incompatible diff --git a/go.mod b/go.mod index 50d28372956..9e3ac929171 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,6 @@ require ( github.com/gohugoio/hugo-mod-jslibs/turbo/v7 v7.20300.20000 // indirect github.com/instantpage/instant.page v5.1.1+incompatible // indirect github.com/linode/linode-api-docs/v4 v4.176.0 // indirect - github.com/linode/linode-docs-theme v0.0.0-20260623051305-cc683752dce9 // indirect + github.com/linode/linode-docs-theme v0.0.0-20260714195911-d7bad1a0f68a // indirect github.com/linode/linode-website-partials v0.0.0-20250814204525-0d7fe4159951 // indirect ) diff --git a/go.sum b/go.sum index c9351ef0df5..2500c51797a 100644 --- a/go.sum +++ b/go.sum @@ -358,6 +358,8 @@ github.com/linode/linode-docs-theme v0.0.0-20260616154148-26d1400a2a41 h1:Zh0E6a github.com/linode/linode-docs-theme v0.0.0-20260616154148-26d1400a2a41/go.mod h1:+c1nDe/v3R4DH8WCf4SwzCdjG629tRasJwLNADWM7MA= github.com/linode/linode-docs-theme v0.0.0-20260623051305-cc683752dce9 h1:xdtnCiVfTZ63ZzCExtILUSPdZ76RvV5DvLDpxmmvxXs= github.com/linode/linode-docs-theme v0.0.0-20260623051305-cc683752dce9/go.mod h1:+c1nDe/v3R4DH8WCf4SwzCdjG629tRasJwLNADWM7MA= +github.com/linode/linode-docs-theme v0.0.0-20260714195911-d7bad1a0f68a h1:SdNDAWJJpCW1psy+iQG9hsBPnFjVso1QlphUgDAo/wE= +github.com/linode/linode-docs-theme v0.0.0-20260714195911-d7bad1a0f68a/go.mod h1:+c1nDe/v3R4DH8WCf4SwzCdjG629tRasJwLNADWM7MA= github.com/linode/linode-website-partials v0.0.0-20221205205120-b6ea1aaa59fb/go.mod h1:K1Em3lwb16JiCwNVftAFwWGhyB9Zkl/nXhxjBBUC1Ao= github.com/linode/linode-website-partials v0.0.0-20221222200538-99862e429110/go.mod h1:K1Em3lwb16JiCwNVftAFwWGhyB9Zkl/nXhxjBBUC1Ao= github.com/linode/linode-website-partials v0.0.0-20230201145731-a8703d0a954a/go.mod h1:K1Em3lwb16JiCwNVftAFwWGhyB9Zkl/nXhxjBBUC1Ao=