acquia_commercemanager-8.x-1.122/modules/acm_promotion/js/acm_promotion.js

modules/acm_promotion/js/acm_promotion.js
/**
 * @file
 * Provides features for the promotion module.
 *
 * Pulls 'always on' promotions and places them sessionStorage while also
 * providing promotion related utility methods for other modules.
 */

(function ($, Drupal) {
  Drupal.behaviors.acm_promotion = {
    /**
     * Adds any 'always on' promotions to the session.
     */
    attach: function (context, settings) {
      $('body', context).once('acm_promotion').each(function () {
        Drupal.behaviors.acm_promotion.init(settings);
      });
    },


    /**
     * Adds any 'always on' promotions to the session.
     *
     * @param {object} settings
     *   This is the drupalSettings object.
     */
    init: function (settings) {
      // No need to continue if promotions are not present.
      if (typeof settings.acm_promotion.always_on === 'undefined') {
        return;
      }

      var always_on_promos = settings.acm_promotion.always_on;
      Drupal.behaviors.acm_promotion.addPromotionData(always_on_promos);
    },

    /**
     * Loads the promotion data from sessionStorage.
     *
     * @return
     *   Array of promotion codes found in sessionStorage.
     */
    loadPromotionData: function () {
      var sessionStorage = window.sessionStorage;
      var promos = sessionStorage.getItem('acm_promotion');

      if (promos === null) {
        promos = '[]';
      }

      return JSON.parse(promos);
    },

    /**
     * Saves promotion data to sessionStorage.
     *
     * @param {array} data
     *   An array of promotions to save into sessionStorage.
     */
    savePromotionData: function (data) {
      var sessionStorage = window.sessionStorage;
      sessionStorage.setItem('acm_promotion', JSON.stringify(data));
    },

    /**
     * Adds promotion data into sessionStorage.
     *
     * Adds promotion data to sessionStorage if the promotion data does not
     * already exist in sessionStorage.
     *
     * @param {array} data
     *   An array of promotions to save into sessionStorage.
     */
    addPromotionData: function(promos) {
      var session_promos = Drupal.behaviors.acm_promotion.loadPromotionData();
      var dirty = false;

      for (var i = 0; i < promos.length; i++) {
        var promo = promos[i];

        if (session_promos.indexOf(promo) < 0) {
          dirty = true;
          session_promos.push(promo);
        }
      }

      if (dirty) {
        Drupal.behaviors.acm_promotion.savePromotionData(session_promos);
      }
    },

    /**
     * Loads the coupon from sessionStorage.
     *
     * @return
     *   String value of the coupon.
     */
    getCoupon: function () {
      var sessionStorage = window.sessionStorage;
      var coupon = sessionStorage.getItem('acm_promotion_coupon');

      if (coupon === null) {
        coupon = '';
      }

      return coupon;
    },

    /**
     * Saves the coupon to sessionStorage.
     *
     * @param {string} coupon
     *   String value of the coupon.
     */
    setCoupon: function (coupon) {
      var sessionStorage = window.sessionStorage;
      sessionStorage.setItem('acm_promotion_coupon', coupon);
    }
  };
})(jQuery, Drupal);

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

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