X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Feu_cookie_compliance%2Fjs%2Feu_cookie_compliance.js;h=bcb574ffbee488cadfc0554e4952afd37d64c5f3;hb=059867c3f96750652c80f39e44c442a58c2549ee;hp=60c71a4c9607975a22cb9626d53b485a80a79aea;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/web/modules/contrib/eu_cookie_compliance/js/eu_cookie_compliance.js b/web/modules/contrib/eu_cookie_compliance/js/eu_cookie_compliance.js index 60c71a4c9..bcb574ffb 100644 --- a/web/modules/contrib/eu_cookie_compliance/js/eu_cookie_compliance.js +++ b/web/modules/contrib/eu_cookie_compliance/js/eu_cookie_compliance.js @@ -1,7 +1,7 @@ /** * @file eu_cookie_compliance.js * - * Defines the behavior of the eu cookie compliance popup. + * Defines the behavior of the eu cookie compliance banner. */ (function ($, Drupal, drupalSettings) { @@ -10,204 +10,450 @@ Drupal.behaviors.euCookieCompliancePopup = { attach: function (context) { - $('body', context).once('sliding-popup').each(function () { - var settings = drupalSettings.eu_cookie_compliance; - try { - var enabled = settings.popup_enabled; - - if (!enabled) { - return; - } - - if (!Drupal.eu_cookie_compliance.cookiesEnabled()) { - return; - } + $('body').once('eu-cookie-compliance').each(function () { + // If configured, check JSON callback to determine if in EU. + if (drupalSettings.eu_cookie_compliance.popup_eu_only_js) { + if (Drupal.eu_cookie_compliance.showBanner()) { + var url = drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + 'eu-cookie-compliance-check'; + var data = {}; + $.getJSON(url, data, function (data) { + // If in the EU, show the compliance banner. + if (data.in_eu) { + Drupal.eu_cookie_compliance.execute(); + } - var status = Drupal.eu_cookie_compliance.getCurrentStatus(); - var clicking_confirms = settings.popup_clicking_confirmation; - var agreed_enabled = settings.popup_agreed_enabled; - var popup_hide_agreed = settings.popup_hide_agreed; - - if (status === 0) { - var next_status = 1; - if (!clicking_confirms) { - $('a, input[type=submit]').bind('click.eu_cookie_compliance', function () { - if (!agreed_enabled) { - Drupal.eu_cookie_compliance.setStatus(1); - next_status = 2; - } - Drupal.eu_cookie_compliance.changeStatus(next_status); - }); - } - $('.agree-button').click(function () { - if (!agreed_enabled) { - Drupal.eu_cookie_compliance.setStatus(1); - next_status = 2; + // If not in EU, set an agreed cookie automatically. + else { + Drupal.eu_cookie_compliance.setStatus(2); } - Drupal.eu_cookie_compliance.changeStatus(next_status); }); - - Drupal.eu_cookie_compliance.createPopup(settings.popup_html_info); - } - else if (status === 1) { - Drupal.eu_cookie_compliance.createPopup(settings.popup_html_agreed); - if (popup_hide_agreed) { - $('a, input[type=submit]').bind('click.eu_cookie_compliance_hideagreed', function () { - Drupal.eu_cookie_compliance.changeStatus(2); - }); - } } } - catch (e) { - // Nothing to show here. + + // Otherwise, fallback to standard behavior which is to render the banner. + else { + Drupal.eu_cookie_compliance.execute(); } }); - } + }, }; Drupal.eu_cookie_compliance = {}; + Drupal.eu_cookie_compliance.execute = function () { + try { + if (!drupalSettings.eu_cookie_compliance.popup_enabled) { + return; + } + + if (!Drupal.eu_cookie_compliance.cookiesEnabled()) { + return; + } + + var status = Drupal.eu_cookie_compliance.getCurrentStatus(); + if ((status === 0 && drupalSettings.eu_cookie_compliance.method === 'default') || status === null) { + if (!drupalSettings.eu_cookie_compliance.disagree_do_not_show_popup || status === null) { + // Detect mobile here and use mobile_popup_html_info, if we have a mobile device. + if (window.matchMedia('(max-width: ' + drupalSettings.eu_cookie_compliance.mobile_breakpoint + 'px)').matches && drupalSettings.eu_cookie_compliance.use_mobile_message) { + Drupal.eu_cookie_compliance.createPopup(drupalSettings.eu_cookie_compliance.mobile_popup_html_info); + } else { + Drupal.eu_cookie_compliance.createPopup(drupalSettings.eu_cookie_compliance.popup_html_info); + } + + Drupal.eu_cookie_compliance.attachAgreeEvents(); + } + } else if (status === 1 && drupalSettings.eu_cookie_compliance.popup_agreed_enabled) { + Drupal.eu_cookie_compliance.createPopup(drupalSettings.eu_cookie_compliance.popup_html_agreed); + Drupal.eu_cookie_compliance.attachHideEvents(); + } else if (status === 2 && drupalSettings.eu_cookie_compliance.withdraw_enabled) { + Drupal.eu_cookie_compliance.createWithdrawBanner(drupalSettings.eu_cookie_compliance.withdraw_markup); + Drupal.eu_cookie_compliance.attachWithdrawEvents(); + } + } + catch (e) { + } + }; + + Drupal.eu_cookie_compliance.createWithdrawBanner = function (html) { + var $html = $('
').html(html); + var $banner = $('.eu-cookie-withdraw-banner', $html); + $html.attr('id', 'sliding-popup'); + $html.addClass('eu-cookie-withdraw-wrapper'); + + if (!drupalSettings.eu_cookie_compliance.popup_use_bare_css) { + $banner.height(drupalSettings.eu_cookie_compliance.popup_height) + .width(drupalSettings.eu_cookie_compliance.popup_width); + } + $html.hide(); + var height = 0; + if (drupalSettings.eu_cookie_compliance.popup_position) { + $html.prependTo('body'); + height = $html.outerHeight(); + + $html.show() + .addClass('sliding-popup-top') + .addClass('clearfix') + .css({ top: -1 * height }); + // For some reason, the tab outerHeight is -10 if we don't use a timeout + // function to reveal the tab. + setTimeout(function () { + var height = $html.outerHeight(); + + $html.animate({ top: -1 * (height) }, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { + $html.trigger('eu_cookie_compliance_popup_open'); + }); + }.bind($html), 0); + } else { + if (drupalSettings.eu_cookie_compliance.better_support_for_screen_readers) { + $html.prependTo('body'); + } else { + $html.appendTo('body'); + } + height = $html.outerHeight(); + $html.show() + .addClass('sliding-popup-bottom') + .css({ bottom: -1 * height }); + // For some reason, the tab outerHeight is -10 if we don't use a timeout + // function to reveal the tab. + setTimeout(function () { + var height = $html.outerHeight(); + + $html.animate({ bottom: -1 * (height) }, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { + $html.trigger('eu_cookie_compliance_popup_open'); + }); + }.bind($html), 0); + } + }; + + Drupal.eu_cookie_compliance.toggleWithdrawBanner = function () { + var $wrapper = $('#sliding-popup'); + var $tab = $('.eu-cookie-withdraw-tab'); + var $bannerIsShowing = drupalSettings.eu_cookie_compliance.popup_position ? parseInt($wrapper.css('top')) === 0 : parseInt($wrapper.css('bottom')) === 0; + var height = $wrapper.outerHeight(); + if (drupalSettings.eu_cookie_compliance.popup_position) { + if ($bannerIsShowing) { + $wrapper.animate({'top' : -1 * (height)}, drupalSettings.eu_cookie_compliance.popup_delay); + } + else { + $wrapper.animate({'top' : 0}, drupalSettings.eu_cookie_compliance.popup_delay); + } + } + else { + if ($bannerIsShowing) { + $wrapper.animate({'bottom' : -1 * (height)}, drupalSettings.eu_cookie_compliance.popup_delay); + } + else { + $wrapper.animate({'bottom' : 0}, drupalSettings.eu_cookie_compliance.popup_delay); + } + } + }; + Drupal.eu_cookie_compliance.createPopup = function (html) { - var popup = $(html) - .attr({id: 'sliding-popup'}) - .height(drupalSettings.eu_cookie_compliance.popup_height) - .width(drupalSettings.eu_cookie_compliance.popup_width) - .hide(); - var height = popup.height(); + // This fixes a problem with jQuery 1.9. + var popup = $('
').html(html); + popup.attr('id', 'sliding-popup'); + if (!drupalSettings.eu_cookie_compliance.popup_use_bare_css) { + popup.height(drupalSettings.eu_cookie_compliance.popup_height) + .width(drupalSettings.eu_cookie_compliance.popup_width); + } + + popup.hide(); + var height = 0; if (drupalSettings.eu_cookie_compliance.popup_position) { popup.prependTo('body'); + height = popup.outerHeight(); + popup.show() + .addClass('sliding-popup-top clearfix') + .css({ top: -1 * height }) + .animate({ top: 0 }, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { + popup.trigger('eu_cookie_compliance_popup_open'); + }); + } else { + if (drupalSettings.eu_cookie_compliance.better_support_for_screen_readers) { + popup.prependTo('body'); + } else { + popup.appendTo('body'); + } + + height = popup.outerHeight(); popup.show() - .attr({class: 'sliding-popup-top clearfix'}) - .css({ - top: -1 * height - }) - .animate({top: 0}, drupalSettings.eu_cookie_compliance.popup_delay); + .addClass('sliding-popup-bottom') + .css({ bottom: -1 * height }) + .animate({ bottom: 0 }, drupalSettings.eu_cookie_compliance.popup_delay, null, function () { + popup.trigger('eu_cookie_compliance_popup_open'); + }); + } + }; + + Drupal.eu_cookie_compliance.attachAgreeEvents = function () { + var clickingConfirms = drupalSettings.eu_cookie_compliance.popup_clicking_confirmation; + var scrollConfirms = drupalSettings.eu_cookie_compliance.popup_scrolling_confirmation; + + $('.agree-button').click(Drupal.eu_cookie_compliance.acceptAction); + $('.decline-button').click(Drupal.eu_cookie_compliance.declineAction); + + if (clickingConfirms) { + $('a, input[type=submit], button[type=submit]').bind('click.euCookieCompliance', Drupal.eu_cookie_compliance.acceptAction); + } + + if (scrollConfirms) { + var alreadyScrolled = false; + var scrollHandler = function () { + if (alreadyScrolled) { + Drupal.eu_cookie_compliance.acceptAction(); + $(window).off('scroll', scrollHandler); + } else { + alreadyScrolled = true; + } + }; + + $(window).bind('scroll', scrollHandler); + } + + $('.find-more-button').not('.find-more-button-processed').addClass('find-more-button-processed').click(Drupal.eu_cookie_compliance.moreInfoAction); + }; + + Drupal.eu_cookie_compliance.attachHideEvents = function () { + var popupHideAgreed = drupalSettings.eu_cookie_compliance.popup_hide_agreed; + var clickingConfirms = drupalSettings.eu_cookie_compliance.popup_clicking_confirmation; + $('.hide-popup-button').click(function () { + Drupal.eu_cookie_compliance.changeStatus(2); + } + ); + if (clickingConfirms) { + $('a, input[type=submit], button[type=submit]').unbind('click.euCookieCompliance'); + } + + if (popupHideAgreed) { + $('a, input[type=submit], button[type=submit]').bind('click.euCookieComplianceHideAgreed', function () { + Drupal.eu_cookie_compliance.changeStatus(2); + }); + } + + $('.find-more-button').not('.find-more-button-processed').addClass('find-more-button-processed').click(Drupal.eu_cookie_compliance.moreInfoAction); + }; + + Drupal.eu_cookie_compliance.attachWithdrawEvents = function () { + $('.eu-cookie-withdraw-button').click(Drupal.eu_cookie_compliance.withdrawAction); + $('.eu-cookie-withdraw-tab').click(Drupal.eu_cookie_compliance.toggleWithdrawBanner); + }; + + Drupal.eu_cookie_compliance.acceptAction = function () { + var agreedEnabled = drupalSettings.eu_cookie_compliance.popup_agreed_enabled; + var nextStatus = 1; + if (!agreedEnabled) { + Drupal.eu_cookie_compliance.setStatus(1); + nextStatus = 2; + } + + if (!euCookieComplianceHasLoadedScripts) { + euCookieComplianceLoadScripts(); + } + + if (typeof euCookieComplianceBlockCookies !== 'undefined') { + clearInterval(euCookieComplianceBlockCookies); + } + + Drupal.eu_cookie_compliance.changeStatus(nextStatus); + }; + + Drupal.eu_cookie_compliance.declineAction = function () { + Drupal.eu_cookie_compliance.setStatus(0); + let popup = $('#sliding-popup'); + if (popup.hasClass('sliding-popup-top')) { + popup.animate({ top: popup.outerHeight() * -1 }).trigger('eu_cookie_compliance_popup_close'); } else { - popup.appendTo('body'); - popup.show() - .attr({class: 'sliding-popup-bottom'}) - .css({ - bottom: -1 * height - }) - .animate({bottom: 0}, drupalSettings.eu_cookie_compliance.popup_delay); - } - popup.css({ - background: '#' + drupalSettings.eu_cookie_compliance.popup_bg_hex - }).find('h2, p').css('color', '#' + drupalSettings.eu_cookie_compliance.popup_text_hex); - Drupal.eu_cookie_compliance.attachEvents(); - }; - - Drupal.eu_cookie_compliance.attachEvents = function () { - var clicking_confirms = drupalSettings.eu_cookie_compliance.popup_clicking_confirmation; - var agreed_enabled = drupalSettings.eu_cookie_compliance.popup_agreed_enabled; - $('.find-more-button').bind('click', function () { + popup.animate({ bottom: popup.outerHeight() * -1 }).trigger('eu_cookie_compliance_popup_close'); + } + }; + + Drupal.eu_cookie_compliance.withdrawAction = function () { + Drupal.eu_cookie_compliance.setStatus(null); + location.reload(); + }; + + Drupal.eu_cookie_compliance.moreInfoAction = function () { + if (drupalSettings.eu_cookie_compliance.disagree_do_not_show_popup) { + Drupal.eu_cookie_compliance.setStatus(0); + $('#sliding-popup').trigger('eu_cookie_compliance_popup_close').remove(); + } else { if (drupalSettings.eu_cookie_compliance.popup_link_new_window) { window.open(drupalSettings.eu_cookie_compliance.popup_link); - } - else { + } else { window.location.href = drupalSettings.eu_cookie_compliance.popup_link; } - }); - $('.agree-button').bind('click', function () { - var next_status = 1; - if (!agreed_enabled) { - Drupal.eu_cookie_compliance.setStatus(1); - next_status = 2; - } - if (clicking_confirms) { - $('a, input[type=submit]').unbind('click.eu_cookie_compliance'); - } - Drupal.eu_cookie_compliance.changeStatus(next_status); - }); - $('.hide-popup-button').bind('click', function () { - Drupal.eu_cookie_compliance.changeStatus(2); - }); + } }; Drupal.eu_cookie_compliance.getCurrentStatus = function () { - var name = 'cookie-agreed'; - var result = Drupal.eu_cookie_compliance.getCookie(name); + var cookieName = (drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed' : drupalSettings.eu_cookie_compliance.cookie_name; + var value = $.cookie(cookieName); + value = parseInt(value); + if (isNaN(value)) { + value = null; + } - return parseInt(result); + return value; }; Drupal.eu_cookie_compliance.changeStatus = function (value) { var status = Drupal.eu_cookie_compliance.getCurrentStatus(); + var reloadPage = drupalSettings.eu_cookie_compliance.reload_page; if (status === value) { return; } + if (drupalSettings.eu_cookie_compliance.popup_position) { - $('.sliding-popup-top').animate({top: $('#sliding-popup').height() * -1}, drupalSettings.eu_cookie_compliance.popup_delay, function () { - if (status === 0) { - $('#sliding-popup').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({top: 0}, drupalSettings.eu_cookie_compliance.popup_delay); - Drupal.eu_cookie_compliance.attachEvents(); - } - if (status === 1) { - $('#sliding-popup').remove(); + $('.sliding-popup-top').animate({ top: $('#sliding-popup').outerHeight() * -1 }, drupalSettings.eu_cookie_compliance.popup_delay, function () { + if (status === null && !reloadPage) { + $('#sliding-popup').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({ top: 0 }, drupalSettings.eu_cookie_compliance.popup_delay); + Drupal.eu_cookie_compliance.attachHideEvents(); + } else if (status === 1) { + $('#sliding-popup').trigger('eu_cookie_compliance_popup_close').remove(); } }); - } - else { - $('.sliding-popup-bottom').animate({bottom: $('#sliding-popup').height() * -1}, drupalSettings.eu_cookie_compliance.popup_delay, function () { - if (status === 0) { - $('#sliding-popup').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({bottom: 0}, drupalSettings.eu_cookie_compliance.popup_delay); - Drupal.eu_cookie_compliance.attachEvents(); - } - if (status === 1) { - $('#sliding-popup').remove(); + } else { + $('.sliding-popup-bottom').animate({ bottom: $('#sliding-popup').outerHeight() * -1 }, drupalSettings.eu_cookie_compliance.popup_delay, function () { + if (status === null && !reloadPage) { + $('#sliding-popup').html(drupalSettings.eu_cookie_compliance.popup_html_agreed).animate({ bottom: 0 }, drupalSettings.eu_cookie_compliance.popup_delay); + Drupal.eu_cookie_compliance.attachHideEvents(); + } else if (status === 1) { + $('#sliding-popup').trigger('eu_cookie_compliance_popup_close').remove(); } }); } + + if (drupalSettings.eu_cookie_compliance.reload_page) { + location.reload(); + } + + if (value === 2 && drupalSettings.eu_cookie_compliance.withdraw_enabled) { + Drupal.eu_cookie_compliance.createWithdrawBanner(drupalSettings.eu_cookie_compliance.withdraw_markup); + Drupal.eu_cookie_compliance.attachWithdrawEvents(); + } + Drupal.eu_cookie_compliance.setStatus(value); }; Drupal.eu_cookie_compliance.setStatus = function (status) { var date = new Date(); - date.setDate(date.getDate() + 100); - var cookie = 'cookie-agreed=' + status + ';expires=' + date.toUTCString() + ';path=' + drupalSettings.path.baseUrl; - if (drupalSettings.eu_cookie_compliance.domain) { - cookie += ';domain=' + drupalSettings.eu_cookie_compliance.domain; + var domain = drupalSettings.eu_cookie_compliance.domain ? drupalSettings.eu_cookie_compliance.domain : ''; + var path = drupalSettings.path.baseUrl; + var cookieName = (drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed' : drupalSettings.eu_cookie_compliance.cookie_name; + if (path.length > 1) { + var pathEnd = path.length - 1; + if (path.lastIndexOf('/') === pathEnd) { + path = path.substring(0, pathEnd); + } + } + + var cookie_session = parseInt(drupalSettings.eu_cookie_compliance.cookie_session); + if (cookie_session) { + $.cookie(cookieName, status, { path: path, domain: domain }); + } else { + var lifetime = parseInt(drupalSettings.eu_cookie_compliance.cookie_lifetime); + date.setDate(date.getDate() + lifetime); + $.cookie(cookieName, status, { expires: date, path: path, domain: domain }); + } + $(document).trigger('eu_cookie_compliance.changeStatus', [status]); + + // Store consent if applicable. + if (drupalSettings.eu_cookie_compliance.store_consent && ((status === 1 && drupalSettings.eu_cookie_compliance.popup_agreed_enabled) || (status === 2 && !drupalSettings.eu_cookie_compliance.popup_agreed_enabled))) { + var url = drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + 'eu-cookie-compliance/store_consent/banner'; + $.post(url, {}, function (data) { }); } - document.cookie = cookie; }; Drupal.eu_cookie_compliance.hasAgreed = function () { var status = Drupal.eu_cookie_compliance.getCurrentStatus(); - if (status === 1 || status === 2) { - return true; - } - return false; - }; - - /** - * Verbatim copy of Drupal.comment.getCookie(). - */ - Drupal.eu_cookie_compliance.getCookie = function (name) { - var search = name + '='; - var returnValue = '0'; - - if (document.cookie.length > 0) { - var offset = document.cookie.indexOf(search); - if (offset !== -1) { - offset += search.length; - var end = document.cookie.indexOf(';', offset); - if (end === -1) { - end = document.cookie.length; - } - returnValue = decodeURIComponent(document.cookie.substring(offset, end).replace(/\+/g, '%20')); + return (status === 1 || status === 2); + }; + + Drupal.eu_cookie_compliance.showBanner = function () { + var showBanner = false; + var status = Drupal.eu_cookie_compliance.getCurrentStatus(); + if ((status === 0 && drupalSettings.eu_cookie_compliance.method === 'default') || status === null) { + if (!drupalSettings.eu_cookie_compliance.disagree_do_not_show_popup || status === null) { + showBanner = true; } + } else if (status === 1 && drupalSettings.eu_cookie_compliance.popup_agreed_enabled) { + showBanner = true; } - return returnValue; + + return showBanner; }; Drupal.eu_cookie_compliance.cookiesEnabled = function () { var cookieEnabled = (navigator.cookieEnabled); if (typeof navigator.cookieEnabled === 'undefined' && !cookieEnabled) { - document.cookie = 'testcookie'; - cookieEnabled = (document.cookie.indexOf('testcookie') !== -1); + $.cookie('testcookie', 'testcookie', { expires: 100 }); + cookieEnabled = ($.cookie('testcookie').indexOf('testcookie') !== -1); } + return (cookieEnabled); }; + // Load blocked scripts if the user has agreed to being tracked. + var euCookieComplianceHasLoadedScripts = false; + $(function () { + if (Drupal.eu_cookie_compliance.hasAgreed() + || (Drupal.eu_cookie_compliance.getCurrentStatus() === null && drupalSettings.eu_cookie_compliance.method !== 'opt_in') + ) { + euCookieComplianceLoadScripts(); + euCookieComplianceHasLoadedScripts = true; + } + }); + + // Block cookies when the user hasn't agreed. + if ((drupalSettings.eu_cookie_compliance.method === 'opt_in' && (Drupal.eu_cookie_compliance.getCurrentStatus() === null || !Drupal.eu_cookie_compliance.hasAgreed())) + || (drupalSettings.eu_cookie_compliance.method === 'opt_out' && !Drupal.eu_cookie_compliance.hasAgreed() && Drupal.eu_cookie_compliance.getCurrentStatus() !== null) + ) { + // Split the white-listed cookies. + var euCookieComplianceWhitelist = drupalSettings.eu_cookie_compliance.whitelisted_cookies.split(/\r\n|\n|\r/g); + + // Add the EU Cookie Compliance cookie. + euCookieComplianceWhitelist.push((drupalSettings.eu_cookie_compliance.cookie_name === '') ? 'cookie-agreed' : drupalSettings.eu_cookie_compliance.cookie_name); + var euCookieComplianceBlockCookies = setInterval(function () { + // Load all cookies from jQuery. + var cookies = $.cookie(); + + // Check each cookie and try to remove it if it's not white-listed. + for (var i in cookies) { + var remove = true; + var hostname = window.location.hostname; + var cookieRemoved = false; + var index = 0; + + // Skip the PHP session cookie. + if (i.indexOf('SESS') === 0 || i.indexOf('SSESS') === 0) { + remove = false; + } + + // Check if the cookie is white-listed. + for (var item in euCookieComplianceWhitelist) { + if (i === euCookieComplianceWhitelist[item]) { + remove = false; + } + } + + // Remove the cookie if it's not white-listed. + if (remove) { + while (!cookieRemoved && hostname !== '') { + // Attempt to remove. + cookieRemoved = $.removeCookie(i, { domain: '.' + hostname, path: '/' }); + if (!cookieRemoved) { + cookieRemoved = $.removeCookie(i, { domain: hostname, path: '/' }); + } + + index = hostname.indexOf('.'); + + // We can be on a sub-domain, so keep checking the main domain as well. + hostname = (index === -1) ? '' : hostname.substring(index + 1); + } + } + } + }, 5000); + } + })(jQuery, Drupal, drupalSettings);