jQuery(
function ($){
let sub_list=$('.shop_table .product-name');
let sub_details=$('.shop_table.subscription_details');
let add_new_form_content=$('.wpr-add-new-form-content');
let clickInProgress=false;
let ssdReplaceSubscriptionId=null;
let ssdReplaceItemId=null;
let ssdPersistedNoticeKey='ssd_persisted_notice';
function ssdPersistNotice(message, type){
if(!message){
return;
}
let payload={
message: message,
type: type||'success',
ts: Date.now(),
};
try {
window.sessionStorage.setItem(ssdPersistedNoticeKey, JSON.stringify(payload));
} catch (e){
}}
function ssdExtractNoticeText(html){
if(!html){
return '';
}
return $('<div />').html(html).text().trim();
}
function ssdClearOldInlineMessages(){
$('.ssd-display-notification, .ssd-error-display-notification').remove();
}
function ssdScrollToTop(){
window.scrollTo(0, 0);
}
function ssdForceScrollToTop(){
try {
if(window.history&&typeof window.history.scrollRestoration!=='undefined'){
window.history.scrollRestoration='manual';
}} catch (e){
}
window.scrollTo(0, 0);
$('html, body').scrollTop(0);
if(window.requestAnimationFrame){
window.requestAnimationFrame(function (){
window.scrollTo(0, 0);
$('html, body').scrollTop(0);
window.requestAnimationFrame(function (){
window.scrollTo(0, 0);
$('html, body').scrollTop(0);
});
});
}
setTimeout(function (){
window.scrollTo(0, 0);
$('html, body').scrollTop(0);
}, 50);
$(window).one('load', function (){
window.scrollTo(0, 0);
$('html, body').scrollTop(0);
});
}
function ssdRenderPersistedNotice(){
let raw;
try {
raw=window.sessionStorage.getItem(ssdPersistedNoticeKey);
} catch (e){
return;
}
if(!raw){
return;
}
let payload;
try {
payload=JSON.parse(raw);
} catch (e){
window.sessionStorage.removeItem(ssdPersistedNoticeKey);
return;
}
window.sessionStorage.removeItem(ssdPersistedNoticeKey);
if(!payload||!payload.message){
return;
}
if(payload.ts&&(Date.now() - payload.ts) > (5 * 60 * 1000)){
return;
}
let $wrapper=$('.woocommerce-notices-wrapper').first();
if(!$wrapper.length){
$wrapper=$('.woocommerce').first();
}
if(!$wrapper.length){
$wrapper=$('body');
}
let noticeClass=payload.type==='error' ? 'woocommerce-error':'woocommerce-message';
let $notice=$('<div />', { class: noticeClass, text: payload.message });
$wrapper.prepend($notice);
ssdForceScrollToTop();
}
ssdRenderPersistedNotice();
function ssdClearReplaceContext(){
ssdReplaceSubscriptionId=null;
ssdReplaceItemId=null;
}
function ssdMaybeRunReplaceFlow(orderId){
if(!ssdReplaceSubscriptionId||!ssdReplaceItemId){
return false;
}
if(parseInt(orderId, 10)!==parseInt(ssdReplaceSubscriptionId, 10)){
return false;
}
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
dataType: 'json',
data: {
action: 'ssd_remove_subscription_item',
nonce: wpr_sd_js.nonce,
order_id: ssdReplaceSubscriptionId,
item_id: ssdReplaceItemId,
},
success: function (response){
ssdClearReplaceContext();
if(response&&response.success){
if(response&&response.data&&response.data.html){
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'success');
}
location.reload();
return;
}
if(response&&response.data&&response.data.message){
$('#ssd-modal-content').prepend('<p class="error-text">' + response.data.message + '</p>');
}else{
$('#ssd-modal-content').prepend('<p class="error-text">An error occurred. Please try again.</p>');
}},
error: function (XMLHttpRequest){
ssdClearReplaceContext();
if(XMLHttpRequest&&XMLHttpRequest.responseText){
console.error(XMLHttpRequest.responseText);
}
$('#ssd-modal-content').prepend('<p class="error-text">An error occurred. Please try again.</p>');
}});
return true;
}
sub_list.on('click',
'.wpr-quantity-update',
function (e){
e.preventDefault();
$('.wpr-qty-input,.wpr-change-subscription-variation,.wpr-add-new-subscription,.wpr-cancel-qty').remove();
$('.wpr-subscription-update').hide();
let $current_qty=$(this).data('item-qty');
$('<input type="number" class="wpr-qty-input input-text qty text" value="' + $current_qty + '" step="1" min="1" name="wpr-quantity" value="1" title="Qty" size="4" inputmode="numeric">').insertBefore($(this));
$(
'<a></a>',
{
href: '#',
text: wpr_sd_js.wpr_cancel_qty,
class: 'button wpr-cancel-qty'
}
).insertAfter($(this));
$(this).toggleClass('wpr-quantity-update wpr-quantity-save').html(wpr_sd_js.wpr_save_qty);
$(this).addClass('disable-click');
}
);
sub_list.on('change paste keyup', '.wpr-qty-input', function (){
$('.wpr-quantity-save').removeClass('disable-click');
});
sub_list.on('click',
'.wpr-quantity-save',
function (e){
e.preventDefault();
let $saveLink=$(this);
if($saveLink.hasClass('disabled')||$saveLink.hasClass('disable-click')){
return;
}
let $order_id=$(this).data('id');
let $item_id=$(this).data('item-id');
let $qty=$('.wpr-qty-input').val();
if($qty < 1||!Number.isInteger(Number($qty))||$qty===''){
let errorHtml='<div class="ssd-error-display-notification">Quantity must be a positive whole number greater than 0.</div>';
$(errorHtml).insertBefore('.wpr-variable-form-' + $item_id);
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
return;
}
let originalText=$saveLink.text();
$saveLink
.addClass('disable-click disabled')
.text('Saving...');
wpr_update_subscription_quantity($order_id, $item_id, $qty);
}
);
sub_list.on('click',
'.wpr-cancel-qty',
function (e){
e.preventDefault();
$('.wpr-qty-input').remove();
$('.wpr-subscription-update').show();
$(this).remove();
$('.wpr-quantity-save').toggleClass('wpr-quantity-save wpr-quantity-update').html(wpr_sd_js.wpr_change_qty).removeClass('disable-click');
}
);
sub_details.on('click',
'#wpr-subscription-pause-cancel',
function (e){
e.preventDefault();
$('#wpr-pause-date-subscription').remove();
$('.pause_subscription').show();
}
);
sub_details.on('click',
'.wpr-subscription-cancel-shipping-submit',
function (e){
e.preventDefault();
$('#wpr-shipping-type-subscription').remove();
$('.ssd_change_shipping').show();
setTimeout(function (){
location.reload();
}, 500);
}
);
sub_details.on('click', '.ssd_change_shipping', function (e){
e.preventDefault();
$('#wpr-shipping-type-subscription').remove();
let href=$(this).attr('href');
let url=href.includes('http') ? new URL(href):new URL(window.location.origin + href);
let searchParams=new URLSearchParams(url.search);
let $subscription_id=searchParams.get('subscription');
let $shipping_item=$(this);
ssd_trigger_shipping_modal($subscription_id, $shipping_item);
});
function ssd_trigger_cancellation_modal(subscription_id, original_href){
var modalContent=$('#ssd-cancellation-modal-content');
$('.ssd-cancellation-modal-wrapper').addClass('ssd-show', 1000, "easeOutSine");
if($.fn.unblock){
$('.shop_table').unblock();
$('body').unblock();
}
modalContent.html('<p class="loading-text">Loading...</p>');
$('#ssd-cancellation-modal-content').data('original-href', original_href);
$('#ssd-cancellation-modal-content').data('subscription-id', subscription_id);
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'ssd_load_cancellation_modal',
nonce: wpr_sd_js.nonce,
subscription_id: subscription_id
},
success: function (response){
if(response.success){
modalContent.html(response.data.html);
modalContent.on('change', '.ssd-cancellation-reason-radio', function (){
$('#ssd-confirm-cancel').prop('disabled', false);
});
$('#ssd-confirm-cancel').on('click', function (){
var original_href=$('#ssd-cancellation-modal-content').data('original-href');
var subscription_id=$('#ssd-cancellation-modal-content').data('subscription-id');
var reason=$('input[name="ssd_cancellation_reason"]:checked').val();
if(!reason&&$('input[name="ssd_cancellation_reason"][type="hidden"]').length){
reason=$('input[name="ssd_cancellation_reason"][type="hidden"]').val();
}
var $button=$(this);
var originalButtonText=$button.text();
$button.prop('disabled', true).text('Processing...');
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
timeout: 30000,
data: {
action: 'ssd_handle_cancellation_ajax',
nonce: wpr_sd_js.nonce,
subscription_id: subscription_id,
reason: reason
},
success: function (response){
if(response.success){
$('.ssd-cancellation-modal-wrapper').removeClass('ssd-show');
$(document).off('click', 'a.cancel, a.button.cancel, .shop_table a');
window.location.href=response.data.redirect;
}else{
alert(response.data.message||'Error cancelling subscription. Please try again.');
$button.prop('disabled', false).text(originalButtonText);
}},
error: function (xhr, status, error){
console.error('SSD Cancellation Error:', status, error);
var errorMessage='An error occurred while cancelling the subscription. Please try again or contact support.';
if(status==='timeout'){
errorMessage='The request timed out. Please check your internet connection and try again.';
}else if(xhr.responseJSON&&xhr.responseJSON.data&&xhr.responseJSON.data.message){
errorMessage=xhr.responseJSON.data.message;
}
alert(errorMessage);
$button.prop('disabled', false).text(originalButtonText);
}});
});
}}
});
}
sub_list.on('click',
'.wpr-subscription-cancel-submit',
function (e){
e.preventDefault();
$('.wpr-change-subscription-variation').remove();
$('.composite_form').remove();
$('.ssd_bundle_form').remove();
$('.wpr-subscription-update,.wpr-quantity-update').show();
}
);
add_new_form_content.on('click',
'.wpr-subscription-cancel-add',
function (e){
e.preventDefault();
$('.wpr-add-new-subscription').remove();
$('.wpr-add-product').show();
$('.wpr-cancel-add-product').remove();
}
);
$('.woocommerce').on('click',
'.wpr-cancel-add-product',
function (e){
e.preventDefault();
$('.wpr-add-new-subscription').remove();
$('.wpr-add-product').show();
$('.wpr-cancel-add-product').remove();
}
);
add_new_form_content.on('click',
'.wpr-select-add-variable',
function (e){
e.preventDefault();
var $button=$(this);
var $container=$button.closest('.wpr-product-add-button');
var productId=$button.data('product-id');
var orderId=$button.data('order-id');
if($container.find('.variations_form').length > 0){
$button.hide();
$container.find('.variations_form').show();
return;
}
var originalText=$button.text();
$button.prop('disabled', true).text('Loading...');
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_load_variation_form_add',
nonce: wpr_sd_js.nonce,
product_id: productId,
order_id: orderId,
replace_item_id: ssdReplaceItemId ? ssdReplaceItemId:'',
},
success: function (response){
if(response.success&&response.data.html){
$button.hide();
$container.append(response.data.html);
var $form=$container.find('.variations_form');
if($form.length){
setTimeout(function (){
if(typeof $.fn.wc_variation_form!=='undefined'){
$form.wc_variation_form();
}else if(typeof wc_add_to_cart_variation_params!=='undefined'){
$form.each(function (){
$(this).wc_variation_form();
});
}
$form.trigger('check_variations');
}, 100);
}}else{
var errorMsg=(response.data&&response.data.html) ? response.data.html:'Error loading variation form.';
$container.append('<div class="ssd-error-display-notification">' + errorMsg + '</div>');
$button.prop('disabled', false).text(originalText);
setTimeout(function (){
$container.find('.ssd-error-display-notification').remove();
}, 5000);
}},
error: function (XMLHttpRequest, textStatus, errorThrown){
$button.prop('disabled', false).text(originalText);
$container.append('<div class="ssd-error-display-notification">An error occurred. Please try again.</div>');
setTimeout(function (){
$container.find('.ssd-error-display-notification').remove();
}, 5000);
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
});
}
);
add_new_form_content.on('click',
'.wpr-select-add-composite',
function (e){
e.preventDefault();
$(this).hide().closest('.wpr-product-add-button').find('.composite_form').show();
}
);
add_new_form_content.on('click',
'.wpr-select-add-bundle',
function (e){
e.preventDefault();
$(this).hide().closest('.wpr-product-add-button').find('.bundle_form').show();
}
);
add_new_form_content.on('click',
'.wpr-subscription-cancel-submit',
function (e){
e.preventDefault();
$(this).closest('.variations_form').hide();
$(this).closest('.bundle_form').hide();
$(this).closest('.composite_form').hide();
$(this).closest('.wpr-product-add-button').find('.wpr-select-add-variable').show();
$(this).closest('.wpr-product-add-button').find('.wpr-select-add-bundle').show();
$(this).closest('.wpr-product-add-button').find('.wpr-select-add-composite').show();
}
);
add_new_form_content.on('click',
'#ssd-submit-search',
function (e){
e.preventDefault();
ssd_trigger_search_ajax($('#ssd-modal-content').find('#ssd-search-products').val(), $('#ssd-modal-content').find('#ssd-search-products').data('id'));
}
);
add_new_form_content.on('keydown', '#ssd-search-products', function (e){
var key=e.which;
switch (key){
case 13:
$('#ssd-submit-search').click();
break;
default:
break;
}});
sub_list.on('click',
'.wpr-subscription-update',
function (e){
e.preventDefault();
$('.wpr-quantity-update').hide();
$('.wpr-qty-input,.wpr-change-subscription-variation,.wpr-add-new-subscription,.wpr-cancel-qty').remove();
$(this).closest('td.product-name').find('.wpr-quantity-save').toggleClass('wpr-quantity-save wpr-quantity-update').html(wpr_sd_js.wpr_change_qty);
let $order_id=$(this).data('id');
let $item_id=$(this).data('item-id');
let $sub_item=$(this);
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_display_variation',
nonce: wpr_sd_js.nonce,
item_id: $item_id,
order_id: $order_id,
},
complete: function (){
$sub_item.delay(1000).hide();
},
success: function (response){
$('.wpr-variable-form-' + $item_id).html(response.data.html);
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
sub_list.on('click',
'.wpr-subscription-update-submit',
function (e){
e.preventDefault();
let $button=jQuery(this);
if($button.prop('disabled')){
return;
}
let originalButtonText=$button.text();
$button.prop('disabled', true).addClass('disabled').text('Saving...');
let itemId=$button.data('item-id');
let orderId=$button.data('id');
let $form=$button.closest('form.wpr-change-subscription-variation');
let serialized=$form.serialize();
let allFilled=true;
$form.find('select').each(function (){
if(jQuery.trim(jQuery(this).val()).length===0){
allFilled=false;
}});
if(!allFilled){
alert(wpr_sd_js.wpr_product_variations_alert);
return;
}
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_update_variable',
nonce: wpr_sd_js.nonce,
data: serialized,
order_id: orderId,
item_id: itemId,
},
complete: function (){ },
success: function (response){
$('.wpr-change-subscription-variation').remove();
if(response.error){
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'error');
location.reload();
}else{
if(1!=wpr_sd_js.ssd_trigger_shipping){
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'success');
location.reload();
}else{
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'success');
ssd_trigger_shipping_modal(orderId);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
$button.prop('disabled', false).removeClass('disabled').text(originalButtonText);
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
});
}
);
sub_list.on('click',
'.wpr-subscription-bundle-update-submit',
function (e){
e.preventDefault();
let $button=$(this);
let $item_id=$(this).data('item-id');
let $order_id=$(this).data('id');
let $form=$button.closest('form.ssd_bundle_form');
let serialized=$form.serialize();
let allFilled=true;
$form.find('select').each(function (){
if($.trim($(this).val()).length===0){
allFilled=false;
}});
if(!allFilled){
alert(wpr_sd_js.wpr_product_variations_alert);
return;
}
$('.wpr-subscription-bundle-update-submit').attr('disabled', true);
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_update_bundle',
nonce: wpr_sd_js.nonce,
data: serialized,
order_id: $order_id,
item_id: $item_id,
},
complete: function (){
},
success: function (response){
$('.wpr-change-subscription-variation').remove();
if(response.error){
$('.wpr-variable-form-' + $item_id).append(response.data.html);
ssdScrollToTop();
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}else{
ssdClearOldInlineMessages();
$('.wpr-variable-form-' + $item_id).append(response.data.html);
ssdScrollToTop();
if(1!=wpr_sd_js.ssd_trigger_shipping){
setTimeout(function (){
location.reload();
}, 5000);
}else{
ssd_trigger_shipping_modal($order_id);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
sub_list.on('click',
'.wpr-subscription-composite-update-submit',
function (e){
e.preventDefault();
let $button=$(this);
let $item_id=$(this).data('item-id');
let $order_id=$(this).data('id');
let $form=$button.closest('form.composite_form');
let serialized=$form.serialize();
$('.wpr-subscription-composite-update-submit').attr('disabled', true);
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_update_composite',
nonce: wpr_sd_js.nonce,
data: serialized,
order_id: $order_id,
item_id: $item_id,
},
complete: function (){
},
success: function (response){
$('.wpr-change-subscription-variation').remove();
if(response.error){
$('.wpr-variable-form-' + $item_id).append(response.data.html);
ssdScrollToTop();
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}else{
ssdClearOldInlineMessages();
$('.wpr-variable-form-' + $item_id).append(response.data.html);
ssdScrollToTop();
if(1!=wpr_sd_js.ssd_trigger_shipping){
setTimeout(function (){
location.reload();
}, 5000);
}else{
ssd_trigger_shipping_modal($order_id);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
$('.woocommerce').on('click',
'.wpr-add-product',
function (e){
e.preventDefault();
$('.wpr-qty-input,.wpr-change-subscription-variation,.wpr-add-new-subscription,.wpr-cancel-qty').remove();
$(this).closest('td.product-name').find('.wpr-quantity-save').toggleClass('wpr-quantity-save wpr-quantity-update').html(wpr_sd_js.wpr_change_qty);
let $order_id=$(this).data('id');
let modalContent=$('#ssd-modal-content');
$('.ssd-modal-wrapper').addClass('ssd-show', 1000, "easeOutSine");
modalContent.html('<p class="loading-text">Loading...</p>');
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
dataType: 'json',
data: {
action: 'wpr_add_new_product',
nonce: wpr_sd_js.nonce,
order_id: $order_id,
replace_item_id: ssdReplaceItemId ? ssdReplaceItemId:'',
},
success: function (response){
if(typeof response==='string'){
modalContent.html(response);
return;
}else if(response&&response.data&&typeof response.data.html!=='undefined'){
modalContent.html(response.data.html);
}else if(response&&response.data&&typeof response.data.message!=='undefined'){
modalContent.html('<p class="error-text">' + response.data.message + '</p>');
}else{
modalContent.html('<p class="error-text">An error occurred. Please try again.</p>');
console.error('SSD: unexpected AJAX response for wpr_add_new_product', response);
return;
}
if(response.error){
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}else{
if($('.wpr-cancel-add-product').length===0){
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest&&XMLHttpRequest.responseText&&textStatus==='parsererror'){
modalContent.html(XMLHttpRequest.responseText);
return;
}
modalContent.html('<p class="error-text">An error occurred. Please try again.</p>');
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
});
}
);
$('.woocommerce').on('click',
'.wpr-replace-product',
function (e){
e.preventDefault();
ssdReplaceSubscriptionId=$(this).data('id');
ssdReplaceItemId=$(this).data('item-id');
let $addProductButton=$('.woocommerce').find('.wpr-add-product[data-id="' + ssdReplaceSubscriptionId + '"]');
if($addProductButton.length){
$addProductButton.trigger('click');
return;
}
let modalContent=$('#ssd-modal-content');
$('.ssd-modal-wrapper').addClass('ssd-show', 1000, "easeOutSine");
modalContent.html('<p class="loading-text">Loading...</p>');
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
dataType: 'json',
data: {
action: 'wpr_add_new_product',
nonce: wpr_sd_js.nonce,
order_id: ssdReplaceSubscriptionId,
replace_item_id: ssdReplaceItemId ? ssdReplaceItemId:'',
},
success: function (response){
if(typeof response==='string'){
modalContent.html(response);
return;
}else if(response&&response.data&&typeof response.data.html!=='undefined'){
modalContent.html(response.data.html);
}else if(response&&response.data&&typeof response.data.message!=='undefined'){
modalContent.html('<p class="error-text">' + response.data.message + '</p>');
}else{
modalContent.html('<p class="error-text">An error occurred. Please try again.</p>');
console.error('SSD: unexpected AJAX response for wpr_add_new_product', response);
return;
}
if(response.error){
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}},
error: function (XMLHttpRequest, textStatus){
if(XMLHttpRequest&&XMLHttpRequest.responseText&&textStatus==='parsererror'){
modalContent.html(XMLHttpRequest.responseText);
return;
}
modalContent.html('<p class="error-text">An error occurred. Please try again.</p>');
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
});
}
);
add_new_form_content.on('click',
'.wpr-add-simple-product',
function (e){
e.preventDefault();
if(clickInProgress) return;
clickInProgress=true;
let $sub_id=$(this).data('subscription-in');
let $order_id=$(this).data('id');
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_add_simple_product',
nonce: wpr_sd_js.nonce,
order_id: $order_id,
sub_id: $sub_id,
},
complete: function (){
clickInProgress=false;
},
success: function (response){
$('.wpr-add-new-subscription').remove();
$('.wpr-add-product').show();
$('.wpr-cancel-add-product').remove();
ssdClearOldInlineMessages();
$(response.data.html).insertAfter('.ssd-search-modal-header').slideDown(500);
ssdScrollToTop();
if(response.error){
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}else{
if(ssdMaybeRunReplaceFlow($order_id)){
return;
}
if(1!=wpr_sd_js.ssd_trigger_shipping){
setTimeout(function (){
location.reload();
}, 5000);
}else{
ssd_trigger_shipping_modal($order_id);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
add_new_form_content.on('click',
'.wpr-subscription-add-submit',
function (e){
e.preventDefault();
if(clickInProgress) return;
clickInProgress=true;
let $sub_id=$(this).data('subscription-in');
let $order_id=$(this).data('id');
let serialized=$('.wpr-add-product-' + $sub_id).serialize();
let $empty_var=true;
$(this).closest('.wpr-product-add-button').find('form.wpr-add-product-' + $sub_id + ' select').each(function (index, el){
if($.trim($(this).val()).length===0){
$empty_var=false;
}}
);
if(!$empty_var){
alert(wpr_sd_js.wpr_product_variations_alert);
return;
}
$('.wpr-subscription-add-submit, .wpr-add-variable-product-next-shipment')
.prop('disabled', true)
.addClass('disabled');
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_add_variable_product',
nonce: wpr_sd_js.nonce,
data: serialized,
order_id: $order_id,
sub_id: $sub_id,
},
complete: function (){
clickInProgress=false;
},
success: function (response){
$('.wpr-add-new-subscription').remove();
$('.wpr-add-product').show();
$('.wpr-cancel-add-product').remove();
ssdClearOldInlineMessages();
$(response.data.html).insertAfter('.ssd-search-modal-header').slideDown(500);
ssdScrollToTop();
if(response.error){
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}else{
if(ssdMaybeRunReplaceFlow($order_id)){
return;
}
if(1!=wpr_sd_js.ssd_trigger_shipping){
setTimeout(function (){
location.reload();
}, 5000);
}else{
ssd_trigger_shipping_modal($order_id);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
add_new_form_content.on('click',
'.wpr-subscription-bundle-add-submit',
function (e){
e.preventDefault();
if(clickInProgress) return;
clickInProgress=true;
let $sub_id=$(this).data('subscription-in');
let $order_id=$(this).data('id');
let serialized=$('.wpr-add-bundle-' + $sub_id).serialize();
let $empty_var=true;
$(this).closest('.wpr-add-new-subscription').find('form.wpr-add-bundle-' + $sub_id + ' select').each(function (index, el){
if($.trim($(this).val()).length===0){
$empty_var=false;
}}
);
if(!$empty_var){
alert(wpr_sd_js.wpr_product_variations_alert);
return;
}
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_add_bundle_product',
nonce: wpr_sd_js.nonce,
data: serialized,
order_id: $order_id,
sub_id: $sub_id,
},
complete: function (){
clickInProgress=false;
},
success: function (response){
$('.wpr-add-new-subscription').remove();
$('.wpr-add-product').show();
$('.wpr-cancel-add-product').remove();
ssdClearOldInlineMessages();
$(response.data.html).insertAfter('.ssd-search-modal-header').slideDown(500);
ssdScrollToTop();
if(response.error){
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}else{
if(ssdMaybeRunReplaceFlow($order_id)){
return;
}
if(1!=wpr_sd_js.ssd_trigger_shipping){
setTimeout(function (){
location.reload();
}, 5000);
}else{
ssd_trigger_shipping_modal($order_id);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
add_new_form_content.on('click',
'.wpr-subscription-composite-add-submit',
function (e){
e.preventDefault();
if(clickInProgress) return;
clickInProgress=true;
let $sub_id=$(this).data('subscription-in');
let $order_id=$(this).data('id');
let serialized=$('.wpr-add-composite-' + $sub_id).serialize();
let $empty_var=true;
$(this).closest('.wpr-product-add-button').find('form.wpr-add-composite-' + $sub_id + ' select:not(.component_options_select)').each(function (index, el){
if($.trim($(this).val()).length===0){
$empty_var=false;
}}
);
if(!$empty_var){
alert(wpr_sd_js.wpr_product_variations_alert);
return;
}
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_add_composite_product',
nonce: wpr_sd_js.nonce,
data: serialized,
order_id: $order_id,
sub_id: $sub_id,
},
complete: function (){
clickInProgress=false;
},
success: function (response){
$('.wpr-add-new-subscription').remove();
$('.wpr-add-product').show();
$('.wpr-cancel-add-product').remove();
ssdClearOldInlineMessages();
$(response.data.html).insertAfter('.ssd-search-modal-header').slideDown(500);
ssdScrollToTop();
if(response.error){
setTimeout(function (){
$('.ssd-error-display-notification').remove();
}, 5000);
}else{
if(ssdMaybeRunReplaceFlow($order_id)){
return;
}
if(1!=wpr_sd_js.ssd_trigger_shipping){
setTimeout(function (){
location.reload();
}, 5000);
}else{
ssd_trigger_shipping_modal($order_id);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
sub_details.on('click',
'.pause_subscription',
function (e){
e.preventDefault();
$('#wpr-pause-date-subscription').remove();
let href=$(this).attr('href');
let url;
try {
url=new URL(href.includes('http') ? href:window.location.origin + href);
} catch (err){
return;
}
let searchParams=new URLSearchParams(url.search);
let $order_id=searchParams.get('subscription');
let $pause_item=$(this);
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_pause_subscription',
nonce: wpr_sd_js.nonce,
order_id: $order_id,
},
complete: function (){
$pause_item.delay(1000).hide();
},
success: function (response){
if($('#wpr-pause-date-subscription').length===0){
if($('.subscription_details .button.cancel').length > 0){
$(response.data.html).insertBefore('.button.cancel');
}else{
$(response.data.html).insertBefore('.button.pause_subscription');
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
sub_details.on('click',
'#wpr-subscription-pause-submit',
function (e){
e.preventDefault();
let serialized=$('#ssd-pause-form').serialize();
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_pause_subscription_submit',
nonce: wpr_sd_js.nonce,
data: serialized,
},
complete: function (){
},
success: function (response){
$('#wpr-pause-date-subscription').remove();
if(response.error){
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'error');
location.reload();
}else{
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'success');
location.reload();
}},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
$('.ssd-shipping-modal-wrapper').on('click tap',
'.wpr-subscription-shipping-update-submit',
function (e){
e.preventDefault();
$('.wpr-subscription-shipping-update-submit').attr('disabled', true);
let subscriptionid=$(this).data('id');
let selected_shipping=$('input.shipping_method:checked');
let shipping_price=$(selected_shipping).data('price');
let shipping_name=$(selected_shipping).data('shipping-name');
let selected_shipping_value=$(selected_shipping).val();
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_shipping_change_subscription_submit',
nonce: wpr_sd_js.nonce,
subscription_id: subscriptionid,
shipping_price: shipping_price,
shipping_name: shipping_name,
new_shipping: selected_shipping_value,
},
complete: function (){
},
success: function (response){
if(response.error){
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'error');
location.reload();
}else{
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'success');
location.reload();
}},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
);
function wpr_update_subscription_quantity($order_id, $item_id, $qty){
$.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_update_qty',
nonce: wpr_sd_js.nonce,
order_id: $order_id,
item_id: $item_id,
qty: $qty,
},
complete: function (){
},
success: function (response){
$('.wpr-qty-input,.wpr-cancel-qty,.wpr-quantity-save').remove();
$('.wpr-subscription-update').show();
if(response.error){
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'error');
location.reload();
}else{
if(1!=wpr_sd_js.ssd_trigger_shipping){
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'success');
location.reload();
}else{
ssdPersistNotice(ssdExtractNoticeText(response.data.html), 'success');
ssd_trigger_shipping_modal($order_id);
}}
},
error: function (XMLHttpRequest, textStatus, errorThrown){
$('.wpr-quantity-save').removeClass('disable-click disabled').text(wpr_sd_js.wpr_save_qty);
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
$(document).on('click tap', '.ssd-close-modal-link', function (e){
e.preventDefault();
$('.ssd-modal-wrapper').removeClass('ssd-show');
ssdClearReplaceContext();
if($.fn.unblock){
$('.shop_table').unblock();
$('body').unblock();
}});
$(document).on('click tap', '.ssd-cancellation-close-modal', function (e){
e.preventDefault();
$('.ssd-cancellation-modal-wrapper').removeClass('ssd-show');
if($.fn.unblock){
$('.shop_table').unblock();
$('body').unblock();
}});
$(document).on('click', '.ssd-reason-item', function (){
$('.ssd-reason-item').removeClass('selected');
$(this).addClass('selected');
$(this).find('input[type="radio"]').prop('checked', true).trigger('change');
});
$('.ssd-shipping-modal-wrapper').on('click tap', '.ssd-shipping-close-modal, .wpr-subscription-cancel-shipping-submit', function (e){
e.preventDefault();
$('.ssd-shipping-modal-wrapper').toggleClass('ssd-show');
$('.ssd_change_shipping').show();
setTimeout(function (){
location.reload();
}, 1000);
});
$(document).on('woocommerce_variation_has_changed', '.variations_form', function (){
$('.wpr-subscription-update-submit').attr('disabled', false);
});
$(document).on('found_variation', '.variations_form', function (event, variation){
if(variation&&typeof variation.variation_is_visible!=="undefined"){
if(variation.variation_is_visible===false){
$('.wpr-subscription-add-submit, .wpr-add-variable-product-next-shipment')
.prop('disabled', true)
.addClass('disabled');
}else{
$('.wpr-subscription-add-submit, .wpr-add-variable-product-next-shipment')
.prop('disabled', false)
.removeClass('disabled');
}}
});
$(document).on('click', 'a.cancel, a.button.cancel, .shop_table a', function (e){
var $btn=$(this);
var href=$btn.attr('href');
if(!href) return;
var is_cancel_link=false;
var hrefLower=href.toLowerCase();
if(hrefLower.indexOf('change_subscription_to=cancelled')!==-1){
is_cancel_link=true;
}
if(!is_cancel_link&&hrefLower.indexOf('subscription')!==-1){
if($btn.hasClass('cancel')||$btn.text().toLowerCase().indexOf('cancel')!==-1){
is_cancel_link=true;
}}
if(is_cancel_link){
$btn.removeClass('wcs_block_ui_on_click');
var url;
try {
url=new URL(href.includes('http') ? href:window.location.origin + href);
} catch (err){
return;
}
var subscription_id=url.searchParams.get('subscription')||url.searchParams.get('cancel_subscription');
if(!subscription_id){
var pathParts=url.pathname.split('/');
var viewIndex=pathParts.indexOf('view-subscription');
if(viewIndex!==-1&&pathParts[viewIndex + 1]){
subscription_id=pathParts[viewIndex + 1];
}}
if(subscription_id&&$('#ssd-cancellation-modal-content').length){
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
ssd_trigger_cancellation_modal(subscription_id, href);
return false;
}}
});
}
);
function ssd_trigger_search_ajax($search_for, $order_id){
jQuery.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_search_products',
nonce: wpr_sd_js.nonce,
order_id: $order_id,
search_for: $search_for,
},
complete: function (){
},
success: function (response){
jQuery('.wpr-add-new-form-content').empty().html(response.data.html);
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
}
function ssd_trigger_shipping_modal($subscription_id, $shipping_item=null){
jQuery.ajax({
url: wpr_sd_js.ajax_url,
type: 'post',
data: {
action: 'wpr_change_shipping_for_subscription',
nonce: wpr_sd_js.nonce,
subscription_id: $subscription_id,
},
complete: function (){
if($shipping_item!==null){
$shipping_item.delay(1000).hide();
}},
success: function (response){
let modalContent=jQuery('#ssd-shipping-modal-content');
jQuery('.ssd-shipping-modal-wrapper').addClass('ssd-show', 1000, "easeOutSine");
modalContent.html("loading...");
modalContent.html(response.data.html);
},
error: function (XMLHttpRequest, textStatus, errorThrown){
if(XMLHttpRequest.status==0){
console.error('Network connectivity error.');
}else{
console.error(XMLHttpRequest.responseText);
}}
}
);
};