diff --git a/blocks/marketing/marketing.js b/blocks/marketing/marketing.js index d4687b16..1bb173e4 100644 --- a/blocks/marketing/marketing.js +++ b/blocks/marketing/marketing.js @@ -42,7 +42,14 @@ export default async function decorate(block) { window.tude = window.tude || { cmd: [] }; loadScript('https://www.googletagservices.com/tag/js/gpt.js', () => { loadScript(`https://dn0qt3r0xannq.cloudfront.net/${placeholders.adsPath}/prebid-load.js`, () => { - // loadScript(`https://web.prebidwrapper.com/${placeholders.adsPath}/prebid-load.js`, () => { + let pageName = window.location.pathname.slice(1); + if (!pageName) { + pageName = 'homepage'; + } else if (pageName.startsWith('news')) { + pageName = 'news'; + } if (pageName.includes('/')) { + pageName = pageName.substring(pageName.lastIndexOf('/') + 1); + } window.tude.cmd.push(() => { window.tude.setDeviceType(getDevice()); // optional window.tude.setPageTargeting({ // optional @@ -50,6 +57,8 @@ export default async function decorate(block) { s1: placeholders.adsS1, s2: placeholders.adsS2, s3: placeholders.adsS3, + s4: pageName, + pos: 'midcontent', m_data: '0', m_safety: 'safe', m_catagories: 'moat_safe', @@ -59,7 +68,7 @@ export default async function decorate(block) { kuid: '', aid: '20767395437692810572475817725693908164', }); - window.tude.setAdUnitPath(`/${placeholders.adsNetwork}/pgat.${getDevice() === 'mobile' ? 'phone' : getDevice()}/pgatour`); + window.tude.setAdUnitPath(`/${placeholders.adsNetwork}/pgatour-web/pgatour`); }); window.tude.cmd.push(() => { document.querySelectorAll('.ad').forEach((ad) => { diff --git a/scripts/delayed.js b/scripts/delayed.js index 65ee7fa9..6c7d8024 100644 --- a/scripts/delayed.js +++ b/scripts/delayed.js @@ -3,12 +3,9 @@ import { decorateIcons, fetchPlaceholders, sampleRUM, - decorateBlock, - loadBlock, loadScript, getMetadata, fetchGraphQL, - sendAnalyticsPageEvent, } from './scripts.js'; const placeholders = await fetchPlaceholders(); @@ -646,75 +643,6 @@ async function populateStatusBar(statusBar) { populateStatusBar(document.querySelector('header > .status-bar')); -/* setup cookie preferences */ -function getCookie(cookieName) { - const name = `${cookieName}=`; - const decodedCookie = decodeURIComponent(document.cookie); - const split = decodedCookie.split(';'); - // eslint-disable-next-line no-plusplus - for (let i = 0; i < split.length; i++) { - let c = split[i]; - while (c.charAt(0) === ' ') c = c.substring(1); - if (c.indexOf(name) === 0) return c.substring(name.length, c.length); - } - return null; -} - -async function OptanonWrapper() { - const geoInfo = window.Optanon.getGeolocationData(); - Object.keys(geoInfo).forEach((key) => { - const cookieName = `PGAT_${key.charAt(0).toUpperCase() + key.slice(1)}`; - const cookie = getCookie(cookieName); - if (!cookie || cookie !== geoInfo[key]) document.cookie = `${cookieName}=${geoInfo[key]}`; - }); - - const prevOptIn = localStorage.getItem('OptIn_PreviousPermissions'); - if (prevOptIn) { - try { - const settings = JSON.parse(prevOptIn); - if (settings.tempImplied) { - localStorage.removeItem('OptIn_PreviousPermissions'); - } - } catch (e) { - // eslint-disable-next-line no-console - console.error('OptIn_PreviousPermissions parse failed'); - } - } - sendAnalyticsPageEvent(); -} - -const otId = placeholders.onetrustId; -if (otId) { - const cookieScript = loadScript('https://cdn.cookielaw.org/scripttemplates/otSDKStub.js'); - cookieScript.setAttribute('data-domain-script', `${otId}${isProd ? '' : '-test'}`); - cookieScript.setAttribute('data-dlayer-name', 'dataLayer'); - cookieScript.setAttribute('data-nscript', 'beforeInteractive'); - - const gtmId = placeholders.googletagmanagerId; - if (gtmId) { - const GTMScript = document.createElement('script'); - GTMScript.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': - new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], - j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= - 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); - })(window,document,'script','dataLayer','${gtmId}');`; - document.head.append(GTMScript); - - const GTMFrame = document.createElement('no-script'); - GTMFrame.innerHTML = ``; - document.body.prepend(GTMFrame); - } - - window.OptanonWrapper = OptanonWrapper; - - if (document.querySelector('.marketing')) { - const marketingBlock = document.querySelector('.marketing'); - decorateBlock(marketingBlock); - loadBlock(marketingBlock); - } -} - async function loadLiveChat() { const liveChat = getMetadata('live-chat'); if (liveChat && ['yes', 'on', 'true'].includes(liveChat.toLowerCase())) { diff --git a/scripts/dependencies.js b/scripts/dependencies.js new file mode 100644 index 00000000..e0b8a616 --- /dev/null +++ b/scripts/dependencies.js @@ -0,0 +1,78 @@ +// eslint-disable-next-line import/no-cycle +import { + decorateBlock, + fetchPlaceholders, + loadBlock, + loadScript, +} from './scripts.js'; + +const placeholders = await fetchPlaceholders(); +const isProd = window.location.hostname.endsWith(placeholders.hostname); + +/* setup cookie preferences */ +function getCookie(cookieName) { + const name = `${cookieName}=`; + const decodedCookie = decodeURIComponent(document.cookie); + const split = decodedCookie.split(';'); + // eslint-disable-next-line no-plusplus + for (let i = 0; i < split.length; i++) { + let c = split[i]; + while (c.charAt(0) === ' ') c = c.substring(1); + if (c.indexOf(name) === 0) return c.substring(name.length, c.length); + } + return null; +} + +async function OptanonWrapper() { + const geoInfo = window.Optanon.getGeolocationData(); + Object.keys(geoInfo).forEach((key) => { + const cookieName = `PGAT_${key.charAt(0).toUpperCase() + key.slice(1)}`; + const cookie = getCookie(cookieName); + if (!cookie || cookie !== geoInfo[key]) document.cookie = `${cookieName}=${geoInfo[key]}`; + }); + + const prevOptIn = localStorage.getItem('OptIn_PreviousPermissions'); + if (prevOptIn) { + try { + const settings = JSON.parse(prevOptIn); + if (settings.tempImplied) { + localStorage.removeItem('OptIn_PreviousPermissions'); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error('OptIn_PreviousPermissions parse failed'); + } + } +} + +const otId = placeholders.onetrustId; +if (otId) { + const cookieScript = loadScript('https://cdn.cookielaw.org/scripttemplates/otSDKStub.js'); + cookieScript.setAttribute('data-domain-script', `${otId}${isProd ? '' : '-test'}`); + cookieScript.setAttribute('data-dlayer-name', 'dataLayer'); + cookieScript.setAttribute('data-nscript', 'beforeInteractive'); + + const gtmId = placeholders.googletagmanagerId; + if (gtmId) { + const GTMScript = document.createElement('script'); + GTMScript.innerHTML = `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': + new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], + j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); + })(window,document,'script','dataLayer','${gtmId}');`; + document.head.append(GTMScript); + + const GTMFrame = document.createElement('no-script'); + GTMFrame.innerHTML = ``; + document.body.prepend(GTMFrame); + } + + window.OptanonWrapper = OptanonWrapper; + + if (document.querySelector('.marketing')) { + const marketingBlock = document.querySelector('.marketing'); + decorateBlock(marketingBlock); + loadBlock(marketingBlock); + } +} diff --git a/scripts/scripts.js b/scripts/scripts.js index 0d58e1de..25792fb7 100644 --- a/scripts/scripts.js +++ b/scripts/scripts.js @@ -1052,6 +1052,14 @@ async function loadEager(doc) { } } +/** + * Loads everything that required HTML to be in place. + */ +function loadDependencies() { + // eslint-disable-next-line import/no-cycle + import('./dependencies.js'); +} + /** * loads everything that doesn't need to be delayed. */ @@ -1069,6 +1077,8 @@ async function loadLazy(doc) { addFavIcon(`${window.hlx.codeBasePath}/styles/favicon.ico`); doc.querySelectorAll('div:not([class]):not([id]):empty').forEach((empty) => empty.remove()); + + loadDependencies(); } /** @@ -1122,41 +1132,6 @@ export function addHeaderSizing(block, classPrefix = 'heading', selector = 'h1, }); } -function getPageNameAndSections() { - const pageSectionParts = window.location.pathname.split('/').filter((subPath) => subPath !== ''); - const pageName = pageSectionParts.join(':'); - const finalPageName = pageName === '' ? 'Home' : pageName; - - return { - pageName: finalPageName, - sections: pageSectionParts, - }; -} - -export async function sendAnalyticsPageEvent() { - window.dataLayer = window.dataLayer || []; - const dl = window.dataLayer; - const placeholders = await fetchPlaceholders(); - const isUserLoggedIn = window.gigyaAccountInfo && window.gigyaAccountInfo != null - && window.gigyaAccountInfo.errorCode === 0; - - const { pageName, sections } = getPageNameAndSections(); - dl.push({ - event: 'pageload', - pageName, - pageUrl: window.location.href, - siteSection: sections[0] || '', - siteSubSection: sections[1] || '', - siteSubSection2: sections[2] || '', - gigyaID: isUserLoggedIn && window.gigyaAccountInfo.UID ? window.gigyaAccountInfo.UID : '', - userLoggedIn: isUserLoggedIn ? 'Logged In' : 'Logged Out', - tourName: placeholders.tourName.toLowerCase().replaceAll(' ', '_'), - tournamentID: `${placeholders.tourCode.toUpperCase()}${placeholders.currentYear}${placeholders.tournamentId}`, - ipAddress: '127.0.0.1', - deviceType: 'Web', - }); -} - try { const hidden = Symbol('hidden'); const proxy = Symbol('proxy'); diff --git a/styles/styles.css b/styles/styles.css index 831ac6d8..d0361718 100644 --- a/styles/styles.css +++ b/styles/styles.css @@ -548,6 +548,7 @@ main .ad { align-items: center; justify-content: center; margin: 32px 0; + overflow: hidden; } main .ad .ad-top {