{% extends "App/checkout/base_product.html.twig" %}{% block content %} {% set currency = product.defaultCurrency|currency_symbol %} <input type="hidden" name="purchase_order_id" value="{{ lastPaidOrder ? lastPaidOrder.id : '' }}"> <div class="container upsell-checkout step-1"> <div class="split"> <div class="split__content"> <!-- Status Bar --> <div class="status-bar"> <div class="status-item status-completed"> <div class="status-icon"> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="10" cy="10" r="9" fill="#1acd8e"/> <path d="M6 10L9 13L14 7" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="status-label">{{ 'upsellPageProgressStep1' | trans }}</div> </div> <div class="status-connector status-connector-green"></div> <div class="status-item status-in-progress"> <div class="status-icon">🟠</div> <div class="status-label">{{ 'upsellPageProgressStep2' | trans }}</div> </div> <div class="status-connector status-connector-orange"></div> <div class="status-item status-orange"> <div class="status-icon">🟠</div> <div class="status-label">{{ 'upsellPageProgressStep3' | trans }}</div> </div> <!-- Label Timer --> {% if product.upsellPageProgressTimer > 0%} <div class="status-timer"> <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-width="1.5" fill="none"/> <path d="M8 4V8L10.5 10.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/> </svg> <span id="labelTimerDisplay">0{{ product.upsellPageProgressTimer }}:00</span>{{ 'upsellPageProgressLabel' | trans }} </div> {% endif %} </div> <div class="page-title"> {% if discountPercentage is defined and discountPercentage > 0 and product.upsellPageDescForNewCustomers %} {{ product.upsellPageDescForNewCustomers | raw }} {% elseif product.upsellPageDescription is not empty %} {{ product.upsellPageDescription | raw }} {% else %} {{ 'upsellPageTitle' | trans }} {% endif %} </div> <input type="hidden" value="{{ product.id }}" name="product_id"> <input type="hidden" value="{{ isFirstOrder }}" name="is_first_order"> {% include "App/checkout/partials/product_upsells_page.html.twig" with {'product': product, 'currency': currency, 'choosedUpsells': choosedUpsells, 'discountPercentage': discountPercentage} %} </div> <div class="split__content"> <a href="#order" class="split__btn"> <svg role="img" class="icon icon-cart"> <use xlink:href="{{ asset('assets/svg/icons/icons.svg#icon-cart') }}"></use> </svg> </a> {{ form_start(form) }} <form class="form" method="post"> <div class="receipt"> <div class="select-item-title text-center"> {{ 'upsellPageSelectItem' | trans }} </div> <div class="product-title-wrap"> <div class="card-title skeleton"></div> <div class="card-title skeleton"></div> <div class="card-title skeleton"></div> <div id="product-title-block"> </div> </div> <div class="shipping-wrap step-1"> <div class="card-title skeleton pt-5"></div> <div id="shipping-block"></div> </div> <hr> <div class="total-wrap"> <div class="card-title skeleton pt-5 pb-5"></div> <div id="total-block"></div> </div> </div> <hr> <div class="btn-wrap btn-wrap--start"> <div class="d-flex justify-content-center w-100"> <button type="submit" class="btn btn--sm d-flex justify-content-center align-items-center">{{ 'finishOrder'| trans }}</button> </div> <div class="d-flex justify-content-center w-100 mt-2"> <a href="{{ skipUrl }}" class="link">{{ 'postUpsellSkipButton'| trans }}</a> </div> </div> {{ form_end(form) }} </div> </div> </div> <style> .upsell-checkout .upsell-product__manage .form-control, .upsell-checkout .upsell-product__manage .input-group-append, .upsell-checkout .upsell-product__manage .input-group-append .input-group-text[role=button] { background: #f5f5f5; } .status-timer span{ text-transform: uppercase; } </style> <script> document.addEventListener('DOMContentLoaded', function() { startLabelTimer(); }); let labelTimeLeft = {{ product.upsellPageProgressTimer }} * 60; let labelTimerInterval = null; function startLabelTimer() { const labelTimerDisplay = document.getElementById('labelTimerDisplay'); if (!labelTimerDisplay) return; labelTimerInterval = setInterval(() => { const minutes = Math.floor(labelTimeLeft / 60); const seconds = labelTimeLeft % 60; labelTimerDisplay.textContent = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; if (labelTimeLeft <= 0) { clearInterval(labelTimerInterval); labelTimerDisplay.textContent = '00:00'; } else { labelTimeLeft--; } }, 1000); } </script>{% endblock %}