function insertAdPlaceholders()

in ArticleTemplates/assets/js/modules/ads.js [26:51]


function insertAdPlaceholders(mpuAfterParagraphs, amountOfMpu) {
    for (let i = 1; numberOfMpus < amountOfMpu; i=i+2) {
        const mpu = createMpu(i);
        const nrParagraph = (parseInt(mpuAfterParagraphs * i, 10) || 6 * i) - 1;
        const placeholder = document.createElement('div');
        const placeholderSibling = document.querySelector('.article__body > div.prose > :first-child');
        const mpuSibling = document.querySelector(`.article__body > div.prose > p:nth-of-type(${nrParagraph}) ~ p + p`);

        if (!(mpuSibling && mpuSibling.parentNode)) {
            // Not enough paragraphs on page to add advert
            break;
        }

        mpuSibling.parentNode.insertBefore(mpu, mpuSibling);
        placeholder.classList.add('advert-slot');

        // To mimic the correct positioning on full width tablet view, we will need an
        // empty div to pad out the text so we can position absolutely over it.
        if (placeholderSibling && placeholderSibling.parentNode) {
            placeholderSibling.parentNode.insertBefore(placeholder, placeholderSibling);
        }
        numberOfMpus++;
    }

    adsReady = true;
}