cookies-1.0.3/modules/cookies_asset_injector/js/consentHandler.js

modules/cookies_asset_injector/js/consentHandler.js
/**
 * @file
 * Defines Javascript behaviors for the cookies module.
 */
(function (Drupal) {
  'use strict';

  /**
   * Define defaults.
   */
  Drupal.behaviors.consentHandler = {
    consentGiven: function (context, settings, serviceId) {
      var blockedAssetsObj = drupalSettings.cookies.cookies_asset_injector.blocked_assets;
      var consentedBlockedAssets = blockedAssetsObj[serviceId];
      if (consentedBlockedAssets) {
        // This service has been unblocked. Unblock asset_injector scripts:
        for (var i in consentedBlockedAssets) {
          if (Object.prototype.hasOwnProperty.call(consentedBlockedAssets, i) && consentedBlockedAssets[i]) {
            var blockedAsset = consentedBlockedAssets[i];
            var scriptId = blockedAsset.script_dom_id;
            var script = document.getElementById(scriptId);
            if (script && script.nodeName === 'SCRIPT') {
              var content = script.innerHTML;
              var newScript = document.createElement('script');
              var attributes = Array.from(script.attributes);
              for (var attr in attributes) {
                if (Object.prototype.hasOwnProperty.call(attributes, attr) && attributes[attr]) {
                  var name = attributes[attr].nodeName;
                  if (name !== 'type' && name !== 'id') {
                    newScript.setAttribute(name, attributes[attr].nodeValue);
                  }
                }
              }
              newScript.innerHTML = content;
              script.parentNode.replaceChild(newScript, script);
            }
          }
        }
      }
    },

    consentDenied: function (context, settings, serviceId) {
      // Nothing to do here.
    },

    attach: function (context, settings) {
      var self = this;
      document.addEventListener('cookiesjsrUserConsent', function (event) {
        var services = (typeof event.detail.services === 'object') ? event.detail.services : {};
        for (var serviceId in services) {
          if (Object.prototype.hasOwnProperty.call(services, serviceId)) {
            var consentGiven = services[serviceId];
            if (consentGiven) {
              self.consentGiven(context, settings, serviceId);
            }
            else {
              self.consentDenied(context, settings, serviceId);
            }
          }
        }
      });
    }
  };
})(Drupal, drupalSettings);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc