import $ from "jquery"; class IHKSocialBox { constructor(socialBox) { this.box = socialBox.addClass("initiated"); this.checkHtmlFragmentCookiesAreSet(socialBox); this.checkIframe(); } checkIframe() { setTimeout(() => { const iframe = this.box.find("iframe"); if (iframe.length) { iframe.attr("tabindex", "-1"); } else { this.checkIframe(); } }, 1000); } checkHtmlFragmentCookiesAreSet(socialBox) { if (socialBox.data("useconsent")) { return; } let socialMediaProtectionText = socialBox.data("socialmediaprotection"); let socialMediaType = socialBox.data("socialmediatype"); let cookieBot = socialBox.data("usecookiebot"); if (socialBox.find("iframe").length > 0) { let iframeElement = socialBox.find("iframe")[0]; this.checkIframeCookieIsSet(socialMediaProtectionText, socialMediaType, cookieBot, iframeElement, socialBox); } else { this.checkEmbedCookieIsSet(socialMediaProtectionText, socialMediaType, cookieBot, socialBox); } } checkIframeCookieIsSet(socialMediaProtectionText, socialMediaType, cookieBot, iframeElement, socialBoxElement) { if (cookieBot) { $(iframeElement).data("cookieconsent", "marketing"); } if (document.cookie.indexOf("social-media-consent-" + socialMediaType) === -1) { this.hideIframeElement(iframeElement); let textWithCheckbox = '
"; $(socialBoxElement).append(textWithCheckbox); let elementsByClassName = this.box.find("[name='socialMediaType']")[0]; elementsByClassName.addEventListener("change", () => this.setCookie(socialMediaType)); } } checkEmbedCookieIsSet(socialMediaProtectionText, socialMediaType, cookieBot, socialBoxElement) { let scriptElements = socialBoxElement.find("script"); let imageElements = socialBoxElement.find("img"); if (cookieBot) { $(scriptElements).data("cookieconsent", "marketing"); $(imageElements).data("cookieconsent", "marketing"); } if (document.cookie.indexOf("social-media-consent-" + socialMediaType) === -1) { let textWithCheckbox = '
"; $(textWithCheckbox).appendTo(socialBoxElement); let elementsByClassName = this.box.find("[name='socialMediaType']")[0]; elementsByClassName.addEventListener("change", () => this.setCookie(socialMediaType)); } } hideIframeElement(iframeElement) { if (iframeElement) { iframeElement.src = "about:blank"; $(iframeElement).hide(); } } setCookie(socialMediaType) { // Anzahl der Tage für das Ablaufdatum des Cookies let expirationDays = 365; // Datum für das Ablaufdatum des Cookies berechnen let expirationDate = new Date(); expirationDate.setDate(expirationDate.getDate() + expirationDays); // Checkbox wurde angeklickt, Cookie setzen document.cookie = "social-media-consent-" + socialMediaType + "=true; expires=" + expirationDate.toUTCString() + ";"; // Finde alle Elemente mit dem selben socialMediaType let self = this; $(`[data-socialmediatype=${socialMediaType}]`).each(function () { let currentBox = $(this); currentBox.find(".social-media-protection-text-with-checkbox").hide(); let scriptElements = currentBox.find("script"); let imageElements = currentBox.find("img"); let iframeElements = currentBox.find("iframe"); self.showElements(scriptElements); self.showElements(imageElements); self.showElements(iframeElements); }); } showElements(elements) { if (elements.length > 0) { for (let element of elements) { this.showElement(element); } } } showElement(htmlFragment) { let $element = $(htmlFragment); let elementType = $element.prop("tagName").toLowerCase(); let dataSrc = $element.attr("data-src"); if (typeof dataSrc === "undefined") { dataSrc = $element.attr("src"); } if (elementType === "script") { $element.attr("src", dataSrc); $element.show(); } else if (elementType === "img" || elementType === "iframe") { $element.attr("src", dataSrc); $element.show(); } } } export default IHKSocialBox; $("body").on("ihk-init dynamic-component-loaded gfi-dynamic-init", function () { $(".social-box:not(.initiated)").each(function () { new IHKSocialBox($(this)); }); });