Commit ab4246d8 authored by Sven Berg Ryen's avatar Sven Berg Ryen
Browse files

Issue #3302170 by svenryen: Uncaught ReferenceError: once is not defined in attach

parent a121ed40
Loading
Loading
Loading
Loading
+43 −0
Changes for js/eu_cookie_compliance.js: 43 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -22,6 +22,48 @@
  Drupal.behaviors.euCookieCompliancePopup = {
    attach: function (context) {
      if (typeof drupalSettings.eu_cookie_compliance !== 'undefined') {
        if (typeof $('body').once !== 'undefined') {
          $(drupalSettings.eu_cookie_compliance.containing_element).once('eu-cookie-compliance').each(function (element) {

            // Initialize internal variables.
            _euccCurrentStatus = self.getCurrentStatus();
            _euccSelectedCategories = self.getAcceptedCategories();
            // 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();
                  }

                  // If not in EU, set an agreed cookie automatically.
                  else {
                    Drupal.eu_cookie_compliance.setStatus(cookieValueAgreed);
                    // Set the geoip_match to false so it can be used elsewhere.
                    drupalSettings.eu_cookie_compliance.geoip_match = false;
                    // Also set all the categories as agreed if applicable, and load
                    // scripts.
                    if (drupalSettings.eu_cookie_compliance.method === 'categories') {
                      var categories = drupalSettings.eu_cookie_compliance.cookie_categories;
                      Drupal.eu_cookie_compliance.setAcceptedCategories(categories);
                      Drupal.eu_cookie_compliance.loadCategoryScripts(categories);
                    }
                  }
                });
              }
            }

            // Otherwise, fallback to standard behavior which is to render the banner.
            else if (!drupalSettings.eu_cookie_compliance.hide_the_banner) {
              Drupal.eu_cookie_compliance.execute();
            }
            $(element).addClass('eu-cookie-compliance-status-' + Drupal.eu_cookie_compliance.getCurrentStatus());
          });
        }
        else {
          const elements = once('eu-cookie-compliance', drupalSettings.eu_cookie_compliance.containing_element, context);
          elements.forEach(function (element) {

@@ -63,6 +105,7 @@
            $(element).addClass('eu-cookie-compliance-status-' + Drupal.eu_cookie_compliance.getCurrentStatus());
          });
        }
      }
    },
  };