Add new payment and shipping parsers for various integrations

- Implemented Google Pay parser in bongooglepay.js
- Added Buckaroo 3 payment parser in buckaroo3.js
- Introduced DataTrans CW Mastercard parser in datatranscw.js
- Created DataTrans CW Credit Card parser in datatranscw_creditcard.js
- Developed DHL Assistant shipping parser in dhlassistant.js
- Added Estimated Delivery parser in estimateddelivery.js
- Implemented Floapay payment parser in floapay.js
- Created FS Pickup at Store shipping parser in fspickupatstore.js
- Developed Generic Iframe parser in generic_iframe_parser.js
- Added Geodis Officiel shipping parser in geodisofficiel.js
- Implemented Glob Kurier module shipping parser in globkuriermodule.js
- Created Latvija Post Express Pickup Terminal parser in latvijaspastsexpresspastspostterminalslv.js
- Developed LP Shipping parser in lpshipping.js
- Added Mijora Venipak parser in mijoravenipak.js
- Implemented Apple Pay parser in pm_applepay.js
- Created Przelewy24 payment parser in przelewy24.js
- Developed Pshugls shipping parser in pshugls.js
- Added Redsys Insite payment parser in redsysinsite.js
- Implemented Tpay payment parser in tpay.js
- Updated third-party integration documentation for FedEx DotCom
This commit is contained in:
2025-08-04 23:10:27 +02:00
parent 037a6c5551
commit d39433f0d4
125 changed files with 4986 additions and 1772 deletions

View File

@@ -9,16 +9,17 @@
*}
<div class="block-header account-header">
{l s='Personal Information' d='Shop.Theme.Checkout'}
{if isset($customer) && ($customer.is_logged && !$customer.is_guest)}{l s='Personal Information' d='Shop.Theme.Checkout'}
{else}{l s='Create an account' mod='thecheckout'}{/if}
</div>
<div class="inner-wrapper">
{if $tc_config->move_login_to_account && !($customer.is_logged && !$customer.is_guest)}
{if $z_tc_config->move_login_to_account && !($customer.is_logged && !$customer.is_guest)}
<div class="login-block-moved">
{include file='module:thecheckout/views/templates/front/blocks/login-form.tpl'}
</div>
{/if}
<div id="hook_displayPersonalInformationTop">{$hook_displayPersonalInformationTop nofilter}</div>
<form class="account-fields">
<div id="hook_displayPersonalInformationTop">{$hook_displayPersonalInformationTop nofilter}</div>
{block name="account_form_fields"}
<section class="form-fields">
{block name='form_fields'}
@@ -34,7 +35,7 @@
</section>
{/block}
</form>
{if $tc_config->show_button_save_personal_info}
{if $z_tc_config->show_button_save_personal_info}
<button id="tc_save_account" class="btn btn-primary">{l s='Save Personal Information' mod='thecheckout'}</button>
{/if}
</div>
</div>

View File

