wpgenie icon

fix for bid input - XStore theme

wpgenie | PRO | 03/25/24 08:52:51 AM UTC (Edited) | 0 ⭐ | 1978 👁️ | Never ⏰ | []
PHP |

5.01 KB

|

None

|

0 👍

/

0 👎

<?php
/**
 * Auction bid form template
 *
 * template should be copied to /xstore-child/woocommerce/single-product/auction-bid-form.php 
 *
*/
if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}
​
global $product, $post;
​
if ( ! ( $product && $product->get_type() == 'auction' ) ) {
    return;
}
$current_user     = wp_get_current_user();
$product_id       = $product->get_id();
$user_max_bid     = $product->get_user_max_bid( $product_id, $current_user->ID );
$max_min_bid_text = $product->get_auction_type() == 'reverse' ? esc_html__( 'Your min bid is', 'wc_simple_auctions' ) : esc_html__( 'Your max bid is', 'wc_simple_auctions' );
?>
​
<?php if ( ( $product->is_closed() === false ) and ( $product->is_started() === true ) ) : ?>   
​
    <?php do_action( 'woocommerce_before_bid_form' ); ?>
​
    <form class="auction_form cart" method="post" enctype='multipart/form-data' data-product_id="<?php echo esc_attr( $product_id ); ?>">
​
        <?php do_action( 'woocommerce_before_bid_button' ); ?>
​
        <input type="hidden" name="bid" value="<?php echo esc_attr( $product_id ); ?>" />   
        
        <div class="quantity buttons_added">
​
            <input type="button" value="+" class="plusauction" />
​
            <input type="text" name="bid_value" 
                data-auction-id="<?php echo esc_attr( $product_id ); ?>" 
            <?php if ( $product->get_auction_sealed() != 'yes' ) { ?> 
                value="<?php echo esc_attr( number_format( $product->bid_value(), wc_get_price_decimals() == 0 ? 2 : wc_get_price_decimals() , wc_get_price_decimal_separator(), wc_get_price_thousand_separator() ) ); ?>"
            <?php } ?>
​
            <?php 
            if ($product->get_auction_sealed() != 'yes'){
                if ( $product->get_auction_type() == 'reverse' ) { ?>
                    max="<?php echo esc_attr( number_format( $product->bid_value(), wc_get_price_decimals(), wc_get_price_decimal_separator(), wc_get_price_thousand_separator() ) ); ?>"
                <?php } else { ?>
                    min="<?php echo esc_attr( number_format( $product->bid_value(), wc_get_price_decimals(), wc_get_price_decimal_separator(), wc_get_price_thousand_separator() ) ); ?>"
                <?php } ?>
            <?php } ?>
                step="any" 
                size="<?php echo strlen( $product->get_curent_bid() ) + 2; ?>" 
                title="bid" 
                class="input-text qty bid text left" 
            />
            <input type="button" value="-" class="minusauction" />
        </div>
​
        <button type="submit" class="bid_button button alt"><?php echo apply_filters( 'bid_text', esc_html__( 'Bid', 'wc_simple_auctions' ), $product ); ?></button>
        
        <input type="hidden" name="place-bid" value="<?php echo esc_attr( $product_id ); ?>" />
        <input type="hidden" name="product_id" value="<?php echo esc_attr( $product_id ); ?>" />
​
        <?php if ( is_user_logged_in() ) { ?>
            <input type="hidden" name="user_id" value="<?php echo get_current_user_id(); ?>" />
        <?php } ?> 
​
        <?php do_action( 'woocommerce_after_bid_button' ); ?>
​
    </form> 
    <script type="text/javascript">
        jQuery(document).on("click", ".auction_form .plusauction,.auction_form .minusauction", function() {
            console.log('click on action');
            var t = jQuery(this).closest(".quantity").find("input[name=bid_value]"),
                a = parseFloat(jQuery(this).parents('.auction_form').find('.qty').autoNumeric('get')),
                n = parseFloat(t.attr("max")),
                s = parseFloat(t.attr("min")),
                vb = '',
                e = t.attr("step");
                a && "" !== a && "NaN" !== a || (a = 0), ("" === n || "NaN" === n) && (n = ""), ("" === s || "NaN" === s) && (s = 0), ("any" === e || "" === e || void 0 === e || "NaN" === parseFloat(e)) && (e = 1),
                jQuery(this).is(".plusauction") ? t.val(number_format(n && (n == a || a > n) ? n : a + parseFloat(e) )) : s && (s == a || s > a) ? t.val(number_format( s ) ) : a > 0 && t.val( number_format (a - parseFloat(e) ) ),
                t.trigger("change"),
                $('.auction_form .qty').autoNumeric('update');
​
        });
        function number_format (number , decimals = autoNumericdata.decimalPlacesOverride, dec_point = autoNumericdata.decimalCharacter, thousands_sep = autoNumericdata.digitGroupSeparator) {
        // Strip all characters but numerical ones.
        number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
        var n = !isFinite(+number) ? 0 : +number,
            prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
            sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
            dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
            s = '',
            toFixedFix = function (n, prec) {
                var k = Math.pow(10, prec);
                return '' + Math.round(n * k) / k;
            };
        // Fix for IE parseFloat(0.55).toFixed(0) = 0;
        s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
        if (s[0].length > 3) {
            s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
        }
        if ((s[1] || '').length < prec) {
            s[1] = s[1] || '';
            s[1] += new Array(prec - s[1].length + 1).join('0');
        }
        return s.join(dec);
    }
    </script>
    <?php do_action( 'woocommerce_after_bid_form' ); ?>     
​
<?php endif;

Comments