403Webshell
Server IP : 104.171.130.249  /  Your IP : 216.73.216.146
Web Server : nginx/1.25.5
System : Linux 0dac65491b7e 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64
User : root ( 0)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/html/wp-content/themes/matreshka/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/wp-content/themes/matreshka/assets/js/shipping.js
/**
 * Matreshka — Shipping Toggle + Pickup Modal
 * Доставка / Самовывоз на странице корзины
 *
 * Зависимости: jQuery, matreshkaShipping (wp_localize_script)
 */
(function ($) {
  'use strict';

  if (typeof matreshkaShipping === 'undefined') return;

  var isProcessing = false;

  /* ──────────────────────────────────────────
   * Init — bind all events (call on load + re-init)
   * ────────────────────────────────────────── */
  function init() {
    bindToggle();
    bindModal();
    bindStoreItems();
  }

  /* ── Toggle Delivery ↔ Pickup ────────────── */
  function bindToggle() {
    $(document).off('click.mshipping', '.shipping-toggle-btn')
      .on('click.mshipping', '.shipping-toggle-btn', function () {
        if (isProcessing) return;

        var method = $(this).data('method');
        if ($(this).hasClass('active')) return;

        $('.shipping-toggle-btn').removeClass('active');
        $(this).addClass('active');

        if (method === 'delivery') {
          $('.shipping-pickup-info').hide();
          $('.shipping-delivery-info').show();
        } else {
          $('.shipping-delivery-info').hide();
          $('.shipping-pickup-info').show();
        }

        sendShippingChoice(method);
      });
  }

  /* ══════════════════════════════════════════
   * Pickup Store Modal
   * ══════════════════════════════════════════ */
  function bindModal() {
    /* Open modal */
    $(document).off('click.mshipping', '#btn-pickup-store-modal')
      .on('click.mshipping', '#btn-pickup-store-modal', function (e) {
        e.preventDefault();
        openPickupModal();
      });

    /* Close — ✕ button */
    $(document).off('click.mshipping', '#pickup-modal-close')
      .on('click.mshipping', '#pickup-modal-close', function () {
        closePickupModal();
      });

    /* Close — overlay click */
    $(document).off('click.mshipping', '#pickup-modal-overlay')
      .on('click.mshipping', '#pickup-modal-overlay', function () {
        closePickupModal();
      });

    /* Done — Готово */
    $(document).off('click.mshipping', '#pickup-modal-done')
      .on('click.mshipping', '#pickup-modal-done', function () {
        var $modal = $(this).closest('.pickup-modal');
        var $active = $modal.find('.pickup-store-item.active');
        if ($active.length) {
          var address = $active.find('.pickup-store-address').text().trim();
          var storeIndex = $active.find('input[name="matreshka_pickup_store"]').val();

          $('#pickup-store-selected-address').text(address);
          sendShippingChoice('pickup', storeIndex);
        }
        closePickupModal();
      });

    /* Escape key */
    $(document).off('keydown.mshipping-modal')
      .on('keydown.mshipping-modal', function (e) {
        if (e.key === 'Escape' && $('#pickup-modal').hasClass('open')) {
          closePickupModal();
        }
      });
  }

  function openPickupModal() {
    $('#pickup-modal-overlay').addClass('open');
    $('#pickup-modal').addClass('open');
    $('body').css('overflow', 'hidden');
  }

  function closePickupModal() {
    $('#pickup-modal-overlay').removeClass('open');
    $('#pickup-modal').removeClass('open');
    $('body').css('overflow', '');
  }

  /* ── Store item radio select inside modal ── */
  function bindStoreItems() {
    $(document).off('click.mshipping', '.pickup-store-item')
      .on('click.mshipping', '.pickup-store-item', function () {
        var $radio = $(this).find('input[type="radio"]');
        $radio.prop('checked', true);

        var $modal = $(this).closest('.pickup-modal');
        $modal.find('.pickup-store-item').removeClass('active');
        $(this).addClass('active');
      });

    $(document).off('change.mshipping', '.pickup-store-item input[type="radio"]')
      .on('change.mshipping', '.pickup-store-item input[type="radio"]', function () {
        var $modal = $(this).closest('.pickup-modal');
        $modal.find('.pickup-store-item').removeClass('active');
        $(this).closest('.pickup-store-item').addClass('active');
      });
  }

  /* ──────────────────────────────────────────
   * AJAX — set shipping method + store
   * ────────────────────────────────────────── */
  function sendShippingChoice(method, storeIndex) {
    isProcessing = true;
    $('.shipping-toggle-btn').css('opacity', 0.6);

    var data = {
      action: 'matreshka_set_shipping',
      nonce:  matreshkaShipping.nonce,
      method: method
    };

    if (method === 'pickup') {
      if (storeIndex === undefined) {
        storeIndex = $('#pickup-modal input[name="matreshka_pickup_store"]:checked').val();
      }
      data.store_index = storeIndex !== undefined ? storeIndex : 0;
    }

    $.post(matreshkaShipping.ajaxurl, data).done(function (resp) {
      if (resp.success && resp.data) {
        // Update total price from AJAX response
        if (resp.data.total_html) {
          var $total = $('#matreshka-cart-total');
          if ($total.length) {
            $total.html(resp.data.total_html);
          }
        }

        // Re-render checkout fragments so the selected method remains in sync.
        if ($('form.checkout').length) {
          $(document.body).trigger('update_checkout');
        }
      }
    }).always(function () {
      isProcessing = false;
      $('.shipping-toggle-btn').css('opacity', 1);
    });
  }

  /* ──────────────────────────────────────────
   * Re-init after WC replaces DOM content
   * ────────────────────────────────────────── */
  $(document.body).on('updated_cart_totals updated_checkout', function () {
    init();
  });

  /* ── First run ───────────────────────────── */
  init();

})(jQuery);

Youez - 2016 - github.com/yon3zu
LinuXploit