@@ -7,7 +7,7 @@
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*}
{if $tc_config->show_i_am_business_delivery}
{if $z_tc_config->show_i_am_business_delivery}
<style>
{if $hideBusinessFieldsDelivery}
{literal}
@@ -29,7 +29,7 @@
{/if}
</style>
{/if}
{if $tc_config->show_i_am_private_delivery}
{if $z_tc_config->show_i_am_private_delivery}
<style>
{if $hidePrivateFieldsDelivery}
{literal}
@@ -52,24 +52,28 @@
<div class="inner-wrapper">
<a style="display: none;" href="javascript:void(0);" class="amazonpay-change-address">{l s='Change address' mod='thecheckout'}</a>
{if $tc_config->show_i_am_business_delivery}
<div class="business-customer">
<span class="custom-checkbox">
<input id="i_am_business_delivery" type="checkbox" data-link-action="x-i-am-business-delivery"
{if !$hideBusinessFieldsDelivery}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_business_delivery">{l s='I am a business customer' mod='thecheckout'}</label>
</span>
</div>
{/if}
{if $tc_config->show_i_am_private_delivery}
<div class="private-customer">
<span class="custom-checkbox">
<input id="i_am_private_delivery" type="checkbox" data-link-action="x-i-am-private-delivery"
{if !$hidePrivateFieldsDelivery}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_private_delivery">{l s='I am a private customer' mod='thecheckout'}</label>
</span>
{if $z_tc_config->show_i_am_business || $z_tc_config->show_i_am_private}
<div class="business-private-checkboxes form-group">
{if $z_tc_config->show_i_am_business_delivery}
<div class="business-customer">
<span class="custom-checkbox">
<input id="i_am_business_delivery" type="checkbox" data-link-action="x-i-am-business-delivery"
{if !$hideBusinessFieldsDelivery}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_business_delivery">{l s='I am a business customer' mod='thecheckout'}</label>
</span>
</div>
{/if}
{if $z_tc_config->show_i_am_private_delivery}
<div class="private-customer">
<span class="custom-checkbox">
<input id="i_am_private_delivery" type="checkbox" data-link-action="x-i-am-private-delivery"
{if !$hidePrivateFieldsDelivery}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_private_delivery">{l s='I am a private customer' mod='thecheckout'}</label>
</span>
</div>
{/if}
</div>
{/if}
@@ -78,10 +82,10 @@
{block name="address_delivery_form_fields"}
<section class="form-fields">
{block name='form_fields'}
{if $tc_config->show_i_am_business_delivery}
{if $z_tc_config->show_i_am_business_delivery}
<div class="business-fields-container"><div class="business-fields-separator"></div></div>
{/if}
{if $tc_config->show_i_am_private_delivery}
{if $z_tc_config->show_i_am_private_delivery}
<div class="private-fields-container"><div class="private-fields-separator"></div></div>
{/if}
{foreach from=$formFieldsDelivery item="field"}

View File

@@ -8,7 +8,7 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*}
{if $tc_config->show_i_am_business}
{if $z_tc_config->show_i_am_business}
<style>
{if $hideBusinessFields}
{literal}
@@ -30,7 +30,7 @@
{/if}
</style>
{/if}
{if $tc_config->show_i_am_private}
{if $z_tc_config->show_i_am_private}
<style>
{if $hidePrivateFields}
{literal}
@@ -51,25 +51,29 @@
{/if}
<div class="block-header address-name-header">{l s='Billing address' mod='thecheckout'}</div>
<div class="inner-wrapper">
{if $tc_config->show_i_am_business}
<div class="business-customer">
<span class="custom-checkbox">
<input id="i_am_business" type="checkbox" data-link-action="x-i-am-business"
{if !$hideBusinessFields}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_business">{l s='I am a business customer' mod='thecheckout'}</label>
</span>
</div>
{/if}
{if $tc_config->show_i_am_private}
<div class="private-customer">
<span class="custom-checkbox">
<input id="i_am_private" type="checkbox" data-link-action="x-i-am-private"
{if !$hidePrivateFields}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_private">{l s='I am a private customer' mod='thecheckout'}</label>
</span>
</div>
{if $z_tc_config->show_i_am_business || $z_tc_config->show_i_am_private}
<div class="business-private-checkboxes form-group">
{if $z_tc_config->show_i_am_business}
<div class="business-customer">
<span class="custom-checkbox">
<input id="i_am_business" type="checkbox" data-link-action="x-i-am-business"
{if !$hideBusinessFields}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_business">{l s='I am a business customer' mod='thecheckout'}</label>
</span>
</div>
{/if}
{if $z_tc_config->show_i_am_private}
<div class="private-customer">
<span class="custom-checkbox">
<input id="i_am_private" type="checkbox" data-link-action="x-i-am-private"
{if !$hidePrivateFields}checked="checked"{/if} disabled="disabled">
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="i_am_private">{l s='I am a private customer' mod='thecheckout'}</label>
</span>
</div>
{/if}
</div>
{/if}
<form class="address-fields" data-address-type="invoice" id="invoice-address">
@@ -77,10 +81,10 @@
{block name="address_invoice_form_fields"}
<section class="form-fields">
{block name='form_fields'}
{if $tc_config->show_i_am_business}
{if $z_tc_config->show_i_am_business}
<div class="business-fields-container"><div class="business-fields-separator"></div></div>
{/if}
{if $tc_config->show_i_am_private}
{if $z_tc_config->show_i_am_private}
<div class="private-fields-container"><div class="private-fields-separator"></div></div>
{/if}
{foreach from=$formFieldsInvoice item="field"}

