Files
David Stone d88e50df38 Prep Plugin for release on WordPress.org (#23)
* Update translation text domain
* Escape everything that should be escaped.
* Add nonce checks where needed.
* Sanitize all inputs.
* Apply Code style changes across the codebase.
* Correct many deprecation notices.
* Optimize load order of many filters.
* Add Proper Build script
* Use emojii flags
* Fix i18n deprecation  notice for translating too early
* Put all scripts in footer and load async
2025-04-14 11:36:46 -06:00

344 lines
7.8 KiB
PHP

<?php
/**
* Coupon code view.
*
* @since 2.0.0
*/
?>
<?php
if (isset($_GET['coupon']) && wu_get_coupon($_GET['coupon']) !== false && isset($_GET['step']) && 'plan' == $_GET['step']) :
$coupon = wu_get_coupon($_GET['coupon']);
?>
<div id="coupon-code-app">
</div>
<script>
(function($) {
var coupon_app = new Vue({
el: "#coupon-code-app",
data: {
coupon_id: '',
coupon: '<?php echo wp_json_encode($coupon); ?>',
type : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_type', true)); ?>',
value : parseFloat(<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_value', true)); ?>),
applies_to_setup_fee : <?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_applies_to_setup_fee', true)); ?>,
setup_fee_discount_value : parseFloat(<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_setup_fee_discount_value', true)); ?>),
setup_fee_discount_type : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_setup_fee_discount_type', true)); ?>',
allowed_plans : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_allowed_plans', true)); ?>',
allowed_freqs : '<?php echo wp_json_encode(get_post_meta($coupon->id, 'wpu_allowed_freqs', true)); ?>',
success: false,
},
mounted: function() {
this.apply_coupon();
this.add_event_tabs();
},
methods: {
add_event_tabs: function() {
$('.wu-plans-frequency-selector li a').each(function() {
this.addEventListener('click',function() {
coupon_app.apply_coupon();
});
});
},
apply_coupon: function() {
if(this.coupon) {
$("body").block({
message: null,
overlayCSS: {
background: "#F1F1F1",
opacity: 0.6
}
});
this.coupon_id = this.coupon.id;
var coupon_type = this.type;
var coupon_value = this.value;
var applies_to_setup_fee = this.applies_to_setup_fee;
var setup_fee_discount_value = this.setup_fee_discount_value;
var setup_fee_discount_type = this.setup_fee_discount_type;
var allowed_plans = $.parseJSON(this.allowed_plans);
var allowed_freqs = $.parseJSON(this.allowed_freqs);
//$('#signupform').append($('#coupon_id'));
$('.superscript').show();
$('h5 sub').show();
setTimeout( function() { $('.wu-plan').each(function() {
if (!$(this).find('.old-price').get(0)) {
$(this).find('h4').after('<div class="old-price">--</div>');
}
let plan_id = $(this).data('plan');
let is_allowed_plan = false;
let is_allowed_freq = false;
// check plan is_allowed
if (typeof allowed_plans === 'object'){
for (var each_plan of allowed_plans) {
if (parseInt(each_plan) == plan_id) {
is_allowed_plan = true;
}
}
} else {
is_allowed_plan = true;
}
// check freq is_allowed
if (typeof allowed_freqs === 'object'){
for (var each_freq of allowed_freqs) {
if (each_freq == $('#wu_plan_freq').val()) {
is_allowed_freq = true;
}
}
} else {
is_allowed_freq = true;
}
if (!is_allowed_plan) {
$("body").unblock();
return;
}
if (!is_allowed_freq) {
$("body").unblock();
$(".old-price").hide();
$(".off-value").hide();
return;
} else {
$(".old-price").show();
$(".off-value").show();
}
let old_price = $(this).data('price-' + $('#wu_plan_freq').val());
old_price = wu_fix_money_string(old_price);
let new_price = 0;
let old_yearly_value = old_price * jQuery('#wu_plan_freq').val();
let new_yearly_value = 0;
let old_setupfee = $(this).find('.pricing-table-setupfee') ? $(this).find('.pricing-table-setupfee').attr('data-value') : 0;
let new_setupfee = 0;
let off_with_symbol = '';
// OFF RENDER
if (coupon_type != '"absolute"')
off_with_symbol = ''.concat(coupon_value, '%');
else
off_with_symbol = accounting.formatMoney(parseFloat(coupon_value));
$(this).find('.old-price').html(accounting.formatMoney(parseFloat(old_price)));
if (!$(this).find('.off-value').get(0)) {
$(this).find('.old-price').after('<div class="off-value">(' + off_with_symbol + ' ' + '<?php esc_html_e('OFF', 'wp-multisite-waas'); ?>' + ')</div>');
}
if(applies_to_setup_fee) {
if (setup_fee_discount_type != '"absolute"')
setupfee_off_with_symbol = ''.concat(setup_fee_discount_value, '%');
else
setupfee_off_with_symbol = accounting.formatMoney(parseFloat(setup_fee_discount_value));
if (!$(this).find('.setupfee-off-value').get(0)) {
$(this).find('.pricing-table-setupfee').after('<span class="setupfee-off-value"> (' + setupfee_off_with_symbol + ' ' + '<?php esc_html_e('OFF', 'wp-multisite-waas'); ?>' + ')</span>');
}
}
// END OFF RENDER
if(coupon_type != '"absolute"') {
new_price = old_price * ((100 - coupon_value) / 100);
new_yearly_value = old_yearly_value * ((100 - coupon_value) / 100);
} else {
if(jQuery('#wu_plan_freq').val() > 1){
new_price = ((old_price * jQuery('#wu_plan_freq').val()) - parseFloat(coupon_value)) / jQuery('#wu_plan_freq').val();
new_yearly_value = old_yearly_value - parseFloat(coupon_value);
} else {
new_price = old_price - parseFloat(coupon_value);
new_yearly_value = old_yearly_value - parseFloat(coupon_value);
}
}
if (applies_to_setup_fee) {
if (setup_fee_discount_type != '"absolute"') {
new_setupfee = old_setupfee * ((100 - setup_fee_discount_value) / 100);
} else {
new_setupfee = old_setupfee - parseFloat(setup_fee_discount_value);
}
} else {
new_setupfee = old_setupfee;
}
if (new_yearly_value > 0) {
wu_set_yearly_value(this, new_yearly_value);
} else {
$(this).find('.total-price.total-price-' + $('#wu_plan_freq').val() ).html(' <?php esc_js(_e('Free!', 'wp-multisite-waas')); ?>');
}
if (new_setupfee > 0) {
wu_set_setupfee_value(this, new_setupfee);
} else {
$(this).find('.pricing-table-setupfee').html(' <?php esc_js(_e('No Setup Fee', 'wp-multisite-waas')); ?>');
}
if (new_price > 0) {
$(this).find('.plan-price').html( accounting.formatMoney( parseFloat(new_price) ) );
if ( $(this).find('.plan-price').html().indexOf(wpu.currency_symbol) !== -1 ) {
$(this).find('.plan-price').html($(this).find('.plan-price').html().replace(wpu.currency_symbol, ''));
}
} else {
let plan_price = $(this).find('.plan-price');
plan_price.html(' <?php esc_js(_e('Free!', 'wp-multisite-waas')); ?>');
let hagacinco = $(this).find('h5');
hagacinco.find('sub').hide();
hagacinco.find('.superscript').hide();
}
$("body").unblock();
}); }, 400);
} else {
$('.old-price').hide();
this.coupon_id = '';
$('.wu-plan').each(function() {
var price = $(this).data('price-' + $('#wu_plan_freq').val());
$(this).find('.plan-price').html( price );
});
}
}
}
});
})(jQuery);
function wu_fix_money_string(value) {
if(typeof value == 'number'){
value = value.toString();
}
return parseFloat(value.replace(wpu.thousand_separator, '').replace(wpu.decimal_separator, '.'));
}
function wu_set_setupfee_value(list, value) {
jQuery(list).find('.pricing-table-setupfee').html( accounting.formatMoney(value));
}
function wu_set_yearly_value(list, value) {
var current_freq = jQuery('#wu_plan_freq').val();
var string = jQuery(list).find('.total-price.total-price-' + current_freq).html();
if (string) {
var parts = string.split(',');
var result = accounting.formatMoney(parseFloat(value)) + ', ' + parts[1];
jQuery(list).find('.total-price.total-price-' + current_freq).html(result);
}
}
</script>
<?php
endif;
// wp_enqueue_style('wub-checkout', WP_Ultimo_Billwerk()->get_asset('checkout.min.css', 'css'), false); ?>