View File

@@ -11,11 +11,11 @@
{if isset($js_custom_vars) && $js_custom_vars|@count}
<script type="text/javascript">
{foreach from=$js_custom_vars key=var_name item=var_value}
if ('object' === typeof {$var_name}{literal}) {
if ('object' === typeof {$var_name|escape:'javascript':'UTF-8'}{literal}) {
{/literal}
jQuery.extend({$var_name}, {$var_value|json_encode nofilter});
jQuery.extend({$var_name|escape:'javascript':'UTF-8'}, {$var_value|json_encode nofilter});
{literal}
} {/literal} else if ('undefined' !== typeof {$var_name}{literal}) {
} {/literal} else if ('undefined' !== typeof {$var_name|escape:'javascript':'UTF-8'}{literal}) {
{/literal}
{$var_name} = {$var_value|json_encode nofilter};
{literal}
@@ -33,7 +33,12 @@
<div class="block-header shopping-cart-header">{l s='Shopping Cart' d='Shop.Theme.Checkout'}</div>
<div class="cart-inner-wrapper">
{if $cartQuantityError}
<div class="error-msg visible">{$cartQuantityError}</div>
<div class="error-msg visible">{$cartQuantityError|escape:'htmlall':'UTF-8'}</div>
{/if}
{if $otherErrors}
{foreach $otherErrors as $moduleName => $errorMsg}
<div class="error-msg visible">{$moduleName|escape:'htmlall':'UTF-8'}: {$errorMsg|escape:'htmlall':'UTF-8'}</div>
{/foreach}
{/if}
<div class="cart-grid row">

View File

@@ -17,10 +17,14 @@
{hook h='displayHeurekaNeSouhlas'}
{* openservis - Heureka - NeSouhlas - end *}
{* caleydon (prestashop.sk) - Heureka - begin *}
{hook h='displayCmHeurekaConsent'}
{* caleydon (prestashop.sk) - Heureka - end *}
{* Prestashop v8 - new hook for various order confirmation constents *}
{hook h='displayCheckoutBeforeConfirmation'}
{if $conditions_to_approve|count && !$tc_config->separate_payment}
{if $conditions_to_approve|count && !$z_tc_config->separate_payment}
<div class="terms-and-conditions">
<div class="error-msg">{l s='Please accept terms and conditions' mod='thecheckout'}</div>
@@ -37,9 +41,9 @@
<li>
<div class="float-xs-left">
<span class="custom-checkbox">
{assign "condition_full_name" "conditions_to_approve[{$condition_name}]"}
<input id="conditions_to_approve[{$condition_name}]"
name="conditions_to_approve[{$condition_name}]"
{assign "condition_full_name" "conditions_to_approve[{$condition_name|escape:'javascript':'UTF-8'}]"}
<input id="conditions_to_approve[{$condition_name|escape:'javascript':'UTF-8'}]"
name="conditions_to_approve[{$condition_name|escape:'javascript':'UTF-8'}]"
required
type="checkbox"
class="ps-shown-by-js"
@@ -51,7 +55,7 @@
</span>
</div>
<div class="condition-label">
<label class="js-terms" for="conditions_to_approve[{$condition_name}]">
<label class="js-terms" for="conditions_to_approve[{$condition_name|escape:'javascript':'UTF-8'}]">
{$condition nofilter}
</label>
</div>
@@ -67,7 +71,7 @@
<button id="confirm_order" type="button" class="btn btn-primary center-block" data-link-action="x-confirm-order" >
<div class="minimal-purchase-error-msg"></div>
<div class="tc-loader"><div class="lds-ellipsis-m"><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div></div></div>
{if !$tc_config->separate_payment}
{if !$z_tc_config->separate_payment}
{l s='Order with an obligation to pay' d='Shop.Theme.Checkout'}
{else}
{l s='Continue' d='Shop.Theme.Actions'}
@@ -94,7 +98,7 @@
<div class="ps-hidden-by-js">
{if isset($selected_payment_option) && $selected_payment_option and $all_conditions_approved}
<label
for="pay-with-{$selected_payment_option}">{l s='Order with an obligation to pay' d='Shop.Theme.Checkout'}</label>
for="pay-with-{$selected_payment_option|escape:'javascript':'UTF-8'}">{l s='Order with an obligation to pay' d='Shop.Theme.Checkout'}</label>
{/if}
</div>
</div>

View File

@@ -22,34 +22,37 @@
* International Registered Trademark & Property of PrestaShop SA
*}
{block name='login_form'}
{if !$tc_config->move_login_to_account}<div class="inner-wrapper">{/if}
{if !$z_tc_config->move_login_to_account}<div class="inner-wrapper">{/if}
<div class="offer-login">
<div class="already-account-label">
{l s='Already have an account?' d='Shop.Theme.Customeraccount'}
</div>
<div class="classic-login">
<a class="log-in" href="#" data-link-action="x-offer-login">
{l s='Zaloguj się' d='Shop.Theme.Customeraccount'}
{l s='Log in instead!' d='Shop.Theme.Customeraccount'}
</a>
</div>
{if isset($HOOK_OASL_CUSTOM)}
<div class="social-login" data-trans-or="{l s='OR' mod='thecheckout'}">
{$HOOK_OASL_CUSTOM nofilter}
</div>
{elseif ($tc_config->social_login_fb || $tc_config->social_login_google) }
{elseif ($z_tc_config->social_login_fb || $z_tc_config->social_login_google || $paypal_express_checkout) }
<div class="social-login" data-trans-or="{l s='OR' mod='thecheckout'}">
{if $tc_config->social_login_fb && $tc_config->social_login_fb_app_id && $tc_config->social_login_fb_app_secret}
{if $paypal_express_checkout}
<div id="tc-paypal-express-checkout">{$paypal_express_checkout nofilter}</div>
{/if}
{if $z_tc_config->social_login_fb && $z_tc_config->social_login_fb_app_id && $z_tc_config->social_login_fb_app_secret}
{*<div class="fb-login-button" data-max-rows="1" data-onlogin="fb_checkLoginState();" data-size="medium" data-button-type="login_with" data-show-faces="false" data-auto-logout-link="false" data-use-continue-as="false"></div>*}
<div id="tc-facebook-signin" class="tc-social-login-btn"><span class="social-logo"><span class="facebook-logo"></span></span>{l s='Sign in with Facebook' mod='thecheckout'}</div>
{/if}
{if $tc_config->social_login_google && $tc_config->social_login_google_client_id && $tc_config->social_login_google_client_secret}
{if $z_tc_config->social_login_google && $z_tc_config->social_login_google_client_id && $z_tc_config->social_login_google_client_secret}
{*Google+ login <div class="g-signin2" data-onsuccess="tc_onSignIn"></div>*}
<div id="tc-google-signin"></div>
{/if}
</div>
{/if}
</div>
<form id="login-form" action="{block name='login_form_actionurl'}{$action}{/block}" method="post">
<form id="login-form" action="{block name='login_form_actionurl'}{$action|escape:'javascript':'UTF-8'}{/block}" method="post">
<section class="form-fields">
{block name='login_form_fields'}
@@ -76,7 +79,7 @@
{/block}
<div class="forgot-password">
<a href="{$urls.pages.password}" rel="nofollow">
<a href="{$urls.pages.password|escape:'javascript':'UTF-8'}" rel="nofollow">
{l s='Forgot your password?' d='Shop.Theme.Customeraccount'}
</a>
</div>
@@ -89,5 +92,5 @@
</button>
<div class="error-enter-email" style="display: none">{l s='Please enter your email address to proceed with order.' mod='thecheckout'}</div>
</div>
{if !$tc_config->move_login_to_account}</div>{/if}
{if !$z_tc_config->move_login_to_account}</div>{/if}
{/block}

View File

@@ -19,7 +19,7 @@
<span>{l s='First, please enter your: ' mod='thecheckout'}
<ul>
{foreach $payment_block_wait_for_address as $field_name}
<li>{$field_name}</li>
<li>{$field_name|escape:'htmlall':'UTF-8'}</li>
{/foreach}
</ul>
</span>
@@ -40,7 +40,7 @@
{if isset($payment_data)}
<div id="payment_data">
{foreach from=$payment_data key="data_key" item="data_item"}
<input type="hidden" id="payment_data_{$data_key}" value="{$data_item}">
<input type="hidden" id="payment_data_{$data_key|escape:'javascript':'UTF-8'}" value="{$data_item|escape:'javascript':'UTF-8'}">
{/foreach}
</div>
{/if}
@@ -48,11 +48,11 @@
{foreach from=$payment_options key="module_name" item="module_options"}
{foreach from=$module_options item="option" name="multioptions"}
<div
id="{$option.id}-main-title"
id="{$option.id|escape:'javascript':'UTF-8'}-main-title"
class="tc-main-title"
data-payment-module="{$module_name}"
data-payment-module="{$module_name|escape:'javascript':'UTF-8'}"
>
<div id="{$option.id}-container" class="payment-option clearfix">
<div id="{$option.id|escape:'javascript':'UTF-8'}-container" class="payment-option clearfix">
{* This is the way an option should be selected when Javascript is enabled *}
<span class="custom-radio float-xs-left">
{if ''!=$option.module_name}
@@ -62,8 +62,8 @@
{/if}
<input
class="ps-shown-by-js {if $option.binary} binary {/if}"
id="{$option.id}"
data-module-name="{if ''!=$option.module_name}{$option.module_name|regex_replace:"/[^a-zA-Z-_]/":""}{else}{$module_name|regex_replace:"/[^a-zA-Z-_]/":""}{/if}{if $smarty.foreach.multioptions.index>0 && $prev_option_name == $actual_option_name}-{$smarty.foreach.multioptions.index}{/if}"
id="{$option.id|escape:'javascript':'UTF-8'}"
data-module-name="{if ''!=$option.module_name}{$option.module_name|regex_replace:"/[^a-zA-Z-_0-9]/":""}{else}{$module_name|regex_replace:"/[^a-zA-Z-_]/":""}{/if}{$option.call_to_action_text_md5}"
name="payment-option"
type="radio"
required
@@ -74,24 +74,23 @@
<span></span>
</span>
<label for="{$option.id}">
<span class="h6">{$option.call_to_action_text}</span>
{if $option.logo}
<img src="{$option.logo}">
{/if}
<label for="{$option.id|escape:'javascript':'UTF-8'}">
<div class="payment-logo">{if isset($option.logo) && $option.logo}<img src="{$option.logo|escape:'javascript':'UTF-8'}">{/if}</div>
<div class="payment-call-to-action-and-logo">
<span class="h6">{$option.call_to_action_text|escape:'javascript':'UTF-8'}</span>
</div>
</label>
</div>
{if $option.additionalInformation}
{if isset($option.additionalInformation) && $option.additionalInformation}
<div
id="{$option.id}-additional-information"
class="js-additional-information definition-list additional-information {$module_name}{if $option.id != $selected_payment_option} ps-hidden{/if}"
id="{$option.id|escape:'javascript':'UTF-8'}-additional-information"
class="js-additional-information definition-list additional-information {$module_name|escape:'javascript':'UTF-8'}{if $option.id != $selected_payment_option} ps-hidden{/if}"
>
{$option.additionalInformation nofilter}
</div>
{/if}
<div
id="pay-with-{$option.id}-form"
id="pay-with-{$option.id|escape:'javascript':'UTF-8'}-form"
class="js-payment-option-form {if $option.id != $selected_payment_option} ps-hidden {/if}"
>
{if $option.form}
@@ -99,9 +98,9 @@
{else}
<form class="payment-form" method="POST" action="{$option.action nofilter}">
{foreach from=$option.inputs item=input}
<input type="{$input.type}" name="{$input.name}" value="{$input.value}">
<input type="{$input.type|escape:'javascript':'UTF-8'}" name="{$input.name|escape:'javascript':'UTF-8'}" value="{$input.value|escape:'htmlall':'UTF-8'}">
{/foreach}
<button style="display:none" id="pay-with-{$option.id}" type="submit"></button>
<button style="display:none" id="pay-with-{$option.id|escape:'javascript':'UTF-8'}" type="submit"></button>
</form>
{/if}
</div>
@@ -118,16 +117,6 @@
</div>
{/if}
{hook h='displayPaymentByBinaries'}
<div class="modal fade" id="modal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<button type="button" class="close" data-bs-dismiss="modal" data-dismiss="modal" aria-label="{l s='Close' d='Shop.Theme.Global'}">
<span aria-hidden="true">&times;</span>
</button>
<div class="js-modal-content"></div>
</div>
</div>
</div>
{/block}
{/if}
</div>

View File

@@ -20,7 +20,7 @@
<span>{l s='First, please enter your: ' mod='thecheckout'}
<ul>
{foreach $shipping_block_wait_for_address as $field_name}
<li>{$field_name}</li>
<li>{$field_name|escape:'htmlall':'UTF-8'}</li>
{/foreach}
</ul>
</span>
@@ -32,9 +32,9 @@
<div class="dummy-block-container disallowed">
<span>{l s='Please Save your Personal Info to see shipping options' mod='thecheckout'}</span></div>
{else}
{if isset($shippingAddressNotice) && $shippingAddressNotice|count}
{if isset($shippingAddressNotice) && $shippingAddressNotice}
<div class="shipping-address-notice">{l s='Shipping Address' d='Shop.Theme.Checkout'}: <span
class="country-name">{$shippingAddressNotice|join:', '}</span></div>
class="country-name">{$shippingAddressNotice|escape:'htmlall':'UTF-8'}</span></div>
{/if}
<div id="hook-display-before-carrier">
{$hookDisplayBeforeCarrier nofilter}
@@ -52,40 +52,46 @@
<div class="delivery-options">
{foreach from=$delivery_options item=carrier key=carrier_id}
<div
class="delivery-option-row row delivery-option{if isset($carrier.external_module_name) && "" != $carrier.external_module_name} {$carrier.external_module_name}{/if}{if (isset($customerSelectedDeliveryOption) && $carrier_id == $customerSelectedDeliveryOption)} user-selected{/if} carrier-ref-{$carrier.id_reference}">
class="delivery-option-row row delivery-option{if isset($carrier.external_module_name) && "" != $carrier.external_module_name} {$carrier.external_module_name|escape:'javascript':'UTF-8'}{/if}{if (isset($customerSelectedDeliveryOption) && $carrier_id == $customerSelectedDeliveryOption)} user-selected{/if} carrier-ref-{$carrier.id_reference|escape:'javascript':'UTF-8'}">
<div class="shipping-radio">
<span class="custom-radio float-xs-left">
<input type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}"
value="{$carrier_id}"{if $delivery_option == $carrier_id && (!$forceToChooseCarrier || (isset($customerSelectedDeliveryOption) && $carrier_id == $customerSelectedDeliveryOption))} checked{/if}>
<input type="radio" name="delivery_option[{$id_address|escape:'javascript':'UTF-8'}]" id="delivery_option_{$carrier.id|escape:'javascript':'UTF-8'}"
value="{$carrier_id|escape:'javascript':'UTF-8'}"{if $delivery_option == $carrier_id && (!$forceToChooseCarrier || (isset($customerSelectedDeliveryOption) && $carrier_id == $customerSelectedDeliveryOption))} checked{/if}>
<span></span>
</span>
</div>
<label for="delivery_option_{$carrier.id}" class="delivery-option-label delivery-option-2 {if $carrier.logo}has-logo{else}no-logo{/if}">
<div class="row">
<div class="delivery-option-detail">
<div class="row">
{if $carrier.logo}
<div class="delivery-option-logo">
<img src="{$carrier.logo}" alt="{$carrier.name}"/>
</div>
{/if}
<div class="delivery-option-name">
<span class="h6 carrier-name">{$carrier.name}</span>
</div>
<label for="delivery_option_{$carrier.id|escape:'javascript':'UTF-8'}" class="delivery-option-label delivery-option-2 {if $carrier.logo|escape:'javascript':'UTF-8'}has-logo{else}no-logo{/if}">
<div class="delivery-option-detail">
<div class="delivery-option-logo">
{if $carrier.logo}
<img src="{$carrier.logo|escape:'javascript':'UTF-8'}" alt="{$carrier.name|escape:'javascript':'UTF-8'}"/>
{/if}
</div>
<div class="name-and-delay">
<div class="delivery-option-name">
<span class="h6 carrier-name">{$carrier.name|escape:'htmlall':'UTF-8'}</span>
</div>
<div class="delivery-option-delay">
<span class="carrier-delay">{$carrier.delay|escape:'htmlall':'UTF-8'}</span>
</div>
{* Yes, this is repeated from below, so that we can control price display easily with CSS *}
<div style="display: none;" class="delivery-option-price{if $carrier.price_with_tax == 0} free{/if}">
<span class="carrier-price">{$carrier.price|escape:'htmlall':'UTF-8'}</span>
<span class="carrier-price-with-tax-formatted">{$carrier.price_with_tax_formatted|escape:'htmlall':'UTF-8'}</span>
<span class="carrier-price-without-tax-formatted">{$carrier.price_without_tax_formatted|escape:'htmlall':'UTF-8'}</span>
</div>
</div>
<div class="delivery-option-delay">
<span class="carrier-delay">{$carrier.delay}</span>
</div>
<div class="delivery-option-price">
<span class="carrier-price">{$carrier.price}</span>
<div class="delivery-option-price{if $carrier.price_with_tax == 0} free{/if}">
<span class="carrier-price">{$carrier.price|escape:'htmlall':'UTF-8'}</span>
<span class="carrier-price-with-tax-formatted">{$carrier.price_with_tax_formatted|escape:'htmlall':'UTF-8'}</span>
<span class="carrier-price-without-tax-formatted">{$carrier.price_without_tax_formatted|escape:'htmlall':'UTF-8'}</span>
</div>
</div>
</label>
</div>
{*Some themes have CSS definition: .carrier-extra-content:not(:empty) { margin-bottom: 2rem; } - so we need to keep no extra spaces here in .carrier-extra-content, if it shall be empty *}
<div
class="row carrier-extra-content{if "1" === $carrier.is_module} {$carrier.external_module_name}{/if}"{if $delivery_option != $carrier_id} style="display:none;"{/if}>{$carrier.extraContent nofilter}</div>
class="row carrier-extra-content{if isset($carrier.external_module_name) && "" != $carrier.external_module_name} {$carrier.external_module_name|escape:'javascript':'UTF-8'}{/if}"{if $delivery_option != $carrier_id} style="display:none;"{/if}>{$carrier.extraContent nofilter}</div>
<div class="clearfix"></div>
{/foreach}
</div>
@@ -111,12 +117,12 @@
<input class="js-gift-checkbox" id="input_gift" name="gift" type="checkbox" value="1"
{if $gift.isGift}checked="checked"{/if}>
<span><i class="material-icons rtl-no-flip checkbox-checked check-icon">&#xE5CA;</i></span>
<label for="input_gift">{$gift.label}</label>
<label for="input_gift">{$gift.label|escape:'htmlall':'UTF-8'}</label>
</span>
<div id="gift" class="collapse{if $gift.isGift} in show{/if}">
<label
for="gift_message">{l s='If you\'d like, you can add a note to the gift:' d='Shop.Theme.Checkout'}</label>
<textarea rows="2" id="gift_message" name="gift_message">{$gift.message}</textarea>
<textarea rows="2" id="gift_message" name="gift_message">{$gift.message|escape:'htmlall':'UTF-8'}</textarea>
</div>
{/if}