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

@@ -0,0 +1,13 @@
# Apache 2.2
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
# Apache 2.4
<IfModule mod_authz_core.c>
Require all denied
<Files ~ "(?i)^.*\.(txt|jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico|webp|woff|woff2|ttf|eot|otf|css|js)$">
Require all granted
</Files>
</IfModule>

View File

@@ -1,3 +1,72 @@
vNext - 20240801
[feature] Your order is now 0% VAT message in cart summary (enable with CSS)
[feature] New config option 'use_other_field_for_business_private'
[fix] Correctly escaping quote in address fields
[fix-shipping] geodis v1.0.3 - by GEODIS
[fix-shipping] .carrier-extra-content wasn't parsed properly on PS 8.1+
[fix-payment] przelewy24 v1.3.98 - by Przelewy24 - BLIK payment in popup mode
[fix] Emit updateCart event on quantity change / product removal
[fix-payment] revolutpayments v2.8.6 - by Revolut
[fix-payment] ps_checkout v8.4.0 - by PrestaShop
[fix] Copy phone number from invoice to delivery - fix for live update
[fix-payment] paypal v6.3.0 - by 202 ecommerce
[fix] Gift wrapping checkbox state wasn't stored
[fix] Google/FB logins were not working from login page if cart was empty
[fix] dpdbaltics - phone validation did not work when multiple dpd options were available
[fix-payment] bongooglepay v2.0.0 - by Bonpresta
[fix] Skip shipping module validation for virtual carts
[fix-payment] floapay v1.2.4 - by 202 ecommerce / Floa Bank
[fix-payment] buckaroo3 v4.2.0 - by Buckaroo (payment fee parsing)
[fix-payment] stripe_official v3.2.0 (popup mode) - by Stripe
[fix-payment] stripejs v4.6.0 - by NTS
v3.3.10 - 20240301
[feature] Copy phone number from invoice to delivery address, if phone number is disabled in delivery address
[fix-payment] datatranscw v4.0.193 - by customweb ltd
[fix-payment] redsysinsite v2.2.1 - by idnovate
[fix] Unable to set quantity from 2 to 1 using '-' button in cart summary
[fix-payment] popup mode for przelewy24's BLIK payment
[feature] New config option - 'Use old address on reorder'
[fix] Assign already used address when expanding second address form
[fix] Show 'free' carrier price when free shipping cart rule is used
[fix] Implemented new PS 8 Security password policy
[fix-payment] popup mode for paynow's BLIK payment
[fix-shipping] latvijaspastsexpresspastspostterminalslv v1
[feature] New config option - 'shipping/payment logos on the right'
[fix] Silent registration did overwrite also existing customer's first/lastname
[fix-shipping] dhlassistant v1.7
[feature] New config option 'Assign Address to Customer ASAP'
[fix] With silent registration enabled, firstname/lastname were not enforced even when set as required
[fix] Value targetting selector for payment fields wasn't quoted properly
[fix] changed google-places-autocomplete from jQuery to vanilla js implementation
[fix-payment] stripe_official v3.1.3 (redirect mode)
[feature] Google Maps address autocomplete added to PS address form
[fix-payment] Fixed earlier issue with ps_checkout after md5 ID hashes change
[feature] added support (error message propagation) for blockproductsbycountry module
[feature] improved google places autocomplete for Italy (provinces matching)
[fix-shipping] estimateddelivery v3.8.8
[fix-shipping] mijoravenipak v1.1.3
[fix] join() arguments order in PHP8 when using Smarty (shippingAddressNotice)
v3.3.9 - 20230906
[fix-shipping] dpdbaltics v3.2.15
[fix-payment] pm_applepay v2.1.1
[fix-shipping] apaczka shipping v1.1.0
[fix-shipping] lpshipping v1.0.17
[fix] With Initialize Address config option, new (empty) carts were created on /order visit
[feature] eicaptcha module support (ReCaptcha)
[feature] Added notice 'You already have an account with us. Sign in or continue as guest.' to email field.
[fix-shipping] mondialrelay 3.3.7 by ScaleDEV
[fix] Google places (autocomplete) did not trigger for second address when initially collapsed
[fix] Better context errors when checkout steps are enabled
[feature] Display effective tax rate in cart summary
[fix-payment] Paypal card payment (ACDC) in official Paypal module
[fix] Config option to display Paypal express checkout button in Log-in area
[fix] Duplicated slide-down of carrier extra information
[fix-payment] Stripe_official, implemented redirect mode
[fix] FB social login button styling and FB action on login page
[fix-shipping] fspickupatstore v3.2.1
v3.3.8 - 20230428
[fix] Allow multiple 'sticky' elements in a column
[feature] Display google and fb social login also on PS native login page

View File

@@ -24,6 +24,10 @@
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_')) {
exit;
}
use Symfony\Component\Translation\TranslatorInterface;
/**
@@ -124,7 +128,11 @@ class CheckoutAddressForm extends AbstractForm
}
if (($hookReturn = Hook::exec('actionValidateCustomerAddressForm', array('form' => $this))) !== '') {
$is_valid &= (bool)$hookReturn;
if ($hookReturn === null) {
$is_valid &= true;
} else {
$is_valid &= (bool)$hookReturn;
}
}
// We need to call this separately due to side-effect - getting all errors at once, not only postcode error first
@@ -188,7 +196,7 @@ class CheckoutAddressForm extends AbstractForm
$result = $this->persister->save(
$this->address,
$this->getValue('token'),
$finalConfirmation || !$this->isOpcTransientAddress($address->alias) // attach_customer_id
$finalConfirmation || !$this->isOpcTransientAddress($address->alias) || $this->checkoutModule->config->assign_customer_id_asap // attach_customer_id
);
} catch (PrestaShopException $e) {
//$e->displayMessage();

View File

@@ -23,6 +23,10 @@
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_')) {
exit;
}
use Symfony\Component\Translation\TranslatorInterface;
class CheckoutAddressFormatter implements FormFormatterInterface

View File

@@ -23,6 +23,10 @@
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_')) {
exit;
}
class CheckoutCustomerAddressPersister
{
private $customer;

View File

@@ -23,8 +23,14 @@
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_')) {
exit;
}
use PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto;
use Symfony\Component\Translation\TranslatorInterface;
use PrestaShop\PrestaShop\Core\Security\PasswordPolicyConfiguration;
use ZxcvbnPhp\Zxcvbn;
class CheckoutCustomerForm extends AbstractForm
{
@@ -127,6 +133,59 @@ class CheckoutCustomerForm extends AbstractForm
}
}
// New PS 8 Password strength validation
$passwordField = $this->getField('password');
$guestAllowedCheckout = Configuration::get('PS_GUEST_CHECKOUT_ENABLED');
$passwordRequired = is_string($passwordField->getValue()) &&
(!empty($passwordField->getValue()) || !$guestAllowedCheckout);
if (method_exists('Validate', 'isAcceptablePasswordLength') &&
method_exists('Validate', 'isAcceptablePasswordScore') &&
$passwordRequired) {
if (Validate::isAcceptablePasswordLength($passwordField->getValue()) === false) {
$passwordField->addError($this->translator->trans(
'Password must be between %d and %d characters long',
[
Configuration::get(PasswordPolicyConfiguration::CONFIGURATION_MINIMUM_LENGTH),
Configuration::get(PasswordPolicyConfiguration::CONFIGURATION_MAXIMUM_LENGTH),
],
'Shop.Notifications.Error'
));
}
if (Validate::isAcceptablePasswordScore($passwordField->getValue()) === false) {
$wordingsForScore = [
$this->translator->trans('Very weak', [], 'Shop.Theme.Global'),
$this->translator->trans('Weak', [], 'Shop.Theme.Global'),
$this->translator->trans('Average', [], 'Shop.Theme.Global'),
$this->translator->trans('Strong', [], 'Shop.Theme.Global'),
$this->translator->trans('Very strong', [], 'Shop.Theme.Global'),
];
$globalErrorMessage = $this->translator->trans(
'The minimum score must be: %s',
[
$wordingsForScore[(int) Configuration::get(PasswordPolicyConfiguration::CONFIGURATION_MINIMUM_SCORE)],
],
'Shop.Notifications.Error'
);
if ($this->context->shop->theme->get('global_settings.new_password_policy_feature') !== true) {
$zxcvbn = new Zxcvbn();
$result = $zxcvbn->passwordStrength($passwordField->getValue());
if (!empty($result['feedback']['warning'])) {
$passwordField->addError($this->translator->trans(
$result['feedback']['warning'], [], 'Shop.Theme.Global'
));
} else {
$passwordField->addError($globalErrorMessage);
}
foreach ($result['feedback']['suggestions'] as $suggestion) {
$passwordField->addError($this->translator->trans($suggestion, [], 'Shop.Theme.Global'));
}
} else {
$passwordField->addError($globalErrorMessage);
}
}
}
if ($silentRegistration && Validate::isEmail($emailField->getValue())) {
// Allow silent guest registration when email field emits blur() - called from checkEmail routine
return true;

View File

@@ -24,6 +24,10 @@
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_')) {
exit;
}
use Symfony\Component\Translation\TranslatorInterface;
class CheckoutCustomerFormatter implements FormFormatterInterface

View File

@@ -10,6 +10,10 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
if (!defined('_PS_VERSION_')) {
exit;
}
use PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto;
use Symfony\Component\Translation\TranslatorInterface;

View File

@@ -23,6 +23,10 @@
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_VERSION_')) {
exit;
}
class CheckoutFormField
{
private $name = '';

View File

@@ -12,6 +12,10 @@
namespace module\thecheckout;
if (!defined('_PS_VERSION_')) {
exit;
}
use \Configuration;
use \Tools;
use \Context;
@@ -451,6 +455,7 @@ class Config
public $refresh_minicart = 0;
public $clean_checkout_session_after_confirmation = 0;
public $assign_customer_id_asap = 0;
public $show_block_reassurance = 0;
@@ -466,10 +471,12 @@ class Config
public $business_fields = 'company, dni, vat_number';
public $private_fields = 'dni';
public $business_disabled_fields = '';
public $use_other_field_for_business_private = 0;
public $shipping_required_fields = '';
public $payment_required_fields = '';
public $collapse_shipping_methods = 0;
public $collapse_payment_methods = 0;
public $logos_on_the_right = 1;
public $show_shipping_country_in_carriers = 0;
public $force_customer_to_choose_country = 0;
public $force_customer_to_choose_carrier = 0;
@@ -500,6 +507,8 @@ class Config
public $smartform_client_id = '';
public $social_login_btn_style = 'light';
public $social_login_display_on_login_page = 0;
public $paypal_express_checkout = 0;
public $use_old_address_on_reorder = 0;
public $ps_css_cache_version;
public $ps_js_cache_version;

View File

@@ -12,6 +12,10 @@
namespace module\thecheckout;
if (!defined('_PS_VERSION_')) {
exit;
}
use Customer;
use Validate;
use CartRule;

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<module>
<name>thecheckout</name>
<displayName><![CDATA[Szybkie zakupy Pro]]></displayName>
<version><![CDATA[3.3.10]]></version>
<description><![CDATA[Wydajny i intuicyjny proces realizacji transakcji.]]></description>
<author><![CDATA[PrestaDev.pl]]></author>
<tab><![CDATA[checkout]]></tab>
<confirmUninstall><![CDATA[Napewno chcesz odinstalować moduł?]]></confirmUninstall>
<is_configurable>1</is_configurable>
<need_instance>0</need_instance>
<limited_countries></limited_countries>
</module>

View File

@@ -10,8 +10,13 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
if (!defined('_PS_VERSION_')) {
exit;
}
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
use \PrestaShop\PrestaShop\Core\Module\WidgetInterface;
use PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder;
use PrestaShop\PrestaShop\Adapter\ObjectPresenter;
use module\thecheckout\Config;
use module\thecheckout\SocialLogin;
@@ -39,6 +44,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
private $amazonpayOngoingSession = false;
private $tcCopyInvoicePhoneToDelivery = true;
public function __construct()
{
$_GET['module'] = $this->name;
@@ -72,7 +79,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
// oyejorge/less.php v1.7.1
private function autoCompileLess($inputFile, $outputFile)
{
require_once $this->module_root . "/lib/less.php_1.7.0.10/Less.php";
$lessLib = $this->module_root . "/lib/less.php_1.7.0.10/Less.php";
// If less library is not present (e.g. in production, when used package from Addons), do not compile .less files at all
if (!file_exists($lessLib)) {
return;
}
require_once $lessLib;
$cacheDir = _PS_CACHE_DIR_ . 'thecheckout/';
$less_files = array($inputFile => '');
@@ -95,37 +108,6 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
}
}
//
// lessc 0.4 implementation
// private function autoCompileLess($inputFile, $outputFile)
// {
// require $this->module_root . "/lib/lessc.inc.php";
//
// $cacheFile = $inputFile . ".cache";
//
// if (file_exists($cacheFile)) {
// $cache = unserialize(file_get_contents($cacheFile));
// } else {
// $cache = $inputFile;
// }
//
// $less = new lessc;
// if (!$this->module->debug) {
// $less->setFormatter("compressed");
// }
//
// $forceCompile = ($this->module->debug) ? true : false;
//
// $newCache = $less->cachedCompile($cache, $forceCompile);
//
// if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
// file_put_contents($cacheFile, serialize($newCache));
// file_put_contents($outputFile, $newCache['compiled']);
// }
// }
private function compileLess()
{
try {
@@ -166,6 +148,12 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
array('media' => 'all', 'priority' => 140, 'server' => 'remote'));
}
if ($this->module->config->social_login_fb) {
$this->context->controller->registerStylesheet('modules-thecheckout-' . ($i++),
'//fonts.googleapis.com/css?family=Roboto:500',
array('media' => 'all', 'priority' => 140, 'server' => 'remote'));
}
// Include all views/css/*.css and views/js/*.js files
foreach (glob(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/*.css") as $filename) {
$this->context->controller->registerStylesheet('modules-thecheckout-' . ($i++),
@@ -404,6 +392,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
// by other modules, not bound to specific field
$formField->setType('hidden');
}
if ($fieldName === 'other') {
if ($this->module->config->use_other_field_for_business_private) {
$formField->setCssClass('use-other-for-business-private');
}
}
} elseif (count($fieldParts) === 2) {
list($entity, $entityField) = $fieldParts;
@@ -447,7 +440,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
} elseif ($entity === 'State') {
if ($country->contains_states) {
$states = State::getStatesByIdCountry($country->id, true); // true = only active states
// Sort states by alphabet
// Sort states by alphabet - uncomment to activate
// usort($states, function ($a, $b) {
// $ax = strtr($a['name'], 'Ñ', 'N');
// $bx = strtr($b['name'], 'Ñ', 'N');
@@ -655,6 +648,9 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
->setName('token')
->setType('hidden')
->setValue($this->makeAddressPersister()->getToken()),
'general_error' => (new CheckoutFormField)
->setName('general_error')
->setType('hidden')
);
foreach ($this->module->config->customer_fields as $fieldName => $fieldOptions) {
@@ -781,6 +777,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$format[$moduleField->moduleName . '_' . $moduleField->getName()] = $moduleField;
}
// Sample format structure
/*
$format = [
'back' => (new CheckoutFormField)
@@ -955,7 +952,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ($this->context->customer->isLogged()) {
$customerAddresses = $this->context->customer->getSimpleAddresses();
foreach ($customerAddresses as &$a) {
$a['formatted'] = AddressFormat::generateAddress(new Address($a['id']), array(), '<br>');
$a['formatted'] = AddressFormat::generateAddress(new Address($a['id']), array(), $this->module->tagIt('br', ''));
}
$allCustomerUsedAddresses = $this->getAllCustomerUsedAddresses();
@@ -988,51 +985,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ($usedForInvoice || !$usedForDelivery) {
$addressesList['invoice'][$addressId] = $customerAddresses[$addressId];
}
// Data preparation for other purposes, e.g. setting up this address filter in PS 'addresses'
// For that, controllers/front/AddressesController.php needs to include this in initContent():
//
// if (file_exists(_PS_MODULE_DIR_ . 'thecheckout/controllers/front/front.php')) {
// include_once(_PS_MODULE_DIR_ . 'thecheckout/controllers/front/front.php');
// $tc_frontController = new TheCheckoutModuleFrontController();
// $delivery_invoice_addresses = $tc_frontController->api_getAddressSelectionTplVars();
//
// $this->context->smarty->assign('delivery_invoice_addresses', $delivery_invoice_addresses);
// }
//
// And respective template, /themes/classic/templates/customer/addresses.tpl shall be also updated
// $addressesList['invoice'] + $addressesList['usedDeliveryExclusive'] make up "full set",
// as 'invoice' includes also addresses we can't exactly say are invoice or delivery:
//
// {if isset($delivery_invoice_addresses) && isset($delivery_invoice_addresses.addressesList)}
// {if isset($delivery_invoice_addresses.addressesList.invoice)}
// <div class="invoice-primary-addresses" style="float:left;width:100%">
// <h2>{l s='Primary and invoice addresses' d='Shop.Theme.Customeraccount'}</h2>
// {foreach $delivery_invoice_addresses.addressesList.invoice as $address}
// <div class="col-lg-4 col-md-6 col-sm-6">
// {block name='customer_address'}
// {include file='customer/_partials/block-address.tpl' address=$address}
// {/block}
// </div>
// {/foreach}
// </div>
// {/if}
// {/if}
//
// {if isset($delivery_invoice_addresses) && isset($delivery_invoice_addresses.addressesList)}
// {if isset($delivery_invoice_addresses.addressesList.usedDeliveryExclusive)}
// <div class="delivery-addresses" style="float:left;width:100%">
// <h2>{l s='Delivery addresses' d='Shop.Theme.Customeraccount'}</h2>
// {foreach $delivery_invoice_addresses.addressesList.usedDeliveryExclusive as $address}
// <div class="col-lg-4 col-md-6 col-sm-6">
// {block name='customer_address'}
// {include file='customer/_partials/block-address.tpl' address=$address}
// {/block}
// </div>
// {/foreach}
// </div>
// {/if}
// {/if}
//
if ($usedForDelivery && !$usedForInvoice) {
$addressesList['usedDeliveryExclusive'][$addressId] = $customerAddresses[$addressId];
}
@@ -1101,7 +1054,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if (
'' != $businessFieldName &&
isset($formFieldsInvoiceMapped[$businessFieldName]) &&
null != trim($formFieldsInvoiceMapped[$businessFieldName]['value']) &&
null != $formFieldsInvoiceMapped[$businessFieldName]['value'] &&
'' != trim($formFieldsInvoiceMapped[$businessFieldName]['value']) &&
'id_state' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] &&
'id_country' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] &&
('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1109,6 +1063,14 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hideBusinessFields = false;
}
}
if ($hideBusinessFields && $this->module->config->use_other_field_for_business_private &&
isset($formFieldsInvoiceMapped['other']) &&
null != $formFieldsInvoiceMapped['other']['value'] &&
$this->trans('business', [], 'Modules.Thecheckout.front') === trim($formFieldsInvoiceMapped['other']['value'])
) {
$hideBusinessFields = false;
}
$hidePrivateFields = true;
// if businessFields are visible (=not $hideBusinessFields), private fields will be hidden; otherwise, let's make check:
@@ -1117,7 +1079,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if (
'' != $privateFieldName &&
isset($formFieldsInvoiceMapped[$privateFieldName]) &&
null != trim($formFieldsInvoiceMapped[$privateFieldName]['value']) &&
null != $formFieldsInvoiceMapped[$privateFieldName]['value'] &&
'' != trim($formFieldsInvoiceMapped[$privateFieldName]['value']) &&
'id_state' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] &&
'id_country' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] &&
('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1125,6 +1088,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hidePrivateFields = false;
}
}
if ($hidePrivateFields && $this->module->config->use_other_field_for_business_private &&
isset($formFieldsInvoiceMapped['other']) &&
null != $formFieldsInvoiceMapped['other']['value'] &&
$this->trans('private', [], 'Modules.Thecheckout.front') === trim($formFieldsInvoiceMapped['other']['value'])
) {
$hidePrivateFields = false;
}
}
// Same for delivery address fields:
@@ -1141,7 +1111,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if (
'' != $businessFieldName &&
isset($formFieldsDeliveryMapped[$businessFieldName]) &&
null != trim($formFieldsDeliveryMapped[$businessFieldName]['value']) &&
null != $formFieldsDeliveryMapped[$businessFieldName]['value'] &&
'' != trim($formFieldsDeliveryMapped[$businessFieldName]['value']) &&
'id_state' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] &&
'id_country' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] &&
('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1149,6 +1120,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hideBusinessFieldsDelivery = false;
}
}
if ($hideBusinessFieldsDelivery && $this->module->config->use_other_field_for_business_private &&
isset($formFieldsDeliveryMapped['other']) &&
null != $formFieldsDeliveryMapped['other']['value'] &&
$this->trans('business', [], 'Modules.Thecheckout.front') === trim($formFieldsDeliveryMapped['other']['value'])
) {
$hideBusinessFieldsDelivery = false;
}
$hidePrivateFieldsDelivery = true;
// if businessFields are visible (=not $hideBusinessFields), private fields will be hidden; otherwise, let's make check:
@@ -1157,7 +1135,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if (
'' != $privateFieldName &&
isset($formFieldsDeliveryMapped[$privateFieldName]) &&
null != trim($formFieldsDeliveryMapped[$privateFieldName]['value']) &&
null != $formFieldsDeliveryMapped[$privateFieldName]['value'] &&
'' != trim($formFieldsDeliveryMapped[$privateFieldName]['value']) &&
'id_state' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] &&
'id_country' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] &&
('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1165,6 +1144,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hidePrivateFieldsDelivery = false;
}
}
if ($hidePrivateFieldsDelivery && $this->module->config->use_other_field_for_business_private &&
isset($formFieldsDeliveryMapped['other']) &&
null != $formFieldsDeliveryMapped['other']['value'] &&
$this->trans('private', [], 'Modules.Thecheckout.front') === trim($formFieldsDeliveryMapped['other']['value'])
) {
$hidePrivateFieldsDelivery = false;
}
}
// Old code, when business fields were hard-coded
@@ -1248,35 +1234,78 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$this->context->cookie->id_cart = $duplication['cart']->id;
$context = $this->context;
$context->cart = $duplication['cart'];
if ($this->module->config->use_old_address_on_reorder) {
// assign oldCart's addresses to the new cart
$oldDeliveryAddress = new Address($oldCart->id_address_delivery);
$oldInvoiceAddress = new Address($oldCart->id_address_invoice);
if (!$oldDeliveryAddress->deleted) {
$this->context->cart->id_address_delivery = $oldCart->id_address_delivery;
}
if (!$oldInvoiceAddress->deleted) {
$this->context->cart->id_address_invoice = $oldCart->id_address_invoice;
}
$this->context->cart->update();
}
CartRule::autoAddToCart($context);
$this->context->cookie->write();
Tools::redirect('index.php?controller=order');
// Tools::redirect('index.php?controller=order');
}
}
}
private function isShopVersion17Plus()
{
return version_compare(_PS_VERSION_, '1.7.0.0', '>=');
}
private function isShopVersion8Plus()
{
return version_compare(_PS_VERSION_, '8.0.0', '>=');
}
private function isShopVersion813Plus()
{
return version_compare(_PS_VERSION_, '8.1.3', '>=');
}
private function isModuleEnabled($moduleName) {
if (false === $this->isShopVersion17Plus()) {
return \Module::isInstalled($moduleName) && \Module::isEnabled($moduleName);
}
$moduleManagerBuilder = ModuleManagerBuilder::getInstance();
$moduleManager = $moduleManagerBuilder->build();
return $moduleManager->isInstalled($moduleName) && \Module::isEnabled($moduleName);
}
public function initContent()
{
// kernel initialization moved here from thecheckout.php, so that it executes less often
$this->module->initPsKernel();
// Can we skip it for ajax calls? parent::initContent set caches for delivery options,
// if enabled here, we'd need to flush caches before ajax call
//parent::initContent();
// Initiate checkoutProcess object for ps_checkout module
if (version_compare(_PS_VERSION_, '1.7.3') >= 0 &&
Module::isInstalled('xps_checkout') && Module::isEnabled('xps_checkout')) {
$deliveryOptionsFinder = new DeliveryOptionsFinder(
$this->context,
$this->getTranslator(),
new ObjectPresenter(),
new PriceFormatter()
);
$session = new CheckoutSession(
$this->context,
$deliveryOptionsFinder
);
$this->checkoutProcess = new CheckoutProcess($this->context, $session);
}
// if (version_compare(_PS_VERSION_, '1.7.3') >= 0 &&
// Module::isInstalled('xps_checkout') && Module::isEnabled('xps_checkout')) {
// $deliveryOptionsFinder = new DeliveryOptionsFinder(
// $this->context,
// $this->getTranslator(),
// new ObjectPresenter(),
// new PriceFormatter()
// );
//
// $session = new CheckoutSession(
// $this->context,
// $deliveryOptionsFinder
// );
// $this->checkoutProcess = new CheckoutProcess($this->context, $session);
// }
if (Configuration::get('PS_RESTRICT_DELIVERED_COUNTRIES')) {
@@ -1308,6 +1337,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
} else {
$this->parentInitContent();
// Reset carrier selection on full-page load
// $opc_form_radios = json_decode($this->context->cookie->opc_form_radios, true);
// unset($opc_form_radios['delivery_option']);
// $this->context->cookie->opc_form_radios = json_encode($opc_form_radios);
// Remove potentially unwanted JS includes from payment method - if we include them in hook call
//print_r($this->context->controller->getJavascript());
$this->context->controller->unregisterJavascript('paypal-plus-payment-js');
@@ -1348,9 +1382,21 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ($this->context->cart->id != $this->context->cookie->addreses_reset_at_cart_id) {
$lastOrderAddresses = $this->getCustomerLastUsedAddresses($this->getAllCustomerUsedAddresses());
if (count($lastOrderAddresses)) {
$this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice'];
$this->context->cart->id_address_delivery = $lastOrderAddresses['id_address_delivery'];
$this->context->cart->update();
if (!$this->module->config->use_old_address_on_reorder) {
$this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice'];
$this->context->cart->id_address_delivery = $lastOrderAddresses['id_address_delivery'];
$this->context->cart->update();
} else {
$oldDeliveryAddress = new Address($this->context->cart->id_address_delivery);
$oldInvoiceAddress = new Address($this->context->cart->id_address_invoice);
if ($oldDeliveryAddress->deleted) {
$this->context->cart->id_address_delivery = $lastOrderAddresses['id_address_delivery'];
}
if ($oldInvoiceAddress->deleted) {
$this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice'];
}
}
$this->context->cart->setNoMultishipping();
$this->updateAddressIdInDeliveryOptions();
$this->context->cookie->addreses_reset_at_cart_id = $this->context->cart->id;
@@ -1391,7 +1437,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
}
// myparcel loads iframe picker, and thus markup is always same even though, we need to change iframe content always
$forceRefreshShipping = Module::isInstalled('myparcel');
$forceRefreshShipping = $this->isModuleEnabled('myparcel');
// Logged-in customer groups
$customer_groups = $this->context->customer->getGroups();
@@ -1423,18 +1469,19 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$page["body_classes"]["collapse-shipping-methods"] = $this->module->config->collapse_shipping_methods;
$page["body_classes"]["collapse-payment-methods"] = $this->module->config->collapse_payment_methods;
$page["body_classes"]["fetchifyuk-enabled"] = Module::isEnabled('fetchifyuk'); // formerly craftyclicks
$page["body_classes"]["logos-on-the-right"] = $this->module->config->logos_on_the_right;
if ((Configuration::get('PAYPAL_EXPRESS_CHECKOUT_SHORTCUT') || Configuration::get('PAYPAL_EXPRESS_CHECKOUT_SHORTCUT_CART')) && (isset($this->context->cookie->paypal_ecs) || isset($this->context->cookie->paypal_pSc))) {
$page["body_classes"]["paypal-express-checkout-session"] = true;
}
$installedModules = array();
foreach (array('mondialrelay', 'einvoicingprestalia') as $moduleName) {
$installedModules[$moduleName] = Module::isInstalled($moduleName) && Module::isEnabled($moduleName);
foreach (array('mondialrelay', 'einvoicingprestalia', 'chronopost') as $moduleName) {
$installedModules[$moduleName] = $this->isModuleEnabled($moduleName);
}
$sendcloud_moduleName = 'sendcloud';
$sendcloud_script = '';
if (Module::isInstalled($sendcloud_moduleName) && Module::isEnabled($sendcloud_moduleName)) {
if ($this->isModuleEnabled($sendcloud_moduleName)) {
$sendcloud_moduleInstance = Module::getInstanceByName($sendcloud_moduleName);
if (isset($sendcloud_moduleInstance->connector) && $sendcloud_moduleInstance->connector) {
$sendcloud_script = $sendcloud_moduleInstance->connector->getServicePointScript();
@@ -1451,7 +1498,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
} else {
$needAddressModules = array('paypal', 'sendcloud', 'mondialrelay', 'omniva', 'multisafepay');
foreach ($needAddressModules as $moduleName) {
if (Module::isInstalled($moduleName) && Module::isEnabled($moduleName)) {
if ($this->isModuleEnabled($moduleName)) {
$forceAddressCreation = true;
break;
}
@@ -1465,6 +1512,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
);
$this->unifyAddresses(true, false);
}
$needCheckoutSessionModules = array('mondialrelay');
foreach ($needCheckoutSessionModules as $moduleName) {
if ($this->isModuleEnabled($moduleName)) {
$this->updateCheckoutSession(false);
break;
}
}
}
// render paypal express checkout button in sign-up?
$paypal_express_checkout = '';
if ($this->module->config->paypal_express_checkout) {
$paypal_express_checkout = Hook::exec('displayExpressCheckout');
}
$this->context->smarty->assign(array(
@@ -1489,7 +1550,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'forceRefreshShipping' => $forceRefreshShipping,
'installedModules' => $installedModules,
'separatePaymentKeyName' => Config::SEPARATE_PAYMENT_KEY_NAME,
'sendcloud_script' => $sendcloud_script
'sendcloud_script' => $sendcloud_script,
'paypal_express_checkout' => $paypal_express_checkout
));
$amazonPayCheckoutSessionClass = "AmazonPayCheckoutSession";
@@ -1579,7 +1641,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if (version_compare(_PS_VERSION_, '1.7.3') >= 0) {
$this->context->cart->delivery_option = json_encode($newDeliveryOptions);
} else {
$this->context->cart->delivery_option = serialize($newDeliveryOptions);
// 16.10.2023 - we won't support older PS versions anymore, so this is left empty
}
}
$this->context->cart->autosetProductAddress();
@@ -1614,6 +1676,24 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
return $self->getCheckoutSession()->getDeliveryOptions();
});
$priceFormatter = new PriceFormatter();
$freeShippingLabel = $this->translator->trans(
'Free',
[],
'Shop.Theme.Checkout'
);
foreach ($deliveryOptions as &$option) {
if ($option['price'] === $freeShippingLabel) {
$option['price_with_tax_formatted'] = $option['price'];
$option['price_without_tax_formatted'] = $option['price'];
} else {
$option['price_with_tax_formatted'] = $priceFormatter->format($option['price_with_tax']);
$option['price_without_tax_formatted'] = $priceFormatter->format($option['price_without_tax']);
}
// $option['price'] = " -- [price] '" . $option['price'] . "' == [freeShippingLabel] '" . $freeShippingLabel ."' (". ($option['price'] === $freeShippingLabel) .")";
}
return
array(
'hookDisplayBeforeCarrier' => Hook::exec('displayBeforeCarrier',
@@ -1640,24 +1720,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
);
}
// public function selectPaymentOption(array $requestParams = array())
// {
// if (isset($requestParams['select_payment_option'])) {
// $this->selected_payment_option = $requestParams['select_payment_option'];
// }
//
// $this->setTitle(
// $this->getTranslator()->trans(
// 'Payment',
// array(),
// 'Shop.Theme.Checkout'
// )
// );
// }
public function getPaymentOptions()
{
$isFree = 0 == (float)$this->getCheckoutSession()->getCart()->getOrderTotal(true, Cart::BOTH);
# if paypal module is installed and enabled, make sure that if customer object is empty, set is_guest to 1
if ($this->isModuleEnabled('paypal')) {
if (empty($this->context->customer->id)) {
$this->context->customer->is_guest = 1;
}
}
$paymentOptionsFinder = new PaymentOptionsFinder();
$paymentOptions = $paymentOptionsFinder->present($isFree);
@@ -1669,6 +1742,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$paymentOptions["amazonpay"] = $amazonPayOption;
}
// pm_applepay module doesn't use paymentOptions hook, so we'll add it manually
if ($this->isModuleEnabled('pm_applepay') && Module::getInstanceByName('pm_applepay')->isPaymentAvailable()) {
$paymentOptions['pm_applepay'][] = array(
'id' => 'payment-option-1001',
'module_name' => 'pm_applepay',
'call_to_action_text' => $this->module->getTranslation('Apple Pay'),
'form' => $this->module->tagIt('div', '', 'id="pm_applepay-popup-container"'),
'binary' => true
);
}
return array(
'is_free' => $isFree,
'payment_options' => $paymentOptions,
@@ -1680,29 +1764,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
public function ajaxCall()
{
// Uncomment to debug ajaxCall
// @error_reporting(E_ALL & ~E_NOTICE);
// multisafepay fix BEGIN
// multisafepay.php:hasSetApiKey(), loads multisafepay.sdk_service, but the $kernel is not started in this ajax request yet
// Commented out due to validator requirements (no globals), uncomment for multisafepay support
// global $kernel;
// if(!$kernel){
// require_once _PS_ROOT_DIR_.'/app/AppKernel.php';
// $kernel = new \AppKernel('prod', false);
// $kernel->boot();
// }
// multisafepay fix END
if ($this->module->debug) {
$this->module->logDebug("[AJAX*Start] " . Tools::getValue('action'));
}
$action = Tools::ucfirst(Tools::getValue('action'));
$action = Tools::ucfirst(strip_tags(Tools::getValue('action')));
if (!empty($action) && method_exists($this, 'ajax' . $action)) {
$this->context->smarty->assign("tc_config", $this->module->config);
$this->context->smarty->assign("z_tc_config", $this->module->config);
$result = $this->{'ajax' . $action}();
} else {
$result = (array('error' => 'Ajax parameter used, but action \'' . Tools::getValue('action') . '\' is not defined'));
$result = (array('error' => 'Ajax parameter used, but action \'' . strip_tags(Tools::getValue('action')) . '\' is not defined'));
}
if ($this->module->debug) {
@@ -1944,10 +2019,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
}
}
// add dateofdelivery module name into external shipping modules list, so that its parser is loaded at JS level
$dateofdelivery_moduleName = 'dateofdelivery';
if (Module::isInstalled($dateofdelivery_moduleName) && Module::isEnabled($dateofdelivery_moduleName)) {
$externalShippingModules[$dateofdelivery_moduleName] = 0;
// add dateofdelivery and apaczka module name into external shipping modules list, so that its parser is loaded at JS level
$externalShippingModuleNames = ['dateofdelivery', 'apaczka', 'upsservice', 'globkuriermodule'];
foreach ($externalShippingModuleNames as $ext_moduleName)
if (Module::isInstalled($ext_moduleName) && Module::isEnabled($ext_moduleName)) {
$externalShippingModules[$ext_moduleName][] = 0;
}
$this->getCheckoutSession()->setDeliveryOption(
@@ -1999,7 +2075,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
}
}
$this->context->smarty->assign('shippingAddressNotice', $shippingAddressNotice);
$this->context->smarty->assign('shippingAddressNotice', implode(', ', $shippingAddressNotice));
}
@@ -2076,11 +2152,30 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$paymentMethods = $this->getPaymentOptions();
// add md5 checksum to payment options (+exceptions)
// Some payment modules (e.g. paynow) do not always return same order of payment methods, so we need an ID that would be unique for every option
foreach ($paymentMethods['payment_options'] as $modName => &$options) {
foreach ($options as &$option) {
// ps_checkout needs exact data-module-name attribute, it won't initialize widget otherwise
if ($modName == 'ps_checkout' ||
strpos($modName, 'paypal') === 0 ||
strpos($modName, 'przelewy-method') === 0 ||
strpos($modName, 'przelewy24') === 0 ||
strpos($modName, 'stripe_official') === 0
) {
$option['call_to_action_text_md5'] = '';
} else {
$option['call_to_action_text_md5'] = '-'.substr(md5($option['call_to_action_text']), -5);
}
}
}
$this->context->smarty->assign($paymentMethods);
// // Payment data, used by Stripe payment for live refresh (and possibly other modules in future)
// $currency = $this->context->currency->iso_code;
// $currency = $this->context->currency->iso_code;
// $orderTotal = $this->context->cart->getOrderTotal();
// $stripeAmount = Tools::ps_round($orderTotal, 2);
// $stripeAmount = $this->isZeroDecimalCurrency($currency) ? $stripeAmount : $stripeAmount * 100;
@@ -2390,6 +2485,35 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
// $this->context->country->need_identification_number = false;
// }
// Copy invoice phone or phone_mobile to delivery phone or phone_mobile, if delivery phone or phone_mobile is empty and both phone fields are disabled in delivery form
if ($this->tcCopyInvoicePhoneToDelivery && $this->context->cart->id_address_invoice !== $this->context->cart->id_address_delivery &&
!$this->module->config->delivery_fields['phone_mobile']['visible'] && !$this->module->config->delivery_fields['phone']['visible']) {
# if we're updating invoice address, take phone/phone_mobile from $formData
# if we're updating delivery address, take phone/phone_mobile from invoice address ojbect
if ($isAddressTypeInvoice) {
$invoicePhoneMobile = isset($formData['phone_mobile']) && $formData['phone_mobile'] ? trim($formData['phone_mobile']) : '';
$invoicePhone = isset($formData['phone']) && $formData['phone'] ? trim($formData['phone']) : '';
$deliveryAddress = new Address($this->context->cart->id_address_delivery);
if ($invoicePhoneMobile !== "") {
$deliveryAddress->phone_mobile = $invoicePhoneMobile;
$deliveryAddress->save();
} elseif ($invoicePhone !== "") {
$deliveryAddress->phone = $invoicePhone;
$deliveryAddress->save();
}
} else {
$invoiceAddress = new Address($this->context->cart->id_address_invoice);
$invoicePhoneMobile = trim($invoiceAddress->phone_mobile);
$invoicePhone = trim($invoiceAddress->phone);
if ($invoicePhoneMobile !== "") {
$formData['phone_mobile'] = $invoicePhoneMobile;
} elseif ($invoicePhone !== "") {
$formData['phone'] = $invoicePhone;
}
}
}
$theCheckout_addressForm = new CheckoutAddressForm(
$this->module,
$this->context->smarty,
@@ -2630,9 +2754,18 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
//$this->updateAddressIdInDeliveryOptions();
$tpl_hasErrors = $registerForm->hasErrors();
$tpl_errors = $registerForm->getErrors();
if ($this->isModuleEnabled('eicaptcha')) {
Hook::exec('actionCustomerRegisterSubmitCaptcha');
$tpl_hasErrors = $tpl_hasErrors || sizeof($this->context->controller->errors);
$tpl_errors = array_merge($tpl_errors, array('captcha' => $this->context->controller->errors));
}
return array(
"hasErrors" => $registerForm->hasErrors(),
"errors" => $registerForm->getErrors(),
"hasErrors" => $tpl_hasErrors,
"errors" => $tpl_errors,
"customerId" => $this->context->customer->id,
"newToken" => Tools::getToken(true, $this->context),
"newStaticToken" => Tools::getToken(false),
@@ -2676,10 +2809,18 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
return $isComplete;
}
private function copyPropertyFromToIfEmpty(&$source, &$target, $propertyName) {
if ((!isset($target[$propertyName]) || "" == trim($target[$propertyName])) &&
isset($source[$propertyName]) && "" != trim($source[$propertyName])) {
$target[$propertyName] = $source[$propertyName];
private function copyPropertyFromToIfEmpty(&$source, &$target, $propertyName, $alternativeValue) {
$emptyValues = array('');
if (in_array($propertyName, array('firstname', 'lastname'))) {
$emptyValues = array('', 'a', 'A');
}
if ((!isset($target[$propertyName]) || in_array(trim($target[$propertyName]), $emptyValues)))
{
if (isset($source[$propertyName]) && !in_array(trim($source[$propertyName]), $emptyValues)) {
$target[$propertyName] = $source[$propertyName];
} elseif (!in_array(trim($alternativeValue), $emptyValues)) {
$target[$propertyName] = $alternativeValue;
}
}
}
@@ -2693,14 +2834,16 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$passwordRequired
) {
// check if shipping methods has any validations
$shippingModuleStepComplete = $this->isShippingModuleComplete(Tools::getAllValues());
$shippingResult = null;
if (!$shippingModuleStepComplete) {
$shippingResult = array(
'errors' => $this->context->controller->errors,
'hasErrors' => !empty($this->context->controller->errors)
);
if (!$this->context->cart->isVirtualCart()) {
// check if shipping methods has any validations
$shippingModuleStepComplete = $this->isShippingModuleComplete(Tools::getAllValues());
if (!$shippingModuleStepComplete) {
$shippingResult = array(
'errors' => $this->context->controller->errors,
'hasErrors' => !empty($this->context->controller->errors)
);
}
}
// Initialization defaults
@@ -2711,16 +2854,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ($invoiceVisible) {
// update invoice/delivery address firstname/lastname from customer name, if
// address' name is empty and customer's not (e.g. firstname/lastname can be hidden in address section)
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'firstname');
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'lastname');
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'firstname', $this->context->customer->firstname);
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'lastname', $this->context->customer->lastname);
if (isset($invoiceFormData['firstname']) && isset($invoiceFormData["lastname"])) {
$firstname = $invoiceFormData['firstname'];
$lastname = $invoiceFormData['lastname'];
}
} elseif($deliveryVisible) {
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'firstname');
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'lastname');
}
if($deliveryVisible) {
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'firstname', $this->context->customer->firstname);
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'lastname', $this->context->customer->lastname);
if (isset($deliveryFormData['firstname']) && isset($deliveryFormData["lastname"])) {
$firstname = $deliveryFormData['firstname'];
@@ -2804,6 +2948,15 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$invoiceAddressResult = $deliveryAddressResult = null;
$finalConfirmation = true;
// copy phone or phone_mobile from invoice to delivery, if both delivery phones are not visible
if ($this->tcCopyInvoicePhoneToDelivery && $invoiceVisible && $deliveryVisible && !$this->module->config->delivery_fields['phone_mobile']['visible'] && !$this->module->config->delivery_fields['phone']['visible']) {
if ("" == trim($deliveryFormData['phone_mobile']) && "" != trim($invoiceFormData['phone_mobile'])) {
$deliveryFormData['phone_mobile'] = $invoiceFormData['phone_mobile'];
} elseif ("" == trim($deliveryFormData['phone']) && "" != trim($invoiceFormData['phone'])) {
$deliveryFormData['phone'] = $invoiceFormData['phone'];
}
}
if ($invoiceVisible) {
$invoiceAddressResult = $this->modifyAddress('invoice', $invoiceFormData, $shallCreateNewAddress,
$finalConfirmation);
@@ -2835,34 +2988,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
&& !$invoiceAddressErrors
&& !$deliveryAddressErrors
) {
$cartChecksum = new CartChecksum(new AddressChecksum());
// Update cart's secure key:
$this->context->cart->secure_key = $this->context->customer->secure_key;
$checkout_session_data = array(
"checkout-personal-information-step" => array(
"step_is_reachable" => true,
"step_is_complete" => true
),
"checkout-addresses-step" => array(
"step_is_reachable" => true,
"step_is_complete" => true,
"use_same_address" => ($this->context->cart->id_address_delivery == $this->context->cart->id_address_invoice)
),
"checkout-delivery-step" => array(
"step_is_reachable" => true,
"step_is_complete" => true
),
"checkout-payment-step" => array(
"step_is_reachable" => true,
"step_is_complete" => false
),
"checksum" => $cartChecksum->generateChecksum($this->context->cart)
);
$this->DB_saveCheckoutSessionData($checkout_session_data);
$this->updateCheckoutSession();
}
return array_merge(
@@ -2873,6 +2999,36 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
);
}
private function updateCheckoutSession($deliveryStepComplete = true) {
$cartChecksum = new CartChecksum(new AddressChecksum());
// Update cart's secure key:
$this->context->cart->secure_key = $this->context->customer->secure_key;
$checkout_session_data = array(
"checkout-personal-information-step" => array(
"step_is_reachable" => true,
"step_is_complete" => true
),
"checkout-addresses-step" => array(
"step_is_reachable" => true,
"step_is_complete" => true,
"use_same_address" => ($this->context->cart->id_address_delivery == $this->context->cart->id_address_invoice)
),
"checkout-delivery-step" => array(
"step_is_reachable" => true,
"step_is_complete" => $deliveryStepComplete
),
"checkout-payment-step" => array(
"step_is_reachable" => true,
"step_is_complete" => false
),
"checksum" => $cartChecksum->generateChecksum($this->context->cart)
);
$this->DB_saveCheckoutSessionData($checkout_session_data);
}
private function unifyAddresses($invoiceVisible, $deliveryVisible)
{
// We need to unify addresses, if only one is visible - so that shipping methods are always reflecting selected zone
@@ -2898,7 +3054,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
parse_str(Tools::getValue('account'), $accountFormData);
$email = (isset($accountFormData['email'])) ? $accountFormData['email'] : (isset($accountFormData['forced-email'])?$accountFormData['forced-email']:'');
$id_customer = Customer::customerExists($email, true, true);
$id_customer = Customer::customerExists($email, true, true); // email, returnId, ignoreGuest
// is email valid?
if ("" !== trim($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
@@ -2921,13 +3077,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'The email "%mail%" is already used, please choose another one or sign in',
array('%mail%' => $email),
'Shop.Notifications.Error'
) . '<' . 'span id="sign-in-link"' . '>' . $this->translator->trans('Sign in', array(),
'Shop.Theme.Actions') . '<' . '/' . 'span' . '>';
) . $this->module->tagIt('span', $this->translator->trans('Sign in', array(), 'Shop.Theme.Actions'), 'id="sign-in-link"');
}
} elseif (
($this->module->config->force_email_overlay || $this->module->config->register_guest_on_blur)
&& Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) {
// pre-set customer's first/lastnames, if we have that already in the session
// if this won't be done, checkEmail and consequently silentRegistration will create "a a" customer
if ($this->context->cart->id_customer) {
$customer = new Customer($this->context->cart->id_customer);
$accountFormData['firstname'] = $customer->firstname;
$accountFormData['lastname'] = $customer->lastname;
}
$this->silentRegistration($accountFormData);
} elseif ($this->module->config->show_button_save_personal_info && "tc_save_account" == Tools::getValue('triggerEl'))
{
@@ -2940,6 +3103,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$this->getPaymentOptionsBlock(),
$this->getCartSummaryBlock());
}
} elseif (Configuration::get('PS_GUEST_CHECKOUT_ENABLED') && $id_customer) {
$accountResult['notices']['email'] = $this->module->getTranslation('You already have an account with us. Sign in or continue as guest.');
}
$accountResult['hasErrors'] = (isset($accountResult['hasErrors'])?$accountResult['hasErrors'] : false) || (count($errors) > 0);
@@ -3339,12 +3504,27 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'Shop.Notifications.Error'
);
} elseif (!$eachProduct['allow_oosp'] && $eachProduct['cart_quantity'] > $eachProduct['stock_quantity']) {
$cartQuantityError =
$this->trans(
'The item %product% in your cart is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.',
array('%product%' => $eachProduct['name']),
if ($this->isShopVersion813Plus()) {
$cartQuantityError = $this->trans(
'You can only buy %quantity% "%product%". Please adjust the quantity in your cart to continue.',
[
'%product%' => $eachProduct['name'],
'%quantity%' => $eachProduct['stock_quantity'],
],
'Shop.Notifications.Error'
);
} else {
$err_str = 'The item %product% in your cart is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.';
if ($this->isShopVersion8Plus()) {
$err_str = '%product% is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.';
}
$cartQuantityError =
$this->trans(
$err_str,
array('%product%' => $eachProduct['name']),
'Shop.Notifications.Error'
);
}
}
}
@@ -3369,6 +3549,21 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
reset($opc_form_radios['delivery_option']));
}
$otherErrors = [];
// 18.10.2023 - support for blockproductsbycountry module
if ($this->isModuleEnabled('blockproductsbycountry')) {
$bpbc_module = Module::getInstanceByName('blockproductsbycountry');
$bpbc_context = Context::getContext();
$bpbc_id_country = $bpbc_context->country->id;
if ($bpbc_id_country) {
foreach ($bpbc_context->cart->getProducts() as $product) {
if ($bpbc_module->isProductBlocked((int)$product['id_product'], $bpbc_id_country)) {
$otherErrors['blockproductsbycountry'] = sprintf(Configuration::get('BPBC_TEXT_BLOCKED_CART', $bpbc_context->language->id), Product::getProductName((int)$product['id_product']), $bpbc_context->country->name[$bpbc_context->language->id]);
}
}
}
}
$this->context->smarty->assign(array(
'cart' => $presentedCart,
'cartQuantityError' => $cartQuantityError,
@@ -3376,7 +3571,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'js_custom_vars' => $js_custom_vars,
'forceToChooseCarrier' => (bool)$this->module->config->force_customer_to_choose_carrier,
'customerDeliveryOption' => $customerSelectedDeliveryOption,
'carrierSelected' => $this->context->cart->id_carrier
'carrierSelected' => $this->context->cart->id_carrier,
'otherErrors' => $otherErrors
));
$minimalPurchase = array();
@@ -3394,7 +3590,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'emptyCart' => !($presentedCart['products_count']),
'isVirtualCart' => $this->context->cart->isVirtualCart(),
'minimalPurchaseError' => !empty($minimalPurchase),
'cartQuantityError' => ($cartQuantityError !== false),
'cartQuantityError' => ($cartQuantityError !== false)
));
}
@@ -3498,12 +3694,6 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
return array("errors" => $loginForm->getErrors(), "hasErrors" => $loginForm->hasErrors());
}
// private function ajaxModifyAccount()
// {
// // Is this still used? Probably not (20.3.2019).
// return $this->modifyAccount(Tools::getAllValues());
// }
private function DB_saveCheckoutSessionData($data)
{
Db::getInstance()->execute(

Binary file not shown.

View File

@@ -0,0 +1,34 @@
<?php
/**
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../../");
exit;

View File

@@ -0,0 +1,34 @@
<?php
/**
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -12,6 +12,10 @@
namespace module\thecheckout;
if (!defined('_PS_VERSION_')) {
exit;
}
class TS_Functions
{

View File

@@ -5,6 +5,11 @@
* @copyright Less lib
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
if (!defined('_PS_VERSION_')) {
exit;
}
require_once( dirname(__FILE__).'/Version.php');
class Less_Cache{

View File

@@ -5,6 +5,11 @@
* @copyright Less lib
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
if (!defined('_PS_VERSION_')) {
exit;
}
class Less_Version{
const version = '1.7.0.10'; // The current build number of less.php

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

View File

@@ -30,7 +30,7 @@ class TheCheckout extends Module
/**
* @var array $module_settings An array of settings provided on configuration page
*/
public $conf_prefix = "opc_";
// public $conf_prefix = "opc_"; // not used anymore, prefix is fixed to 'tc_'
/**
* @var Config
*/
@@ -44,13 +44,13 @@ class TheCheckout extends Module
{
$this->name = 'thecheckout';
$this->tab = 'checkout';
$this->version = '3.3.8';
$this->version = '3.3.10';
$this->author = 'PrestaDev.pl';
$this->module_key = "2e602e0a1021555e3d85311cd8ef756d";
$this->module_key = "2e602e0a1021555e3d85311cd8ef756d1";
//$this->moduleTHECHECKOUT_key = "2e602e0a1021555e3d85311cd8ef756d";
//$this->moduleOPC_key = "38254238bedae1ccc492a65148109fdd";
$this->need_instance = 1;
$this->need_instance = 0;
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => '9.1');
$this->bootstrap = true;
@@ -66,6 +66,16 @@ class TheCheckout extends Module
$this->initTheCheckout();
}
public function initPsKernel() {
// Uncomment if kernel is necessary for e.g. shipping modules
// global $kernel;
// if(!$kernel){
// require_once _PS_ROOT_DIR_.'/app/AppKernel.php';
// $kernel = new \AppKernel(_PS_MODE_DEV_ ? 'dev' : 'prod', _PS_MODE_DEV_);
// $kernel->boot();
// }
}
private function checkStripeNeedPatch()
{
return false; // Since checkout module v2.3.4, patch in Stripe is no more required.
@@ -143,26 +153,21 @@ class TheCheckout extends Module
}
if ($this->checkStripeNeedPatch()) {
return 'Detected <b>stripe_official</b> payment module - it <b>requires a patch</b> to work properly with
return 'Detected '.$this->tagIt('b', 'stripe_official').' payment module - it '.$this->tagIt('b', 'requires a patch').' to work properly with
TheCheckout, please contact us for more details or check our blog';
}
if ($this->checkMondialNeedPatch()) {
return 'Detected <b>mondialrelay</b> shipping module - it <b>requires a patch</b> to work properly with
return 'Detected '.$this->tagIt('b', 'mondialrelay').' shipping module - it '.$this->tagIt('b', 'requires a patch').' to work properly with
TheCheckout, please contact us for more details or check our blog';
}
if ($this->checkAmcPsShipItNeedPatch()) {
return 'Detected <b>amcpsshipit</b> shipping module - it <b>requires a patch</b> to work properly with
return 'Detected '.$this->tagIt('b', 'amcpsshipit').' shipping module - it '.$this->tagIt('b', 'requires a patch').' to work properly with
TheCheckout, please update amcpsshipit.php and extend condition if ($controllerClass !== \'OrderController\') with
&& $controllerClass !== \'TheCheckoutModuleFrontController\' and add this comment (thecheckout-patched) to remove this message';
}
// if ($this->checkBraintreeNeedsPatch()) {
// return 'Detected <b>braintreeofficial</b> payment module - it <b>requires a patch</b> to work properly with
// TheCheckout, please contact us for more details or check our blog';
// }
// $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT * FROM '. _DB_PREFIX_ .'required_field');
// print_r($result); exit;
@@ -248,9 +253,21 @@ class TheCheckout extends Module
// $this->l('PA');
// $this->l('Invalid DNI');
// $this->l('Probably a typo? Please try again.');
// $this->l('You already have an account with us. Sign in or continue as guest.');
// $this->l('Apple Pay');
return $this->l($key);
}
public function tagIt($tag, $content = '', $attr = '') {
$lt = '<';
$gt = '>';
$single = in_array($tag, ['br', 'input']);
$open = $lt.$tag.' '.$attr.$gt;
$close = $single ? '' : $lt.'/'.$tag.$gt;
$content = $single ? '' : $content;
return $open.$content.$close;
}
private function setConfigOptions()
{
$this->includeDependency('classes/Config.php');
@@ -321,20 +338,14 @@ class TheCheckout extends Module
$this->logger->error($msg);
}
private function flatten_array($input_array)
{
private function flatten_array($input_array) {
$result = array();
array_walk_recursive($input_array, function ($array, $key) use (&$result) {
$result[] = $key;
});
array_walk_recursive($input_array, function($array, $key) use (&$result) { $result[] = $key; });
return $result;
}
private function setTagsList($key, $array_input)
{
$input_json = json_encode(array_map(function ($a) {
return array('id' => $a, 'title' => $a);
}, array_values($array_input)));
private function setTagsList($key, $array_input) {
$input_json = json_encode(array_map(function ($a) { return array('id' => $a, 'title' => $a); }, array_values($array_input)));
Media::addJsDefL($key, $input_json);
}
@@ -353,7 +364,7 @@ class TheCheckout extends Module
Media::addJsDefL('thecheckout_init_html_editor', $this->l('Use HTML editor'));
$flattened = $this->flatten_array($this->config->blocks_layout);
$available_layout_blocks = array_diff(array_unique($flattened), ['size']);
$available_layout_blocks = array_diff( array_unique($flattened), ['size'] );
$this->setTagsList('thecheckout_available_layout_blocks', $available_layout_blocks);
$all_fields = array_keys(array_merge($this->config->invoice_fields, $this->config->delivery_fields));
@@ -393,26 +404,51 @@ class TheCheckout extends Module
$existing_step_label_3 = array();
$existing_step_validation_error_3 = array();
$reassurance_samples = array(
'en' => $this->tagIt('div',
$this->tagIt('div',
$this->tagIt('span', '', 'class="icon"') .
$this->tagIt('h3', 'Security policy') . 'We use modern SSL to '. $this->tagIt('b', 'secure payment'),
'class="reassurance-section security"').
$this->tagIt('div',
$this->tagIt('span', '', 'class="icon"') .
$this->tagIt('h3', 'Delivery policy') . 'Orders made on workdays, until 13:00 are '. $this->tagIt('b', 'shipped same day') . ' (if all goods are in stock)',
'class="reassurance-section delivery"').
$this->tagIt('div',
$this->tagIt('span', '', 'class="icon"') .
$this->tagIt('h3', 'Return policy') . 'Purchases can be '. $this->tagIt('b', 'returned') . ' within 14 days, without any explanation',
'class="reassurance-section return"'),
'class="thecheckout-reassurance"').
$this->tagIt('p', '*please edit this in TheCheckout module configuration, Layout tab -> HTML Box No.1 for your language'),
'cs' => $this->tagIt('div',
$this->tagIt('div',
$this->tagIt('span', '', 'class="icon"') .
$this->tagIt('h3', 'Bezpečnostní politika') . 'Používáme moderní SSL pro '. $this->tagIt('b', 'bezpeční platbu'),
'class="reassurance-section security"').
$this->tagIt('div',
$this->tagIt('span', '', 'class="icon"') .
$this->tagIt('h3', 'Dodací podmínky') . 'Objednávky zadané v pracovní dny do 13:00 jsou '. $this->tagIt('b', 'odeslány v ten samý den') . ' (v případe, že všechno zboží je skladem)',
'class="reassurance-section delivery"').
$this->tagIt('div',
$this->tagIt('span', '', 'class="icon"') .
$this->tagIt('h3', 'Vrácení zboží') . 'Zboží můžete '. $this->tagIt('b', 'vrátit') . ' v lhůtě 14 dní bez uvedení důvodu.',
'class="reassurance-section return"'),
'class="thecheckout-reassurance"').
$this->tagIt('p', '*prosím upravte tento blok v nastavení modulu TheCheckout, záložka Rozvržení -> HTML pole č.1 pro jazyk [ Čeština (Czech) ]')
);
foreach (Language::getLanguages() as $language) {
$existingReassuranceHtml = Configuration::get('TC_html_box_1', $language['id_lang']);
if (!$existingReassuranceHtml || "" == trim($existingReassuranceHtml)) {
$reassurance_sample_html[$language['id_lang']] =
'<' . 'div class="thecheckout-reassurance"' . '>
<' . 'div class="reassurance-section security">' . '<' . 'span class="icon"' . '>' . '<' . '/' . 'span' . '>
<' . 'h3' . '>Polityka bezpieczeństwa<' . '/' . 'h3' . '>
Używamy certyfikatu SSL ' . '<' . 'b' . '>' . 'by zabezpieczyć proces zakupów.<' . '/' . 'b>' . '<' . '/' . 'div' . '>
<' . 'div class="reassurance-section delivery"' . '>' . '<' . 'span class="icon"' . '>' . '<' . '/' . 'span' . '>
<' . 'h3' . '>Polityka dostaw<' . '/' . 'h3' . '>
Zamówienia złożone w dni robocze przed 10.00 <' . 'b' . '>dostawa w następnym dniu roboczym<' . '/' . 'b' . '>' . ' (jeśli są na stanie).<' . '/' . 'div' . '>
<' . 'div class="reassurance-section return"' . '><' . 'span class="icon"' . '>' . '<' . '/' . 'span' . '>
<' . 'h3' . '>Polityka zwrotów<' . '/' . 'h3' . '>
Zamówione produkty <' . 'b' . '>zwrócone<' . '/' . 'b' . '> w ciągu 14 dni od daty zakupu.<' . '/' . 'div' . '>
<' . '/' . 'div' . '>';
if (array_key_exists($language['iso_code'], $reassurance_samples)) {
$reassurance_sample_html[$language['id_lang']] = $reassurance_samples[$language['iso_code']];
} else {
$reassurance_sample_html[$language['id_lang']] = $reassurance_samples['en'];
}
} else {
$reassurance_sample_html[$language['id_lang']] = Configuration::get(
'TC_html_box_1',
$language['id_lang']
);
$reassurance_sample_html[$language['id_lang']] = Configuration::get('TC_html_box_1',
$language['id_lang']);
}
$existing_step_label_1 = Configuration::get('TC_step_label_1', $language['id_lang']);
if (!$existing_step_label_1 || "" == trim($existing_step_label_1)) {
@@ -612,7 +648,7 @@ class TheCheckout extends Module
$iso = 'en_US';
}
$this->context->smarty->assign(array(
"tc_config" => $this->config,
"z_tc_config" => $this->config,
"iso" => $iso
));
@@ -623,30 +659,33 @@ class TheCheckout extends Module
('module-thecheckout-order' == $this->context->controller->page_name || 'checkout' == $this->context->controller->page_name);
$isLoginController = isset($this->context->controller->php_self) && ('authentication' == $this->context->controller->php_self) &&
$this->config->social_login_display_on_login_page;
$isAddressController = isset($this->context->controller->php_self) && ('address' == $this->context->controller->php_self);
$isOrderConfirmationController = isset($this->context->controller->php_self) && ('order-confirmation' == $this->context->controller->php_self);
if ($isOrderConfirmationController) {
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/iframe-payment-confirmation.js")) {
$this->context->controller->registerJavascript('modules-thecheckout-iframe-payment-confirmation',
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/iframe-payment-confirmation.js",
Tools::strlen(_PS_ROOT_DIR_) + 1),
array('position' => 'bottom', 'priority' => 200));
}
}
if (!$isDisabled && ($isCheckoutController || $isLoginController)) {
if (!$this->context->customer->isLogged()) {
if ($isLoginController) {
$this->context->controller->registerJavascript(
'modules-thecheckout-200',
Tools::substr(
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/social-login-page.js",
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('position' => 'bottom', 'priority' => 1140)
);
$this->context->controller->registerJavascript('modules-thecheckout-200',
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/social-login-page.js",
Tools::strlen(_PS_ROOT_DIR_) + 1),
array('position' => 'bottom', 'priority' => 1140));
Media::addJsDefL('i18_signInWithFB', $this->l('Sign in with Facebook'));
$this->context->controller->registerStylesheet(
'modules-thecheckout-200',
Tools::substr(
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/social-login-page.css",
Tools::strlen(_PS_ROOT_DIR_) + 1
),
$this->context->controller->registerStylesheet('modules-thecheckout-200',
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/social-login-page.css",
Tools::strlen(_PS_ROOT_DIR_) + 1),
array(
'media' => 'all',
'priority' => 1200
)
);
));
}
if ($this->config->social_login_fb) {
@@ -656,7 +695,14 @@ class TheCheckout extends Module
$ret .= $this->context->smarty->fetch($this->local_path . 'views/templates/front/_partials/social-login-google.tpl');
}
}
}
if (!$isDisabled && ($isCheckoutController || $isAddressController)) {
if ($this->config->google_maps_api_key && strlen($this->config->google_maps_api_key) > 10) {
if ($isAddressController) {
$isoCodes = @Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT id_country, iso_code FROM ' . _DB_PREFIX_ . 'country where active = 1');
Media::addJsDefL('tc_countriesIsoCodes', json_encode($isoCodes));
}
$ret .= $this->context->smarty->fetch($this->local_path . 'views/templates/front/_partials/google-places-autocomplete.tpl');
}
}
@@ -666,14 +712,10 @@ class TheCheckout extends Module
Media::addJsDefL('dm_hash', '0');
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js")) {
$this->context->controller->registerJavascript(
'modules-thecheckout-trial',
Tools::substr(
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js",
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('position' => 'bottom', 'priority' => 200)
);
$this->context->controller->registerJavascript('modules-thecheckout-trial',
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js",
Tools::strlen(_PS_ROOT_DIR_) + 1),
array('position' => 'bottom', 'priority' => 200));
}
} else {
Media::addJsDefL('dm_mode', 0);
@@ -682,14 +724,10 @@ class TheCheckout extends Module
if (trim($this->config->smartform_client_id) !== '') {
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js")) {
$this->context->controller->registerJavascript(
'modules-thecheckout-smartform',
Tools::substr(
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js",
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('position' => 'bottom', 'priority' => 500)
);
$this->context->controller->registerJavascript('modules-thecheckout-smartform',
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js",
Tools::strlen(_PS_ROOT_DIR_) + 1),
array('position' => 'bottom', 'priority' => 500));
Media::addJsDefL('tc_smartformClientId', trim($this->config->smartform_client_id));
}
}
@@ -697,37 +735,23 @@ class TheCheckout extends Module
// include assets to manipulate content on separate payment page
if (Tools::getIsset(Config::SEPARATE_PAYMENT_KEY_NAME)) {
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js")) {
$this->context->controller->registerJavascript(
'modules-thecheckout-separate-payment',
Tools::substr(
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js",
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('position' => 'bottom', 'priority' => 200)
);
$this->context->controller->registerJavascript('modules-thecheckout-separate-payment',
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js",
Tools::strlen(_PS_ROOT_DIR_) + 1),
array('position' => 'bottom', 'priority' => 200));
}
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css")) {
$this->context->controller->registerStylesheet(
'modules-thecheckout-separate-payment',
Tools::substr(
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css",
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('media' => 'all', 'priority' => 150)
);
$this->context->controller->registerStylesheet('modules-thecheckout-separate-payment',
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css",
Tools::strlen(_PS_ROOT_DIR_) + 1),
array('media' => 'all', 'priority' => 150));
}
$formatted_addresses = array(
'invoice' => AddressFormat::generateAddress(
new Address($this->context->cart->id_address_invoice),
array(),
'<br>'
),
'delivery' => AddressFormat::generateAddress(
new Address($this->context->cart->id_address_delivery),
array(),
'<br>'
),
'invoice' => AddressFormat::generateAddress(new Address($this->context->cart->id_address_invoice),
array(), $this->tagIt('br')),
'delivery' => AddressFormat::generateAddress(new Address($this->context->cart->id_address_delivery),
array(), $this->tagIt('br')),
);
if (version_compare(_PS_VERSION_, '1.7.3') >= 0) {
@@ -745,6 +769,7 @@ class TheCheckout extends Module
);
$delivery_message = html_entity_decode($session->getMessage());
} else {
$delivery_message = '';
}
@@ -774,8 +799,9 @@ class TheCheckout extends Module
public function hookActionDispatcher($params = null)
{
// Stop-by only for Order and Cart controllers
if ("OrderController" !== $params['controller_class']
&& "CartController" !== $params['controller_class']
if (
("OrderController" !== $params['controller_class'] && "CartController" !== $params['controller_class']) ||
(!$params['cookie']->id_cart && strpos(Tools::getValue('action'), 'socialLogin') !== 0)
) {
return false;
}
@@ -827,6 +853,8 @@ class TheCheckout extends Module
}
}
// $this->initPsKernel();
$checkoutController = new TheCheckoutModuleFrontController();
$checkoutController->run();
exit;
@@ -862,22 +890,21 @@ class TheCheckout extends Module
return $requiredCheckboxes;
}
public function hookActionBuildFrontEndObject($params)
{
public function hookActionBuildFrontEndObject($params) {
// $existingAddresses = $params['obj']['customer']['addresses'] ?? [];
// Probably we shall override JS's prestashop.customer.addresses always, regardless of being set or not by PS core
// if (!count($existingAddresses)) {
$deliveryAddressId = $this->context->cart->id_address_delivery;
$invoiceAddressId = $this->context->cart->id_address_invoice;
$newAddresses = [];
if ($deliveryAddressId > 0) {
$newAddresses[$deliveryAddressId] = new Address($deliveryAddressId);
}
if ($invoiceAddressId > 0 && $invoiceAddressId !== $deliveryAddressId) {
$newAddresses[$invoiceAddressId] = new Address($invoiceAddressId);
}
$params['obj']['customer']['addresses'] = $newAddresses;
$deliveryAddressId = $this->context->cart->id_address_delivery;
$invoiceAddressId = $this->context->cart->id_address_invoice;
$newAddresses = [];
if ($deliveryAddressId > 0) {
$newAddresses[$deliveryAddressId] = new Address($deliveryAddressId);
}
if ($invoiceAddressId > 0 && $invoiceAddressId !== $deliveryAddressId) {
$newAddresses[$invoiceAddressId] = new Address($invoiceAddressId);
}
$params['obj']['customer']['addresses'] = $newAddresses;
// }
}
@@ -950,13 +977,8 @@ class TheCheckout extends Module
'category' === $params['smarty']->tpl_vars['page']->value['page_name'] &&
file_exists($this->local_path . 'views/templates/front/_partials/secure-notice.tpl')) {
$baseIdx = 3;
$blocks_idxs = explode(',', Configuration::get(
'blocks_idxs',
null,
null,
null,
($baseIdx + 1) . ',' . ($baseIdx + 31) . ',' . ($baseIdx + 101) . ',' . ($baseIdx + 102)
));
$blocks_idxs = explode(',', Configuration::get('blocks_idxs', null, null, null,
($baseIdx + 1) . ',' . ($baseIdx + 31) . ',' . ($baseIdx + 101) . ',' . ($baseIdx + 102)));
$smarty_tpl_vars = $params['smarty']->tpl_vars;
if (isset($smarty_tpl_vars['category']) &&
in_array($smarty_tpl_vars['category']->value['id'], $blocks_idxs)) {
@@ -1056,26 +1078,20 @@ class TheCheckout extends Module
if ('alert' == Tools::getValue('postProcessResultCode')) {
$output .=
'<' . 'div style="margin-top: 35px" class="alert alert-danger"' . '>' .
'<' . 'button type="button" class="close" data-dismiss="alert"' . '>×<' . '/' . 'button' . '>' .
Tools::getValue('postProcessResult') .
'<' . '/' . 'div' . '>';
$this->tagIt('div',
$this->tagIt('button','x', 'type="button" class="close" data-dismiss="alert"') . Tools::getValue('postProcessResult'),
'style="margin-top: 35px" class="alert alert-danger"');
} elseif ('ok' == Tools::getValue('postProcessResultCode')) {
$output .= $this->displayConfirmation($this->trans(
'The settings have been updated.',
array(),
'Admin.Notifications.Success'
));
$output .= $this->displayConfirmation($this->trans('The settings have been updated.', array(),
'Admin.Notifications.Success'));
}
$this->context->smarty->assign('module_dir', $this->_path);
if (!empty($this->warning)) {
$output .=
'<' . 'div style="margin-top: 35px" class="alert alert-danger"' . '>' .
'<' . 'button type="button" class="close" data-dismiss="alert"' . '>×<' . '/' . 'button' . '>' .
$this->warning .
'<' . '/' . 'div' . '>';
$this->tagIt('div', $this->tagIt('button','x', 'type="button" class="close" data-dismiss="alert"') . $this->warning,
'style="margin-top: 35px" class="alert alert-danger"');
}
$this->context->smarty->assign(array(
@@ -1213,6 +1229,8 @@ class TheCheckout extends Module
$subst = '$0 ' . $blocksLayoutSortable;
$result = preg_replace($re, $subst, $result, 1);
$paypal_express_active = Module::isEnabled('paypal');
$result .= $this->tagIt('input', '','type="hidden" name="tc_paypal_express_checkout_active" value="'.$paypal_express_active);
return $result;
}
@@ -1328,12 +1346,8 @@ class TheCheckout extends Module
$this->l('Test mode'),
$this->l('Checkout module will be enabled only when using URL parameter:') . ' ' . Config::TEST_MODE_KEY_NAME,
array(),
$this->l('When enabled, Checkout is visible only using this URL: ') . ' ' . '<' . 'a href="' . $this->context->link->getPageLink(
'order',
true,
null,
Config::TEST_MODE_KEY_NAME
) . '">' . $this->l('Checkout-test-URL') . '<' . '/' . 'a>'
$this->l('When enabled, Checkout is visible only using this URL: ') . ' ' .
$this->tagIt('a', $this->l('Checkout-test-URL'), 'href='.$this->context->link->getPageLink('order', true, null, Config::TEST_MODE_KEY_NAME))
),
$this->generateSwitch(
'separate_cart_summary',
@@ -1362,18 +1376,18 @@ class TheCheckout extends Module
$this->generateSelect(
'font',
$this->l('Checkout form font') .
'<' . 'input type="hidden" name="font-weight-Montserrat" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900">' .
'<' . 'input type="hidden" name="font-weight-Open-Sans" value="light 300,regular 400,semi-bold 600,bold 700,extra-bold 800">' .
'<' . 'input type="hidden" name="font-weight-Open-Sans-Condensed" value="light 300,bold 700">' .
'<' . 'input type="hidden" name="font-weight-Playfair-Display" value="regular 400,bold 700,black 900">' .
'<' . 'input type="hidden" name="font-weight-Dosis" value="extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800">' .
'<' . 'input type="hidden" name="font-weight-Titillium-Web" value="extra-light 200,light 300,regular 400,semi-bold 600,bold 700,black 900">' .
'<' . 'input type="hidden" name="font-weight-Indie-Flower" value="regular 400">' .
'<' . 'input type="hidden" name="font-weight-Great-Vibes" value="regular 400">' .
'<' . 'input type="hidden" name="font-weight-Gloria-Hallelujah" value="regular 400">' .
'<' . 'input type="hidden" name="font-weight-Amatic-SC" value="regular 400,bold 700">' .
'<' . 'input type="hidden" name="font-weight-Exo-2" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900">' .
'<' . 'input type="hidden" name="font-weight-Yanone-Kaffeesatz" value="extra-light 200,light 300,regular 400,bold 700">',
$this->tagIt('input','', 'type="hidden" name="font-weight-Montserrat" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Open-Sans" value="light 300,regular 400,semi-bold 600,bold 700,extra-bold 800"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Open-Sans-Condensed" value="light 300,bold 700"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Playfair-Display" value="regular 400,bold 700,black 900"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Dosis" value="extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Titillium-Web" value="extra-light 200,light 300,regular 400,semi-bold 600,bold 700,black 900"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Indie-Flower" value="regular 400"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Great-Vibes" value="regular 400"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Gloria-Hallelujah" value="regular 400"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Amatic-SC" value="regular 400,bold 700"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Exo-2" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900"') .
$this->tagIt('input','', 'type="hidden" name="font-weight-Yanone-Kaffeesatz" value="extra-light 200,light 300,regular 400,bold 700"'),
$this->l('Font-family used on checkout form'),
array(
array('id' => 'theme-default', 'name' => 'Theme default'),
@@ -1511,6 +1525,11 @@ class TheCheckout extends Module
$this->l('Inactive because "Show I am a private" is disabled.'),
'desc-visible-only-when-inactive'
),
$this->generateSwitch(
'use_other_field_for_business_private',
$this->l('Use "other" field for business/private'),
$this->l('Store status of "I am a business" and "I am a private" checkboxes in address "other" field.')
),
$this->generateSwitch(
'offer_second_address',
$this->l('Offer second address'),
@@ -1546,6 +1565,11 @@ class TheCheckout extends Module
$this->l('Show "Save" button in Personal Info'),
$this->l('Display button to save guest/account before showing shipping and payment methods')
),
$this->generateSwitch(
'use_old_address_on_reorder',
$this->l('Use old address on reorder'),
$this->l('When customer makes Re-order, use the same address as in original order - do not use his latest address')
),
$this->generateText(
'google_maps_api_key',
$this->l('Google maps API key'),
@@ -1647,6 +1671,12 @@ class TheCheckout extends Module
$this->l('When single payment method is selected, collapse remaining ones'),
array()
),
$this->generateSwitch(
'logos_on_the_right',
$this->l('Shipping/payment logos on the right'),
$this->l('Show shipping and payment logos on the right side in a listing'),
array()
),
),
'submit' => array(
'title' => $this->l('Save')
@@ -1705,11 +1735,8 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand',
'col' => 8,
'hint' => $this->trans(
'Invalid characters:',
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
'hint' => $this->trans('Invalid characters:', array(),
'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
),
array(
'type' => 'textarea',
@@ -1719,11 +1746,8 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand',
'col' => 8,
'hint' => $this->trans(
'Invalid characters:',
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
'hint' => $this->trans('Invalid characters:', array(),
'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
),
array(
'type' => 'textarea',
@@ -1733,11 +1757,8 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand',
'col' => 8,
'hint' => $this->trans(
'Invalid characters:',
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
'hint' => $this->trans('Invalid characters:', array(),
'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
),
array(
'type' => 'textarea',
@@ -1747,17 +1768,14 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand',
'col' => 8,
'hint' => $this->trans(
'Invalid characters:',
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
'hint' => $this->trans('Invalid characters:', array(),
'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
),
array(
'type' => 'textarea',
'label' => $this->l('Required Checkbox No.1'),
'name' => 'TC_required_checkbox_1',
'desc' => 'To enable a required checkbox in checkout page, fill-in the checkbox label here. You can add label also with link, for example: <' . 'br' . '><' . 'b' . '>' . 'I agree with &lt;a href="content/3-privacy-policy"&gt;privacy policy&lt;/a&gt;<' . '/b' . '>',
'desc' => 'To enable a required checkbox in checkout page, fill-in the checkbox label here. You can add label also with link, for example: ' . $this->tagIt('br') . $this->tagIt('b', 'I agree with &lt;a href="content/3-privacy-policy"&gt;privacy policy&lt;/a&gt;'),
'lang' => true,
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand',
@@ -1800,47 +1818,37 @@ class TheCheckout extends Module
$this->generateSwitch(
'checkout_steps',
$this->l('Checkout steps'),
$this->l('Enable virtual steps'),
array(),
$this->l('Enable virtual steps'), array(),
$this->l('Leave \'Label\' empty if you wish to disable particular step below') .
'<div id="set-steps-sample"><a data-confirm-msg="'. $this->l('Are you sure? This will change blocks layout and also add custom CSS rules.') . '">' .
$this->l('Click to set Starting configuration sample') . "</a></div>"
$this->tagIt('div', $this->tagIt('a', $this->l('Click to set Starting configuration sample'),
'data-confirm-msg="'. $this->l('Are you sure? This will change blocks layout and also add custom CSS rules.').'"'),
'id="set-steps-sample"')
),
// Step 1
$this->generateText(
'step_label_1',
$this->l('Label'),
$this->l('Step 1 label, multi-language field'),
array(),
'',
'config-step-1',
true
array(), '', 'config-step-1', true
),
$this->generateText(
'step_blocks_1',
$this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'),
array(),
'',
'config-step-1'
array(), '', 'config-step-1'
),
// Step 2
$this->generateText(
'step_label_2',
$this->l('Label'),
$this->l('Step 2 label, multi-language field'),
array(),
'',
'config-step-2',
true
array(), '', 'config-step-2', true
),
$this->generateText(
'step_blocks_2',
$this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'),
array(),
'',
'config-step-2'
array(), '', 'config-step-2'
),
array(
'type' => 'textarea',
@@ -1859,29 +1867,20 @@ class TheCheckout extends Module
'step_validation_error_2',
$this->l('Error message'),
$this->l('Error shown to user when validation to reach this step fails'),
array(),
'',
'config-step-2',
true
array(), '', 'config-step-2', true
),
// Step 3
$this->generateText(
'step_label_3',
$this->l('Label'),
$this->l('Step 3 label, multi-language field'),
array(),
'',
'config-step-3',
true
array(), '', 'config-step-3', true
),
$this->generateText(
'step_blocks_3',
$this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'),
array(),
'',
'config-step-3',
false
array(), '', 'config-step-3', false
),
array(
'type' => 'textarea',
@@ -1900,29 +1899,20 @@ class TheCheckout extends Module
'step_validation_error_3',
$this->l('Error message'),
$this->l('Error shown to user when validation to reach this step fails'),
array(),
'',
'config-step-3',
true
array(), '', 'config-step-3', true
),
// Step 4
$this->generateText(
'step_label_4',
$this->l('Label'),
$this->l('Step 4 label, multi-language field'),
array(),
'',
'config-step-4',
true
array(), '', 'config-step-4', true
),
$this->generateText(
'step_blocks_4',
$this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'),
array(),
'',
'config-step-4',
false
array(), '', 'config-step-4', false
),
array(
'type' => 'textarea',
@@ -1941,10 +1931,7 @@ class TheCheckout extends Module
'step_validation_error_4',
$this->l('Error message'),
$this->l('Error shown to user when validation to reach this step fails'),
array(),
'',
'config-step-4',
true
array(), '', 'config-step-4', true
),
),
@@ -2005,6 +1992,14 @@ class TheCheckout extends Module
$this->l('Display also on PS login page'),
$this->l('Social login buttons will be shown also on Prestashop default login page')
)
// $this->generateSwitch(
// 'paypal_express_checkout',
// $this->l('Paypal express checkout'),
// $this->l('Show Paypal express checkout button in Sign-in area'),
// array(),
// $this->l('Inactive because Paypal module is NOT enabled.'),
// 'desc-visible-only-when-inactive'
// )
),
'submit' => array(
@@ -2030,6 +2025,11 @@ class TheCheckout extends Module
$this->l('Clean checkout session'),
$this->l('Clean remembered status of checkboxes (Terms & conditions, Customer privacy, ...) after order is confirmed')
),
$this->generateSwitch(
'assign_customer_id_asap',
$this->l('Assign Address to Customer ASAP'),
$this->l('Even when Address is not yet fully filled-in, assign it to Customer as soon as possible')
),
$this->generateText(
'ps_css_cache_version',
$this->l('PS CSS cache version'),
@@ -2070,8 +2070,8 @@ class TheCheckout extends Module
'hint' => $this->l('Custom JS, (!) consider that jQuery might be loaded later, use it only in plain JS DOMready handler!'),
'class' => 'max-size-lg',
// Generate reset link markup through description of this very last config element
'desc' => '<div id="reset-all-settings">'.
$this->l('Reset ALL SETTINGS to default values') .': <span class="reset-link" data-section="ALL SETTINGS" data-action="resetAllSettings"></span></div>'
'desc' => $this->tagIt('div',$this->l('Reset ALL SETTINGS to default values') . ': '. $this->tagIt('span', '', 'class="reset-link" data-section="ALL SETTINGS" data-action="resetAllSettings"'),
'id="reset-all-settings"')
),
),
@@ -2125,6 +2125,7 @@ class TheCheckout extends Module
Configuration::get($name, (int)$lang['id_lang'])
);
}
}
return array_merge($tc_options, $other_options, $fields_localized);
}
@@ -2135,7 +2136,7 @@ class TheCheckout extends Module
protected function postProcess()
{
//if ('demo@demo.com' == $this->context->employee->email) {
// return 'This is DEMO store, set in <' . 'b' . '>read-only mode<' . '/' . 'b' . '>, settings cannot be updated.';
// return 'This is DEMO store, set in read-only mode, settings cannot be updated.';
//}
$errors = '';
@@ -2144,6 +2145,7 @@ class TheCheckout extends Module
));
foreach (array_keys($form_values) as $key) {
$errors .= $this->config->updateByName($key);
//echo "updating $key with: ".Tools::getValue($key)."\n\n";
}

View File

@@ -8,6 +8,7 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_020c2091aec3019d02193cef080bcf97'
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Vyžadován checkbox č.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Vyžadován checkbox č.2';
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Možná překlep? Prosím zkuste to znovu.';
$_MODULE['<{thecheckout}prestashop>thecheckout_f7207e8a369e565ea88ad64be867e80a'] = 'Už u nás máte účet. Přihlaste se nebo pokračujte jako host.';
$_MODULE['<{thecheckout}prestashop>thecheckout_368fe771261fcb18f7988833c9294a20'] = 'Návod';
$_MODULE['<{thecheckout}prestashop>thecheckout_ef70fe300c69a44e69d930f40ec17fd6'] = 'Jak vytvořit Facebook App ID a Secret?';
$_MODULE['<{thecheckout}prestashop>thecheckout_04aef6cc5b0457f1992c53b260512ccc'] = 'Jak vytvořit Google Client ID and Secret?';
@@ -87,9 +88,12 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_5cfecdee97aedd59782a36558b276ba1'
$_MODULE['<{thecheckout}prestashop>thecheckout_279693ab12adc751d603a7ef7cc129b4'] = 'Při prvním načtení košíku se inicializuje Adresa - aktivujte jenom když Vaši přepravci závisí na adrese nebo používaté widget pro odhad datumu / času dodání';
$_MODULE['<{thecheckout}prestashop>thecheckout_d23da85a488d5a36b9d6c21b87b5b9be'] = 'Zobraz tlačítko \"Uložit\" v sekci Osobní informace';
$_MODULE['<{thecheckout}prestashop>thecheckout_09b187fa484cb537515ac230e4ecd0e7'] = 'Zákazník musí \"Uložit\" Osobní informace před zobrazením způsobů přepravy a platby - použijte v případě, že Vaše přepravní nebo platební moduly vyžadují vytvořený účet.';
$_MODULE['<{thecheckout}prestashop>thecheckout_eebe9bb92bb6af7f4268b298caa45986'] = 'Původní adresy při znovu-objednání';
$_MODULE['<{thecheckout}prestashop>thecheckout_aeda727de969841338bf6ac66c91b27c'] = 'Když zákazník použije funkci objednat znovu, předvyberou se adresy použité při původní objednávce, t.j. nepoužijí se jeho nejnovější adresy.';
$_MODULE['<{thecheckout}prestashop>thecheckout_e0fec84c6a529b8bc9d40e42cdcd02ba'] = 'Google maps API klíč';
$_MODULE['<{thecheckout}prestashop>thecheckout_0f2b4315a2ae98076259c3ec37a68eed'] = 'API klíč pro službu doplňování adresy';
$_MODULE['<{thecheckout}prestashop>thecheckout_7bd9d84f516ab95a7b5d1603423825ba'] = 'Nastavte API klíč pro zapnutí funkce doplňování adresy';
$_MODULE['<{thecheckout}prestashop>thecheckout_c9b709510aa783ba2cc5fc6e1e5ec4e8'] = 'Pro doplňování Českých a Slovenských adres';
$_MODULE['<{thecheckout}prestashop>thecheckout_d1e8b16bd7dcf9767116d34e3626444f'] = 'Přeprava a Platba';
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Vynutit zvolení země';
$_MODULE['<{thecheckout}prestashop>thecheckout_45ab5651afbfeee56ebf21053ef1b3ba'] = 'Skryje způsoby přepravy a odoznačí předvolenou zemi, což přinutí zákazníka zvolit zemi a až pak uvidí způsoby přepravy';
@@ -114,8 +118,12 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_f4da157e669ad954ca1063310bccc99a'
$_MODULE['<{thecheckout}prestashop>thecheckout_0fa9672e69bbcd0e6e6274df9a725330'] = 'Pokud je zvolen způsob přapravy, ostatní způsoby se schovají';
$_MODULE['<{thecheckout}prestashop>thecheckout_9235432fb9d9616dacecdf0583490573'] = 'Schovat způsoby platby';
$_MODULE['<{thecheckout}prestashop>thecheckout_659a188ea1a3d15738b9554520c90fbb'] = 'Pokud je zvolen způsob platby, ostatní způsoby se schovají';
$_MODULE['<{thecheckout}prestashop>thecheckout_bc662f89a16f511fffea55013dd25702'] = 'Loga dopravců a plateb vpravo';
$_MODULE['<{thecheckout}prestashop>thecheckout_9f897e9d0d6b5bd91f853812c4f81508'] = 'Zobrazí loga dopravců a plateb napravo od názvu';
$_MODULE['<{thecheckout}prestashop>thecheckout_1640a6435b91ac7acb3ef36e9dfc197e'] = 'Pole adresy';
$_MODULE['<{thecheckout}prestashop>thecheckout_ebd9bec4d70abc789d439c1f136b0538'] = 'Rozvržení';
$_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Přesunout přihlášení do bloku účet';
$_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Zobrazí nabídku přihlášení v horní části bloku účtu';
$_MODULE['<{thecheckout}prestashop>thecheckout_a2229590cf589ce982e1891a7f194104'] = 'HTML pole č.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML pole č.2';
$_MODULE['<{thecheckout}prestashop>thecheckout_237959b1bb2bc9e30b0d2d526ac4c35a'] = 'HTML pole č.3';
@@ -124,8 +132,8 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_f3a29486bed19a90f2da6d007818b427'
$_MODULE['<{thecheckout}prestashop>thecheckout_35fab128e0c8232829a4b8b6eb0eebe2'] = 'Kroky v košíku';
$_MODULE['<{thecheckout}prestashop>thecheckout_3137d4e00674c1ac08f8904f94cab707'] = 'Aktivovuje virtuální kroky v košíku';
$_MODULE['<{thecheckout}prestashop>thecheckout_335af32bd7b95ee70332041b8b62b6ef'] = 'Nechte pole \'Popis\' prázdné, pokud nechcete daný krok použít';
$_MODULE['<{thecheckout}prestashop>thecheckout_499b257fbc18720b981e243c0403cbc8'] = 'Určitě? Změní se i rozložení sekcí a přidá se Custom CSS kód.';
$_MODULE['<{thecheckout}prestashop>thecheckout_d9fbcb055979997e1828726cd4ebd818'] = 'Klikněte pro vzorovou konfiguraci.';
$_MODULE['<{thecheckout}prestashop>thecheckout_499b257fbc18720b981e243c0403cbc8'] = 'Určitě? Změní se i rozložení sekcí a přidá se Custom CSS kód.';
$_MODULE['<{thecheckout}prestashop>thecheckout_b021df6aac4654c454f46c77646e745f'] = 'Popis';
$_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Popis kroku č.1, je možné zadat popis pro různé jazyky';
$_MODULE['<{thecheckout}prestashop>thecheckout_c477048d0832c367da078df08c429569'] = 'Zobrazené sekce';
@@ -148,9 +156,15 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_cbfdaa9ce5eb620875701b69e93ef240'
$_MODULE['<{thecheckout}prestashop>thecheckout_83b4f1306e5fd5d77bf725a252b7fe13'] = '\'Client ID\' kód z Google developers API';
$_MODULE['<{thecheckout}prestashop>thecheckout_386b07d40ba6a78eaf150cb4a6ca6aa3'] = '\'Client Secret\' kód z Google developers API';
$_MODULE['<{thecheckout}prestashop>thecheckout_5222a2ea579802f15d9b3b7686cc4ac4'] = 'Styl tlačítek';
$_MODULE['<{thecheckout}prestashop>thecheckout_4f7f8f230c7892a475fe8536e3c0786c'] = 'Zobrazit také na přihlašovací stránce PS';
$_MODULE['<{thecheckout}prestashop>thecheckout_511d2a69923b4d67f68aa041de4acb68'] = 'Login tlačítka se zobrazí také na výchozí přihlašovací stránce Prestashop';
$_MODULE['<{thecheckout}prestashop>thecheckout_c464fdf93af3eba7d2f018b42a0e7d68'] = 'Zobrazit tlačítko pro Paypal express checkout v bloku přihlášení';
$_MODULE['<{thecheckout}prestashop>thecheckout_bd5875df2eeae205ea71dde844360cd1'] = 'Neaktivní, protože modul Paypal NENÍ povolen.';
$_MODULE['<{thecheckout}prestashop>thecheckout_9b6545e4cea9b4ad4979d41bb9170e2b'] = 'Pokročilé';
$_MODULE['<{thecheckout}prestashop>thecheckout_2d614e2af90c0e53143574430071b0f3'] = 'Zapomenout stav košíkové session';
$_MODULE['<{thecheckout}prestashop>thecheckout_e8910cc1981cd20b3f704e738569edca'] = 'Zapomene stav checkboxů (různé souhlasy) po potvrzení objednávky. Vhodné zapnout když chcete vynutit zaškrtnutí při každé objednávce toho samého zákazníka.';
$_MODULE['<{thecheckout}prestashop>thecheckout_66ab0c98fcae4caa431be53ebd98fd17'] = 'Nastavit adresu zákazníkovi co nejdříve';
$_MODULE['<{thecheckout}prestashop>thecheckout_a4f7268616cd2005ddbb1d3e489d4748'] = 'I když adresa ještě není zcela vyplněna, přiradí se co nejdříve zákazníkovi';
$_MODULE['<{thecheckout}prestashop>thecheckout_088a98b774d277617b0cafd43bee4398'] = 'PS CSS verze systémové cache';
$_MODULE['<{thecheckout}prestashop>thecheckout_fd30bf78415712f2e3e2408872c93703'] = 'Zvyšte hodnotu cache-id pokud potřebujete vynutit obnovení minifikovaného cache souboru';
$_MODULE['<{thecheckout}prestashop>thecheckout_faf7133064ec9dc6bf27fd5c8c95c054'] = 'PS JS verze systémové cache';
@@ -217,7 +231,10 @@ $_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Poslat na jinou adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Doručovací adresa';
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Změnit adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Nakupuji na firmu';
$_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Nakupuji jako spotřebitel';
$_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Fakturovat na jinou adresu';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_4d26a4e106aa8a35f25d97fd14055981'] = 'Přeji si vytvořit účet';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Chybí číslo ulice';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Horní 235';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(nepovinné)';

View File

@@ -11,20 +11,15 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_0362fbd010f7c3dd68bdf43707497f8b'
$_MODULE['<{thecheckout}prestashop>thecheckout_a61135d90c71314ab95d73045f3a6968'] = 'Dodatkowe pole nr.4';
$_MODULE['<{thecheckout}prestashop>thecheckout_e5405e2b17df4a7c87bae444cf74dbc5'] = 'Dodatkowe pole nr.5';
$_MODULE['<{thecheckout}prestashop>thecheckout_020c2091aec3019d02193cef080bcf97'] = 'Metoda płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Wymagane pole checkbox #1';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Wymagane pole checkbox #2';
$_MODULE['<{thecheckout}prestashop>thecheckout_feb0f83763ffbce1dd2a640cfaecd940'] = 'SDI';
$_MODULE['<{thecheckout}prestashop>thecheckout_ae9c8ff8b03900d519995001118b9e4d'] = 'PEC';
$_MODULE['<{thecheckout}prestashop>thecheckout_06f6a489209115c5cef3f45036aad3ec'] = 'PA';
$_MODULE['<{thecheckout}prestashop>thecheckout_081cb23adfff623ec98dfb6e7d5673ea'] = 'Nie prawidłowy numer DNI';
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Wymagane pole wyboru nr 1';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Wymagane pole wyboru nr 2';
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Prawdopodobnie literówka? Proszę spróbuj ponownie.';
$_MODULE['<{thecheckout}prestashop>thecheckout_368fe771261fcb18f7988833c9294a20'] = 'Tutorial';
$_MODULE['<{thecheckout}prestashop>thecheckout_f7207e8a369e565ea88ad64be867e80a'] = 'Masz już u nas konto. Zaloguj się lub kontynuuj jako gość.';
$_MODULE['<{thecheckout}prestashop>thecheckout_ef70fe300c69a44e69d930f40ec17fd6'] = 'Jak utworzyć identyfikator aplikacji Facebook i klucz secret?';
$_MODULE['<{thecheckout}prestashop>thecheckout_04aef6cc5b0457f1992c53b260512ccc'] = 'Jak utworzyć identyfikator klienta Google i klucz secret?';
$_MODULE['<{thecheckout}prestashop>thecheckout_09f528290e1be8f60121b7822d57bcfb'] = 'Jak utworzyć klucz API map Google?';
$_MODULE['<{thecheckout}prestashop>thecheckout_9e8be93331a53b67e484e6a135d616b5'] = 'Zresetuj domyślną konfigurację dla';
$_MODULE['<{thecheckout}prestashop>thecheckout_30c39756e5084394d51f2806683b3ef8'] = 'Użyj edytora HTML';
$_MODULE['<{thecheckout}prestashop>thecheckout_d7085e2b5b40144896a996a297e3847d'] = 'Zaloguj się z Facebook';
$_MODULE['<{thecheckout}prestashop>thecheckout_d1eb833874dffe11131f82a82077187f'] = 'Pola formularz klienta';
$_MODULE['<{thecheckout}prestashop>thecheckout_93eb8b33c7191c7df06dcd8b79a95b2e'] = 'Pola formularza adresu faktury';
$_MODULE['<{thecheckout}prestashop>thecheckout_518f4c51b8e8cf98e1ae8e7d83447ca0'] = 'Pola formularza adresu dostawy';
@@ -33,128 +28,130 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_00d23a76e43b46dae9ec7aa9dcbebb32'
$_MODULE['<{thecheckout}prestashop>thecheckout_b9f5c797ebbf55adccdd8539a65a0241'] = 'Wyłączone';
$_MODULE['<{thecheckout}prestashop>thecheckout_0db377921f4ce762c62526131097968f'] = 'Główne ustawienia';
$_MODULE['<{thecheckout}prestashop>thecheckout_4245499695408b974322be6f01b0d17a'] = 'Tryb testowy';
$_MODULE['<{thecheckout}prestashop>thecheckout_d8f5c412a5db756a0d2b13a6e3d808a1'] = 'Moduł koszyka zostanie włączony tylko przy użyciu parametru adresu URL:';
$_MODULE['<{thecheckout}prestashop>thecheckout_8e5b9dff85ed69fece9fe5a4f4251f87'] = 'Po włączeniu usługa Checkout jest widoczna tylko przy użyciu tego adresu URL: ';
$_MODULE['<{thecheckout}prestashop>thecheckout_d8f5c412a5db756a0d2b13a6e3d808a1'] = 'Moduł kasy zostanie włączony tylko w przypadku użycia parametru URL:';
$_MODULE['<{thecheckout}prestashop>thecheckout_8e5b9dff85ed69fece9fe5a4f4251f87'] = 'Po włączeniu usługa Checkout jest widoczna tylko przy użyciu tego adresu URL:';
$_MODULE['<{thecheckout}prestashop>thecheckout_8b155326841f2a2c70769eb9250ad186'] = 'URL testu Checkout-u';
$_MODULE['<{thecheckout}prestashop>thecheckout_8aa091003f4ed518d2259626fa0fada8'] = 'Oddzielne podsumowanie koszyka';
$_MODULE['<{thecheckout}prestashop>thecheckout_93a721dd9497cdcc09153679c13e09e4'] = 'Wyświetl podgląd koszyka przed zakupem. W przeciwnym razie przejdź bezpośrednio do procesu zakupowego';
$_MODULE['<{thecheckout}prestashop>thecheckout_7345b84221ad2845f6f86cb911e42802'] = 'Stylowanie formularza procesu zakupów';
$_MODULE['<{thecheckout}prestashop>thecheckout_dce119d532c1c7ba1ddf708999e14ed3'] = 'Predefiniowane style, wybierz jeden i dokonaj dalszych dostosowań w plikach CSS';
$_MODULE['<{thecheckout}prestashop>thecheckout_dce119d532c1c7ba1ddf708999e14ed3'] = 'Wstępnie zdefiniowane style, wybierz jeden i wprowadź dalsze dostosowania w plikach CSS';
$_MODULE['<{thecheckout}prestashop>thecheckout_f5a8ebc4feca0648ebd035130b00155d'] = 'Minimalny - wybierz, jeśli wykonujesz wiele niestandardowych CSS';
$_MODULE['<{thecheckout}prestashop>thecheckout_234763312f3ed61b0d2ff78b33d71507'] = 'Śliczne - zaokrąglone rogi, płaskie, bez animacji';
$_MODULE['<{thecheckout}prestashop>thecheckout_a65ed164784e56a22e6514ae659dba14'] = 'Nowoczesne - zmaterializowane style 3d';
$_MODULE['<{thecheckout}prestashop>thecheckout_46088bcab8148956d826af8efbcc3ce7'] = 'Czysty- w stylu niemieckim';
$_MODULE['<{thecheckout}prestashop>thecheckout_46088bcab8148956d826af8efbcc3ce7'] = 'Clean - niemiecki styl, granice legendy, tylko kilka efektów';
$_MODULE['<{thecheckout}prestashop>thecheckout_f0b1ccae19a55a420f8dc9862b6eaf02'] = 'Czcionka formularza procesu zakupów';
$_MODULE['<{thecheckout}prestashop>thecheckout_f0c6aa2e4f605345b3f7c1ae4c77a1f6'] = 'Rodzina czcionek używana w formularzu procesu zakupów';
$_MODULE['<{thecheckout}prestashop>thecheckout_dd47ba7fc524dae895ebac9e45348dd9'] = 'Grubość czcionki';
$_MODULE['<{thecheckout}prestashop>thecheckout_7c835e80f65debd61bc7b9d7254a70c8'] = 'Jak \"gruba\" będzie czcionka';
$_MODULE['<{thecheckout}prestashop>thecheckout_c03bfb7476c17a7c82493eb7bb1e5003'] = 'Używaj ikon materiałów';
$_MODULE['<{thecheckout}prestashop>thecheckout_79ac069315735c920605a93ccfcdf343'] = 'Wyłącz, jeśli Twój motyw NIE korzysta z ikon materiałów (większość motywów PS1.7 go używa)';
$_MODULE['<{thecheckout}prestashop>thecheckout_2c75551687f8b885af7625ade5295ac9'] = 'Loader dla bloków';
$_MODULE['<{thecheckout}prestashop>thecheckout_2c75551687f8b885af7625ade5295ac9'] = 'Moduł ładujący aktualizację bloków';
$_MODULE['<{thecheckout}prestashop>thecheckout_879db1c4d5cef354f772919a2ac2a51c'] = 'Wyświetlaj animację ładowania za każdym razem, gdy bloki w formularzu kasy są aktualizowane przez Ajax.';
$_MODULE['<{thecheckout}prestashop>thecheckout_8b147e8f84dd39a802480b58b6b9059d'] = 'Kompaktowy koszyk';
$_MODULE['<{thecheckout}prestashop>thecheckout_5ea09f716787c0257a52f714f33ca87f'] = 'Jeśli masz blok koszyka w wąskiej kolumnie, ta opcja sprawi, że koszyk będzie lepiej pasować do małej szerokości.';
$_MODULE['<{thecheckout}prestashop>thecheckout_7ae536068882e59ea1d025e8db464832'] = 'Pokaż informacje o stanie produktu';
$_MODULE['<{thecheckout}prestashop>thecheckout_e546d5e5798692adb0d15823cf1e4b46'] = 'Wyświetl podsumowanie w magazynie, w magazynie lub brakującej ilości w koszyku.';
$_MODULE['<{thecheckout}prestashop>thecheckout_8b147e8f84dd39a802480b58b6b9059d'] = 'Kompaktowy wózek';
$_MODULE['<{thecheckout}prestashop>thecheckout_5ea09f716787c0257a52f714f33ca87f'] = 'Jeśli masz blok wózka w cienkiej kolumnie, ta opcja sprawi, że projekt wózka będzie lepiej pasował do małej szerokości.';
$_MODULE['<{thecheckout}prestashop>thecheckout_7ae536068882e59ea1d025e8db464832'] = 'Pokaż informacje o magazynie produktów';
$_MODULE['<{thecheckout}prestashop>thecheckout_e546d5e5798692adb0d15823cf1e4b46'] = 'Wyświetla ilość w magazynie, brak w magazynie lub brakującą ilość w podsumowaniu koszyka.';
$_MODULE['<{thecheckout}prestashop>thecheckout_c9cc8cce247e49bae79f15173ce97354'] = 'Zapisz';
$_MODULE['<{thecheckout}prestashop>thecheckout_dd40f868e9e5ae4efbd8b7d469b94264'] = 'Klient i adres';
$_MODULE['<{thecheckout}prestashop>thecheckout_51809ca4b5f1f9802840f94b9e3b5767'] = 'Wymuś nakładkę e-mail';
$_MODULE['<{thecheckout}prestashop>thecheckout_d13a8f0a78e2a9599f4a8849a650dc47'] = 'Ukrywa formularz zakupowy, dopóki klient się nie zaloguje lub nie wprowadzi wiadomości e-mail. Uwaga: Wymusi to cichą rejestrację!';
$_MODULE['<{thecheckout}prestashop>thecheckout_3950fe11ca6c10c657eca505fb0a6c53'] = 'Nieaktywny, ponieważ hasło jest wymagane w sekcji Pola klienta.';
$_MODULE['<{thecheckout}prestashop>thecheckout_d13a8f0a78e2a9599f4a8849a650dc47'] = 'Ukrywa formularz realizacji transakcji do czasu zalogowania się klienta lub wpisania adresu e-mail. Uwaga: wymusi to cichą rejestrację!';
$_MODULE['<{thecheckout}prestashop>thecheckout_3950fe11ca6c10c657eca505fb0a6c53'] = 'Nieaktywne, ponieważ w sekcji Pola klienta wymagane jest ustawienie hasła.';
$_MODULE['<{thecheckout}prestashop>thecheckout_8eb0e6076b9e04da1f3d8b2ec0c7441e'] = 'Po cichu zarejestruj konto gościa';
$_MODULE['<{thecheckout}prestashop>thecheckout_ab2d86fc5ba000cef672c364944818f5'] = 'Zarejestruj konto gościa automatycznie, gdy klient wypełni pole e-mail. Uwaga: Zakupy dla gości mus być włączone!';
$_MODULE['<{thecheckout}prestashop>thecheckout_33da89796a0ec28047c8283dee17ec7a'] = 'Nieaktywny, ponieważ włączona jest opcja „Wymuś nakładkę e-mail”.';
$_MODULE['<{thecheckout}prestashop>thecheckout_5de896c6747a927f8ba5416f6bf21f50'] = 'Zezwalaj na przyjmowanie gości dla zarejestrowanych';
$_MODULE['<{thecheckout}prestashop>thecheckout_01e733ab2c3a319e61be216fa5ffdead'] = 'Zezwalaj nawet zarejestrowanym klientom na zamówienia jako gość, aby nie było wymagane logowanie.';
$_MODULE['<{thecheckout}prestashop>thecheckout_ab2d86fc5ba000cef672c364944818f5'] = 'Zarejestruj konto gościa automatycznie, gdy klient wypełni pole e-mail. Uwaga: musi być włączona funkcja kasowania gości!';
$_MODULE['<{thecheckout}prestashop>thecheckout_33da89796a0ec28047c8283dee17ec7a'] = 'Nieaktywne, ponieważ włączona jest opcja „Wymuś nakładkę e-mail”.';
$_MODULE['<{thecheckout}prestashop>thecheckout_5de896c6747a927f8ba5416f6bf21f50'] = 'Zezwalaj na kasę gościnną dla zarejestrowanych';
$_MODULE['<{thecheckout}prestashop>thecheckout_01e733ab2c3a319e61be216fa5ffdead'] = 'Pozwól nawet zarejestrowanym klientom na realizację transakcji jako gość, dzięki czemu nie jest wymagane logowanie.';
$_MODULE['<{thecheckout}prestashop>thecheckout_3a3df23cca9592a4f6f22ee79e26b1a9'] = 'Pole wyboru \"Utwórz konto\"';
$_MODULE['<{thecheckout}prestashop>thecheckout_8df2fec7b477ea43eeaccdd08f69ae0f'] = 'Zamiast pola hasła pokaż pole wyboru, aby utworzyć konto. \"hasło\" nie może być wymagane w polach klienta poniżej.';
$_MODULE['<{thecheckout}prestashop>thecheckout_c46a048666d56df34733e7db61c76a4b'] = 'Pokaż pole wyboru \"Jestem firmą\"';
$_MODULE['<{thecheckout}prestashop>thecheckout_f7798ad0c7f0481d2e9cf37b87917d0c'] = 'Pokaż pole wyboru na górze adresu faktury, co spowoduje rozwinięcie pól firmowych i podatkowych';
$_MODULE['<{thecheckout}prestashop>thecheckout_ab4a04a19b1b29bab635deb4ea51acd4'] = 'Pokaż pole wyboru \"Jestem firmą\" w adresie dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_53f6f23877e143b3147764311bfe51e9'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, co rozwinie pola Firma i numer VAT';
$_MODULE['<{thecheckout}prestashop>thecheckout_01ac200aa4fde394ef13da890bb29a94'] = '.. pol bizensowe';
$_MODULE['<{thecheckout}prestashop>thecheckout_ab4a04a19b1b29bab635deb4ea51acd4'] = 'Jestem firmą w adresie dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_53f6f23877e143b3147764311bfe51e9'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, co rozwinie pola Firma i podatek';
$_MODULE['<{thecheckout}prestashop>thecheckout_01ac200aa4fde394ef13da890bb29a94'] = '...obszary biznesowe';
$_MODULE['<{thecheckout}prestashop>thecheckout_db0b2e900d72bbf985076523d340e6c6'] = 'Rozdzielana przecinkami lista pól pokazana w oddzielnej sekcji dla klientów biznesowych';
$_MODULE['<{thecheckout}prestashop>thecheckout_1d13e7254965c494c9e60bba574c99e3'] = 'Nieaktywny, ponieważ „Pokaż, że jestem firmą” jest wyłączone.';
$_MODULE['<{thecheckout}prestashop>thecheckout_1fe6fb10cdeca2ace3db8b9185a40c15'] = '.. wyłączone pola biznesowe ';
$_MODULE['<{thecheckout}prestashop>thecheckout_0848fa8ca4180d676c524a2a5ef746a2'] = 'Rozdzielona przecinkami lista pól ukrytych dla klientów biznesowych (widoczna tylko dla innych)';
$_MODULE['<{thecheckout}prestashop>thecheckout_375b6233cb0ea0d44071ad58aedd7877'] = 'Pokaz \"Jestem klientem prywatnym\" pole wyboru';
$_MODULE['<{thecheckout}prestashop>thecheckout_a706ab7df922b5ce69adaab9eb74beaa'] = 'Pokaże pole wyboru na górze adresu do faktury, które będzie rozwiniete';
$_MODULE['<{thecheckout}prestashop>thecheckout_c5f143d6ad58a47d2545bbfdcef971d1'] = 'Pokaz \"Jestem klientem prywatnym\" pole wyboru w adresie dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_c4465575f7c097f647d87896c56cba6f'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, co rozwinie (zwykle) pole dni';
$_MODULE['<{thecheckout}prestashop>thecheckout_b0361fc89b0d10dee9c3c3b698049aba'] = '....pola prywatnego klienta';
$_MODULE['<{thecheckout}prestashop>thecheckout_4f2f7717196071e4740cb118ce0870a7'] = 'Oddzielona przecinkami lista pól pokazana w osobnej sekcji dla klientów prywatnych ';
$_MODULE['<{thecheckout}prestashop>thecheckout_576f816790a8b47768fb256a2f0f74d8'] = 'Nieaktywne, ponieważ opcja „Pokaż, że jestem prywatnym klientem” jest wyłączona. ';
$_MODULE['<{thecheckout}prestashop>thecheckout_1d13e7254965c494c9e60bba574c99e3'] = 'Nieaktywne, ponieważ opcja „Pokaż, że jestem firmą” jest wyłączona.';
$_MODULE['<{thecheckout}prestashop>thecheckout_1fe6fb10cdeca2ace3db8b9185a40c15'] = '... pola dla osób niepełnosprawnych biznesowo';
$_MODULE['<{thecheckout}prestashop>thecheckout_0848fa8ca4180d676c524a2a5ef746a2'] = 'Lista pól oddzielonych przecinkami UKRYTA dla klientów biznesowych (widoczna tylko dla innych)';
$_MODULE['<{thecheckout}prestashop>thecheckout_375b6233cb0ea0d44071ad58aedd7877'] = 'Pokaż pole wyboru „Jestem klientem prywatnym”.';
$_MODULE['<{thecheckout}prestashop>thecheckout_a706ab7df922b5ce69adaab9eb74beaa'] = 'Pokaż pole wyboru na górze adresu faktury, które rozwinie (zwykle) pole dni';
$_MODULE['<{thecheckout}prestashop>thecheckout_c5f143d6ad58a47d2545bbfdcef971d1'] = 'Jestem klientem prywatnym w adresie dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_c4465575f7c097f647d87896c56cba6f'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, które rozwinie (zwykle) pole dni';
$_MODULE['<{thecheckout}prestashop>thecheckout_b0361fc89b0d10dee9c3c3b698049aba'] = '... pola klientów prywatnych';
$_MODULE['<{thecheckout}prestashop>thecheckout_4f2f7717196071e4740cb118ce0870a7'] = 'Lista pól oddzielonych przecinkami pokazana w osobnej sekcji dla klientów prywatnych';
$_MODULE['<{thecheckout}prestashop>thecheckout_576f816790a8b47768fb256a2f0f74d8'] = 'Nieaktywne, ponieważ opcja „Pokaż, że jestem prywatnym” jest wyłączona.';
$_MODULE['<{thecheckout}prestashop>thecheckout_3a6d6b12d0acde19a54b34b29173bd88'] = 'Zaoferuj drugi adres';
$_MODULE['<{thecheckout}prestashop>thecheckout_ca180b42dfb89f59df825d2cfa730987'] = 'W głównym adresie (fakturze) zaznacz pole wyboru, aby rozwinąć drugi adres (dostawa)';
$_MODULE['<{thecheckout}prestashop>thecheckout_38752a8491cc15f92f3bfe564819fcb5'] = 'Automatycznie rozwijaj drugi adres';
$_MODULE['<{thecheckout}prestashop>thecheckout_0a5257d71d1b16bef8753b3699aafe70'] = 'Sprawdź, czy oba adresy (faktura + dostawa) są widoczne od razu';
$_MODULE['<{thecheckout}prestashop>thecheckout_76152639439c91e37b4114425129216a'] = 'Zaznacz wymagane pola (*)';
$_MODULE['<{thecheckout}prestashop>thecheckout_ce44a24d986a7c14734bbf7d159634d5'] = 'Pokaż czerwoną gwiazdkę obok wymaganej etykiety pola';
$_MODULE['<{thecheckout}prestashop>thecheckout_d81977209c6519c11278b7f8b39b6d9c'] = 'Newsletter zaznaczony domyślnie';
$_MODULE['<{thecheckout}prestashop>thecheckout_e4ba505bcd85e1d676149ddf3955e593'] = 'Newsletter zaznaczony domyślnie - ps_emailsubscription moduł musi być włączony';
$_MODULE['<{thecheckout}prestashop>thecheckout_cadbf263f422d0e0477eefed970e7693'] = 'Pokaż prefix numeru telefonu';
$_MODULE['<{thecheckout}prestashop>thecheckout_8e404fbe455f95cad7a766f7fab58bde'] = 'Pokaż prefix numeru telefonu na początku pola z numerem telefonu (dynamicznie zmieniane bazując na kraju wybranym)';
$_MODULE['<{thecheckout}prestashop>thecheckout_d81977209c6519c11278b7f8b39b6d9c'] = 'Biuletyn domyślnie zaznaczony';
$_MODULE['<{thecheckout}prestashop>thecheckout_e4ba505bcd85e1d676149ddf3955e593'] = 'Pole wyboru Newsletter będzie domyślnie zaznaczone - moduł ps_emailsubscription musi być włączony!';
$_MODULE['<{thecheckout}prestashop>thecheckout_cadbf263f422d0e0477eefed970e7693'] = 'Pokaż prefiks połączenia';
$_MODULE['<{thecheckout}prestashop>thecheckout_8e404fbe455f95cad7a766f7fab58bde'] = 'Wyświetl numer prefiksu połączenia przed polami numeru telefonu - zmienia się dynamicznie w zależności od wybranego kraju';
$_MODULE['<{thecheckout}prestashop>thecheckout_5cfecdee97aedd59782a36558b276ba1'] = 'Zainicjuj adres';
$_MODULE['<{thecheckout}prestashop>thecheckout_279693ab12adc751d603a7ef7cc129b4'] = 'Podczas początkowego ładowania ustaw obiekt adresu - włącz, jeśli metody wysyłki zależą od identyfikatora adresu lub jeśli używasz widżetu daty / godziny dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_d23da85a488d5a36b9d6c21b87b5b9be'] = 'Pokaż przycisk „Zapisz” w informacjach osobistych ';
$_MODULE['<{thecheckout}prestashop>thecheckout_09b187fa484cb537515ac230e4ecd0e7'] = 'Wyświetl przycisk, aby zapisać gościa / konto przed wyświetleniem metod wysyłki i płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_279693ab12adc751d603a7ef7cc129b4'] = 'Przy pierwszym ładowaniu ustaw obiekt adresu - włącz, jeśli metody wysyłki zależą od identyfikatora adresu lub jeśli korzystasz z widżetu daty/godziny dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_d23da85a488d5a36b9d6c21b87b5b9be'] = 'Pokaż przycisk „Zapisz” w informacjach osobistych';
$_MODULE['<{thecheckout}prestashop>thecheckout_09b187fa484cb537515ac230e4ecd0e7'] = 'Wyświetl przycisk umożliwiający zapisanie gościa/konta przed wyświetleniem metod wysyłki i płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_eebe9bb92bb6af7f4268b298caa45986'] = 'Oryginalny adres przy ponownym zamówieniu';
$_MODULE['<{thecheckout}prestashop>thecheckout_aeda727de969841338bf6ac66c91b27c'] = 'Kiedy klient składa ponowne zamówienie, użyj tego samego adresu, co w pierwotnym zamówieniu - nie używaj jego najnowszego adresu';
$_MODULE['<{thecheckout}prestashop>thecheckout_e0fec84c6a529b8bc9d40e42cdcd02ba'] = 'Klucz API map Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_0f2b4315a2ae98076259c3ec37a68eed'] = 'Klucz API umożliwiający automatyczne uzupełnianie adresów Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_7bd9d84f516ab95a7b5d1603423825ba'] = 'Ustaw klucz API, aby włączyć automatyczne uzupełnianie adresów Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_d41085761a011df55d32d157f3024e02'] = 'Smartform clientId';
$_MODULE['<{thecheckout}prestashop>thecheckout_c9b709510aa783ba2cc5fc6e1e5ec4e8'] = 'W przypadku autouzupełniania adresu czeskiego/słowackiego';
$_MODULE['<{thecheckout}prestashop>thecheckout_4cebcb37232b5f70ef1e9879f3988300'] = 'Ustaw identyfikator klienta (clientId) z poziomu administracji Smartform (prawy górny róg)';
$_MODULE['<{thecheckout}prestashop>thecheckout_0f2b4315a2ae98076259c3ec37a68eed'] = 'Klucz API umożliwiający automatyczne uzupełnianie adresu Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_7bd9d84f516ab95a7b5d1603423825ba'] = 'Ustaw klucz API, aby włączyć automatyczne uzupełnianie adresu Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_c9b709510aa783ba2cc5fc6e1e5ec4e8'] = 'W przypadku adresów wysyłkowych w Czechach i na Słowacji są one uzupełniane automatycznie';
$_MODULE['<{thecheckout}prestashop>thecheckout_d1e8b16bd7dcf9767116d34e3626444f'] = 'Dostawa i płatność';
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Wymuś na kliencie wybór kraju';
$_MODULE['<{thecheckout}prestashop>thecheckout_45ab5651afbfeee56ebf21053ef1b3ba'] = 'Na początku ukrywa metody wysyłki i odznacz kraj, aby klient musi wybrać kraj ręcznie';
$_MODULE['<{thecheckout}prestashop>thecheckout_ad24dd475f201d88a6ff27b2ecc9c828'] = 'Wymagane pola dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_0b6a5e5303a78d305550503227096074'] = 'Rozdzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje wysyłki, w tym: id_state, kod pocztowy, miasto';
$_MODULE['<{thecheckout}prestashop>thecheckout_701c34f41890a3444300b6290432c645'] = 'Zmuś klienta do wyboru przewoźnika ';
$_MODULE['<{thecheckout}prestashop>thecheckout_ab64e8a77cf76885f8a0f1d29bd606f2'] = 'Odznacz domyślnego przewoźnika i zmuś klienta do dokonania własnego wyboru ';
$_MODULE['<{thecheckout}prestashop>thecheckout_d9c07f06e99782f73f623c09f8a2e541'] = 'Pokaż „wysyłkę do” w bloku dostawy';
$_MODULE['<{thecheckout}prestashop>thecheckout_da36d8fc577d053eaae305f4f163cdb5'] = 'Pokaż nazwę przesyłki w wyborze przewoźników, dla lepszej przejrzystości';
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Zmuś klienta do wyboru kraju';
$_MODULE['<{thecheckout}prestashop>thecheckout_45ab5651afbfeee56ebf21053ef1b3ba'] = 'Ukrywa metody wysyłki i na początku odznacza kraj, tak że klient musi wybrać kraj ręcznie';
$_MODULE['<{thecheckout}prestashop>thecheckout_ad24dd475f201d88a6ff27b2ecc9c828'] = 'Pola wymagane do wysyłki';
$_MODULE['<{thecheckout}prestashop>thecheckout_0b6a5e5303a78d305550503227096074'] = 'Oddzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje wysyłki, np.: id_state, kod pocztowy, miasto';
$_MODULE['<{thecheckout}prestashop>thecheckout_701c34f41890a3444300b6290432c645'] = 'Zmuś klienta do wyboru przewoźnika';
$_MODULE['<{thecheckout}prestashop>thecheckout_ab64e8a77cf76885f8a0f1d29bd606f2'] = 'Odznacz domyślnego przewoźnika i zmuś klienta do dokonania własnego wyboru';
$_MODULE['<{thecheckout}prestashop>thecheckout_d9c07f06e99782f73f623c09f8a2e541'] = 'Pokaż „wysyłka do” u przewoźników';
$_MODULE['<{thecheckout}prestashop>thecheckout_da36d8fc577d053eaae305f4f163cdb5'] = 'Dla większej przejrzystości pokaż nazwę kraju wysyłki przy wyborze przewoźnika';
$_MODULE['<{thecheckout}prestashop>thecheckout_290d08e3417867bc8a510c7e757c445a'] = 'Usuń spacje z kodu pocztowego';
$_MODULE['<{thecheckout}prestashop>thecheckout_0f49b4dae642e026c8ea0e79a03b8c1f'] = 'Po zmodyfikowaniu pola kodu pocztowego spacje wewnętrzne są usuwane automatycznie';
$_MODULE['<{thecheckout}prestashop>thecheckout_0f49b4dae642e026c8ea0e79a03b8c1f'] = 'Po zmodyfikowaniu pola kodu pocztowego spacje wewnętrzne są automatycznie usuwane';
$_MODULE['<{thecheckout}prestashop>thecheckout_1cb049175732c198e1eb4a3c340667a5'] = 'Pokaż wiadomość zamówienia';
$_MODULE['<{thecheckout}prestashop>thecheckout_241973cbee85abce3d2c8bfab9a92870'] = 'Pokaż Textarea dla dowolnego komunikatu o zamówieniu';
$_MODULE['<{thecheckout}prestashop>thecheckout_2dcb573a9ad3cfdf065f94b41dfce113'] = 'Metody płatnośći na osobnej stronie';
$_MODULE['<{thecheckout}prestashop>thecheckout_ee9573ddb54069593c93c5865885b2c3'] = 'Lista ostatecznych opcji płatności zostanie wyświetlona na osobnej stronie. Opcjonalne dla dowolnej metody płatności, ale wymagane, jeśli masz: [Prestashop Checkout lub Braintree Official]';
$_MODULE['<{thecheckout}prestashop>thecheckout_86a482bde3bd752bb98c92dec2df5bf1'] = 'Opcja wymuszona, ponieważ moduł płatności [Prestashop Checkout lub oficjalny Braintree] jest włączony';
$_MODULE['<{thecheckout}prestashop>thecheckout_2dcb573a9ad3cfdf065f94b41dfce113'] = 'Opcje płatności na osobnej stronie';
$_MODULE['<{thecheckout}prestashop>thecheckout_ee9573ddb54069593c93c5865885b2c3'] = 'Ostateczna lista opcji płatności zostanie wyświetlona na osobnej stronie. Opcjonalne dla dowolnej metody płatności, ale wymagane, jeśli masz: [Prestashop Checkout lub Braintree oficjalny]';
$_MODULE['<{thecheckout}prestashop>thecheckout_86a482bde3bd752bb98c92dec2df5bf1'] = 'Opcja wymuszona, ponieważ moduł płatności [Prestashop Checkout lub Braintree oficjalny] jest włączony';
$_MODULE['<{thecheckout}prestashop>thecheckout_2abaf2b064ef33e1cb25174b229d45da'] = 'Domyślna metoda płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_7af2c009f6d9bdbe89a7c1c035a94af8'] = 'Którą metodę płatności wybiera się domyślnie';
$_MODULE['<{thecheckout}prestashop>thecheckout_c8e608334254ae14807323821f622019'] = 'Wymagane pola płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_b5b732a95e3ebc8fa8cb9444f43016da'] = 'Rozdzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje płatności, w tym.: Id_state, nazwisko';
$_MODULE['<{thecheckout}prestashop>thecheckout_39a6e1af273e63c2ab3cb3df8a0c3891'] = 'Nieaktywny, ponieważ „Opcje płatności na osobnej stronie” są włączone.';
$_MODULE['<{thecheckout}prestashop>thecheckout_c8e608334254ae14807323821f622019'] = 'Pola wymagane do płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_b5b732a95e3ebc8fa8cb9444f43016da'] = 'Oddzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje płatności, np.: id_state, lastname';
$_MODULE['<{thecheckout}prestashop>thecheckout_39a6e1af273e63c2ab3cb3df8a0c3891'] = 'Nieaktywne, ponieważ włączona jest opcja „Opcje płatności na osobnej stronie”.';
$_MODULE['<{thecheckout}prestashop>thecheckout_f4da157e669ad954ca1063310bccc99a'] = 'Zwiń metody wysyłki';
$_MODULE['<{thecheckout}prestashop>thecheckout_0fa9672e69bbcd0e6e6274df9a725330'] = 'Gdy wybrana jest pojedyncza metoda wysyłki, zwiń pozostałe';
$_MODULE['<{thecheckout}prestashop>thecheckout_0fa9672e69bbcd0e6e6274df9a725330'] = 'W przypadku wybrania pojedynczej metody wysyłki zwiń pozostałe';
$_MODULE['<{thecheckout}prestashop>thecheckout_9235432fb9d9616dacecdf0583490573'] = 'Zwiń metody płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_659a188ea1a3d15738b9554520c90fbb'] = 'Gdy wybrana jest pojedyncza metoda płatności, zwiń pozostałe';
$_MODULE['<{thecheckout}prestashop>thecheckout_659a188ea1a3d15738b9554520c90fbb'] = 'Po wybraniu pojedynczej metody płatności zwiń pozostałe';
$_MODULE['<{thecheckout}prestashop>thecheckout_bc662f89a16f511fffea55013dd25702'] = 'Logo wysyłki/płatności po prawej stronie';
$_MODULE['<{thecheckout}prestashop>thecheckout_9f897e9d0d6b5bd91f853812c4f81508'] = 'Pokaż logo wysyłki i płatności po prawej stronie w widoku metod';
$_MODULE['<{thecheckout}prestashop>thecheckout_1640a6435b91ac7acb3ef36e9dfc197e'] = 'Pola adresowe';
$_MODULE['<{thecheckout}prestashop>thecheckout_ebd9bec4d70abc789d439c1f136b0538'] = 'Układ';
$_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Przenieść logowanie do bloku konta';
$_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Wyświetla panel logowania na górze bloku konta';
$_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Przenieś login do blokady konta';
$_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Przenieś sekcję logowania do konta';
$_MODULE['<{thecheckout}prestashop>thecheckout_a2229590cf589ce982e1891a7f194104'] = 'HTML box nr.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML box nr.2';
$_MODULE['<{thecheckout}prestashop>thecheckout_237959b1bb2bc9e30b0d2d526ac4c35a'] = 'HTML box nr.3';
$_MODULE['<{thecheckout}prestashop>thecheckout_dff191476bb6fc6505df0ac0feb4196a'] = 'HTML box nr.4';
$_MODULE['<{thecheckout}prestashop>thecheckout_f3a29486bed19a90f2da6d007818b427'] = 'Kroki';
$_MODULE['<{thecheckout}prestashop>thecheckout_35fab128e0c8232829a4b8b6eb0eebe2'] = 'Kroki procesu zakupowego';
$_MODULE['<{thecheckout}prestashop>thecheckout_35fab128e0c8232829a4b8b6eb0eebe2'] = 'Kroki kasy';
$_MODULE['<{thecheckout}prestashop>thecheckout_3137d4e00674c1ac08f8904f94cab707'] = 'Włącz wirtualne kroki';
$_MODULE['<{thecheckout}prestashop>thecheckout_335af32bd7b95ee70332041b8b62b6ef'] = 'Pozostaw pole „Etykieta” puste, jeśli chcesz wyłączyć określony krok poniżej';
$_MODULE['<{thecheckout}prestashop>thecheckout_335af32bd7b95ee70332041b8b62b6ef'] = 'Jeśli chcesz wyłączyć określony krok poniżej, pozostaw opcję „Etykieta” pustą';
$_MODULE['<{thecheckout}prestashop>thecheckout_d9fbcb055979997e1828726cd4ebd818'] = 'Kliknij, aby ustawić próbkę konfiguracji początkowej';
$_MODULE['<{thecheckout}prestashop>thecheckout_499b257fbc18720b981e243c0403cbc8'] = 'Jesteś pewny? Spowoduje to zmianę układu bloków, a także dodanie niestandardowych reguł CSS.';
$_MODULE['<{thecheckout}prestashop>thecheckout_d9fbcb055979997e1828726cd4ebd818'] = 'Kliknij, aby ustawić Próbkę konfiguracji początkowej';
$_MODULE['<{thecheckout}prestashop>thecheckout_b021df6aac4654c454f46c77646e745f'] = 'Etykieta';
$_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Etykieta kroku 1, pole wielojęzyczne';
$_MODULE['<{thecheckout}prestashop>thecheckout_c477048d0832c367da078df08c429569'] = 'Widoczne bloki';
$_MODULE['<{thecheckout}prestashop>thecheckout_9d08b3d2d7e49f6776ce95ff0887629b'] = 'Oddzielona przecinkami lista bloków widocznych w tym kroku';
$_MODULE['<{thecheckout}prestashop>thecheckout_9d08b3d2d7e49f6776ce95ff0887629b'] = 'Lista rozdzielonych przecinkami bloków widocznych w tym kroku';
$_MODULE['<{thecheckout}prestashop>thecheckout_f80850c55f43a798f0aac4ea930a91f6'] = 'Etykieta kroku 2, pole wielojęzyczne';
$_MODULE['<{thecheckout}prestashop>thecheckout_058809ec6e7124a5cd1b5eb1a68fca8d'] = 'Wyrażenie walidacji (JS)';
$_MODULE['<{thecheckout}prestashop>thecheckout_5ac3ad9aac3ddba0f492ac737999d3aa'] = 'Aby przejść do tego kroku, wymagane jest wyrażenie sprawdzania poprawności JS';
$_MODULE['<{thecheckout}prestashop>thecheckout_058809ec6e7124a5cd1b5eb1a68fca8d'] = 'Wyrażenie walidacyjne (JS)';
$_MODULE['<{thecheckout}prestashop>thecheckout_5ac3ad9aac3ddba0f492ac737999d3aa'] = 'Do osiągnięcia tego kroku wymagane jest wyrażenie sprawdzające JS';
$_MODULE['<{thecheckout}prestashop>thecheckout_e20cbb947afcf84cf58de1358ee1068d'] = 'Komunikat o błędzie';
$_MODULE['<{thecheckout}prestashop>thecheckout_7c1c2360ccbebc336c8ea2f8b4fb7e59'] = 'Błąd wyświetlany użytkownikowi, gdy sprawdzanie poprawności w celu osiągnięcia tego kroku nie powiedzie się';
$_MODULE['<{thecheckout}prestashop>thecheckout_7c1c2360ccbebc336c8ea2f8b4fb7e59'] = 'Błąd pokazywany użytkownikowi, gdy weryfikacja dotarcia do tego kroku nie powiedzie się';
$_MODULE['<{thecheckout}prestashop>thecheckout_57332a8bbbaf983d292d1c56fef26ca9'] = 'Etykieta kroku 3, pole wielojęzyczne';
$_MODULE['<{thecheckout}prestashop>thecheckout_165e07c5032fa2218d83c0d1fae1459e'] = 'Etykieta kroku 4, pole wielojęzyczne';
$_MODULE['<{thecheckout}prestashop>thecheckout_63a9da971d0d4ff2763b41a487f644d2'] = 'Reguły sprawdzania poprawności JS dla tego kroku';
$_MODULE['<{thecheckout}prestashop>thecheckout_63a9da971d0d4ff2763b41a487f644d2'] = 'Reguły walidacji JS dla tego kroku';
$_MODULE['<{thecheckout}prestashop>thecheckout_e21a59ad123e5cfb3f4569129bb87d58'] = 'Logowanie społecznościowe';
$_MODULE['<{thecheckout}prestashop>thecheckout_34013ea6c574585085c7569fbf7c0a70'] = 'Logowanie Facebook';
$_MODULE['<{thecheckout}prestashop>thecheckout_e2c483e0ded711e9d0c7947443475c40'] = 'Włącz logoanie z kontem Facebook-a';
@@ -162,26 +159,25 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_466ff61f4367f43a1e2bf7656be3a022'
$_MODULE['<{thecheckout}prestashop>thecheckout_139e25e29b316c755292d2437eea404f'] = 'Identyfikator aplikacji od API programistów Facebooka';
$_MODULE['<{thecheckout}prestashop>thecheckout_fd125f225efc3440c92a219e9b396543'] = 'Facebook App Secret';
$_MODULE['<{thecheckout}prestashop>thecheckout_8127caa8daeb1f5940435fa5f31a437e'] = 'Klucz secret aplikacji z API programistów Facebooka';
$_MODULE['<{thecheckout}prestashop>thecheckout_3a5fc7304426efef6c0cce713a174072'] = 'Logowanie przez Google ';
$_MODULE['<{thecheckout}prestashop>thecheckout_cbfdaa9ce5eb620875701b69e93ef240'] = 'Włącz logowanie przez Google ';
$_MODULE['<{thecheckout}prestashop>thecheckout_cbfdaa9ce5eb620875701b69e93ef240'] = 'Włącz logowanie Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_2a9fc9efe56971027f8c92eff8dc0c39'] = 'Google ID klienta';
$_MODULE['<{thecheckout}prestashop>thecheckout_83b4f1306e5fd5d77bf725a252b7fe13'] = 'Identyfikator klienta od API programistów Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_3708118127eeeb0b1c89deca62badbfa'] = 'Google client secret';
$_MODULE['<{thecheckout}prestashop>thecheckout_386b07d40ba6a78eaf150cb4a6ca6aa3'] = 'Klucz klienta secret od API programistów Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_5222a2ea579802f15d9b3b7686cc4ac4'] = 'Styl przycisków logowania';
$_MODULE['<{thecheckout}prestashop>thecheckout_4f7f8f230c7892a475fe8536e3c0786c'] = 'Wyświetl również na stronie logowania sklepu';
$_MODULE['<{thecheckout}prestashop>thecheckout_511d2a69923b4d67f68aa041de4acb68'] = 'Przyciski logowania społecznościowego będą również wyświetlane na domyślnej stronie logowania Prestashop';
$_MODULE['<{thecheckout}prestashop>thecheckout_4f7f8f230c7892a475fe8536e3c0786c'] = 'Wyświetlaj także na stronie logowania PS';
$_MODULE['<{thecheckout}prestashop>thecheckout_511d2a69923b4d67f68aa041de4acb68'] = 'Przyciski logowania społecznościowego będą wyświetlane także na domyślnej stronie logowania Prestashop';
$_MODULE['<{thecheckout}prestashop>thecheckout_c464fdf93af3eba7d2f018b42a0e7d68'] = 'Pokaż przycisk ekspresowej realizacji transakcji PayPal w obszarze logowania';
$_MODULE['<{thecheckout}prestashop>thecheckout_bd5875df2eeae205ea71dde844360cd1'] = 'Nieaktywny, ponieważ moduł PayPal NIE jest włączony.';
$_MODULE['<{thecheckout}prestashop>thecheckout_9b6545e4cea9b4ad4979d41bb9170e2b'] = 'Zaawansowany';
$_MODULE['<{thecheckout}prestashop>thecheckout_45c65f91f37fdd8133aca725bf8f4165'] = 'Odśwież mini-koszyk';
$_MODULE['<{thecheckout}prestashop>thecheckout_f62409740c2d72dab4675544d2357727'] = 'Przy każdej aktualizacji koszyka również aktualizacje mini-koszyka (dostępne tylko dla niektórych szablonów)';
$_MODULE['<{thecheckout}prestashop>thecheckout_2d614e2af90c0e53143574430071b0f3'] = 'Czysta sesja procesu zakupów';
$_MODULE['<{thecheckout}prestashop>thecheckout_e8910cc1981cd20b3f704e738569edca'] = 'Czysty, zapamiętany status pól wyboru (Warunki, prywatność klienta, ...) po potwierdzeniu zamówienia';
$_MODULE['<{thecheckout}prestashop>thecheckout_66ab0c98fcae4caa431be53ebd98fd17'] = 'Przypisz adres klientowi jak najszybciej';
$_MODULE['<{thecheckout}prestashop>thecheckout_a4f7268616cd2005ddbb1d3e489d4748'] = 'Nawet jeśli Adres nie jest jeszcze w pełni wypełniony, przypisz go Klientowi tak szybko, jak to możliwe';
$_MODULE['<{thecheckout}prestashop>thecheckout_088a98b774d277617b0cafd43bee4398'] = 'Wersja pamięci podręcznej CSS PS';
$_MODULE['<{thecheckout}prestashop>thecheckout_fd30bf78415712f2e3e2408872c93703'] = 'Zwiększ, jeśli zmiany w plikach CSS nie są widoczne w procesie zakupowym';
$_MODULE['<{thecheckout}prestashop>thecheckout_faf7133064ec9dc6bf27fd5c8c95c054'] = 'Wersja pamięci podręcznej PS JS';
$_MODULE['<{thecheckout}prestashop>thecheckout_4c78c10b2395a12d88628daa7bac79d5'] = 'Zwiększ, jeśli zmiany w plikach JS nie są widoczne w procesie zakupowym';
$_MODULE['<{thecheckout}prestashop>thecheckout_7a56b6af5555f2d6126ebbe477efcb6e'] = 'Automatyczne renderowanie PS Checkout wyłączone ';
$_MODULE['<{thecheckout}prestashop>thecheckout_c0497424704d18745b4632286334082c'] = 'Ustaw opcję ps_checkout_auto_render_disabled ';
$_MODULE['<{thecheckout}prestashop>thecheckout_42e6feb7f76e910efcda54034ecc83ce'] = 'Własne style CSS';
$_MODULE['<{thecheckout}prestashop>thecheckout_df327001e4ac7d3d586835d8fa588c44'] = 'Niestandardowy CSS używany w procesie zakupowym';
$_MODULE['<{thecheckout}prestashop>thecheckout_a2122f3de6b6faa3a601d1f85a2df298'] = 'Własny kod JS';
@@ -193,6 +189,14 @@ $_MODULE['<{thecheckout}prestashop>customer-fields_ec24d78ce33048dc73a2b6b1a0690
$_MODULE['<{thecheckout}prestashop>customer-fields_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Wymagane';
$_MODULE['<{thecheckout}prestashop>customer-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]';
$_MODULE['<{thecheckout}prestashop>customer-fields_669202ab0d075ca23040e1abac74ba04'] = '- zarządzane automatycznie -';
$_MODULE['<{thecheckout}prestashop>blocks-layout_a10fb8536bc9d4d3eb2180a2ab24570e'] = 'Edytuj klasy bloków - kliknij, aby rozwinąć';
$_MODULE['<{thecheckout}prestashop>blocks-layout_fe7b2cea70b3d3d0da8d82cf312f1ace'] = 'Pozwala to na dalszą manipulację przy użyciu wstępnie zdefiniowanych klas CSS. Możesz użyć tych predefiniowanych klas:';
$_MODULE['<{thecheckout}prestashop>blocks-layout_6481c22f8022411a6bf1c0ef19b2e42b'] = 'Ustaw liczbę dla bloku:';
$_MODULE['<{thecheckout}prestashop>blocks-layout_bdadd7083181526ea914a5d2ee44906a'] = 'Ustaw blok niewidoczny:';
$_MODULE['<{thecheckout}prestashop>blocks-layout_f4fd334279b439bb2497de073113cbc9'] = 'Ustaw pozycję bloku na urządzeniu mobilnym (właściwość \'order\' flexbox)';
$_MODULE['<{thecheckout}prestashop>blocks-layout_ebb4e560b49135dbdd2ed94a066ca1ff'] = 'Ustaw blok koszyka na tryb przyklejenia kolumny';
$_MODULE['<{thecheckout}prestashop>blocks-layout_2d8f76f3ce5cc381926d3c3b456c075e'] = 'Usuń nagłówek z bloku (np. adresu).';
$_MODULE['<{thecheckout}prestashop>blocks-layout_f2fb8719eae0b02799b90a6e2d0d1a08'] = 'Możesz też użyć niestandardowych klas zdefiniowanych w dowolnym miejscu w CSS, np.';
$_MODULE['<{thecheckout}prestashop>address-fields_7c0ce662f121e2b553cf8733d73f7bd5'] = 'Zmiana kolejności';
$_MODULE['<{thecheckout}prestashop>address-fields_eff88d54854b0637031f4066736623bc'] = 'Nazwa pola';
$_MODULE['<{thecheckout}prestashop>address-fields_ec24d78ce33048dc73a2b6b1a0690192'] = 'Widoczne';
@@ -200,69 +204,58 @@ $_MODULE['<{thecheckout}prestashop>address-fields_b651efdb98a5d6bd2b3935d0c3f4a5
$_MODULE['<{thecheckout}prestashop>address-fields_955ad3298db330b5ee880c2c9e6f23a0'] = 'Dynamiczne';
$_MODULE['<{thecheckout}prestashop>address-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]';
$_MODULE['<{thecheckout}prestashop>address-fields_669202ab0d075ca23040e1abac74ba04'] = '- zarządzane automatycznie -';
$_MODULE['<{thecheckout}prestashop>blocks-layout_a10fb8536bc9d4d3eb2180a2ab24570e'] = 'Edytuj klasy bloków - kliknij, aby rozwinąć';
$_MODULE['<{thecheckout}prestashop>blocks-layout_fe7b2cea70b3d3d0da8d82cf312f1ace'] = 'Pozwala to na dalszą manipulację przy użyciu wstępnie zdefiniowanych klas CSS. Możesz użyć tych predefiniowanych klas:';
$_MODULE['<{thecheckout}prestashop>blocks-layout_6481c22f8022411a6bf1c0ef19b2e42b'] = 'Ustaw liczbę dla bloku:';
$_MODULE['<{thecheckout}prestashop>blocks-layout_bdadd7083181526ea914a5d2ee44906a'] = 'Ustaw blok niewidoczny:';
$_MODULE['<{thecheckout}prestashop>blocks-layout_f4fd334279b439bb2497de073113cbc9'] = 'Ustaw pozycję bloku na urządzeniu mobilnym (właściwość \'order\' flexbox)';
$_MODULE['<{thecheckout}prestashop>blocks-layout_ebb4e560b49135dbdd2ed94a066ca1ff'] = 'Ustaw blok koszyka na tryb przyklejenia do kolumny';
$_MODULE['<{thecheckout}prestashop>blocks-layout_2d8f76f3ce5cc381926d3c3b456c075e'] = 'Usuń nagłówek z bloku (np. adresu) ';
$_MODULE['<{thecheckout}prestashop>blocks-layout_f2fb8719eae0b02799b90a6e2d0d1a08'] = 'Możesz też użyć niestandardowych klas zdefiniowanych w dowolnym miejscu w CSS, np.';
$_MODULE['<{thecheckout}prestashop>front_4cc5d65de5302609630b8185d99d16bb'] = 'Wprowadź siedmiocyfrowy kod SDI. Wpisz siedem razy zero (0000000), jeśli nie masz kodu SDI';
$_MODULE['<{thecheckout}prestashop>front_007d68b97afe3a874a17fbae7c4b90c0'] = 'Po potwierdzeniu formularza pojawi się okienko płatności';
$_MODULE['<{thecheckout}prestashop>front_ad92169e95e13b3fcd8bad5afedbd49b'] = 'Błąd weryfikacji';
$_MODULE['<{thecheckout}prestashop>front_9c4164c072282c2ab419a843347ad7e2'] = 'Tryb testowy jest włączony, widoczny jest tylko moduł Zamówienie.';
$_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'Ok, zamknij';
$_MODULE['<{thecheckout}prestashop>front_007d68b97afe3a874a17fbae7c4b90c0'] = 'Po potwierdzeniu formularza pojawi się wyskakujące okienko dotyczące płatności';
$_MODULE['<{thecheckout}prestashop>front_ad92169e95e13b3fcd8bad5afedbd49b'] = 'Błąd walidacji';
$_MODULE['<{thecheckout}prestashop>front_9c4164c072282c2ab419a843347ad7e2'] = 'Tryb testowy jest włączony, tylko Ty widzisz aktywny moduł Kasa.';
$_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'OK, zamknij';
$_MODULE['<{thecheckout}prestashop>front_0557fa923dcee4d0f86b1409f5c2167f'] = 'Z powrotem';
$_MODULE['<{thecheckout}prestashop>front_300225ee958b6350abc51805dab83c24'] = 'Kontynuować zakupy';
$_MODULE['<{thecheckout}prestashop>front_c290a5941ad6eb0d5fe8752c15c5fd78'] = 'Następny krok';
$_MODULE['<{thecheckout}prestashop>front_0009f88d4eb5a6f588108ce3d45ea1a4'] = 'Potwierdź i pokaż płatności';
$_MODULE['<{thecheckout}prestashop>payment_0da0a5ab420b2906c2c3c593d6d78647'] = 'Prosimy wybrać metodę płątności';
$_MODULE['<{thecheckout}prestashop>payment_63a2cc551776bf22869f963c36a65eb9'] = 'Aby zobaczyć opcje płatności, wybierz kraj dostawy';
$_MODULE['<{thecheckout}prestashop>payment_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz swoje:';
$_MODULE['<{thecheckout}prestashop>payment_ab7f27fdc4aa0e21f532b9c4dd0c3a6a'] = 'Podaj swój adres e-mail, aby zobaczyć opcje płatności';
$_MODULE['<{thecheckout}prestashop>payment_6c7061d2fea6be43ad4fcfe3eabc7ca3'] = 'Zapisz swoje dane osobowe, aby zobaczyć opcje płatności';
$_MODULE['<{thecheckout}prestashop>payment_348a68af11d3c251c25d1d905867773d'] = 'Inne opcje płatności';
$_MODULE['<{thecheckout}prestashop>account_2fdfd506efea08144c0794c32ca8250a'] = 'Utwórz konto';
$_MODULE['<{thecheckout}prestashop>account_b4e68ab758cc4e36a043a7bdb418c062'] = 'Zapisz dane osobowe';
$_MODULE['<{thecheckout}prestashop>shipping_8797ca7dc4de41ee400665f53c842a42'] = 'Proszę wybrać sposób dostawy';
$_MODULE['<{thecheckout}prestashop>shipping_76d5f66dd7c64439d8f886935db5ed58'] = 'Aby zobaczyć opcje wysyłki, wybierz kraj dostawy';
$_MODULE['<{thecheckout}prestashop>shipping_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz swoje:';
$_MODULE['<{thecheckout}prestashop>shipping_7c5b66448b4e626068a036ef408c336d'] = 'Podaj swój adres e-mail, aby zobaczyć opcje wysyłki';
$_MODULE['<{thecheckout}prestashop>shipping_2690c48fe8919c089ddbefe036492a1b'] = 'Zapisz swoje dane osobowe, aby zobaczyć opcje wysyłki';
$_MODULE['<{thecheckout}prestashop>shipping_f2b4f5787d9c6797725ff6c2924c8f28'] = 'Inne opcje wysyłki';
$_MODULE['<{thecheckout}prestashop>confirm_8e021690c587eb788d4caf0d6f6784b0'] = 'Proszę zaakceptować regulamin sklepu';
$_MODULE['<{thecheckout}prestashop>confirm_dcd2f414067d31441432886d40f1adcc'] = 'Wystąpił błąd w formularzu procesu zakupowego, proszę wprowadzić poprawki';
$_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = 'lub';
$_MODULE['<{thecheckout}prestashop>login-form_d7085e2b5b40144896a996a297e3847d'] = 'Zaloguj się z Facebook';
$_MODULE['<{thecheckout}prestashop>login-form_03350966af02d441ef43f9a56c35c5c9'] = 'Zalogowanie się powiodło, prosimy poczekać...';
$_MODULE['<{thecheckout}prestashop>login-form_0aaac8b981bdf916d2060a424690dff1'] = 'Nowy klient lub gość do kasy? Zacznij od e-maila.';
$_MODULE['<{thecheckout}prestashop>login-form_8c3c555f8e492a991b7d235af1c1a597'] = 'Kontynuuj >';
$_MODULE['<{thecheckout}prestashop>login-form_9fc096a9da7670b366f6bc91c3ca3935'] = 'Proszę podać swój adres e-mail, aby kontynuować składanie zamówienia.';
$_MODULE['<{thecheckout}prestashop>address-invoice_1fbc7e5f1b92c7ec072397b59a0bb5da'] = 'Adres faktury';
$_MODULE['<{thecheckout}prestashop>address-invoice_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym';
$_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym';
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Dostawa pod inny adres';
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Adres dostawy';
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Zmiana adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym';
$_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym';
$_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Faktura na inny adres';
$_MODULE['<{thecheckout}prestashop>shipping_8797ca7dc4de41ee400665f53c842a42'] = 'Proszę wybrać sposób dostawy';
$_MODULE['<{thecheckout}prestashop>shipping_76d5f66dd7c64439d8f886935db5ed58'] = 'Wybierz kraj wysyłki, aby zobaczyć opcje wysyłki';
$_MODULE['<{thecheckout}prestashop>shipping_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz:';
$_MODULE['<{thecheckout}prestashop>shipping_7c5b66448b4e626068a036ef408c336d'] = 'Podaj swój adres e-mail, aby zobaczyć opcje wysyłki';
$_MODULE['<{thecheckout}prestashop>shipping_2690c48fe8919c089ddbefe036492a1b'] = 'Zapisz swoje dane osobowe, aby móc zobaczyć opcje wysyłki ';
$_MODULE['<{thecheckout}prestashop>shipping_f2b4f5787d9c6797725ff6c2924c8f28'] = 'Inne opcje wysyłki';
$_MODULE['<{thecheckout}prestashop>account_2fdfd506efea08144c0794c32ca8250a'] = 'Utwórz konto';
$_MODULE['<{thecheckout}prestashop>account_b4e68ab758cc4e36a043a7bdb418c062'] = 'Zapisz dane personalne';
$_MODULE['<{thecheckout}prestashop>address-invoice_1fbc7e5f1b92c7ec072397b59a0bb5da'] = 'Adres faktury';
$_MODULE['<{thecheckout}prestashop>address-invoice_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym';
$_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym ';
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Dostawa pod inny adres';
$_MODULE['<{thecheckout}prestashop>confirm_8e021690c587eb788d4caf0d6f6784b0'] = 'Proszę zaakceptować regulamin sklepu';
$_MODULE['<{thecheckout}prestashop>confirm_dcd2f414067d31441432886d40f1adcc'] = 'Wystąpił błąd w formularzu procesu zakupowego, proszę wprowadzić poprawki';
$_MODULE['<{thecheckout}prestashop>payment_0da0a5ab420b2906c2c3c593d6d78647'] = 'Prosimy wybrać metodę płatności';
$_MODULE['<{thecheckout}prestashop>payment_63a2cc551776bf22869f963c36a65eb9'] = 'Wybierz kraj, aby zobaczyć opcje płatności';
$_MODULE['<{thecheckout}prestashop>payment_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz:';
$_MODULE['<{thecheckout}prestashop>payment_ab7f27fdc4aa0e21f532b9c4dd0c3a6a'] = 'Podaj swój adres e-mail, aby zobaczyć opcje płatności';
$_MODULE['<{thecheckout}prestashop>payment_6c7061d2fea6be43ad4fcfe3eabc7ca3'] = 'Zapisz swoje dane osobowe, aby zobaczyć opcje płatności ';
$_MODULE['<{thecheckout}prestashop>payment_348a68af11d3c251c25d1d905867773d'] = 'Inne opcje płatności';
$_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = 'lub';
$_MODULE['<{thecheckout}prestashop>login-form_d7085e2b5b40144896a996a297e3847d'] = 'Zaloguj się z Facebook';
$_MODULE['<{thecheckout}prestashop>login-form_03350966af02d441ef43f9a56c35c5c9'] = 'Zalogowanie się powiodło, prosimy poczekać...';
$_MODULE['<{thecheckout}prestashop>login-form_0aaac8b981bdf916d2060a424690dff1'] = 'Nowy klient lub gość? Zacznij od adresu e-mail.';
$_MODULE['<{thecheckout}prestashop>login-form_8c3c555f8e492a991b7d235af1c1a597'] = 'Kontynuuj >';
$_MODULE['<{thecheckout}prestashop>login-form_9fc096a9da7670b366f6bc91c3ca3935'] = 'Podaj swój adres e-mail, aby kontynuować składanie zamówienia.';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_4d26a4e106aa8a35f25d97fd14055981'] = 'Wybierz hasło, aby utworzyć konto i zaoszczędzić czas przy następnym zamówieniu (opcjonalnie)';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Brakuje numeru a adresie';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Twoja nazwa ulicy 14';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_8da8e55074b9f89a5b479a6d8c6e5dc2'] = '0911235669';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(opcjonalne)';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_4d26a4e106aa8a35f25d97fd14055981'] = 'Wybierz hasło, aby założyć konto i zaoszczędzić czas przy kolejnym zamówieniu (opcjonalnie)';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Brakuje numeru ulicy?';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(opcjonalny)';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_3389dae361af79b04c9c8e7057f60cc6'] = '*';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_d4d77380dc0608bac380eaec9c1eab36'] = 'Na stanie u dostawcy';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_b55197a49e8c4cd8c314bc2aa39d6feb'] = 'Brak na stanie';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_e71a03592770c34aa4164b8212098563'] = 'Dostępny na magazynie';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_dc6c32f4320d95f02c77e4fc7b7ea6e5'] = 'szt.';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_752b5c9d86a955c013daa3ccf2241386'] = 'Pozostała ilość w ';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_2e152f4c9e8cba38f50ca76ebe1ac0ef'] = 'Prosimy dostosować ilość';
$_MODULE['<{thecheckout}prestashop>payment-confirmation-button_99938b17c91170dfb0c2f3f8bc9f2a85'] = 'Zapłać';
$_MODULE['<{thecheckout}prestashop>customer-addresses-dropdown_7d807ccbace31aa0bbf0d41099c75099'] = 'Zapisane adresy:';
$_MODULE['<{thecheckout}prestashop>customer-addresses-dropdown_03c2e7e41ffc181a4e84080b4710e81e'] = 'Nowy';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_38c118edcf699e74f48cc943c4250c92'] = 'Pozostała kwota do darmowej wysyłki:';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_8797ca7dc4de41ee400665f53c842a42'] = 'Wybierz metodę wysyłki';
$_MODULE['<{thecheckout}prestashop>payment-confirmation-button_99938b17c91170dfb0c2f3f8bc9f2a85'] = 'Płacić';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_d4d77380dc0608bac380eaec9c1eab36'] = 'W magazynie dostawcy';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_b55197a49e8c4cd8c314bc2aa39d6feb'] = 'Obecnie brak na stanie';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_e71a03592770c34aa4164b8212098563'] = 'Tylko w magazynie';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_dc6c32f4320d95f02c77e4fc7b7ea6e5'] = 'szt.';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_752b5c9d86a955c013daa3ccf2241386'] = 'Pozostałe szt. w';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_2e152f4c9e8cba38f50ca76ebe1ac0ef'] = 'Proszę dostosować ilość';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_38c118edcf699e74f48cc943c4250c92'] = 'Pozostała kwota, aby skorzystać z bezpłatnej wysyłki:';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_8797ca7dc4de41ee400665f53c842a42'] = 'Proszę wybrać sposób dostawy';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_d3487ff3db8ee621475532d31c533e88'] = 'Waga całkowita';

View File

@@ -2,34 +2,47 @@
global $_MODULE;
$_MODULE = array();
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Req. checkbox number one';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Req. checkbox number two';
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Upss, že by překlep? Zkuste to ještě jednou.';
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Required Checkbox No.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Required Checkbox No.2';
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Upss, že by preklep? Skúste to znovu prosím.';
$_MODULE['<{thecheckout}prestashop>front_007d68b97afe3a874a17fbae7c4b90c0'] = 'Po potvrdení formulára sa zobrazí okno platby';
$_MODULE['<{thecheckout}prestashop>front_ad92169e95e13b3fcd8bad5afedbd49b'] = 'Validačná chyba';
$_MODULE['<{thecheckout}prestashop>front_9c4164c072282c2ab419a843347ad7e2'] = 'Test mód aktívny, len Vy vidíte TheCheckout modul';
$_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'OK, zatvoriť';
$_MODULE['<{thecheckout}prestashop>front_0557fa923dcee4d0f86b1409f5c2167f'] = 'Naspäť';
$_MODULE['<{thecheckout}prestashop>front_300225ee958b6350abc51805dab83c24'] = 'Pokračovať v nákupe';
$_MODULE['<{thecheckout}prestashop>front_c290a5941ad6eb0d5fe8752c15c5fd78'] = 'Ďalší krok';
$_MODULE['<{thecheckout}prestashop>front_0009f88d4eb5a6f588108ce3d45ea1a4'] = 'Potvrdiť a zobraziť spôsoby platby';
$_MODULE['<{thecheckout}prestashop>payment_0da0a5ab420b2906c2c3c593d6d78647'] = 'Prosím vyberte spôsob platby';
$_MODULE['<{thecheckout}prestashop>payment_63a2cc551776bf22869f963c36a65eb9'] = 'Pre zobrazenie spôsobov platieb, prosím vyberte krajinu doručenia';
$_MODULE['<{thecheckout}prestashop>payment_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Začíname, prosím zadajte:';
$_MODULE['<{thecheckout}prestashop>payment_ab7f27fdc4aa0e21f532b9c4dd0c3a6a'] = 'Pre zobrazenie spôsobov platieb, prosím zadajte Váš email';
$_MODULE['<{thecheckout}prestashop>payment_6c7061d2fea6be43ad4fcfe3eabc7ca3'] = 'Pre zobrazenie možností platby, uložte najprv svoje osobné údaje';
$_MODULE['<{thecheckout}prestashop>payment_348a68af11d3c251c25d1d905867773d'] = 'Ďalšie možnosti platby';
$_MODULE['<{thecheckout}prestashop>account_2fdfd506efea08144c0794c32ca8250a'] = 'Vytvoriť účet';
$_MODULE['<{thecheckout}prestashop>account_b4e68ab758cc4e36a043a7bdb418c062'] = 'Uložiť osobné údaje';
$_MODULE['<{thecheckout}prestashop>shipping_8797ca7dc4de41ee400665f53c842a42'] = 'Prosím vyberte spôsob dopravy';
$_MODULE['<{thecheckout}prestashop>shipping_76d5f66dd7c64439d8f886935db5ed58'] = 'Pre zobrazenie spôsobov dopravy, prosím vyberte krajinu doručenia';
$_MODULE['<{thecheckout}prestashop>shipping_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Začíname, prosím zadajte:';
$_MODULE['<{thecheckout}prestashop>shipping_7c5b66448b4e626068a036ef408c336d'] = 'Pre zobrazenie spôsobov dopravy, prosím zadajte Váš email';
$_MODULE['<{thecheckout}prestashop>shipping_2690c48fe8919c089ddbefe036492a1b'] = 'Pre zobrazenie možností dopravy, uložte najprv svoje osobné údaje';
$_MODULE['<{thecheckout}prestashop>shipping_f2b4f5787d9c6797725ff6c2924c8f28'] = 'Ďalšie možnosti dopravy';
$_MODULE['<{thecheckout}prestashop>confirm_8e021690c587eb788d4caf0d6f6784b0'] = 'Prosím prijmite všeobecné obchodné podmienky';
$_MODULE['<{thecheckout}prestashop>confirm_dcd2f414067d31441432886d40f1adcc'] = 'Vyskytli sa chybu na formulári, prosím skontrolujte a opravte';
$_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = '--';
$_MODULE['<{thecheckout}prestashop>login-form_d7085e2b5b40144896a996a297e3847d'] = 'Prihlásiť sa cez Facebook';
$_MODULE['<{thecheckout}prestashop>login-form_95aacd4d4ac87524cfc63d9cc94c008e'] = 'Prihlásiť sa cez Google';
$_MODULE['<{thecheckout}prestashop>login-form_03350966af02d441ef43f9a56c35c5c9'] = 'Prihlásenie úspešné, presmerovanie na objednávku...';
$_MODULE['<{thecheckout}prestashop>login-form_0aaac8b981bdf916d2060a424690dff1'] = 'Nový zákazník alebo objednávka ako hosť? Začnite zadaním emailu.';
$_MODULE['<{thecheckout}prestashop>login-form_8c3c555f8e492a991b7d235af1c1a597'] = 'Pokračovať >';
$_MODULE['<{thecheckout}prestashop>login-form_9fc096a9da7670b366f6bc91c3ca3935'] = 'Prosím zadajte Váš email pre pokračovanie v objednávke.';
$_MODULE['<{thecheckout}prestashop>address-invoice_1fbc7e5f1b92c7ec072397b59a0bb5da'] = 'Fakturačná adresa';
$_MODULE['<{thecheckout}prestashop>address-invoice_aca89f3de809fc6630068ad413c20f8c'] = 'Firemný zákazník';
$_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da789'] = 'Súkromný zákazník - spotrebiteľ';
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Doručiť na inú adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Doručovacia adresa';
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Zmeniť adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Firemný zákazník';
$_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Súkromný zákazník - spotrebiteľ';
$_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Fakturačná adresa je iná';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Nechýba číslo ulice?';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Trnavská cesta 92';
@@ -43,4 +56,6 @@ $_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_e71a03592770c34aa4
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_dc6c32f4320d95f02c77e4fc7b7ea6e5'] = 'ks.';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_752b5c9d86a955c013daa3ccf2241386'] = 'Zvyšné ks. o';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_2e152f4c9e8cba38f50ca76ebe1ac0ef'] = 'Prosím upravte množstvo';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_38c118edcf699e74f48cc943c4250c92'] = 'Zostávajúca suma na získanie bezplatnej dopravy:';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_8797ca7dc4de41ee400665f53c842a42'] = 'Prosím vyberte spôsob dopravy';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_d3487ff3db8ee621475532d31c533e88'] = 'Celková hmotnosť';

View File

@@ -20,9 +20,10 @@
color: #a458ff;
}
.page-content .checkout-block .inner-area .offer-login a,
body#checkout .page-content .checkout-block .inner-area .offer-login a,
.checkout-block .inner-area .offer-login a:hover,
.has-discount .discount {
.has-discount .discount,
.reassurance-section>.icon::after {
background-color: #a458ff;
}

View File

@@ -69,12 +69,14 @@
}
.is-empty-cart #tc-container,
.is-empty-cart #tc-container-mobile {
.is-empty-cart #tc-container-mobile,
.is-empty-cart .prev-next-container {
display: none;
}
.checkout-block {
margin: 0;
padding: 10px 3px;
}
.checkout-block .inner-area {
@@ -221,15 +223,15 @@ a.custom-link:hover {
border-bottom: 1px solid #2fb5d2;
}
.business-customer,
.private-customer {
padding: 0 0 15px;
}
//.business-customer,
//.private-customer {
// padding: 0 0 15px;
//}
// put .private-customer checkbox closer to .business-customer if both are visible
.business-customer ~ .private-customer {
margin-top: -15px;
}
//.business-customer ~ .private-customer {
// margin-top: -15px;
//}
#i_am_business[disabled=disabled], #i_am_business[disabled=disabled] ~ label,
#i_am_private[disabled=disabled], #i_am_private[disabled=disabled] ~ label {
@@ -296,7 +298,8 @@ form.hidden {
}
.card-block.block-promo {
padding: 10px 0;
padding-top: 0;
padding-bottom: 0;
}
.cart-grid.row {
@@ -384,6 +387,20 @@ div#thecheckout-address-invoice {
margin: -2px 0 20px;
}
.notice-msg {
text-align: left;
font-style: italic;
background: #fcffe7;
color: green;
padding: 10px 5px;
margin: -2px 0 20px;
}
// Do not display notice if error is shown on the same field
.-error.-notice ~ .notice-msg {
display: none;
}
.error-msg.visible {
display: block;
}
@@ -393,6 +410,11 @@ div#thecheckout-address-invoice {
margin-top: 1px;
}
.-error > .error-msg {
display: block;
margin-top: 1px;
}
.error-msg #sign-in-link {
margin: 0 10px;
padding: 0 3px;
@@ -414,6 +436,7 @@ body#checkout span.custom-checkbox,
body#checkout span.custom-checkbox span {
position: relative;
//flex: unset;
margin-top: 0.15rem;
}
body#checkout .custom-checkbox span.label {
@@ -423,19 +446,6 @@ body#checkout .custom-checkbox span.label {
flex-grow: 1;
}
body#checkout span.custom-checkbox > label,
body#checkout .condition-label{
padding-left: 0;
margin-top: 0.1rem;
}
@supports (display: flex) {
span.custom-checkbox {
display: flex;
align-items: flex-start;
}
}
#conditions-to-approve span.custom-checkbox,
#conditions-to-approve ul,
.condition-label {
@@ -488,10 +498,6 @@ span.custom-radio {
margin-top: 5px;
}
.custom-checkbox span.label {
text-align: left;
}
.payment-option-fee.hidden {
display: none;
}
@@ -562,43 +568,77 @@ button#confirm_order:disabled {
.delivery-option > label > .row {
margin: 0;
text-align: left;
display: block;
}
.delivery-option > label > .row > div > .row > div {
padding: 0;
}
.delivery-option-detail > .row {
display: flex;
}
.delivery-option > label,
.payment-option > label{
margin-bottom: 0;
display: flex;
align-items: center;
}
.payment-option, .delivery-option {
padding-top: 5px;
padding-bottom: 5px;
}
.delivery-option-detail {
display: flex;
flex-grow: 1;
margin: 0;
position: relative;
}
.delivery-option-logo img {
max-height: 100%;
max-width: ~"calc(100% - 10px)"; // because of Less syntax
margin-right: 10px;
}
// Absolute positioned shipping logo (to save space) - replaced on 8.11.2023 with logo on the left
//.delivery-option .delivery-option-logo img {
// max-height: 100%;
// max-width: 100%;
// margin-left: 10px;
//}
//.delivery-option-label.has-logo {
// .delivery-option-name, .delivery-option-delay {
// margin-right: 50px;
// }
//}
.delivery-option-logo {
position: absolute;
right: 10px;
width: 50px;
height: 50px;
max-width: 70px;
}
.delivery-option .delivery-option-logo img {
max-height: 100%;
max-width: 100%;
margin-left: 10px;
}
.delivery-option-label.has-logo {
.delivery-option-name, .delivery-option-delay {
margin-right: 50px;
.delivery-option-price {
&.free {
.carrier-price-with-tax-formatted {
display: none;
}
}
&:not(.free) {
.carrier-price {
display: none;
}
}
}
.delivery-option-price .carrier-price-without-tax-formatted {
display: none;
}
.delivery-option-detail .name-and-delay {
flex-grow: 1;
}
.delivery-options .row.delivery-option {
margin: 0;
line-height: 1.5;
display: flex;
flex-wrap: wrap;
flex-wrap: nowrap;
}
label.delivery-option-label {
@@ -989,23 +1029,18 @@ label.required:before {
.already-account-label {
flex-basis: 100%;
color: #000;
}
.classic-login, .social-login {
display: inline-block;
position: relative;
}
.social-login {
padding-top: 25px
}
.classic-login {
margin-left: 20px;
display: flex;
flex-direction: column;
justify-content: center;
padding-left: 125px;
}
/**
@@ -1111,7 +1146,7 @@ label.required:before {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
opacity: 0.8;
//opacity: 0.8;
display: none;
}
@@ -1136,7 +1171,7 @@ span.social-logo > span {
.tc-social-login-btn .social-logo {
position: absolute;
display: inline-block;
border-right: 1px solid rgba(0, 0, 0, 0.2);
//border-right: 1px solid rgba(0, 0, 0, 0.2);
left: 0;
padding: 6px 6px 6px 5px;
top: 1px;
@@ -1174,37 +1209,41 @@ span.social-logo > span {
}
/* Social style: Light */
.social-btn-style-light .google-logo {
.tc-social-login-btn .google-logo {
.google-logo-official;
}
.social-btn-style-light .facebook-logo {
.tc-social-login-btn .facebook-logo {
.facebook-logo-official;
}
.social-btn-style-light #tc-facebook-signin {
.tc-social-login-btn #tc-facebook-signin {
background-color: white;
}
.social-btn-style-light #tc-facebook-signin:hover {
background-color: #eee;
#tc-facebook-signin:hover {
border-color: #d2e3fc;
background-color: #f8faff;
}
.social-btn-style-light #tc-google-signin {
.tc-social-login-btn #tc-google-signin {
background-color: white;
}
.social-btn-style-light #tc-google-signin:hover {
.tc-social-login-btn #tc-google-signin:hover {
background-color: #eee;
}
.social-btn-style-light .tc-social-login-btn {
color: #666;
border: 1px solid #ccc;
padding: 10px 11px 9px 45px;
.tc-social-login-btn {
color: #3c4043;
border: 1px solid #dadce0;
padding: 10px 11px 9px 40px;
font-size: 12px;
font-family: "Roboto", sans-serif;
font-weight: 500;
}
.social-btn-style-light .tc-social-login-btn .social-logo {
.tc-social-login-btn .social-logo {
padding: 8px 7px 7px 8px
}
@@ -1311,7 +1350,7 @@ span.social-logo > span {
background: #e9e9e9;
box-shadow: 0 4px 4px -4px #9b9b9b;
border-radius: 5px;
margin: -4px;
margin: 0 -4px;
}
.popup-body {
@@ -1609,8 +1648,32 @@ a.edit-customer-info {
padding: 1px;
}
body#checkout .condition-label {
padding-left: 0;
margin-top: 0;
& > label {
margin-bottom: 0;
}
}
/* Only for Chromium and Firefox; IE11 does not support feature query @supports, so it won't evaluate */
@supports (display: flex) {
body#checkout span.custom-checkbox {
display: flex;
align-items: flex-start;
& span {
top: 0;
margin: 0 5px 0 0;
}
& > label, & span.label {
margin: 0;
line-height: 1.25em;
text-align: left;
padding: 0;
}
}
.form-fields, .business-fields-container, .private-fields-container {
display: flex;
flex-wrap: wrap;
@@ -1619,12 +1682,37 @@ a.edit-customer-info {
flex-basis: 100%;
}
.form-group {
padding-left: 5px;
padding-right: 5px;
.form-group, .business-customer, .private-customer, .second-address, .order-options, .terms-and-conditions, .shaim_gdpr_checkbox {
//padding-left: 5px;
//padding-right: 5px;
flex-grow: 1;
flex-basis: 100%;
}
.terms-and-conditions {
text-align: left;
}
}
body#checkout .condition-label {
margin-left: 5px;
& label {
margin-top: 1px;
}
}
body#checkout div.shaim_heureka_checkbox {
margin-left: 26px;
text-align: left;
& label {
margin-top: 1px;
}
}
@media screen and (max-width: 767px) {
.form-group, .business-customer, .private-customer, .second-address, .order-options, .terms-and-conditions, .shaim_gdpr_checkbox {
padding-left: 0;
}
}
/* Debug: flash block that's re-loading data */
@@ -1735,6 +1823,7 @@ div#tc-container-mobile {
.social-login .tc-social-login-btn {
max-width: 100%;
width: 240px;
}
/* Column-responsive styles for login-block BEGIN */
@@ -1821,7 +1910,6 @@ body.is-virtual-cart.is-invoice-address-primary .checkout-block .second-address
#tc-container .form-group {
overflow: visible;
margin-bottom: 10px;
}
// Sticky block
@@ -1840,11 +1928,6 @@ body.is-virtual-cart.is-invoice-address-primary .checkout-block .second-address
max-width: 100%;
}
.payment-option label {
padding-top: 5px;
line-height: 1.5em;
}
.cart-summary-line.cart-total.cart-total-tax-included > span,
.cart-summary-line.cart-total.cart-total-auto-tax > span {
font-size: 1.2em;
@@ -1883,7 +1966,7 @@ body.is-test-mode #is-test-mode-notice {
border: 1px solid black;
animation: collapse-smaller .6s forwards;
animation-delay: 5s;
z-index: 100;
z-index: 1000;
}
@keyframes collapse-smaller {
@@ -1933,82 +2016,79 @@ body.is-test-mode #is-test-mode-notice {
// Test mode notice box END
// Compact cart styling (only desktop view) BEGIN
body.compact-cart #tc-container .product-line-image img {
max-width: 100px;
}
body.compact-cart {
#tc-container {
.product-line-image img {
max-width: 100px;
}
body.compact-cart #tc-container .cart-item .product-line {
//display: block;
min-height: 100px;
}
.cart-item .product-line {
//display: block;
min-height: 100px;
}
.cart-item .product-line-info {
width: 100%;
}
body.compact-cart #tc-container .cart-item .product-line-info {
width: 100%;
}
.product-line-info.product-price.h5 {
display: none;
}
//body.compact-cart #tc-container .product-line .product-line-image {
// float: left;
//}
.product-line-actions {
align-items: center;
padding-top: 5px;
margin-top: 5px;
}
body.compact-cart #tc-container .product-line-info.product-price.h5 {
display: none;
}
.product-line-info .label {
font-size: 0.8em;
line-height: 1em;
}
body.compact-cart #tc-container .product-line-actions {
align-items: center;
padding-top: 5px;
//border: 1px solid #f5f5f5;
//background: #fafafa;
margin-top: 5px;
}
.product-line-info.product-attribute {
font-size: 0.9em;
}
body.compact-cart #tc-container .product-line-info .label {
font-size: 0.8em;
line-height: 1em;
}
.cart-item .product-line-info:first-child {
margin-top: 0;
}
body.compact-cart #tc-container .product-line-info.product-attribute {
font-size: 0.9em;
}
.product-line-body {
display: flex;
flex-wrap: wrap;
align-items: center;
}
body.compact-cart #tc-container .cart-item .product-line-info:first-child {
margin-top: 0;
}
.cart-detailed-totals {
width: 100%;
left: 0;
}
body.compact-cart #tc-container .product-line-body {
display: flex;
flex-wrap: wrap;
align-items: center;
}
.qty-container .qty-box {
transform: scale(0.8);
}
body.compact-cart #tc-container .cart-detailed-totals {
width: 100%;
left: 0;
}
.cart-summary-line > span {
font-size: 0.85em;
}
body.compact-cart #tc-container .qty-container .qty-box {
transform: scale(0.8);
}
.block-promo .promo-code {
padding: 10px 5px;
}
body.compact-cart #tc-container .cart-summary-line > span {
font-size: 0.85em;
}
.product-line-actions .product-line-qty {
flex-grow: 5;
text-align: right;
}
body.compact-cart #tc-container .block-promo .promo-code {
padding: 10px 5px;
}
.product-line-actions > div {
line-height: 20px;
}
body.compact-cart #tc-container .product-line-actions .product-line-qty {
flex-grow: 5;
text-align: right;
}
body.compact-cart #tc-container .product-line-actions > div {
line-height: 20px;
}
body.compact-cart #tc-container .product-line-delete {
padding-top: 0;
.product-line-delete {
padding-top: 0;
}
}
}
// Compact cart styling (only desktop view) END
@@ -2339,7 +2419,7 @@ e.g. Amazon has confirmation button inside of additional info */
.lang-rtl.using-material-icons .custom-radio {
margin-right: 0;
margin-left: 10px;
margin-left: 1.25em;
}
.lang-rtl span.carrier-delay {
@@ -2534,7 +2614,7 @@ label.delivery-option-label {
}
*/
.paypal-plus .pp-info {
.paypal-plus .pp-info, div[data-pp-info]{
display: none;
}
@@ -2627,10 +2707,9 @@ div[paypal-bnpl-button-container] {
.remaining-amount {
font-weight: bold;
}
}
/* Fix chronopost's map display - allow it to have wider area */
.delivery-options .row.delivery-option.chronopost {
flex-wrap: wrap;
&.free {
display: none;
}
}
/* Paypal v5.7 fix */
@@ -2777,13 +2856,15 @@ p.toast-title {
}
}
.cart-voucher>p>a.promo-code-button {
border: 0;
.cart-voucher>p>a.promo-code-button.collapsed {
border: 1px dashed #b1adad;
padding: 10px 20px;
background: #a20401;
background: #f5fff7;
display: inline-block;
color: #FFF;
border-radius: 25px;
}
.cart-voucher>p>a.promo-code-button {
display: none;
}
.block-promo {
@@ -2834,6 +2915,11 @@ p.toast-title {
}
}
body:not(.collapse-shipping-methods) #expand_other_shipping_options,
body:not(.collapse-payment-methods) #expand_other_payment_options {
display: none;
}
.expandOtherOptionsVisible() {
max-height: 60px;
opacity: 1;
@@ -2897,7 +2983,7 @@ p.toast-title {
body#checkout .additional-information {
margin-left: 0;
}
.form-group {
.form-group, .shaim_gdpr_checkbox {
padding-left: 0;
}
}
@@ -2961,6 +3047,7 @@ div#vyhledejte_pobocku_dpdparcelshop {
.delivery-options :is(.row.delivery-option.chronopost, .row.delivery-option.dpdfrance) {
flex-wrap: wrap;
display: flex;
.shipping-radio {
flex-basis: 5%;
}
@@ -2969,13 +3056,20 @@ div#vyhledejte_pobocku_dpdparcelshop {
}
#chronorelais_container .row {
flex-wrap: wrap;
display: flex;
& > div {
flex-grow: 1;
flex-basis: 20em;
}
}
input#relais_postcode {
padding-top: 2px;
height: 100%;
padding-bottom: 1px;
}
}
#chronorelais_dummy_container {
display: none;
}
@@ -3054,6 +3148,141 @@ body#checkout .checkout-block .inner-area .login-block-moved .offer-login a {
position: sticky;
top: 0;
}
.form-group.vat_number {
display: none !important;
/* iframe popup for payment methods - by default, iframe popup-embed is not visible, with CSS class .iframe, payment-form shall not be visible */
.popup-body {
iframe.popup-embed {
display: none;
}
.popup-payment-form, .popup-payment-button {
display: block;
}
}
.popup-payment-content.iframe {
width: 50em;
.popup-body {
padding: 0;
}
iframe.popup-embed {
width: 100%;
height: 30em;
display: block;
border: none;
}
.popup-payment-form, .popup-payment-button {
display: none;
}
// Specific height for certain payment methods
&[data-payment-module=ps_checkpayment] .popup-embed {
height: 18em;
}
}
// Add minus sign and change color of discount value in cart summary
div#cart-subtotal-discount > .value:before {
content: '-';
padding-right: 2px;
}
div#cart-subtotal-discount > .value {
color: #dd0000;
}
// Display password field as required, if 'create account' checkbox is ticked
div#create_account ~ .form-group.password .field-label:after {
content: '*';
color: #36b4d2;
}
[name=general_error] ~ .error-msg {
width: 100%;
}
// Paypal pay-later, fix the 'pay later' button visibility
.popup_content[data-payment-module=paypal] .popup-payment-button {
display: flex!important;
justify-content: center;
#payment-confirmation {
display: none!important;
}
#paypal-buttons [paypal-bnpl-button-container] {
display: none!important;
&:last-child {
display: block!important;
}
}
}
/* GLS PakkeShop & Postnord map styling */
.delivery-option > label {
max-width: 100%;
flex-wrap: wrap;
& .shipping_agents, & #map {
width: calc(100% + 40px) !important;
margin-left: -40px
}
}
/* mondialrelay slideDown() sometimes stops at smaller heights, so force it to be auto-height */
.row.carrier-extra-content.mondialrelay {
height: auto!important;
}
.payment-option label {
width: 100%;
}
/* Logos on the right side in shipping/payment listing (config option) */
body.logos-on-the-right {
& .payment-option label {
& .payment-call-to-action-and-logo {
flex-grow: 1;
}
& .payment-logo {
order: 1;
}
}
& .delivery-option-detail {
& .name-and-delay {
flex-grow: 1;
& .delivery-option-price {
display: block!important;
}
}
& .delivery-option-logo {
order: 1;
}
& .delivery-option-price {
display: none;
}
}
}
#checkout .popup-payment-form > .additional-information {
display: flex;
justify-content: center;
}
/* Payment form displayed when T&C checkbox was ticked, but we need to postpone that until popup */
[data-payment-module=ps_checkout] > .js-payment-option-form {
display: none!important;
}
/* Warehouse theme, touchspin on quantity input box made inconvenient blink effect */
.qty-box > .bootstrap-touchspin {
display: none;
& ~ a {
display: none;
}
}
#checkout .popup-payment-form > .przelewy24.additional-information {
flex-flow: column;
}
.cart-summary-line.vat-exempt {
text-align: center;
& > span.label {
color: green;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -82,4 +82,50 @@ div#payment-confirmation .ps-shown-by-js {
.payment-options.amazon_ongoing_session > div:not(.amazon-visible) {
display: none;
}
}
/* generic iframe (only single payment method visible) */
body.p3i-option-set .payment-options > :not(.p3i-visible-only) {
display: none;
}
body.p3i-option-set
:is(section#separate-payment-order-review, header, footer, #conditions-to-approve, h1.step-title),
body.p3i-option-set .cart-grid-body ~ *{
display: none;
}
body.p3i-option-set
:is(.cart-grid-body, #wrapper, .container, #content, .p3i-visible-only),
body.p3i-option-set #checkout-payment-step > .content,
body.p3i-option-set #content .row{
padding: 0!important;
margin: 0!important;
}
body.p3i-option-set
:is(.container, #content, .cart-grid-body, #checkout-payment-step) {
width: 100%;
}
body.p3i-option-set section#checkout-payment-step {
display: flex;
justify-content: center;
padding: 5px;
margin: 0!important;
/*height: 100vh;*/
align-items: center;
}
/* scrollbar begin */
body.p3i-option-set::-webkit-scrollbar {
width: 0.5em;
}
body.p3i-option-set::-webkit-scrollbar-track {
box-shadow: inset 0 0 2px rgb(0 0 0 / 16%);
}
body.p3i-option-set::-webkit-scrollbar-thumb {
background-color: #e0e0e0;
}
/* scrollbar end */

View File

@@ -12,58 +12,61 @@
display: flex;
justify-content: center;
margin-bottom: 15px;
}
& .tc-social-login-btn {
margin: 0 2px;
cursor: not-allowed;
position: relative;
text-align: left;
border-radius: 4px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
color: #3c4043;
border: 1px solid #dadce0;
padding: 11px 11px 8px 40px;
font-size: 14px;
font-family: "Roboto", sans-serif;
font-weight: 500;
max-width: 100%;
width: 240px;
display: none;
&.enabled {
cursor: pointer;
display: inline-block;
}
#tc-social-logins .facebook-logo {
background-image: url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='266.893px' height='266.895px' viewBox='0 0 266.893 266.895' enable-background='new 0 0 266.893 266.895' xml:space='preserve'%3e%3cpath id='Blue_1_' fill='%233C5A99' d='M248.082,262.307c7.854,0,14.223-6.369,14.223-14.225V18.812 c0-7.857-6.368-14.224-14.223-14.224H18.812c-7.857,0-14.224,6.367-14.224,14.224v229.27c0,7.855,6.366,14.225,14.224,14.225 H248.082z'/%3e%3cpath id='f' fill='%23FFFFFF' d='M182.409,262.307v-99.803h33.499l5.016-38.895h-38.515V98.777c0-11.261,3.127-18.935,19.275-18.935 l20.596-0.009V45.045c-3.562-0.474-15.788-1.533-30.012-1.533c-29.695,0-50.025,18.126-50.025,51.413v28.684h-33.585v38.895h33.585 v99.803H182.409z'/%3e%3c/svg%3e");
}
& span.social-logo {
position: absolute;
display: inline-block;
left: 0;
padding: 8px 7px 7px 8px;
top: 1px;
bottom: 1px;
text-align: center;
& .facebook-logo {
background-image: url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='266.893px' height='266.895px' viewBox='0 0 266.893 266.895' enable-background='new 0 0 266.893 266.895' xml:space='preserve'%3e%3cpath id='Blue_1_' fill='%233C5A99' d='M248.082,262.307c7.854,0,14.223-6.369,14.223-14.225V18.812 c0-7.857-6.368-14.224-14.223-14.224H18.812c-7.857,0-14.224,6.367-14.224,14.224v229.27c0,7.855,6.366,14.225,14.224,14.225 H248.082z'/%3e%3cpath id='f' fill='%23FFFFFF' d='M182.409,262.307v-99.803h33.499l5.016-38.895h-38.515V98.777c0-11.261,3.127-18.935,19.275-18.935 l20.596-0.009V45.045c-3.562-0.474-15.788-1.533-30.012-1.533c-29.695,0-50.025,18.126-50.025,51.413v28.684h-33.585v38.895h33.585 v99.803H182.409z'/%3e%3c/svg%3e");
}
.tc-social-login-btn .social-logo {
position: absolute;
display: inline-block;
border-right: 1px solid rgba(0, 0, 0, 0.2);
left: 0;
padding: 7px 7px 7px 8px;
top: 1px;
bottom: 1px;
text-align: center;
}
& > span {
display: inline-block;
width: 21px;
height: 21px;
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
}
}
#tc-social-logins span.social-logo > span {
display: inline-block;
width: 21px;
height: 21px;
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
}
#tc-social-logins .tc-social-login-btn {
margin: 1px 3px 2px;
cursor: not-allowed;
position: relative;
text-align: left;
border-radius: 4px;
font-size: 15px;
width: 250px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
opacity: 0.8;
display: none;
color: #666;
border: 1px solid #ccc;
padding: 9px 11px 8px 45px;
}
#tc-social-logins .tc-social-login-btn.enabled {
cursor: pointer;
display: inline-block;
}
#tc-facebook-signin:hover {
background-color: rgba(66,133,244,.04);
&:hover {
border-color: #d2e3fc;
background-color: #f8faff;
}
}
}

View File

@@ -31,7 +31,8 @@
display: none;
}
.checkout-block.main-block {
.checkout-block.main-block,
#thecheckout-newsletter, #thecheckout-psgdpr, #thecheckout-data-privacy, #thecheckout-confirm, #thecheckout-required-checkbox-1, #thecheckout-required-checkbox-2 {
padding: 15px 7px;
}
@@ -192,7 +193,6 @@ span.non-material-icon.delete-from-cart {
padding-top: 0;
display: flex;
align-items: flex-start;
width: 100%;
}
.payment-options .payment-option {
@@ -244,9 +244,20 @@ span.non-material-icon.delete-from-cart {
filter: brightness(0);
}
body#checkout span.custom-checkbox {
& > label, & span.label {
line-height: 1.05em;
}
}
div#checkout-step-btn-container {
margin-bottom: 5px;
}
.country-call-prefix {
font-size: 1.2em;
width: 49px;
height: 47px;
}
/* einvoicing prestalia */
@@ -268,6 +279,11 @@ label.col-md-3.form-control-label {
max-width: 100%;
}
.form-fields .form-group {
padding-left: 3px;
padding-right: 3px;
}
.col-md-3.form-control-comment {
display: none;
}

View File

@@ -26,7 +26,13 @@
.checkout-block[class*='num-'] .block-header:before {
display: none;
}
.checkout-block.main-block {
.checkout-block.main-block,
#thecheckout-newsletter,
#thecheckout-psgdpr,
#thecheckout-data-privacy,
#thecheckout-confirm,
#thecheckout-required-checkbox-1,
#thecheckout-required-checkbox-2 {
padding: 15px 7px;
}
.has-float-label input:placeholder-shown:not(:focus) ~ span.field-label,
@@ -153,7 +159,6 @@ div.product-line-actions .qty-box a {
padding-top: 0;
display: flex;
align-items: flex-start;
width: 100%;
}
.payment-options .payment-option {
padding: 5px 0;
@@ -194,9 +199,17 @@ div.product-line-actions .qty-box a {
.page-content .custom-checkbox input[type=checkbox]:checked + span {
filter: brightness(0);
}
body#checkout span.custom-checkbox > label,
body#checkout span.custom-checkbox span.label {
line-height: 1.05em;
}
div#checkout-step-btn-container {
margin-bottom: 5px;
}
.country-call-prefix {
font-size: 1.2em;
width: 49px;
height: 47px;
}
/* einvoicing prestalia */
label.col-md-3.form-control-label {
@@ -214,6 +227,10 @@ label.col-md-3.form-control-label {
margin: 0;
max-width: 100%;
}
.form-fields .form-group {
padding-left: 3px;
padding-right: 3px;
}
.col-md-3.form-control-comment {
display: none;
}
@@ -221,4 +238,4 @@ label.col-md-3.form-control-label {
.checkout-block.no-header {
margin-top: -37px;
}
/*# sourceMappingURL=data:application/json,%7B%22version%22%3A3%2C%22sources%22%3A%5B%22home%5C%2Fpeter%5C%2Fwww%5C%2Fpresta_178%5C%2Fmodules%5C%2Fthecheckout%5C%2Fviews%5C%2Fcss%5C%2Fstyles%5C%2Fclean.less%22%5D%2C%22names%22%3A%5B%5D%2C%22mappings%22%3A%22AAAA%3BEACE%3B%3BAAGF%2CeAAe%2CWAAY%3BEACzB%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%3BAAAe%3BEACb%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CYAAa%3BEACX%3B%3BAAGF%2CeAAe%2CeAAgB%2CcAAa%3BEAC1C%3B%3BAAGF%2CeAAe%3BEACb%2CiBAAA%3B%3BAAGF%2CgBAAiB%2CMAAK%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BAAAc%2CgBAAiB%2COAAM%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BEACnI%3BEACA%3BEACA%3B%3BAAGF%2CgBAAgB%2CSAAU%2CKAAI%3BAAAc%2CSAAU%2CiBAAiB%2CKAAI%3BAAAc%2CgBAAiB%2CKAAI%3BEAC5G%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CKAAK%3BEACH%3B%3BAAGF%2CaAAc%3BAAAe%2CaAAc%2COAAM%2CoBAAoB%3BEACnE%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%2CMAAK%3BAAAQ%2CgBAAiB%2COAAM%3BEACnD%2CmCAAA%3B%3BAAGF%2CgBAAiB%2CKAAI%2CoBAAoB%2CIAAI%3BEAC3C%3B%3BAAGF%2CaAAc%2CiBAAiB%2COAAM%3BEACnC%2CgBAAgB%2CiYAAhB%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3B%3B%3BAAMF%2CaAAa%3BEACX%3BEACA%3BEACA%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEACE%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CGAAG%2CqBAAsB%2CSAAS%3BEAEhC%3BEACA%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CqBAAsB%2CSAAS%3BEAC7B%3BEACA%2CyBAAA%3B%3BAAMF%2CqBAAsB%3BEAEpB%3B%3BAAGF%2CaAAc%2CmBAAkB%3BEAC9B%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEAEE%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3B%3BAAGF%2CkBAAmB%3BEACjB%3B%3BAAGF%2CkBAAkB%3BEAChB%3B%3BAAGF%2CUAAW%3BEACT%3B%3BAAGF%3BEACE%2C6BAAA%3B%3BAAGF%2CkBAAkB%2CWAAW%3BEAC3B%2C6BAAA%3BEACA%3B%3BAAGF%2CaAAa%3BEACX%2CcAAA%3B%3BAAGF%3BEACE%3B%3B%3B%3BAAMF%2CeAAgB%3BEACd%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%3BEACf%2CcAAA%3BEACA%3B%3BAAGF%3BEACE%3B%3BAAGF%2CeAAgB%2CMAAM%2CKAAI%3BEACxB%3B%3BAAGF%2CeAAgB%3BEACd%3BEACA%3B%3B%3B%3BAAMF%3BEACE%2CsBAAA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%2CsBAAA%3B%3BAAGF%2CoBAAoB%2CSAAS%3BAAAQ%2CoBAAoB%2CSAAS%3BEAChE%2CSAAS%2CEAAT%3BEACA%3BEACA%3BEACA%2CcAAA%3BEACA%3BEACA%2CgCAAA%3B%3B%3B%3BAAOF%2CaAAc%2CiBAAiB%2CMAAK%2CeAAe%2CQAAW%3BEAC5D%2CQAAQ%2CaAAR%3B%3BAAGF%3BEACE%3BEACA%3B%3B%3BAAIF%2CKAAK%2CSAAS%3BEACV%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%3BEACP%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%2CIAAO%3BEACd%3BEACA%3BEACA%3B%3BAAGJ%2CSAAS%3BEACL%3B%3B%3BAAIJ%2CeAAe%3BEACb%22%7D */
/*# sourceMappingURL=data:application/json,%7B%22version%22%3A3%2C%22sources%22%3A%5B%22home%5C%2Fpeter%5C%2Fwww%5C%2Fpresta_178%5C%2Fmodules%5C%2Fthecheckout%5C%2Fviews%5C%2Fcss%5C%2Fstyles%5C%2Fclean.less%22%5D%2C%22names%22%3A%5B%5D%2C%22mappings%22%3A%22AAAA%3BEACE%3B%3BAAGF%2CeAAe%2CWAAY%3BEACzB%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%3BAAAe%3BEACb%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CYAAa%3BEACX%3B%3BAAGF%2CeAAe%2CeAAgB%2CcAAa%3BEAC1C%3B%3BAAGF%2CeAAe%3BAACf%3BAAAyB%3BAAAqB%3BAAA2B%3BAAAsB%3BAAAkC%3BEAC%5C%2FH%2CiBAAA%3B%3BAAGF%2CgBAAiB%2CMAAK%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BAAAc%2CgBAAiB%2COAAM%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BEACnI%3BEACA%3BEACA%3B%3BAAGF%2CgBAAgB%2CSAAU%2CKAAI%3BAAAc%2CSAAU%2CiBAAiB%2CKAAI%3BAAAc%2CgBAAiB%2CKAAI%3BEAC5G%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CKAAK%3BEACH%3B%3BAAGF%2CaAAc%3BAAAe%2CaAAc%2COAAM%2CoBAAoB%3BEACnE%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%2CMAAK%3BAAAQ%2CgBAAiB%2COAAM%3BEACnD%2CmCAAA%3B%3BAAGF%2CgBAAiB%2CKAAI%2CoBAAoB%2CIAAI%3BEAC3C%3B%3BAAGF%2CaAAc%2CiBAAiB%2COAAM%3BEACnC%2CgBAAgB%2CiYAAhB%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3B%3B%3BAAMF%2CaAAa%3BEACX%3BEACA%3BEACA%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEACE%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CGAAG%2CqBAAsB%2CSAAS%3BEAEhC%3BEACA%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CqBAAsB%2CSAAS%3BEAC7B%3BEACA%2CyBAAA%3B%3BAAMF%2CqBAAsB%3BEAEpB%3B%3BAAGF%2CaAAc%2CmBAAkB%3BEAC9B%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEAEE%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3B%3BAAGF%2CkBAAmB%3BEACjB%3B%3BAAGF%2CkBAAkB%3BEAChB%3B%3BAAGF%2CUAAW%3BEACT%3B%3BAAGF%3BEACE%2C6BAAA%3B%3BAAGF%2CkBAAkB%2CWAAW%3BEAC3B%2C6BAAA%3BEACA%3B%3BAAGF%2CaAAa%3BEACX%2CcAAA%3B%3BAAGF%3BEACE%3B%3B%3B%3BAAMF%2CeAAgB%3BEACd%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%3BEACf%2CcAAA%3BEACA%3B%3BAAGF%3BEACE%3B%3BAAGF%2CeAAgB%2CMAAM%2CKAAI%3BEACxB%3B%3BAAGF%2CeAAgB%3BEACd%3BEACA%3B%3B%3B%3BAAMF%3BEACE%2CsBAAA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%2CsBAAA%3B%3BAAGF%2CoBAAoB%2CSAAS%3BAAAQ%2CoBAAoB%2CSAAS%3BEAChE%2CSAAS%2CEAAT%3BEACA%3BEACA%3BEACA%2CcAAA%3BEACA%3BEACA%2CgCAAA%3B%3B%3B%3BAAOF%2CaAAc%2CiBAAiB%2CMAAK%2CeAAe%2CQAAW%3BEAC5D%2CQAAQ%2CaAAR%3B%3BAAIA%2CIADE%2CSAAU%2CKAAI%2CgBACZ%3BAAAO%2CIADT%2CSAAU%2CKAAI%2CgBACH%2CKAAI%3BEACf%3B%3BAAIJ%2CGAAG%3BEACD%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3B%3B%3BAAIF%2CKAAK%2CSAAS%3BEACV%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%3BEACP%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%2CIAAO%3BEACd%3BEACA%3BEACA%3B%3BAAGJ%2CYAAa%3BEACX%3BEACA%3B%3BAAGF%2CSAAS%3BEACL%3B%3B%3BAAIJ%2CeAAe%3BEACb%22%7D */

View File

@@ -1 +1 @@
{"version":3,"sources":["home\/peter\/www\/presta_178\/modules\/thecheckout\/views\/css\/styles\/clean.less"],"names":[],"mappings":"AAAA;EACE;;AAGF,eAAe,WAAY;EACzB,yBAAA;EACA;EACA;;AAGF;AAAe;EACb;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF,YAAa;EACX;;AAGF,eAAe,eAAgB,cAAa;EAC1C;;AAGF,eAAe;EACb,iBAAA;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAW,OAAI;AAAc,gBAAiB,OAAM,kBAAkB,IAAI,QAAW,OAAI;EACnI;EACA;EACA;;AAGF,gBAAgB,SAAU,KAAI;AAAc,SAAU,iBAAiB,KAAI;AAAc,gBAAiB,KAAI;EAC5G;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,KAAK;EACH;;AAGF,aAAc;AAAe,aAAc,OAAM,oBAAoB;EACnE,yBAAA;EACA;EACA;;AAGF,gBAAiB,MAAK;AAAQ,gBAAiB,OAAM;EACnD,mCAAA;;AAGF,gBAAiB,KAAI,oBAAoB,IAAI;EAC3C;;AAGF,aAAc,iBAAiB,OAAM;EACnC,gBAAgB,iYAAhB;EACA;;AAGF;EACE;EACA;;;AAMF,aAAa;EACX;EACA;EACA;;AAGF,aAAc;EACZ;;AAGF;EACE;EACA;;AAGF,yBAA0B;EACxB;EACA;;AAGF,yBAA0B;EACxB;EACA;EACA;;AAGF,yBAA0B;EACxB;;AAGF,yBAA0B;EACxB;;AAGF,GAAG,qBAAsB,SAAS;EAEhC;EACA,yBAAA;EACA;EACA;;AAGF,qBAAsB,SAAS;EAC7B;EACA,yBAAA;;AAMF,qBAAsB;EAEpB;;AAGF,aAAc,mBAAkB;EAC9B;;AAGF,aAAc;EACZ;;AAGF;EAEE;;AAGF;EACE;EACA;EACA;;AAGF,kBAAmB;EACjB;;AAGF,kBAAkB;EAChB;;AAGF,UAAW;EACT;;AAGF;EACE,6BAAA;;AAGF,kBAAkB,WAAW;EAC3B,6BAAA;EACA;;AAGF,aAAa;EACX,cAAA;;AAGF;EACE;;;;AAMF,eAAgB;EACd;EACA;EACA;EACA;;AAGF,gBAAiB;EACf,cAAA;EACA;;AAGF;EACE;;AAGF,eAAgB,MAAM,KAAI;EACxB;;AAGF,eAAgB;EACd;EACA;;;;AAMF;EACE,sBAAA;EACA;EACA;EACA;;AAGF;EACE,sBAAA;;AAGF,oBAAoB,SAAS;AAAQ,oBAAoB,SAAS;EAChE,SAAS,EAAT;EACA;EACA;EACA,cAAA;EACA;EACA,gCAAA;;;;AAOF,aAAc,iBAAiB,MAAK,eAAe,QAAW;EAC5D,QAAQ,aAAR;;AAGF;EACE;EACA;;;AAIF,KAAK,SAAS;EACV;EACA;EACA;;AAGJ,WAAW;EACP;EACA;EACA;;AAGJ,WAAW,IAAO;EACd;EACA;EACA;;AAGJ,SAAS;EACL;;;AAIJ,eAAe;EACb"}
{"version":3,"sources":["home\/peter\/www\/presta_178\/modules\/thecheckout\/views\/css\/styles\/clean.less"],"names":[],"mappings":"AAAA;EACE;;AAGF,eAAe,WAAY;EACzB,yBAAA;EACA;EACA;;AAGF;AAAe;EACb;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF,YAAa;EACX;;AAGF,eAAe,eAAgB,cAAa;EAC1C;;AAGF,eAAe;AACf;AAAyB;AAAqB;AAA2B;AAAsB;AAAkC;EAC\/H,iBAAA;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAW,OAAI;AAAc,gBAAiB,OAAM,kBAAkB,IAAI,QAAW,OAAI;EACnI;EACA;EACA;;AAGF,gBAAgB,SAAU,KAAI;AAAc,SAAU,iBAAiB,KAAI;AAAc,gBAAiB,KAAI;EAC5G;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,KAAK;EACH;;AAGF,aAAc;AAAe,aAAc,OAAM,oBAAoB;EACnE,yBAAA;EACA;EACA;;AAGF,gBAAiB,MAAK;AAAQ,gBAAiB,OAAM;EACnD,mCAAA;;AAGF,gBAAiB,KAAI,oBAAoB,IAAI;EAC3C;;AAGF,aAAc,iBAAiB,OAAM;EACnC,gBAAgB,iYAAhB;EACA;;AAGF;EACE;EACA;;;AAMF,aAAa;EACX;EACA;EACA;;AAGF,aAAc;EACZ;;AAGF;EACE;EACA;;AAGF,yBAA0B;EACxB;EACA;;AAGF,yBAA0B;EACxB;EACA;EACA;;AAGF,yBAA0B;EACxB;;AAGF,yBAA0B;EACxB;;AAGF,GAAG,qBAAsB,SAAS;EAEhC;EACA,yBAAA;EACA;EACA;;AAGF,qBAAsB,SAAS;EAC7B;EACA,yBAAA;;AAMF,qBAAsB;EAEpB;;AAGF,aAAc,mBAAkB;EAC9B;;AAGF,aAAc;EACZ;;AAGF;EAEE;;AAGF;EACE;EACA;EACA;;AAGF,kBAAmB;EACjB;;AAGF,kBAAkB;EAChB;;AAGF,UAAW;EACT;;AAGF;EACE,6BAAA;;AAGF,kBAAkB,WAAW;EAC3B,6BAAA;EACA;;AAGF,aAAa;EACX,cAAA;;AAGF;EACE;;;;AAMF,eAAgB;EACd;EACA;EACA;;AAGF,gBAAiB;EACf,cAAA;EACA;;AAGF;EACE;;AAGF,eAAgB,MAAM,KAAI;EACxB;;AAGF,eAAgB;EACd;EACA;;;;AAMF;EACE,sBAAA;EACA;EACA;EACA;;AAGF;EACE,sBAAA;;AAGF,oBAAoB,SAAS;AAAQ,oBAAoB,SAAS;EAChE,SAAS,EAAT;EACA;EACA;EACA,cAAA;EACA;EACA,gCAAA;;;;AAOF,aAAc,iBAAiB,MAAK,eAAe,QAAW;EAC5D,QAAQ,aAAR;;AAIA,IADE,SAAU,KAAI,gBACZ;AAAO,IADT,SAAU,KAAI,gBACH,KAAI;EACf;;AAIJ,GAAG;EACD;;AAGF;EACE;EACA;EACA;;;AAIF,KAAK,SAAS;EACV;EACA;EACA;;AAGJ,WAAW;EACP;EACA;EACA;;AAGJ,WAAW,IAAO;EACd;EACA;EACA;;AAGJ,YAAa;EACX;EACA;;AAGF,SAAS;EACL;;;AAIJ,eAAe;EACb"}

View File

@@ -6,8 +6,8 @@
background: white;
}
.input-effects-flash .has-float-label input:focus~.effects-helper::after,
.input-effects-flash .has-float-label select:focus~.effects-helper::after {
.input-effects-flash .has-float-label input:focus ~ .effects-helper::after,
.input-effects-flash .has-float-label select:focus ~ .effects-helper::after {
-webkit-animation: none;
animation: none;
}
@@ -24,14 +24,13 @@
.mark-required .form-group.tel label.required .field-label::after,
.mark-required .form-group.select label.required .field-label::after,
.mark-required .form-group.countrySelect label.required .field-label::after {
color: #a20401;
color: #36b4d2;
}
#wrapper :is(.label, label) {
color: #232323;
text-align: left;
font-size: 13px;
font-weight: 400;
font-size: 13.5px;
}
.form-group.radio-buttons {
@@ -43,10 +42,6 @@
//margin-top: 30px;
}
label {
margin-bottom: 10px;
}
.static-customer-info {
border-bottom: 1px solid transparent;
}
@@ -60,7 +55,7 @@ a.edit-customer-info:hover .static-customer-info:after {
position: absolute;
right: 0;
bottom: 0;
background: #a20401;
background: #2fb5d2;
color: white;
padding: 2px 6px;
font-size: 0.9em;
@@ -68,21 +63,21 @@ a.edit-customer-info:hover .static-customer-info:after {
}
a.edit-customer-info:hover .static-customer-info {
border-bottom: 1px solid #a20401;
border-bottom: 1px solid #2fb5d2;
}
span.carrier-delay {
color: #a20401;
color: #36b4d2;
padding-right: 50px;
}
.delivery-options,
.payment-options {
.delivery-options, .payment-options {
width: 100%;
border: 1px solid #ccc;
padding: 20px;
}
#thecheckout-shipping .inner-area,
#thecheckout-payment .inner-area {
#thecheckout-shipping .inner-area, #thecheckout-payment .inner-area {
border: 0 solid #e9e9e9;
}
@@ -100,7 +95,7 @@ span.carrier-delay {
border-radius: 5px;
}
.-error~.error-msg {
.-error ~ .error-msg {
margin-top: -9px;
padding: 15px 5px 7px;
}
@@ -108,18 +103,18 @@ span.carrier-delay {
.using-material-icons .custom-radio {
display: inline-block;
position: relative;
width: 20px;
height: 20px;
width: 30px;
height: 30px;
vertical-align: middle;
cursor: pointer;
border-radius: 50%;
border: none;
background: #fff;
margin-right: 10px;
margin-top: 7px;
margin-right: 1.25rem;
margin-top: 0;
}
.using-material-icons .custom-radio input[type=radio]+span {
.using-material-icons .custom-radio input[type=radio] + span {
display: inline-block;
width: 100%;
height: 100%;
@@ -135,8 +130,8 @@ span.carrier-delay {
background: transparent;
}
.using-material-icons .custom-radio input[type=radio]:checked+span {
border-color: #a20401;
.using-material-icons .custom-radio input[type=radio]:checked + span {
border-color: #2fb5d2;
background: url(../../img/checkmark.png) center no-repeat;
}
@@ -166,15 +161,16 @@ label.radio-inline {
padding-top: 5px;
}
.form-group {
padding-left: 5px;
padding-right: 5px;
flex-grow: 1;
flex-basis: 100%;
@media (min-width: 768px) {
.form-group, .account_creation.shaim_gdpr_checkbox {
padding-left: 5px;
padding-right: 5px;
flex-grow: 1;
flex-basis: 100%;
}
}
.has-float-label input.form-control,
.has-float-label select.form-control.form-control-select {
.has-float-label input.form-control, .has-float-label select.form-control.form-control-select {
font-size: 0.95em;
margin-bottom: 2px;
border-radius: 5px;
@@ -186,6 +182,9 @@ label.radio-inline {
position: relative;
background-color: white;
}
.has-float-label {
margin-bottom: 15px;
}
.has-float-label :not(:placeholder-shown):not(:focus) {
border-color: #e5e5e5;
@@ -202,8 +201,8 @@ label.radio-inline {
opacity: 0.8;
}
.has-float-label input:placeholder-shown:not(:focus)~span.field-label,
.has-float-label select:placeholder-shown:not(:focus)~span.field-label {
.has-float-label input:placeholder-shown:not(:focus) ~ span.field-label,
.has-float-label select:placeholder-shown:not(:focus) ~ span.field-label {
font-size: 0.95em;
opacity: 0.8;
padding-left: 0;
@@ -232,8 +231,7 @@ label.radio-inline {
margin: 20px auto 30px;
}
.reassurance-section.security:after,
.reassurance-section.delivery:after {
.reassurance-section.security:after, .reassurance-section.delivery:after {
content: "";
display: block;
width: 80%;
@@ -242,25 +240,26 @@ label.radio-inline {
border-bottom: 2px solid #85cad9;
}
.has-float-label input:placeholder-shown:not(:focus)~span.field-label,
.has-float-label select:placeholder-shown:not(:focus)~span.field-label {
.has-float-label input:placeholder-shown:not(:focus) ~ span.field-label, .has-float-label select:placeholder-shown:not(:focus) ~ span.field-label {
top: -20px;
cursor: text;
opacity: 0.6;
}
.block-header {
margin-bottom: 0px;
padding: 20px 0px;
font-size: 16px;
letter-spacing: 1px;
}
section.form-fields {
padding-top: 25px;
}
.business-customer,
.private-customer {
padding: 5px 5px 0px;
}
.second-address {
padding-left: 5px;
}
//.business-customer, .private-customer {
// padding: 5px 5px 0px;
//}
/* Cart summary section */
@@ -295,32 +294,33 @@ section.form-fields {
.checkout-block[class*='num-'] .block-header:before {
font-weight: bold;
background: #a20401;
color: #FFF;
border: 0;
border: 2px solid #ccc;
color: #2fb5d2;
border-radius: 50%;
width: 40px;
height: 40px;
line-height: 40px;
width: 64px;
height: 64px;
line-height: 64px;
margin: 0px 0px 12px 0px;
padding: 0;
text-align: center;
display: block;
font-size: 16px;
font-size: 27px;
-webkit-box-shadow: 1px 1px 10px 3px rgba(0, 0, 0, 0.08);
-moz-box-shadow: 1px 1px 10px 3px rgba(0, 0, 0, 0.08);
box-shadow: 1px 1px 10px 3px rgba(0, 0, 0, 0.08);
}
body#checkout .checkout-block .inner-area .offer-login a {
background: #a20401;
background: #2fb5d2;
max-width: 219px;
padding: 10px 25px;
padding: 15px;
border-radius: 40px;
color: white;
margin: 10px auto;
font-size: 14px;
font-size: 20px;
&:hover {
text-decoration: none;
color: #750200;
background: #037d9a;
}
}
@@ -364,12 +364,12 @@ img#OffAmazonPaymentsWidgets0 {
height: auto;
}
.page-content .custom-checkbox input[type=checkbox]+span {
.page-content .custom-checkbox input[type=checkbox] + span {
border-radius: 3px;
border: 2px solid #a20401;
border: 2px solid #36b4d2;
}
.custom-checkbox input[type=checkbox]+span {
.custom-checkbox input[type=checkbox] + span {
min-width: 16px;
width: 16px;
height: 16px;
@@ -390,33 +390,31 @@ img#OffAmazonPaymentsWidgets0 {
min-height: 16px;
}
.product-line-body .product-line-info span.label,
.value {
.product-line-body .product-line-info span.label, .value {
color: #171717a8;
}
.custom-checkbox input[type=checkbox]+span .checkbox-checked {
color: #a20401;
.custom-checkbox input[type=checkbox] + span .checkbox-checked {
color: #36b4d2;
}
.page-content .custom-checkbox input[type=checkbox]:checked+span {
.page-content .custom-checkbox input[type=checkbox]:checked + span {
background-color: transparent;
border-color: #a20401;
border-color: #36b4d2;
}
.page-content .custom-checkbox input[type=checkbox]:checked+span>i {
.page-content .custom-checkbox input[type=checkbox]:checked + span > i {
display: none;
}
#delivery_message,
#gift_message {
#delivery_message, #gift_message {
min-height: 100px;
border-radius: 5px;
padding: 8px;
}
.mark-required .form-group.checkbox label.required span.label::before {
color: #a20401;
color: #36b4d2;
}
span.custom-checkbox span.label {
@@ -433,14 +431,11 @@ span.custom-checkbox span.label em {
}
.checkout-block {
.cart-summary-line .label,
.cart-summary-line .value {
.cart-summary-line .label, .cart-summary-line .value {
font-size: 16px;
}
a.cart-line-product-quantity-up,
a.cart-line-product-quantity-down {
a.cart-line-product-quantity-up, a.cart-line-product-quantity-down {
width: 30px;
height: 30px;
border: 1px solid gray;
@@ -456,8 +451,7 @@ span.custom-checkbox span.label em {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="%23777" viewBox="0 0 24 24"><path d="M24 10h-24v4h24z"/></svg>');
}
a.cart-line-product-quantity-up:hover,
a.cart-line-product-quantity-down:hover {
a.cart-line-product-quantity-up:hover, a.cart-line-product-quantity-down:hover {
background-color: inherit;
background-size: auto;
background-size: 60%;
@@ -474,11 +468,11 @@ span.custom-checkbox span.label em {
}
.has-discount .discount {
background: #a20401;
background: #36b4d2;
}
.product-price {
color: #a20401;
color: #2fb5d2;
display: inline-block;
}
@@ -500,8 +494,7 @@ span.custom-checkbox span.label em {
border-color: gray;
}
.product-price-section .product-price,
.product-price-section a {
.product-price-section .product-price, .product-price-section a {
color: white;
font-size: 13px;
font-weight: bold;
@@ -513,12 +506,6 @@ span.custom-checkbox span.label em {
position: relative;
left: 124px;
}
@media (max-width: 991px) {
.cart-detailed-totals {
width: 100%;
left: 0;
}
}
.card-block:first-child {
border-bottom: 1px dotted #c6c6c6;
@@ -536,17 +523,14 @@ span.custom-checkbox span.label em {
border-bottom: 1px solid #c1c1c1;
}
.card.cart-container,
.card.cart-summary {
.card.cart-container, .card.cart-summary {
box-shadow: none;
border: none;
}
.card.cart-summary {
border-bottom: 1px solid #ccc;
}
}
.block-header.shopping-cart-header {
border-top: 1px solid #ccc;
margin-top: 10px;
@@ -554,19 +538,16 @@ span.custom-checkbox span.label em {
padding-top: 20px;
}
.thecheckout-reassurance,
.delivery-options,
.payment-options {
.thecheckout-reassurance, .delivery-options, .payment-options {
border-radius: 5px;
}
.delivery-options,
.payment-options {
.delivery-options, .payment-options {
margin-bottom: 20px;
}
.card-block.block-promo {
padding-top: 10px;
}
@@ -601,8 +582,13 @@ span.custom-checkbox span.label em {
font-size: 22px;
}
body#checkout .form-group {
padding-left: 0;
.delivery-options, .payment-options {
padding: 20px 10px;
}
.checkout-block .cart-detailed-totals {
width: 100%;
left: 0;
}
}
@@ -611,4 +597,4 @@ span.custom-checkbox span.label em {
width: 100%;
left: 0;
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"version":3,"sources":["home\/host239242\/domains\/wyczarujprezent.pl\/public_html\/modules\/thecheckout\/views\/css\/styles\/cute.less"],"names":[],"mappings":"YAAY;AAIZ;EACE;;AAGF,oBAAqB,iBAAiB,MAAK,MAAS,kBAAe;AACnE,oBAAqB,iBAAiB,OAAM,MAAS,kBAAe;EAClE;EACA;;AAGF;EACE;EACA;;AAGF,cAAe,YAAW,KAAM,MAAK,SAAU,aAAY;AAC3D,cAAe,YAAW,KAAK,SAAU,MAAM,aAAY;AAC3D,cAAe,YAAW,MAAO,MAAK,SAAU,aAAY;AAC5D,cAAe,YAAW,SAAU,MAAK,SAAU,aAAY;AAC\/D,cAAe,YAAW,IAAK,MAAK,SAAU,aAAY;AAC1D,cAAe,YAAW,OAAQ,MAAK,SAAU,aAAY;AAC7D,cAAe,YAAW,cAAe,MAAK,SAAU,aAAY;EAClE;;AAGF,QAAS,IAAG;EACV;EACA;EACA;;AAGF,WAAW;EACT;EACA;;AAOF;EACE;;AAGF;EACE,oCAAA;;AAGF;EACE;;AAGF,CAAC,mBAAmB,MAAO,sBAAqB;EAC9C,SAAS,qBAAT;EACA;EACA;EACA;EACA;EACA;EACA,gBAAA;EACA;EACA;;AAGF,CAAC,mBAAmB,MAAO;EACzB,gCAAA;;AAGF,IAAI;EACF;EACA;;AAGF;AAAmB;EACjB;EACA,sBAAA;EACA;;AAGF,qBAAsB;AAAa,oBAAqB;EACtD,uBAAA;;AAGF,iBAAiB;EACf;;AAGF,aAAc,MAAK;EACjB;EACA;;AAGF;EACE;EACA;;AAGF,OAAU;EACR;EACA,qBAAA;;AAGF,qBAAsB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,qBAAsB,cAAc,MAAK,YAAe;EACtD;EACA;EACA;EACA;EACA;EACA,yBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,qBAAsB,cAAc,MAAK,YAAY,QAAW;EAC9D;EACA,yDAAA;;AAGF;EACE;EACA;;AAGF,mBAAoB;EAClB;EACA;EACA;;AAGF,mBAAoB,OAAM;EACxB;;AAGF,aAAc,KAAI;EAEhB;EACA;;AAGF,KAAK;EACH;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF,gBAAiB,MAAK;AAAe,gBAAiB,OAAM,aAAa;EACvE;EACA;EACA;EACA,yBAAA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,gBAAiB,KAAI,oBAAoB,IAAI;EAC3C;;AAGF;EACE,sBAAA;EACA;EACA;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAQ;AACpD,gBAAiB,OAAM,kBAAkB,IAAI,QAAQ;EACnD;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAW,OAAI;AAC3D,gBAAiB,OAAM,kBAAkB,IAAI,QAAW,OAAI;EAC1D;EACA;EACA;;AAGF,gBAAgB,SAAU,KAAI;AAC9B,SAAU,iBAAiB,KAAI;AAC\/B,gBAAiB,KAAI;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE,sBAAA;;AAGF,oBAAoB,SAAS;AAAQ,oBAAoB,SAAS;EAChE,SAAS,EAAT;EACA;EACA;EACA,cAAA;EACA;EACA,gCAAA;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAW,OAAI;AAAc,gBAAiB,OAAM,kBAAkB,IAAI,QAAW,OAAI;EACnI;EACA;EACA;;AAGF;EACE;EACA,iBAAA;EACA;EACA;;AAGF,OAAO;EACL;;AAGF;AAAoB;EAClB,oBAAA;;AAGF;EACE;;;AAKF,kBAAmB;EACjB;EACA;EACA;;AAGF;EACE;;AAGF,UAAW,mBAAkB,kBAAmB;EAC9C;EACA;;AAGF;EACE;;AAGF,mBAAoB;EAClB,sBAAA;EACA;EACA,aAAA;;AAGF;EACE;;AAGF,eAAe,eAAgB,cAAa;EAC1C;EACA,sBAAA;EACA;EACA;EACA;EACA;EACA;EACA,wBAAA;EACA;EACA;EACA;EACA;EACA,wDAAA;EACA,qDAAA;EACA,gDAAA;;AAGF,IAAI,SAAU,gBAAgB,YAAY,aAAa;EACrD;EACA;EACA;EACA;EACA;EACA,iBAAA;EACA;;AACA,IARE,SAAU,gBAAgB,YAAY,aAAa,EAQpD;EACC;EACA;;AAIJ,kBAAmB;EACjB;;AAGF,gBAAiB,GAAG;EAClB;EACA,iBAAA;EACA,cAAA;EACA;EACA;EACA;EAEA;EACA;;AAGF,gBAAiB,GAAG;EAClB;EACA,iBAAA;EACA,cAAA;EACA;EACA;EACA;EACA,sBAAA;EACA;;AAGF,GAAG;EACD,iBAAA;;AAGF,eAAgB,OAAM,IAAI,YAAY;EACpC;EACA;EAEA;EACA;EACA;;AAGF,aAAc,iBAAiB,MAAK,eAAkB;EACpD;EACA,yBAAA;;AAGF,gBAAiB,MAAK,eAAkB;EACtC;EACA;EACA;EACA;;AAGF;EACE;;AAGF,gBAAiB,MAAK;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,kBAAmB,mBAAmB,KAAI;AAAQ;EAChD;;AAGF,gBAAiB,MAAK,eAAkB,OAAK;EAC3C;;AAGF,aAAc,iBAAiB,MAAK,eAAe,QAAW;EAC5D;EACA;;AAGF,aAAc,iBAAiB,MAAK,eAAe,QAAW,OAAO;EACnE;;AAGF;AAAmB;EACjB;EACA;EACA;;AAGF,cAAe,YAAW,SAAU,MAAK,SAAU,KAAI,MAAM;EAC3D;;AAGF,IAAI,gBAAiB,KAAI;EACvB;;AAGF,IAAI,gBAAiB,KAAI,MAAO;EAC9B;;AAGF,kBAAmB;EACjB;EACA;;AAGF,eACE,mBAAmB;AADrB,eAC6B,mBAAmB;EAC5C;;AAFJ,eAKE,EAAC;AALH,eAKmC,EAAC;EAChC;EACA;EACA,sBAAA;EACA;EACA;;AAVJ,eAaE,EAAC;EACC,sBAAsB,wLAAtB;;AAdJ,eAiBE,EAAC;EACC,sBAAsB,8JAAtB;;AAlBJ,eAqBE,EAAC,8BAA8B;AArBjC,eAqByC,EAAC,gCAAgC;EACtE;EACA;EACA;;AAxBJ,eA2BE,aAAa;EACX;;AA5BJ,eA+BE,EAAC;EACC;EACA;EACA;;AAlCJ,eAqCE,cAAc;EACZ;;AAtCJ,eAyCE;EACE;EACA;;AA3CJ,eA8CE;EACE;EACA;EACA;EACA;EACA,qBAAA;EACA;EACA;;AArDJ,eAwDE,MAAK;EACH;EACA;EACA;EACA,yBAAA;EACA;;AA7DJ,eAgEE,uBAAuB;AAhEzB,eAgEyC,uBAAuB;EAC5D;EACA;EACA;;AAnEJ,eAsEE;EACE,yBAAA;EACA;EACA;EACA;;AA1EJ,eA6EE,YAAW;EACT,iCAAA;;AA9EJ,eAiFE,WAAU;EACR,6BAAA;;AAlFJ,eAqFE,WAAU,IAAI;EACZ,gCAAA;;AAtFJ,eAyFE,WAAU;EACR,gCAAA;;AA1FJ,eA6FE,MAAK;AA7FP,eA6FwB,MAAK;EACzB;EACA;;AA\/FJ,eAiGE,MAAK;EACH,6BAAA;;AAGJ,aAAa;EACX,0BAAA;EACA;EACA;EACA;;AAGF;AAA0B;AAAmB;EAC3C;;AAGF;AAAmB;EACjB;;AAGF,WAAW;EACT;;;;;;;;;AA4CF,mBAhCqC;EACnC;IACE;IACA;;EAGF,kBAAmB;IACjB;IACA;IACA;;EAGF;IACE;;EAGF,eAAe,eAAgB,cAAa;IAC1C;IACA;IACA;IACA;;EAGF;EAAmB;IACjB,kBAAA;;EAGF,IAAI,SAAU;IACZ;;;AAUJ,QAN0B;EACxB;IACE;IACA"}
{"version":3,"sources":["home\/server493388\/ftp\/public_html\/wyczarujprezent.pl\/modules\/thecheckout\/views\/css\/styles\/cute.less"],"names":[],"mappings":"YAAY;AAIZ;EACE;;AAGF,oBAAqB,iBAAiB,MAAK,MAAS,kBAAe;AACnE,oBAAqB,iBAAiB,OAAM,MAAS,kBAAe;EAClE;EACA;;AAGF;EACE;EACA;;AAGF,cAAe,YAAW,KAAM,MAAK,SAAU,aAAY;AAC3D,cAAe,YAAW,KAAK,SAAU,MAAM,aAAY;AAC3D,cAAe,YAAW,MAAO,MAAK,SAAU,aAAY;AAC5D,cAAe,YAAW,SAAU,MAAK,SAAU,aAAY;AAC\/D,cAAe,YAAW,IAAK,MAAK,SAAU,aAAY;AAC1D,cAAe,YAAW,OAAQ,MAAK,SAAU,aAAY;AAC7D,cAAe,YAAW,cAAe,MAAK,SAAU,aAAY;EAClE;;AAGF,QAAS,IAAG;EACV;EACA;EACA;;AAGF,WAAW;EACT;EACA;;AAOF;EACE,oCAAA;;AAGF;EACE;;AAGF,CAAC,mBAAmB,MAAO,sBAAqB;EAC9C,SAAS,qBAAT;EACA;EACA;EACA;EACA;EACA;EACA,gBAAA;EACA;EACA;;AAGF,CAAC,mBAAmB,MAAO;EACzB,gCAAA;;AAGF,IAAI;EACF;EACA;;AAGF;AAAmB;EACjB;EACA,sBAAA;EACA;;AAGF,qBAAsB;AAAa,oBAAqB;EACtD,uBAAA;;AAGF,iBAAiB;EACf;;AAGF,aAAc,MAAK;EACjB;EACA;;AAGF;EACE;EACA;;AAGF,OAAU;EACR;EACA,qBAAA;;AAGF,qBAAsB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,qBAAsB,cAAc,MAAK,YAAe;EACtD;EACA;EACA;EACA;EACA;EACA,yBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,qBAAsB,cAAc,MAAK,YAAY,QAAW;EAC9D;EACA,yDAAA;;AAGF;EACE;EACA;;AAGF,mBAAoB;EAClB;EACA;EACA;;AAGF,mBAAoB,OAAM;EACxB;;AAGF,aAAc,KAAI;EAEhB;EACA;;AAGF,KAAK;EACH;EACA;;AAYF,QAT0B;EACxB;EAAa,iBAAiB;IAC5B;IACA;IACA;IACA;;;AAIJ,gBAAiB,MAAK;AAAe,gBAAiB,OAAM,aAAa;EACvE;EACA;EACA;EACA,yBAAA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;;AAGF,gBAAiB,KAAI,oBAAoB,IAAI;EAC3C;;AAGF;EACE,sBAAA;EACA;EACA;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAQ;AACpD,gBAAiB,OAAM,kBAAkB,IAAI,QAAQ;EACnD;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAW,OAAI;AAC3D,gBAAiB,OAAM,kBAAkB,IAAI,QAAW,OAAI;EAC1D;EACA;EACA;;AAGF,gBAAgB,SAAU,KAAI;AAC9B,SAAU,iBAAiB,KAAI;AAC\/B,gBAAiB,KAAI;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE,sBAAA;;AAGF,oBAAoB,SAAS;AAAQ,oBAAoB,SAAS;EAChE,SAAS,EAAT;EACA;EACA;EACA,cAAA;EACA;EACA,gCAAA;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAW,OAAI;AAAc,gBAAiB,OAAM,kBAAkB,IAAI,QAAW,OAAI;EACnI;EACA;EACA;;AAGF;EACE;EACA,iBAAA;EACA;EACA;;AAGF,OAAO;EACL;;;AASF,kBAAmB;EACjB;EACA;EACA;;AAGF;EACE;;AAGF,UAAW,mBAAkB,kBAAmB;EAC9C;EACA;;AAGF;EACE;;AAGF,mBAAoB;EAClB,sBAAA;EACA;EACA,aAAA;;AAGF;EACE;;AAGF,eAAe,eAAgB,cAAa;EAC1C;EACA,sBAAA;EACA;EACA;EACA;EACA;EACA;EACA,wBAAA;EACA;EACA;EACA;EACA;EACA,wDAAA;EACA,qDAAA;EACA,gDAAA;;AAGF,IAAI,SAAU,gBAAgB,YAAY,aAAa;EACrD;EACA;EACA;EACA;EACA;EACA,iBAAA;EACA;;AACA,IARE,SAAU,gBAAgB,YAAY,aAAa,EAQpD;EACC;EACA;;AAIJ,kBAAmB;EACjB;;AAGF,gBAAiB,GAAG;EAClB;EACA,iBAAA;EACA,cAAA;EACA;EACA;EACA;EAEA;EACA;;AAGF,gBAAiB,GAAG;EAClB;EACA,iBAAA;EACA,cAAA;EACA;EACA;EACA;EACA,sBAAA;EACA;;AAGF,GAAG;EACD,iBAAA;;AAGF,eAAgB,OAAM,IAAI,YAAY;EACpC;EACA;EAEA;EACA;EACA;;AAGF,aAAc,iBAAiB,MAAK,eAAkB;EACpD;EACA,yBAAA;;AAGF,gBAAiB,MAAK,eAAkB;EACtC;EACA;EACA;EACA;;AAGF;EACE;;AAGF,gBAAiB,MAAK;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,kBAAmB,mBAAmB,KAAI;AAAQ;EAChD;;AAGF,gBAAiB,MAAK,eAAkB,OAAK;EAC3C;;AAGF,aAAc,iBAAiB,MAAK,eAAe,QAAW;EAC5D;EACA;;AAGF,aAAc,iBAAiB,MAAK,eAAe,QAAW,OAAO;EACnE;;AAGF;AAAmB;EACjB;EACA;EACA;;AAGF,cAAe,YAAW,SAAU,MAAK,SAAU,KAAI,MAAM;EAC3D;;AAGF,IAAI,gBAAiB,KAAI;EACvB;;AAGF,IAAI,gBAAiB,KAAI,MAAO;EAC9B;;AAGF,kBAAmB;EACjB;EACA;;AAGF,eACE,mBAAmB;AADrB,eAC6B,mBAAmB;EAC5C;;AAFJ,eAKE,EAAC;AALH,eAKmC,EAAC;EAChC;EACA;EACA,sBAAA;EACA;EACA;;AAVJ,eAaE,EAAC;EACC,sBAAsB,wLAAtB;;AAdJ,eAiBE,EAAC;EACC,sBAAsB,8JAAtB;;AAlBJ,eAqBE,EAAC,8BAA8B;AArBjC,eAqByC,EAAC,gCAAgC;EACtE;EACA;EACA;;AAxBJ,eA2BE,aAAa;EACX;;AA5BJ,eA+BE,EAAC;EACC;EACA;EACA;;AAlCJ,eAqCE,cAAc;EACZ;;AAtCJ,eAyCE;EACE;EACA;;AA3CJ,eA8CE;EACE;EACA;EACA;EACA;EACA,qBAAA;EACA;EACA;;AArDJ,eAwDE,MAAK;EACH;EACA;EACA;EACA,yBAAA;EACA;;AA7DJ,eAgEE,uBAAuB;AAhEzB,eAgEyC,uBAAuB;EAC5D;EACA;EACA;;AAnEJ,eAsEE;EACE,yBAAA;EACA;EACA;EACA;;AA1EJ,eA6EE,YAAW;EACT,iCAAA;;AA9EJ,eAiFE,WAAU;EACR,6BAAA;;AAlFJ,eAqFE,WAAU,IAAI;EACZ,gCAAA;;AAtFJ,eAyFE,WAAU;EACR,gCAAA;;AA1FJ,eA6FE,MAAK;AA7FP,eA6FwB,MAAK;EACzB;EACA;;AA\/FJ,eAiGE,MAAK;EACH,6BAAA;;AAGJ,aAAa;EACX,0BAAA;EACA;EACA;EACA;;AAGF;AAA0B;AAAmB;EAC3C;;AAGF;AAAmB;EACjB;;AAGF,WAAW;EACT;;;;;;;;;AA6CF,mBAjCqC;EACnC;IACE;IACA;;EAGF,kBAAmB;IACjB;IACA;IACA;;EAGF;IACE;;EAGF,eAAe,eAAgB,cAAa;IAC1C;IACA;IACA;IACA;;EAGF;EAAmB;IACjB,kBAAA;;EAGF,eAAgB;IACd;IACA;;;AAUJ,QAN0B;EACxB;IACE;IACA"}

View File

@@ -0,0 +1,203 @@
/*
================================================================================
This stylesheet adds platic (with borders and shadows look to blocks
It tries to mimic modern fields layout, used by Google and similar big players
on their input forms
Also it creates field-enter flash effect as fun and engaging factor
================================================================================
*/
.checkout-block:not(#thecheckout-confirm) .inner-area {
box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2);
border: 1px solid rgba(0, 0, 0, 0.125);
background: white;
}
/*
================================================================================
Input fields styling
================================================================================
*/
.has-float-label label,
.has-float-label span.field-label {
position: absolute;
left: 0;
top: -4px;
cursor: text;
font-size: 0.85em;
transition: all .2s;
opacity: 0.6;
}
.has-float-label input:placeholder-shown:not(:focus):not(:-webkit-autofill) ~ span.field-label,
.has-float-label select:placeholder-shown:not(:focus) ~ span.field-label {
font-size: 1.2em;
opacity: 0.3;
top: .9em;
padding-left: 5px;
}
.has-float-label input.form-control,
.has-float-label select.form-control {
font-size: 1.2em;
padding-top: 1em;
margin-bottom: 2px;
border: 0;
border-radius: 0;
border-bottom: 2px solid rgba(0, 0, 0, 0.1);
padding: 1em 0.5em 0.2em;
}
.has-float-label input,
.has-float-label select {
font-size: inherit;
padding-top: 1em;
margin-bottom: 2px;
border: 0;
border-radius: 0;
border-bottom: 2px solid rgba(0, 0, 0, 0.1);
}
.-error ~ .error-msg {
margin-top: -2px;
}
.business-fields-separator:after,
.private-fields-separator:after {
margin: 15px auto 20px;
}
/*
================================================================================
Transition flash effects on input fields
================================================================================
*/
.effects-helper::after {
content: '';
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: 100%;
box-shadow: 0 0 0 0;
color: rgba(199, 152, 157, 0.6);
pointer-events: none;
}
.has-float-label input:focus ~ .effects-helper::after,
.has-float-label select:focus ~ .effects-helper::after {
-webkit-animation: anim-shadow 0.3s forwards;
animation: anim-shadow 0.3s forwards;
}
@-webkit-keyframes anim-shadow {
to {
box-shadow: 0 0 100px 50px;
opacity: 0;
}
}
@keyframes anim-shadow {
to {
box-shadow: 0 0 100px 50px;
opacity: 0;
}
}
/*
================================================================================
Shopping cart area
================================================================================
*/
input.cart-line-product-quantity {
width: 40px;
height: 36px;
text-align: center;
margin-right: 20px;
border-width: 1px;
}
a.cart-line-product-quantity-up,
a.cart-line-product-quantity-down {
display: inline-block;
width: 22px;
height: 18px;
position: absolute;
color: transparent;
/* hide actual label on that anchor */
background-size: 70% 70%;
background-position: center;
background-repeat: no-repeat;
background-color: white;
right: 0;
}
a.cart-line-product-quantity-up:hover,
a.cart-line-product-quantity-down:hover {
box-shadow: 1px 1px 4px 0px grey;
background-color: white;
background-size: 90% 90%;
}
.plus-simple {
background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3Csvg width='1792' height='1792' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z'/%3E%3C/svg%3E");
}
.minus-simple {
background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3Csvg width='1792' height='1792' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M1600 736v192q0 40-28 68t-68 28h-1216q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h1216q40 0 68 28t28 68z'/%3E%3C/svg%3E");
}
a.cart-line-product-quantity-up {
top: 0px;
background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3Csvg width='1792' height='1792' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z'/%3E%3C/svg%3E");
border: 1px solid #a39f9f;
border-bottom: 1px solid transparent;
}
a.cart-line-product-quantity-down {
top: 18px;
background-image: url("data:image/svg+xml;charset=utf8,%3C?xml version='1.0' encoding='utf-8'?%3E%3Csvg width='1792' height='1792' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='black' d='M1600 736v192q0 40-28 68t-68 28h-1216q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h1216q40 0 68 28t28 68z'/%3E%3C/svg%3E");
border: 1px solid #a39f9f;
}
.qty-box {
position: relative;
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.2);
}
.cart-item:first-child {
border-top: 1px solid #c1c1c1;
}
.cart-item:not(:last-child) {
border-bottom: 1px solid #eeeeee;
}
.cart-item:last-child {
border-bottom: 1px solid #c1c1c1;
}
.product-price-section .product-price,
.product-price-section a {
color: black;
}
/*
================================================================================
Reassurance area
================================================================================
*/
.thecheckout-reassurance {
text-align: center;
}
.reassurance-section {
margin: 20px auto 30px;
}
.reassurance-section.security:after,
.reassurance-section.delivery:after {
content: "";
display: block;
width: 80%;
margin: 0 auto;
padding-top: 20px;
border-bottom: 2px solid #85cad9;
}
/* Checkboxes */
.page-content .custom-checkbox input[type=checkbox]:checked + span {
filter: brightness(0);
}
.country-call-prefix {
font-size: 1.2em;
margin-top: calc(1em - 2px);
height: 1.8em;
border-radius: unset;
}
input:placeholder-shown:not(:focus):not(:-webkit-autofill) ~ .country-call-prefix {
display: none;
}
/* no-header class treatment */
.checkout-block.no-header {
margin-top: -11px;
padding-top: 0;
overflow-y: hidden;
margin-right: -5px;
padding-right: 8px;
}
/*# sourceMappingURL=data:application/json,%7B%22version%22%3A3%2C%22sources%22%3A%5B%22home%5C%2Fpeter%5C%2Fwww%5C%2Fpresta_178%5C%2Fmodules%5C%2Fthecheckout%5C%2Fviews%5C%2Fcss%5C%2Fstyles%5C%2Fmodern.less%22%5D%2C%22names%22%3A%5B%5D%2C%22mappings%22%3A%22%3B%3B%3B%3B%3B%3B%3B%3BAASA%2CeAAe%2CIAAI%2CsBAAuB%3BEACxC%2C4CAAA%3BEACA%2CsCAAA%3BEACA%3B%3B%3B%3B%3B%3B%3BAASF%2CgBAAiB%3BAAAO%2CgBAAiB%2CKAAI%3BEAC3C%3BEACA%3BEACA%3BEACA%3BEACA%3BEAEA%2CmBAAA%3BEACA%3B%3BAAGF%2CgBAAiB%2CMAAK%2CkBAAkB%2CIAAI%2CQAAQ%2CIAAI%2CmBAAsB%2COAAI%3BAAClF%2CgBAAiB%2COAAM%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BEAC1D%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%2CMAAK%3BAAAe%2CgBAAiB%2COAAM%3BEAC1D%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%2C2CAAA%3BEACA%2CwBAAA%3B%3BAAGF%2CgBAAiB%3BAAAO%2CgBAAiB%3BEACvC%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%2C2CAAA%3B%3BAAGF%2COAAU%3BEACR%3B%3BAAGF%2C0BAA0B%3BAAC1B%2CyBAAyB%3BEACvB%2CsBAAA%3B%3B%3B%3B%3B%3B%3BAASF%2CeAAe%3BEACb%2CSAAS%2CEAAT%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%2CmBAAA%3BEACA%2C%2BBAAA%3BEACA%3B%3BAAGF%2CgBAAiB%2CMAAK%2CMAAS%2CkBAAe%3BAAC9C%2CgBAAiB%2COAAM%2CMAAS%2CkBAAe%3BEAC7C%2C4CAAA%3BEACA%2CoCAAA%3B%3BAAGF%3BEACE%3BIACE%2C0BAAA%3BIACA%3B%3B%3BAAIJ%3BEACE%3BIACE%2C0BAAA%3BIACA%3B%3B%3B%3B%3B%3B%3B%3BAAaJ%2CKAAK%3BEACH%2CWAAA%3BEAEA%2CYAAA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CCAAC%3BAAAgC%2CCAAC%3BEAChC%3BEACA%3BEACA%2CYAAA%3BEACA%3BEACA%3B%3BEACA%2CwBAAA%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAEA%2CCAZD%2C8BAYE%3BAAAD%2CCAZgC%2CgCAY%5C%2FB%3BEACC%2CgCAAA%3BEACA%3BEACA%2CwBAAA%3B%3BAAKJ%3BEACE%2CsBAAsB%2CiaAAtB%3B%3BAAGF%3BEACE%2CsBAAsB%2CwTAAtB%3B%3BAAGF%2CCAAC%3BEACC%3BEARA%2CsBAAsB%2CiaAAtB%3BEAYA%2CyBAAA%3BEACA%2CoCAAA%3B%3BAAIF%2CCAAC%3BEACC%2CSAAA%3BEAdA%2CsBAAsB%2CwTAAtB%3BEAkBA%2CyBAAA%3B%3BAAGF%3BEACE%3BEACA%2C4CAAA%3B%3BAAGF%2CUAAU%3BEACR%2C6BAAA%3B%3BAAGF%2CUAAU%2CIAAI%3BEACZ%2CgCAAA%3B%3BAAGF%2CUAAU%3BEACR%2CgCAAA%3B%3BAAGF%2CsBAAuB%3BAAAgB%2CsBAAuB%3BEAC5D%3B%3B%3B%3B%3B%3B%3BAASF%3BEACE%3B%3BAAGF%3BEACE%2CsBAAA%3B%3BAAGF%2CoBAAoB%2CSAAS%3BAAAQ%2CoBAAoB%2CSAAS%3BEAChE%2CSAAS%2CEAAT%3BEACA%3BEACA%3BEACA%2CcAAA%3BEACA%3BEACA%2CgCAAA%3B%3B%3BAAKF%2CaAAc%2CiBAAiB%2CMAAK%2CeAAe%2CQAAW%3BEAC5D%2CQAAQ%2CaAAR%3B%3BAAGF%3BEACE%3BEACA%2C2BAAA%3BEACA%3BEACA%3B%3BAAGF%2CKAAK%2CkBAAkB%2CIAAI%2CQAAQ%2CIAAI%2CmBAAsB%3BEAC3D%3B%3B%3BAAKF%2CeAAe%3BEACb%3BEACA%3BEACA%3BEACA%3BEACA%22%7D */

View File

@@ -0,0 +1 @@
{"version":3,"sources":["home\/peter\/www\/presta_178\/modules\/thecheckout\/views\/css\/styles\/modern.less"],"names":[],"mappings":";;;;;;;;AASA,eAAe,IAAI,sBAAuB;EACxC,4CAAA;EACA,sCAAA;EACA;;;;;;;AASF,gBAAiB;AAAO,gBAAiB,KAAI;EAC3C;EACA;EACA;EACA;EACA;EAEA,mBAAA;EACA;;AAGF,gBAAiB,MAAK,kBAAkB,IAAI,QAAQ,IAAI,mBAAsB,OAAI;AAClF,gBAAiB,OAAM,kBAAkB,IAAI,QAAW,OAAI;EAC1D;EACA;EACA;EACA;;AAGF,gBAAiB,MAAK;AAAe,gBAAiB,OAAM;EAC1D;EACA;EACA;EACA;EACA;EACA,2CAAA;EACA,wBAAA;;AAGF,gBAAiB;AAAO,gBAAiB;EACvC;EACA;EACA;EACA;EACA;EACA,2CAAA;;AAGF,OAAU;EACR;;AAGF,0BAA0B;AAC1B,yBAAyB;EACvB,sBAAA;;;;;;;AASF,eAAe;EACb,SAAS,EAAT;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBAAA;EACA,+BAAA;EACA;;AAGF,gBAAiB,MAAK,MAAS,kBAAe;AAC9C,gBAAiB,OAAM,MAAS,kBAAe;EAC7C,4CAAA;EACA,oCAAA;;AAGF;EACE;IACE,0BAAA;IACA;;;AAIJ;EACE;IACE,0BAAA;IACA;;;;;;;;AAaJ,KAAK;EACH,WAAA;EAEA,YAAA;EACA;EACA;EACA;;AAGF,CAAC;AAAgC,CAAC;EAChC;EACA;EACA,YAAA;EACA;EACA;;EACA,wBAAA;EACA;EACA;EACA;EACA;;AAEA,CAZD,8BAYE;AAAD,CAZgC,gCAY\/B;EACC,gCAAA;EACA;EACA,wBAAA;;AAKJ;EACE,sBAAsB,iaAAtB;;AAGF;EACE,sBAAsB,wTAAtB;;AAGF,CAAC;EACC;EARA,sBAAsB,iaAAtB;EAYA,yBAAA;EACA,oCAAA;;AAIF,CAAC;EACC,SAAA;EAdA,sBAAsB,wTAAtB;EAkBA,yBAAA;;AAGF;EACE;EACA,4CAAA;;AAGF,UAAU;EACR,6BAAA;;AAGF,UAAU,IAAI;EACZ,gCAAA;;AAGF,UAAU;EACR,gCAAA;;AAGF,sBAAuB;AAAgB,sBAAuB;EAC5D;;;;;;;AASF;EACE;;AAGF;EACE,sBAAA;;AAGF,oBAAoB,SAAS;AAAQ,oBAAoB,SAAS;EAChE,SAAS,EAAT;EACA;EACA;EACA,cAAA;EACA;EACA,gCAAA;;;AAKF,aAAc,iBAAiB,MAAK,eAAe,QAAW;EAC5D,QAAQ,aAAR;;AAGF;EACE;EACA,2BAAA;EACA;EACA;;AAGF,KAAK,kBAAkB,IAAI,QAAQ,IAAI,mBAAsB;EAC3D;;;AAKF,eAAe;EACb;EACA;EACA;EACA;EACA"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

View File

@@ -1,11 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Warstwa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;}
.st1{fill:#A20401;}
</style>
<path class="st0" d="M0,0h24v24H0V0z"/>
<path class="st1" d="M9,16.2L4.8,12l-1.4,1.4L9,19L21,7l-1.4-1.4L9,16.2z"/>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" fill="#36b4d2"/>
</svg>

Before

Width:  |  Height:  |  Size: 541 B

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

View File

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -380,6 +380,14 @@ function setForceEmailOverlay(makeInactive) {
}
}
function setPaypalExpressCheckoutState(makeInactive) {
if (makeInactive) {
$('[name=TC_paypal_express_checkout]').closest('.form-group').addClass('inactive');
} else {
$('[name=TC_paypal_express_checkout]').closest('.form-group').removeClass('inactive');
}
}
function setHash(hash) {
if ("onhashchange" in window) {
window.location.hash = '#' + hash;
@@ -403,7 +411,11 @@ function setConfigTabs() {
})
$('.page-head:first').append('<div id="tab-handles"></div>')
if ($('#content .page-head > .wrapper').length) {
$('.page-head:first').append('<div id="tab-handles"></div>');
} else {
$('.page-head:first').after('<div id="tab-handles"></div>');
}
$('#module_form > .panel').each(function() {
var label = $.trim($(this).find('.panel-heading').text());
$('#tab-handles').append('<div data-section-id="'+$(this).attr('id')+'">'+label+'</div>');
@@ -571,6 +583,8 @@ $(document).ready(function () {
setForceEmailOverlay(isPasswordRequired());
});
setPaypalExpressCheckoutState($('[name=tc_paypal_express_checkout_active]').val() != '1');
// Fix for big header on config page
window.onscroll = function () {

View File

@@ -83,19 +83,14 @@ body.is-virtual-cart #thecheckout-address-invoice
display: block;
}
/* // ---------------> Update labels here */
/* English and Danish versions, for other languages, add new rules .lang-xx prefix instead of .lang-en */
.lang-en .email-verification .field.error-msg.emails-do-not-match:before {
content: 'Emails do not match';
}
.lang-en .form-group.email-verification .field-label:before {
content: '(repeat)';
}
.lang-da .email-verification .field.error-msg.emails-do-not-match:before {
content: 'E-mail adresserne er ikke ens';
}
.lang-da .form-group.email-verification .field-label:before {
content: '(en gang til)';
}
2/ Add Custom JS in checkout module settings:
@@ -107,10 +102,10 @@ document.addEventListener('DOMContentLoaded', function(event) {
tc_confirmOrderValidations['email_verification'] = function() {
$(email_verif_selector +' .error-msg').remove();
if (
$(email_verif_selector + ' input[name=email]:visible').length &&
$(email_selector + ' input[name=email]').val() != $(email_verif_selector + ' input[name=email]').val()
$(email_verif_selector + ' input[name=email-verification]:visible').length &&
$(email_selector + ' input[name=email]').val() != $(email_verif_selector + ' input[name=email-verification]').val()
) {
$(email_verif_selector + ' label').addClass('-error');
$(email_verif_selector + ' label input').addClass('-error');
$(email_verif_selector + ' label input').after('<div class="field error-msg emails-do-not-match"></div>');
scrollToElement($(email_verif_selector));
return false;
@@ -120,9 +115,175 @@ document.addEventListener('DOMContentLoaded', function(event) {
}
$('.account-fields .form-group.email:visible').clone().addClass('email-verification').insertAfter('.account-fields .form-group.email');
$('.email-verification > input').attr('name', 'email-verification');
// ---------------> Update labels here
if (prestashop.language.iso_code == 'en') {
$(email_verif_selector + ' .field-label').html('Confirm e-mail ');
} else if (prestashop.language.iso_code == 'da') {
$(email_verif_selector + ' .field-label').html('Bekræft e-mail ');
}
});
});
// ##### Example 5 - checkout steps #####
// Validation expression (JS) to check filled in address
$('.address-fields, .account-fields').find('input.form-control[required]:visible').filter((k,v) => $(v).val() == '').length == 0
// Display cart-summary on each step, but have it styled differently in step 1 (full-width), add custom CSS:
.checkout-step-1 .checkout-area-4 {
display: block;
}
// ##### Example 6 - pre-tick checkboxes (on page load) #####
// Add to custom JS:
document.addEventListener('DOMContentLoaded', function(event) {
// Pre-tick terms and conditions and psgdpr checkboxes
$('[name^=conditions_to_approve], [name=psgdpr]').prop('checked', true);
});
// ##### Example 7 - validate phone input (9 numbers) #####
tc_confirmOrderValidations['phone_9_numbers'] = function () {
var phoneFields = $('.address-fields input[type=tel]:visible');
var errorMsg = 'Phone must have 9 digits';
phoneFields.removeClass('-error');
removeError(phoneFields.siblings('.error-msg'));
var allPhoneFieldsOK = true;
phoneFields.each(function() {
var phoneVal = $(this).val().trim();
if (phoneVal && phoneVal.replace(/[^0-9]/g, '').length !== 9) {
allPhoneFieldsOK = false;
$(this).addClass('-error');
$(this).after('<div class="field error-msg">' + errorMsg + '</div>');
}
});
if (!allPhoneFieldsOK) {
scrollToError();
}
return allPhoneFieldsOK;
};
// ##### Example 8 - validate address1 (street) to have 2+ non-numeric characters and 1 number #####
tc_confirmOrderValidations['street_non_numeric'] = function () {
var addressFields = $('.address-fields input[name=address1]:visible');
var errorMsg = 'Street name must be at least 2 characters and number';
addressFields.removeClass('-error');
removeError(addressFields.siblings('.error-msg'));
var allAddressFieldsOK = true;
addressFields.each(function() {
var addressVal = $(this).val();
if (addressVal !== '' && (addressVal.replace(/[^a-zA-Z]/g, '').length < 2 || addressVal.replace(/[^0-9]/g, '').length < 1)) {
allAddressFieldsOK = false;
$(this).addClass('-error');
$(this).after('<div class="field error-msg">' + errorMsg + '</div>');
}
});
if (!allAddressFieldsOK) {
scrollToError();
}
return allAddressFieldsOK;
};
// ##### Example 9 - using craftyclick module (for the UK) + shipping parcel points module #####
// Add custom JS
document.addEventListener('DOMContentLoaded', function(event) {
$('body').off('click.crafty').on('click.crafty', '[id$=_cp_button_id]', function() { setTimeout(function() { $('.address-fields [name=city]:visible').change(); }, 200); })
});
// ##### Example 10 - Add payment logos
// 1. Firstly, find and add logos to PS file structure, e.g. to /modules/thecheckout/views/img folder
// 2. Add custom CSS, this is example for ps_wirepayment method:
/* ps_wirepayment logo */
[data-payment-module=ps_wirepayment] .payment-logo {
background: left / contain no-repeat url('../modules/thecheckout/views/img/wirepayment.png');
width: 30px;
height: 30px;
margin-right: 5px;
}
// ##### Example 10 - limit delivery countries based on invoice country #####
document.addEventListener('DOMContentLoaded', function(event) {
//jQuery shall be loaded now
tc_confirmOrderValidations['restrict_delivery_country'] = function() {
const invoiceCountry = $('#thecheckout-address-invoice select[name=id_country]:visible option:selected').data('iso-code');
const deliveryCountry = $('#thecheckout-address-delivery select[name=id_country]:visible option:selected').data('iso-code') ?? invoiceCountry;
const deliveryBlockVisible = $('#thecheckout-address-delivery').is(':visible');
if (!deliveryBlockVisible) {
return true;
}
var canShip = true;
var errorMsg = 'Wrong delivery / invoice country combination';
if (invoiceCountry == 'CH' && deliveryCountry != 'CH') {
canShip = false;
errorMsg = 'Invoice address in Switzerland -> cannot ship outside of Switzerland.'
}
if (invoiceCountry != 'PL' && deliveryCountry == 'PL') {
canShip = false;
errorMsg = 'Delivery in Poland -> invoice must be in Poland.'
}
if (invoiceCountry == 'PL' && deliveryCountry != 'PL') {
canShip = false;
errorMsg = 'Invoice in Poland -> shipping must be in Poland.'
}
$('#thecheckout-address-delivery [name=id_country]').removeClass('-error');
removeError('#thecheckout-address-delivery .error-msg');
if (!canShip) {
$('#thecheckout-address-delivery [name=id_country]').addClass('-error');
$('#thecheckout-address-delivery [name=id_country]').after('<div class="field error-msg">' + errorMsg + '</div>');
scrollToError();
return false;
} else {
return true;
}
}
});
//# sourceURL=tc-custom.js
// ##### Example 11 - make one of business/private checkboxes always required #####
document.addEventListener('DOMContentLoaded', function(event) {
//jQuery shall be loaded now
tc_confirmOrderValidations['business_private_required'] = function() {
// do this check for both .business-private-checkboxes in #thecheckout-address-delivery and #thecheckout-address-invoice
let result = true;
['#thecheckout-address-delivery', '#thecheckout-address-invoice'].forEach(function (selector) {
const businessPrivateVisible = $(selector + ' .business-private-checkboxes input[type=checkbox]:visible').length > 0;
const businessPrivateChecked = $(selector + ' .business-private-checkboxes input[type=checkbox]:checked').length > 0;
$(selector + ' .business-private-checkboxes').removeClass('-error');
removeError(selector + ' .business-private-checkboxes .error-msg');
let errorMsg = 'Please select one of the options';
switch (prestashop?.language?.iso_code) {
case 'it':
errorMsg = 'Seleziona una delle opzioni';
break;
}
if (businessPrivateVisible && !businessPrivateChecked) {
$(selector + ' .business-private-checkboxes').addClass('-error');
// Add error in front of checkboxes
$(selector + ' .business-private-checkboxes').prepend('<div class="field error-msg">' + errorMsg + '</div>');
scrollToError();
result = false;
}
});
return result;
}
});
//# sourceURL=tc-custom.js

View File

@@ -93,7 +93,7 @@ $(document).ready(function () {
checkAndHideGlobalError();
});
$('body').on('change', '#js-delivery input', function () {
$('body').on('change', '#js-delivery .shipping-radio input', function () {
selectDeliveryOption($('#js-delivery')); // delivery form object as parameter
});
@@ -190,6 +190,12 @@ $(document).ready(function () {
});
$('body').on('change', '[data-link-action=x-ship-to-different-address]', function () {
// Hook to this:
// prestashop.on('thecheckout_changeSecondAddress', function(data) { console.log('second address block toggled!', data); })
prestashop.emit('thecheckout_changeSecondAddress', {
'addressType': 'delivery',
'isCollapsing': $('#thecheckout-address-delivery').is(':visible')
});
if ($('#thecheckout-address-delivery').is(':visible')) {
$(this).prop('checked', false);
@@ -210,6 +216,11 @@ $(document).ready(function () {
});
$('body').on('change', '[data-link-action=x-bill-to-different-address]', function () {
prestashop.emit('thecheckout_changeSecondAddress', {
'addressType': 'invoice',
'isCollapsing': $('#thecheckout-address-invoice').is(':visible')
});
if ($('#thecheckout-address-invoice').is(':visible')) {
$(this).prop('checked', false);
$('#thecheckout-address-invoice').hide(10, function () {
@@ -256,6 +267,7 @@ $(document).ready(function () {
if ($('#dni-placeholder').length && $('#thecheckout-address-invoice .business-field.dni').length) {
swapElements($('#dni-placeholder'), $('#thecheckout-address-invoice .business-field.dni'));
}
removeError('.business-private-checkboxes > .error-msg');
return false;
});
@@ -280,6 +292,7 @@ $(document).ready(function () {
if ($('#dni-placeholder-delivery').length && $('#thecheckout-address-delivery .business-field.dni').length) {
swapElements($('#dni-placeholder-delivery'), $('#thecheckout-address-delivery .business-field.dni'));
}
removeError('.business-private-checkboxes > .error-msg');
return false;
});
@@ -304,6 +317,7 @@ $(document).ready(function () {
if ($('#dni-placeholder-private').length && $('#thecheckout-address-invoice .private-field.dni').length) {
swapElements($('#dni-placeholder-private'), $('#thecheckout-address-invoice .private-field.dni'));
}
removeError('.business-private-checkboxes > .error-msg');
return false;
});
@@ -328,10 +342,37 @@ $(document).ready(function () {
if ($('#dni-placeholder-private-delivery').length && $('#thecheckout-address-delivery .private-field.dni').length) {
swapElements($('#dni-placeholder-private-delivery'), $('#thecheckout-address-delivery .private-field.dni'));
}
removeError('.business-private-checkboxes > .error-msg');
return false;
});
$('body').on('change', '[data-link-action^=x-i-am-private],[data-link-action^=x-i-am-business]', function () {
const linkAction = $(this).data('link-action');
const isBusiness = linkAction.startsWith('x-i-am-business');
const addressType = linkAction.endsWith('delivery') ? 'delivery' : 'invoice';
const isChecked = $(this).prop('checked');
// prestashop.on('thecheckout_businessPrivateChecked', function(data) { console.log('business or private checkbox selected!', data); })
prestashop.emit('thecheckout_businessPrivateChecked', {
addressType, isBusiness, isChecked
});
return false;
});
if (config_use_other_for_business_private) {
prestashop.on('thecheckout_businessPrivateChecked', function (data) {
const field = $(`#thecheckout-address-${data.addressType} [name=other]`);
const isBusinessMsg = i18_business ?? 'business';
const isPrivateMsg = i18_private ?? 'private';
let msg = '';
if (data.isChecked) {
msg = data.isBusiness ? isBusinessMsg : isPrivateMsg;
}
field.val(msg);
});
}
$('body').on('click', '[data-link-action=toggle-password-visibility]', function () {
var input = $(this).closest('label').find('input');
@@ -367,7 +408,10 @@ $(document).ready(function () {
});
$('body').on('click', '[data-link-action=x-update-cart-quantity-up]', function () {
var inputEl = $(this).parent().find('[data-link-action=x-update-cart-quantity]');
inputEl.val(parseInt(inputEl.val()) + 1).data('no-wait', 1); // .trigger('input');
const data = inputEl.data();
const qtyHave = parseInt(inputEl.val());
const qtyChange = data?.step ?? 1;
inputEl.val(qtyHave + qtyChange).data('no-wait', 1); // .trigger('input');
inputEl.get(0).dispatchEvent(new Event('input', {
bubbles: true
}))
@@ -375,8 +419,11 @@ $(document).ready(function () {
});
$('body').on('click', '[data-link-action=x-update-cart-quantity-down]', function () {
var inputEl = $(this).parent().find('[data-link-action=x-update-cart-quantity]');
if (parseInt(inputEl.attr('min')) < parseInt(inputEl.val())) {
inputEl.val(parseInt(inputEl.val()) - 1).data('no-wait', 1); // .trigger('input');
const data = inputEl.data();
const qtyHave = parseInt(inputEl.val());
const qtyChange = data?.step ?? 1;
if (parseInt(inputEl.attr('min')) <= qtyHave - qtyChange) {
inputEl.val(qtyHave - qtyChange).data('no-wait', 1); // .trigger('input');
inputEl.get(0).dispatchEvent(new Event('input', {
bubbles: true
}))
@@ -518,6 +565,11 @@ $(document).ready(function () {
$('[data-link-action="toggle-password-visibility"]').removeClass('hidden');
$(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) {
if (['abort', 'canceled'].includes(thrownError)) {
// console.log('Ajax aborted', ajaxOptions)
return;
}
console.info("Ajax error \n\nDetails:\nError thrown: " + thrownError + "\n" +
'event: ');
console.info(event);
@@ -534,6 +586,7 @@ $(document).ready(function () {
var modalTriggeredToBeShown = 0;
setTimeout( function() {
$(".js-terms a").off('click');
$(".dm_gdpr_active a.iframe").removeClass('iframe');
$("body#checkout").on("click", ".js-terms a", function (t) {
modalTriggeredToBeShown++;
setTimeout(function() { modalTriggeredToBeShown--; }, 1000);
@@ -597,7 +650,7 @@ $(document).ready(function () {
}
// Attach also loading-remove handler, when (this) ajax is finished
jqxhr.always(function() {
$(settings.customPropAffectedBlocks).find('.inner-area > .tc-ajax-loading').remove();
$(settings.customPropAffectedBlocks).find('.inner-area > .tc-ajax-loading').remove();
});
}
});
@@ -638,13 +691,14 @@ function initBlocksSelectors() {
}
function handleWindowResize(win) {
if (win.width() <= tcMobileViewThreshold && !tcIsMobileView) {
const winWidth = window.innerWidth; // win.width()
if (winWidth <= tcMobileViewThreshold && !tcIsMobileView) {
tcIsMobileView = true;
// Take out all checkout blocks from their desktop layout and put into new container for mobile sorting
$('.checkout-block').each(function () {
$(this).appendTo('#tc-container-mobile');
});
} else if (win.width() > tcMobileViewThreshold && tcIsMobileView) {
} else if (winWidth > tcMobileViewThreshold && tcIsMobileView) {
tcIsMobileView = false;
// Put .checkout-block containers back to desktop (out of mobile / single column layout)
$('.checkout-block').each(function () {
@@ -706,6 +760,13 @@ function checkAndHideGlobalError() {
function showGlobalError() {
$('#tc-payment-confirmation > .error-msg').show();
scrollToError();
if (typeof grecaptcha !== 'undefined' && typeof grecaptcha.reset === 'function') {
try {
grecaptcha.reset();
} catch (error) {
// intentionally empty
}
}
}
function scrollToError() {
@@ -779,6 +840,13 @@ function modifyRadioOption(radioElements) {
});
}
function printContextNotices(blockSel, notices) {
$.each(notices, function (index, value) {
$(blockSel + ' [name=' + index + ']').addClass('-notice');
$(blockSel + ' [name=' + index + ']').after('<div class="field notice-msg">' + value + '</div>');
});
}
function printContextErrors(blockSel, errors, triggerElement, dontShowGlobal) {
var highlightOnElements = [];
@@ -818,6 +886,13 @@ function printContextErrors(blockSel, errors, triggerElement, dontShowGlobal) {
if (switchToStep > 0 && typeof setHash === 'function') {
setHash(switchToStep);
}
// For invisible or non-existing fields, let's collect all errors inside 'general_error'
if (!$(blockSel + ' [name=' + index + ']').is(':visible')) {
value = index + ': ' + value;
index = 'general_error';
}
$(blockSel + ' [name=' + index + ']').addClass('-error');
if ($(blockSel + ' [name=' + index + ']').is(':checkbox') || $(blockSel + ' [name=' + index + ']').is(':radio')) {
$(blockSel + ' [name=' + index + ']').closest('.form-group').append('<div class="field error-msg">' + value + '</div>');
@@ -931,7 +1006,7 @@ function addVoucher() {
// so we need to fetch this again; only enable if voucher affect shipping cost
getShippingAndPaymentBlocks();
} else {
updateCheckoutBlocks(jsonData, true, false, false);
updateCheckoutBlocks(jsonData, true, false, false, true);
}
}
}
@@ -960,7 +1035,7 @@ function removeVoucher(data) {
if (tcGlobal_fetchAgainAfterVoucher) {
getShippingAndPaymentBlocks();
} else {
updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping);
updateCheckoutBlocks(jsonData, true, false, tc_updatePaymentWithShipping, true);
}
}
}
@@ -979,6 +1054,7 @@ function confirmOrder(confirmButtonEl) {
var validationFailed = false;
// clear shipping error before validations
$('#thecheckout-shipping .error-msg').not(':first-child').remove();
$('#thecheckout-shipping .error-msg').hide();
$.each(tc_confirmOrderValidations, function (validationName, validationCallback) {
@@ -1113,6 +1189,12 @@ function updateQuantityFromInput(el) {
// $('#thecheckout-cart-summary').prepend('<div class="error-msg">' + errMsg + '</div>')
// $('#thecheckout-cart-summary > .error-msg').show();
// }
prestashop.emit('updateCart', { reason: {
idProduct: data["idProduct"],
idProductAttribute: data["idProductAttribute"],
idProductCustomization: data["idCustomization"],
action: 'updateQuantity'
}, resp: jsonData });
updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping);
}
@@ -1213,6 +1295,12 @@ function checkEmail(accountFormSelector, triggerEl, callback) {
blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr)';
printContextErrors(blockSel, jsonData.errors, undefined, true);
} else {
blockSelAccount = ':is(#thecheckout-account)';
removeError(blockSelAccount + ' .field.notice-msg');
if (typeof jsonData.notices !== 'undefined' && jsonData.notices['email']) {
printContextNotices(blockSelAccount, jsonData.notices);
}
updateAccountToken(jsonData.newToken);
updateStaticToken(jsonData.newStaticToken);
// if out of some reason, shipping/payment blocks are still disallowed, maybe entering email
@@ -1358,6 +1446,10 @@ function _getExtraAccountParams() {
if ($('[name=colissimo_is_mobile_valid]').length) {
extraAccountParams += '&colissimo_is_mobile_valid=' + encodeURIComponent($('[name=colissimo_is_mobile_valid]').val());
}
// lpshipping module (terminal selection)
if ($('[name=lpshipping_express_terminal]').length) {
extraAccountParams += '&lpshipping_express_terminal=' + encodeURIComponent($('[name=lpshipping_express_terminal]').val());
}
// djtalbrazilianregister (CPF/CNPJ fields module)
if ($('[name=document_type]').length && $('[name=document_number]').length) {
$('input[name=document_type]:checked, input[name=document_number], input[name=rg], input[name=ie]').each( (key, item) => {
@@ -1368,6 +1460,19 @@ function _getExtraAccountParams() {
if ($('#parcel_codigo').length === 1) {
extraAccountParams += '&parcel[codigo]=' + encodeURIComponent($('#parcel_codigo').val());
}
// dpdbaltics
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone]').length === 1) {
extraAccountParams += '&dpd-phone=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone]').val());
}
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone-area]').length === 1) {
extraAccountParams += '&dpd-phone-area=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone-area]').val());
}
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-city]').length === 1) {
extraAccountParams += '&dpd-city=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-city]').val());
}
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-street]').length === 1) {
extraAccountParams += '&dpd-street=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-street]').val());
}
return extraAccountParams;
}
@@ -1403,8 +1508,8 @@ function modifyAccountAndAddress(triggerElement, callback) {
dataType: "json",
data: "modifyAccountAndAddress=1&ajax_request=1&action=modifyAccountAndAddress&trigger=" + triggerSection +
"&account=" + serializeVisibleFields('form.account-fields') +
"&invoice=" + encodeURIComponent($('#thecheckout-address-invoice form :visible').serialize()) +
"&delivery=" + encodeURIComponent($('#thecheckout-address-delivery form :visible').serialize()) +
"&invoice=" + encodeURIComponent($('#thecheckout-address-invoice form :visible, #thecheckout-address-invoice .use-other-for-business-private input').serialize()) +
"&delivery=" + encodeURIComponent($('#thecheckout-address-delivery form :visible, #thecheckout-address-delivery .use-other-for-business-private input').serialize()) +
"&passwordVisible=" + $('#thecheckout-account input[name=password]:visible').length +
"&passwordRequired=" + $('#thecheckout-account input[name=create-account]:checked').length +
"&invoiceVisible=" + $('#thecheckout-address-invoice form:visible').length +
@@ -1421,13 +1526,31 @@ function modifyAccountAndAddress(triggerElement, callback) {
// Go through account, invoice and delivery errors, show them all
if ("undefined" !== typeof jsonData.account && null !== jsonData.account) {
blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr)';
printContextErrors(blockSel, jsonData.account.errors);
if (typeof tc_steps !== 'undefined') {
// When steps are enabled, these checkboxes can be on different 'steps' pages, so we need to call printContextError with correct blockSel-ector
var checkboxes = ['data-privacy', 'psgdpr', 'required-checkbox-1', 'required-checkbox-2'];
var checkboxErrors = false
for (const checkboxName of checkboxes) {
if (jsonData.account.errors[checkboxName]?.length) {
printContextErrors(`#thecheckout-${checkboxName}`, jsonData.account.errors);
checkboxErrors = true
break;
}
}
if (!checkboxErrors) {
blockSel = ':is(#thecheckout-account)';
printContextErrors(blockSel, jsonData.account.errors);
}
} else {
blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr, #thecheckout-required-checkbox-1, #thecheckout-required-checkbox-2)';
printContextErrors(blockSel, jsonData.account.errors);
}
if (jsonData.account.hasErrors) {
if (debug_js_controller) {
var errMsg = formatErrors(jsonData.account.errors, triggerElement);
console.info('modifyAccountAndAddress: account has errros');
console.info('modifyAccountAndAddress: account has errors');
console.info(errMsg);
}
@@ -1515,7 +1638,7 @@ function modifyAccountAndAddress(triggerElement, callback) {
hideConfirmButtonLoader($('[data-link-action=x-save-account-overlay]'));
if ("undefined" !== typeof jsonData.shippingErrors && null !== jsonData.shippingErrors && "undefined" !== typeof jsonData.shippingErrors.errors) {
var errorsTxt = jsonData.shippingErrors.errors.join(', ');
var errorsTxt = Object.values(jsonData.shippingErrors.errors).join(', ');
$('<div class="error-msg shipping-errors">'+errorsTxt+'</div>').prependTo($('#thecheckout-shipping .inner-wrapper')).show();
noErrors = false;
showGlobalError();
@@ -1574,6 +1697,12 @@ function signIn() {
signedInUpdateForm();
}
},
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 500) {
console.error("Internal server error occurred: ", errorThrown);
}
location.reload();
}
});
}
@@ -1589,7 +1718,7 @@ function deleteFromCart(data, self) {
// Avanto an_productfields module support
var anGroupId = $(self).attr('href').match('an_group_id.*');
additionalData += (anGroupId)?'&'+anGroupId:'';
// url - implicitly using current
$.ajax({
customPropAffectedBlocks: '#thecheckout-shipping, #thecheckout-payment, #thecheckout-cart-summary',
@@ -1605,6 +1734,13 @@ function deleteFromCart(data, self) {
"&token=" + static_token + additionalData,
success: function (jsonData) {
prestashop.emit('updateCart', { reason: {
idProduct: data["idProduct"],
idProductAttribute: data["idProductAttribute"],
idProductCustomization: data["idCustomization"],
action: 'deleteFromCart'
}, resp: jsonData });
updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping);
}
@@ -1852,10 +1988,63 @@ function highlightSelectedPaymentMethod() {
}
}
function updateShippingPrices(shippingBlockHtml) {
if ('undefined' !== shippingBlockHtml && null !== shippingBlockHtml) {
var $parsedShippingBlock = $(shippingBlockHtml);
$parsedShippingBlock.find('.delivery-option').each(function() {
var $parsedDeliveryOption = $(this);
var carrierRef = $parsedDeliveryOption.attr('class').match(/carrier-ref-\d+/)[0];
// if carrierRef is not found, we cannot update prices, skip this .each() iteration
if (!carrierRef) {
return;
}
var $actualDeliveryOption = $('.delivery-options-list .delivery-option.' + carrierRef);
// if respective carrierRef delivery option is not available, skip this .each() iteration
if (!$actualDeliveryOption.length) {
return;
}
var priceTypes = ['carrier-price', 'carrier-price-with-tax-formatted', 'carrier-price-without-tax-formatted'];
priceTypes.forEach(function(priceType) {
var $parsedPrice = $parsedDeliveryOption.find('.delivery-option-detail span.' + priceType + ':first');
$actualDeliveryOption.find('span.' + priceType).each(function() {
var $currentActualPrice = $(this);
$currentActualPrice.text($parsedPrice.text());
});
});
});
}
}
function updateShippingBlock(shippingModulesList, html, checksum, triggerElementName) {
if ('undefined' !== html && null !== html && shippingBlockChecksum != checksum) {
html = parseShippingMethods(shippingModulesList, html);
// save shipping form text input fields and select boxes, so we can restore them after hook update
var shipping_fields_values = {};
shippingBlockElement.find('input[type=text], select, form input[type=radio]:checked, textarea').not('[name^=delivery_option]').each(function () {
if ("undefined" !== typeof $(this).attr('id') && !$(this).is(':radio')) {
shipping_fields_values['[id=' + $(this).attr('id') + ']'] = $(this).val();
} else if ("undefined" !== typeof $(this).attr('name')) {
shipping_fields_values['[name="' + $(this).attr('name') + '"]'] = $(this).val();
}
});
updateHtmlBlock(shippingBlockElement, html);
// restore shipping for input and select fields values
$.each(shipping_fields_values, function (index, value) {
if ($(index).is(':radio')) {
$(index+'[value="'+value+'"]').prop('checked', true);
} else {
$(index).val(value);
}
});
shippingBlockChecksum = checksum;
afterShippingLoadCallbacks(shippingModulesList, html, triggerElementName);
@@ -1882,7 +2071,9 @@ function updateShippingBlock(shippingModulesList, html, checksum, triggerElement
// E.g. packzkomaty (sensbitpaczkomatymap) needs to trigger radio button change in order
// to display list of pickup points; Chronopost and Mondial relay need it as well
// forceRefreshShipping: If ="1", it will always reload shipping methods, so we need to avoid triggering click to avoid endless loop
if ($(deliveryOptionSelector).length && !payment.isConfirmationTrigger(triggerElementName) && !forceRefreshShipping) {
// To disable carrier initialization and 'blink' effect, add Custom JS code: const tc_initCarrierJs = false;
if ((typeof tc_initCarrierJs !== 'undefined' ? tc_initCarrierJs : true) &&
$(deliveryOptionSelector).length && !payment.isConfirmationTrigger(triggerElementName) && !forceRefreshShipping) {
$(deliveryOptionSelector).prop('checked', false).trigger('click');
return true;
} else {
@@ -1940,7 +2131,7 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
// Shall be input[type=hidden] added here? It did not work with add_gopay_new
// then, we need an exception: .not('[data-payment-module=add_gopay_new] input[type=hidden]')
// Exception for hidden fields: input[name="issuer"] = mollie payments
paymentBlockElement.find('input[type=text], select, input[name="issuer"], input[name="transferGateway"], form input[type=radio]:checked, textarea').each(function () {
paymentBlockElement.find('input[type=text], select, input[name="issuer"], input[name="transferGateway"], form input[type=radio]:checked, textarea, input[type=date]').each(function () {
if ("undefined" !== typeof $(this).attr('id') && !$(this).is(':radio') && $(this).attr('name') !== 'pmethod') {
payment_fields_values['[id=' + $(this).attr('id') + ']'] = $(this).val();
} else if ("undefined" !== typeof $(this).attr('name')) {
@@ -1978,6 +2169,8 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
afterPaymentLoadCallbacks(paymentModulesList, html, triggerElementName);
// Hook to this:
// prestashop.on('thecheckout_updatePaymentBlock', function() { console.log('payment block updated!'); })
prestashop.emit('thecheckout_updatePaymentBlock', {
reason: 'update',
});
@@ -1985,7 +2178,7 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
// restore payment for input and select fields values
$.each(payment_fields_values, function (index, value) {
if ($(index).is(':radio')) {
$(index+'[value='+value+']').prop('checked', true);
$(index+'[value="'+value+'"]').prop('checked', true);
} else {
$(index).val(value);
}
@@ -1993,12 +2186,12 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
// Special molliepayments update - where we need to restore not only input/select value, but also special <button> (which replaces dropdown)
if ($('#mollie-issuer-dropdown-button').length && $('input[name="issuer"]').length && '' != $('input[name="issuer"]').val()) {
var selectedMolliePayment = $('input[name="issuer"]').val();
var selectedMolliePayment = $('input[name="issuer"]').val();
var aMollieEl = $('a[data-ideal-issuer='+selectedMolliePayment+']');
if (aMollieEl.length) {
$('#mollie-issuer-dropdown-button').text(aMollieEl.text());
}
}
}
}
// Init PS Checkout render
@@ -2105,7 +2298,7 @@ function updateAddressBlock(addressType, html, htmlAddressDropdown) {
}
}
// Hook to this:
// Hook to this (alternative of prestashop.emit only on thecheckout page):
// $(document).on('thecheckout_Address_Modified', function(event, { addressType }) {
// console.log('Address modified!', addressType);
// });
@@ -2116,7 +2309,7 @@ function updateAddressBlock(addressType, html, htmlAddressDropdown) {
var cartTotalWeight = 0; // will be changed in updateCheckoutBlocks and then used in updateCartSummaryBlock
function updateCheckoutBlocks(jsonData, updateSummary, updateShipping, updatePayment) {
function updateCheckoutBlocks(jsonData, updateSummary, updateShipping, updatePayment, updateShippingPricesOnly = false) {
if ("undefined" !== typeof jsonData.emptyCart && jsonData.emptyCart === true) {
$('body').addClass('is-empty-cart');
// if ("undefined" !== typeof prestashop && "undefined" !== typeof prestashop.urls) {
@@ -2135,6 +2328,10 @@ function updateCheckoutBlocks(jsonData, updateSummary, updateShipping, updatePay
var shippingBlockUpdated = false;
var paymentBlockUpdated = false;
if ('undefined' !== typeof updateShippingPricesOnly && updateShippingPricesOnly) {
updateShippingPrices(jsonData.shippingBlock);
}
if ('undefined' !== typeof updateShipping && updateShipping) {
shippingBlockUpdated = updateShippingBlock(jsonData.externalShippingModules, jsonData.shippingBlock, jsonData.shippingBlockChecksum, jsonData.triggerElementName);
}
@@ -2178,19 +2375,22 @@ function toggleGiftMessage() {
$(this).addClass('in show')
});
}
selectDeliveryOption($('#js-delivery'));
}
function selectDeliveryOption(deliveryForm) {
highlightSelectedShippingMethod();
// To support mondial relay v3.0+, allow a bit of time for widget markup appear in extra content
setTimeout(function () {
var selectedDeliveryOptionExtra = $(deliveryOptionSelector).closest('.delivery-option-row').next('.carrier-extra-content');
$('.carrier-extra-content').not(selectedDeliveryOptionExtra).hide();
if (selectedDeliveryOptionExtra.height()) {
selectedDeliveryOptionExtra.slideDown();
}
}, 100);
if (installedModules['mondialrelay']) {
setTimeout(function () {
var selectedDeliveryOptionExtra = $(deliveryOptionSelector).closest('.delivery-option-row').next('.carrier-extra-content');
$('.carrier-extra-content').not(selectedDeliveryOptionExtra).hide();
if (selectedDeliveryOptionExtra.height()) {
selectedDeliveryOptionExtra.slideDown();
}
}, 100);
}
// url - implicitly using current
$.ajax({
@@ -2225,3 +2425,97 @@ function setDeliveryMessage() {
}
});
}
const tc_ongoingXhrs = {}
const tc_getTimestamp = () => {
const now = new Date();
return [
now.getTime(),
`${now.getSeconds().toString().padStart(2, '0')}:${now.getMilliseconds().toString().padStart(3, '0')}`
]
}
const tc_getAction = (data) => {
const match = data.match(/action=([-\w]+)/)
if (!match) {
return null
}
// construct 'metaAction', set of actions that we don't want to run in parallel, so that they shall be treated
// as synchronous
const metaAction = {
'modifyAccountAndAddress': 'account-modification',
'checkEmail': 'account-modification',
}
if (typeof metaAction[match[1]] !== 'undefined') {
return metaAction[match[1]]
} else {
return match[1]
}
}
const tc_AJAX = {
SEND: ' send ',
COMPLETE: ' complete '
};
const tc_logAction = (method, action) => {
const [timestamp, timestamp_str] = tc_getTimestamp()
const ongoingXhr = typeof tc_ongoingXhrs[action] !== 'undefined'
if (method == tc_AJAX.COMPLETE && !ongoingXhr) {
return
}
let took = ''
if (method == tc_AJAX.SEND) {
// wait only 1s, if response is not received, release the lock and let the other (potential) xhr to continue
tc_ongoingXhrs[action] = { timestamp, maxWait: 1000 }
} else {
took = ` (took: ${timestamp - tc_ongoingXhrs[action]?.timestamp}ms)`
delete tc_ongoingXhrs[action]
}
if (debug_js_controller) {
console.log(`[${method}] '${action}' @ ${timestamp_str}s${took}`)
}
}
$( document ).on( "ajaxSend", function(event, jqxhr, settings) {
if (typeof settings.data === 'string') {
const action = tc_getAction(settings.data)
if (action) {
tc_logAction(tc_AJAX.SEND, action)
}
}
});
$( document ).on( "ajaxSuccess", function(event, jqxhr, settings) {
if (typeof settings.data === 'string') {
const action = tc_getAction(settings.data)
if (action) {
tc_logAction(tc_AJAX.COMPLETE, action)
}
}
});
/*
Disallow duplicate AJAX requests, but with max timeout (default 1s) to avoid endless waiting
*/
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
if (typeof settings.data === 'string') {
const action = tc_getAction(settings.data)
if (action && typeof tc_ongoingXhrs[action] !== 'undefined' && tc_ongoingXhrs[action]?.maxWait > 0) {
tc_ongoingXhrs[action].maxWait -= 200
setTimeout(function() {
$.ajax(settings);
}, 200);
return false;
}
}
}
});

View File

@@ -0,0 +1,17 @@
/*
* NOTICE OF LICENSE
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
* @author Peter Sliacky (Zelarg)
* @copyright Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* Copyright (c) 2021-2022
*/
// If we're in an iframe, let's do full page reload
var confirmationInIframe = (window.self !== window.top)
if (confirmationInIframe) {
window.top.location.href = window.location.href;
}

View File

@@ -31,4 +31,15 @@ if ("undefined" !== typeof amazon_ongoing_session && amazon_ongoing_session) {
formEl.addClass('amazon-visible');
additionalEl.addClass('amazon-visible');
titleEl.addClass('amazon-visible');
}
// Check if there's 'option' parameter in the url, if yes, let's hide everything except single payment method
var searchParams = new URLSearchParams(window.location.search);
var optionSet = searchParams.get('option');
if (optionSet) {
$('body').addClass('p3i-option-set');
// $('[id='+optionSet+'-container]').parent('div').addClass('p3i-visible-only');
$('[id^='+optionSet+'-]').addClass('p3i-visible-only');
setTimeout(function() {$('[id='+optionSet+']').trigger('click');}, 200);
$('[id^=conditions_to_approve]').prop('checked', false).trigger('click');
}

View File

@@ -34,6 +34,7 @@ var tc_facebookLogin = (function () {
function backendSignIn(access_token) {
$.ajax({
url: prestashop.urls.pages.order,
type: 'POST',
cache: false,
dataType: "json",
@@ -45,8 +46,15 @@ var tc_facebookLogin = (function () {
// TODO: better error handling
console.error(jsonData.errors);
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
signedInUpdateForm();
location.reload();
}
},
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 500) {
console.error("Internal server error occurred: ", errorThrown);
// Add any additional error handling logic here
}
location.reload();
}
});
}
@@ -132,6 +140,13 @@ var tc_googleLogin = (function () {
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
location.reload();
}
},
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 500) {
console.error("Internal server error occurred: ", errorThrown);
// Add any additional error handling logic here
}
location.reload();
}
});
}

View File

@@ -0,0 +1,55 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* Last tested on 11.8.2023 with apaczka 1.1.0 by Apaczka.pl */
tc_confirmOrderValidations['apaczka'] = function() {
if (
/* $('.delivery-option.apaczka input[type=radio]').is(':checked') && */
typeof apaczkaCarriers === 'object' &&
$('.apaczka-no-point').is(':visible')
) {
// Legacy selector, replace from Thecheckout v3.3.8+ with version below
// var shippingErrorMsg = $('#thecheckout-shipping > .inner-area > .error-msg');
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.text('Wybierz punkt dostawy');
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
}
checkoutShippingParser.apaczka = {
after_load_callback: function(deliveryOptionIds) {
if (typeof apaczkaCarriers === 'object') {
// Apaczka would init map selector on window.load()
dispatchEvent(new Event('load'));
}
},
init_once: function (elements) {
if (debug_js_controller) {
console.info('[thecheckout-apaczka.js] init_once()');
}
},
delivery_option: function (element) {
if (debug_js_controller) {
console.info('[thecheckout-apaczka.js] delivery_option()');
}
},
extra_content: function (element) {
}
}

View File

@@ -0,0 +1,36 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* tested with Google Pay v2.0.0 - by Bonpresta - on 8.4.2024 */
checkoutPaymentParser.bongooglepay = {
container: function (element) {
payment.setPopupPaymentType(element);
element.find('input[name=payment-option]').addClass('binary'); // so that our 'pay' button in the popup disappears
// Add CSS rule to hide payment form in payment methods list
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
.js-additional-information.bongooglepay > .bon-googlepay-required {
display: none;
}
`);
},
popup_onopen_callback: function () {
if ($('#bon-google-checkout').length) {
var script = document.createElement('script');
script.src = tcModuleBaseUrl+'/../bongooglepay/views/js/bongooglepay-front.js';
document.head.appendChild(script);
}
},
}

View File

@@ -18,6 +18,9 @@ checkoutPaymentParser.braintreeofficial = {
init_once: function(elements) {
// Change original .additional-information block to js-payment-option-form
const additionalInfoEl = elements.find('.additional-information');
if (additionalInfoEl.length === 0) {
return;
}
const formId = additionalInfoEl.attr('id').replace(/payment-option-(\d+)-.*/, 'pay-with-payment-option-$1-form');
additionalInfoEl.attr('id', formId).attr('class', 'js-payment-option-form ps-hidden').hide();
additionalInfoEl.find('.row > .col-md-10').removeClass('col-md-10');

View File

@@ -0,0 +1,26 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
checkoutPaymentParser.buckaroo3 = {
all_hooks_content: function (content) {
},
container: function (element) {
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
var feeEl = element.find('label span.h6');
if ('undefined' !== typeof feeEl && feeEl) {
// parse out right-most number, in left side text, there can be number in 'B2B'
var feeNumber = feeEl.text().replace(/^.*?([\d,.]+)[€ ]*$/,'$1');
var fee = parseFloat(feeNumber.replace(',','.'));
element.last().append('<div class="payment-option-fee hidden" id="'+paymentOption+'-fee">'+fee+'</div>');
}
}
}

View File

@@ -13,9 +13,9 @@ checkoutPaymentParser.codpro = {
},
container: function (element) {
additionalInformation: function (element) {
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
var feeEl = element.find('label span');
var feeEl = element.find('#codpro_fee');
if ('undefined' !== typeof feeEl && feeEl) {
var fee = parseFloat(feeEl.text().replace(/[^\d,]/g,'').replace(',','.'));
element.last().append('<div class="payment-option-fee hidden" id="'+paymentOption+'-fee">'+fee+'</div>');

View File

@@ -8,7 +8,24 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
// Default props so that widget can load without errors
colissimoDeliveryAddress = { 'address': '', 'zipcode': '', 'city': '' }
colissimoPreparationTime = 1;
checkoutShippingParser.colissimo = {
extra_content: function (element) {
const input = element.html();
// parse props and re-export to the window object
const colissimo_props = input.matchAll(/const ([^=]+)=([^;]+);/g)
for (const x of colissimo_props) {
[prop, value] = [x[1].trim(), x[2].trim()]
// console.log(`prop:${prop}, value:${value}`);
window[prop] = (value.indexOf('{') == 0) ?
JSON.parse(value.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": ').replace(/'/g,'"'))
: eval(value);
}
},
on_ready: function() {
setTimeout(function(){
if ($('.iti').length == 0 && 'undefined' !== typeof initMobileField) {

View File

@@ -0,0 +1,17 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
checkoutPaymentParser.datatranscw_mastercard = {
after_load_callback: function() {
prestashop.emit('steco_event_updated')
},
}

View File

@@ -0,0 +1,36 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* last tested 28.2.2024 with v4.0.193 - by customweb ltd */
checkoutPaymentParser.datatranscw_all = {
after_load_callback: function() {
$.getScript(tcModuleBaseUrl+'/../datatranscw/js/frontend.js')
.done(
function() {
setTimeout(function() { $('input[name=payment-option]:checked').click(); }, 500);
});
},
form: function (element) {
},
additionalInformation: function (element) {
}
}
// One call even for multiple datatranscw payment modules is OK - events are attached for all of them at once
checkoutPaymentParser.datatranscw_creditcard = checkoutPaymentParser.datatranscw_all;

View File

@@ -0,0 +1,276 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* Last tested on 10.1.2024 with dhlassistant v1.7 by DHL Parcel Polska */
tc_confirmOrderValidations['dhlassistant'] = function() {
if (
$('#dhlassistant_map_PL_CARRIER_POP').is(':visible') &&
!$('#dhlassistant_messages > .current-address').is(':visible')
) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
$('.shipping-validation-details').remove();
shippingErrorMsg.append('<span class="shipping-validation-details"> (DHL POP - punkt odbioru)</span>')
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
}
var tc_load_dhlassistant_script = function() {
function shippingMethodChange() {
var activeRadio = $(".delivery-options input[type='radio']:checked");
var elValue = parseInt(activeRadio.val());
var carrierCode = $("#dhlassistant_carrier_code_" + elValue).val();
var requireSelection = $('#dhlassistant_need_selection_' + elValue).val();
var parcelIdent = $('#dhlassistant_parcel_ident_value_' + carrierCode).val();
if (requireSelection && (typeof parcelIdent === 'undefined' || "" === parcelIdent)) {
$('button[name="confirmDeliveryOption"]').attr('disabled', true);
console.log(carrierCode);
}
else if (carrierCode == ['PL_CARRIER_POP'] || carrierCode == ['PL_CARRIER_POP_COD'] || carrierCode == ['FOREIGN_CARRIER_PARCELSHOP']) {
$('button[name="confirmDeliveryOption"]').attr('disabled', true);
$( ".current-address" ).hide();
}
else {
$('button[name="confirmDeliveryOption"]').attr('disabled', false);
}
}
function parcelMapChange() {
$('button[name="confirmDeliveryOption"]').attr('disabled', true);
$( ".current-address" ).hide();
}
$(".delivery-options input[type='radio']").change(function (e) {
shippingMethodChange();
});
$('#dhlassistant_ps_checkbox').bind('change', parcelMapChange);
$('#dhlassistant_pl_checkbox').bind('change', parcelMapChange);
shippingMethodChange();
MapPointSelectListenerPlCarrierPop = function(msg)
{
var point = JSON.parse(msg.data);
$('#dhlassistant_parcel_ident_value_PL_CARRIER_POP').val(point.sap);
$('#dhlassistant_parcel_postal_code_value').val(point.zip);
$( "p.current-address" ).text(point.name+" "+point.street+" "+point.streetNo+" "+point.zip+" "+point.city);
SaveDhlCarrierOptionsPlCarrierPop();
}
SendToParcelShopChangePlCarrierPop = function()
{
$('#dhlassistant_ps_checkbox').parent().parent().removeClass('disabled');
var val = $('#dhlassistant_ps_checkbox').prop('checked');
if (val)
{
if (dhlassistant_require_postalcode_for_ps)
{
$('#dhlassistant_parcel_postal_code .label').html('Kod pocztowy Parcelshop:');
$('#dhlassistant_parcel_postal_code').show();
}
else
{
$('#dhlassistant_parcel_postal_code').hide();
}
$('#dhlassistant_pl_checkbox').prop('checked', false);
$('#dhlassistant_pl_checkbox').prop('disabled', true);
SendToParcelLockerChangePlCarrierPop();
$('#dhlassistant_parcel_ident').show();
$('#dhlassistant_map_PL_CARRIER_POP').html('<object data="'+dhlassistant_map_for_pl_url+'" style="width:100%;height:813px;" frameborder="0" scrolling="no" id="myFrame"></object>');
$('#dhlassistant_map_PL_CARRIER_POP').show();
}
else
{
if (!$('#dhlassistant_pl_checkbox').prop('checked'))
{
$('#dhlassistant_map_PL_CARRIER_POP').hide();
$('#dhlassistant_parcel_ident').hide();
$('#dhlassistant_parcel_postal_code').hide();
}
$('#dhlassistant_pl_checkbox').prop('disabled', false);
$('#dhlassistant_pl_checkbox').parent().parent().removeClass('disabled');
}
}
SendToParcelLockerChangePlCarrierPop = function()
{
$('#dhlassistant_pl_checkbox').parent().parent().removeClass('disabled');
var val = $('#dhlassistant_pl_checkbox').prop('checked');
if (val)
{
if (dhlassistant_require_postnummer_for_pl)
{
$('#dhlassistant_postnummer').show();
}
else
{
$('#dhlassistant_postnummer').hide();
}
if (dhlassistant_require_postalcode_for_pl)
{
$('#dhlassistant_parcel_postal_code .label').html('Kod pocztowy Parcelstation:');
$('#dhlassistant_parcel_postal_code').show();
}
else
{
$('#dhlassistant_parcel_postal_code').hide();
}
$('#dhlassistant_ps_checkbox').prop('checked', false);
$('#dhlassistant_ps_checkbox').prop('disabled', true);
SendToParcelShopChangePlCarrierPop();
$('#dhlassistant_parcel_ident').show();
$('#dhlassistant_map_PL_CARRIER_POP').show();
}
else
{
if (!$('#dhlassistant_ps_checkbox').prop('checked'))
{
$('#dhlassistant_map_PL_CARRIER_POP').hide();
$('#dhlassistant_parcel_ident').hide();
$('#dhlassistant_parcel_postal_code').hide();
}
$('#dhlassistant_ps_checkbox').prop('disabled', false);
$('#dhlassistant_ps_checkbox').parent().parent().removeClass('disabled');
$('#dhlassistant_postnummer').hide();
}
}
SaveDhlCarrierOptionsPlCarrierPop = function()
{
$('#dhlassistant_messages .success').hide();
$('#dhlassistant_messages .error').hide();
$('#HOOK_PAYMENT').html('');
var ajax_data = {};
var val_ps = $('#dhlassistant_ps_checkbox').prop('checked');
var val_pl = $('#dhlassistant_pl_checkbox').prop('checked');
var val_parcel_ident = $('#dhlassistant_parcel_ident_value_PL_CARRIER_POP').val();
var val_postnummer = $('#dhlassistant_postnummer_value').val();
var val_parcel_postal_code = $('#dhlassistant_parcel_postal_code_value').val();
if (val_ps)
ajax_data.ParcelShop = val_ps;
if (val_pl)
ajax_data.ParcelLocker = val_pl;
if (val_parcel_ident)
ajax_data.ParcelIdent = val_parcel_ident;
if (val_postnummer)
ajax_data.Postnummer = val_postnummer;
if (val_parcel_postal_code)
ajax_data.ParcelPostalCode = val_parcel_postal_code;
$.ajax({
type: "POST",
headers: { "cache-control": "no-cache" },
url: dhlassistant_ajax_catcher_url,
data: ajax_data,
context: document.body,
dataType : "json",
success: function(message)
{
if (message == 'Success')
$('#dhlassistant_messages .success').slideDown('slow');
else
$('#dhlassistant_messages .error').slideDown('slow');
if (typeof(updatePaymentMethodsDisplay) !== "undefined")
{
$('#uniform-cgv').parent().show();
if ($('#cgv').prop('checked'))
updatePaymentMethodsDisplay();
}
$('button[name="confirmDeliveryOption"]').attr('disabled', false);
var scrollToMessage = document.getElementById("SCROLL_TO_PL_CARRIER_POP");
scrollToMessage.scrollIntoView();
},
error: function()
{
scrollToMessage.slideDown('slow');
scrollToMessage.scrollIntoView();
}
});
}
DhlOptionsInitPlCarrierPop = function(){
dhlassistant_ajax_catcher_url = $("#PL_CARRIER_POP_dhlassistant_ajax_catcher_url").val();
dhlassistant_carrier_id = $("#PL_CARRIER_POP_dhlassistant_carrier_id").val();
dhlassistant_is_ps_available = !!+$("#PL_CARRIER_POP_dhlassistant_is_ps_available").val();
dhlassistant_is_ps_only_service = !!+$("#PL_CARRIER_POP_dhlassistant_is_ps_only_service").val();
dhlassistant_is_pl_available = !!+$("#PL_CARRIER_POP_dhlassistant_is_pl_available").val();
dhlassistant_is_map_for_parcel_available = !!+$("#PL_CARRIER_POP_dhlassistant_is_map_for_parcel_available").val();
dhlassistant_map_for_ps_url = $("#PL_CARRIER_POP_dhlassistant_map_for_ps_url").val();
dhlassistant_map_for_pl_url = $("#PL_CARRIER_POP_dhlassistant_map_for_pl_url").val();
dhlassistant_require_postnummer_for_pl = !!+$("#PL_CARRIER_POP_dhlassistant_require_postnummer_for_pl").val();
dhlassistant_require_postalcode_for_ps = !!+$("#PL_CARRIER_POP_dhlassistant_require_postalcode_for_ps").val();
dhlassistant_require_postalcode_for_pl = !!+$("#PL_CARRIER_POP_dhlassistant_require_postalcode_for_pl").val();
dhlassistant_ok = ($('#delivery_option_' + dhlassistant_carrier_id).val() == (dhlassistant_carrier_id+','));
if (dhlassistant_ok)
{
if (dhlassistant_is_ps_only_service) /* jeśli musi być podany nr. PS aby przejść dalej*/
{
$('#uniform-cgv').parent().hide();
$('#HOOK_PAYMENT').html('');
}
if ((dhlassistant_is_ps_available || dhlassistant_is_pl_available) && dhlassistant_is_map_for_parcel_available)
{
if (window.addEventListener)
{
window.addEventListener("message", MapPointSelectListenerPlCarrierPop, false);
}
else
{
window.attachEvent("onmessage", MapPointSelectListenerPlCarrierPop);
}
}
SendToParcelShopChangePlCarrierPop();
SendToParcelLockerChangePlCarrierPop();
$('#dhlassistant_ps_checkbox').bind('change', SendToParcelShopChangePlCarrierPop);
$('#dhlassistant_pl_checkbox').bind('change', SendToParcelLockerChangePlCarrierPop);
$('#dhlassistant_PL_CARRIER_POP').show();
}
};
/* init */
if (document.readyState !== 'complete')
$(DhlOptionsInitPlCarrierPop);
else
DhlOptionsInitPlCarrierPop();
}
checkoutShippingParser.dhlassistant = {
after_load_callback: function(deliveryOptionIds) {
if (typeof tc_load_dhlassistant_script === 'function') {
tc_load_dhlassistant_script();
}
},
init_once: function (elements) {
if (debug_js_controller) {
console.info('[thecheckout-dhlassistant.js] init_once()');
}
},
delivery_option: function (element) {
if (debug_js_controller) {
console.info('[thecheckout-dhlassistant.js] delivery_option()');
}
},
extra_content: function (element) {
}
}

View File

@@ -17,7 +17,7 @@ checkoutPaymentParser.dm_cashondelivery = {
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
var feeHtml = element.find('label span').html();
var fee = payment.parsePrice(feeHtml);
if (!isNaN(fee)) {
if (!isNaN(fee) && fee !== 0) {
element.last().append('<div class="payment-option-fee hidden" id="'+paymentOption+'-fee">'+fee+'</div>');
}
},
@@ -26,7 +26,7 @@ checkoutPaymentParser.dm_cashondelivery = {
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
var feeHtml = element.find('section p').html();
var fee = payment.parsePrice(feeHtml);
if (!isNaN(fee)) {
if (!isNaN(fee) && fee !== 0) {
element.last().append('<div class="payment-option-fee hidden" id="' + paymentOption + '-fee">' + fee + '</div>');
}
}

View File

@@ -27,7 +27,10 @@ tc_confirmOrderValidations['dpdpoland'] = function() {
checkoutShippingParser.dpdpoland = {
after_load_callback: function(deliveryOptionIds) {
// nothing necessary here; just make an update to dpdpoland/views/templates/hook/pudo.tpl, placing code in <script> in condition:
/*
nothing necessary here; just make an update to dpdpoland/views/templates/hook/pudo.tpl,
placing code in <script> (starting with 'const iframe = document.createElement("iframe");') in condition:
*/
// if ('undefined' === typeof iframe) { /* original code here */ }
},
}

View File

@@ -0,0 +1,19 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
checkoutShippingParser.estimateddelivery= {
init_once: function (elements) {
// This variable is handled from estimateddelivery module
if (typeof ed_refresh !== 'undefined' && dynamic_refresh === false)
{
dynamic_refresh = true;
}
}
}

View File

@@ -0,0 +1,39 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*
* Last tested on 04.04.2024 with Floapay v1.2.4 by 202 ecommerce
*/
checkoutPaymentParser.floapay = {
after_load_callback: function() {
if (typeof floaDisplayPaymentSummary === 'function') {
floaDisplayPaymentSummary();
}
if (typeof floaDisplayPaymentReportDateField === 'function') {
floaDisplayPaymentReportDateField();
}
if (typeof setFloaEvents === 'function') {
setFloaEvents();
}
},
form: function (element) {
let form = element.find('.payment-form');
if (typeof form !== 'undefined' && form?.attr('action')?.search('floapay/eligibility'))
{
let onSubmitAction = 'return floaLaunchEligibility($("#confirm_order"));';
form.attr('action', 'javascript:void(0);');
form.attr('onsubmit', onSubmitAction);
}
}
}

View File

@@ -0,0 +1,50 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
tc_confirmOrderValidations['fspickupatstore'] = function () {
if (
$('.fspas-information:visible').length > 0 && $('.fspas-information:visible').text().indexOf('-') > 3 && $('.fspas-information:visible').text().indexOf('-') < 15
) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
$('.shipping-validation-details').remove();
shippingErrorMsg.append('<span class="shipping-validation-details"> (изберете офис)</span>')
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
}
checkoutShippingParser.fspickupatstore = {
after_load_callback: function(deliveryOptionIds) {
$.getScript(tcModuleBaseUrl + '/../fspickupatstore/views/js/carrier-extra.js');
// Add CSS rule
// var cssEl = document.createElement('style'),sheet;
// document.head.appendChild(cssEl);
// cssEl.sheet.insertRule(`
// .delivery-option.latvijaspastsexpresspastspostterminalslv > label {
// flex-wrap: wrap;
// }
// `);
},
init_once: function (elements) {
},
delivery_option: function (element) {
},
extra_content: function (element) {
}
}

View File

@@ -0,0 +1,28 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
checkoutPaymentParser.generic_iframe_parser = {
popup_onopen_callback: function (optionId) {
$('.popup-payment-content .popup-embed').prop('src', '?p3i&option='+optionId);
$('.popup-payment-content').addClass('iframe');
},
popup_onclose_callback: function () {
$('.popup-payment-content .popup-embed').prop('src', '');
$('.popup-payment-content').removeClass('iframe');
},
container: function(element) {
payment.setPopupPaymentType(element);
element.find('input[name=payment-option]').addClass('binary');
},
}

View File

@@ -0,0 +1,36 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* Last tested on 07.06.2024 with geodisofficiel v1.0.3 by GEODIS */
let geodisLoaded = false;
checkoutShippingParser.geodisofficiel = {
after_load_callback: function(deliveryOptionIds) {
if (!geodisLoaded && typeof GeodisCarrierSelector === 'function') {
$.getScript(tcModuleBaseUrl+'/../geodisofficiel/views/js/lib/intlTel/utils.js');
$.getScript(tcModuleBaseUrl+'/../geodisofficiel/views/js/GeodisCarrierSelectorBootstrap.js');
geodisLoaded = true;
}
},
init_once: function (elements) {
},
delivery_option: function (element) {
},
extra_content: function (element) {
}
}

View File

@@ -0,0 +1,35 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* Last tested on 10.07.2024 with globkuriermodule v3.0.1 by GlobKurier.pl */
// let globKurierModuleLoaded = false;
checkoutShippingParser.globkuriermodule = {
after_load_callback: function(deliveryOptionIds) {
if (!globKurierModuleLoaded && typeof inpost_carrier_id !== 'undefined') {
$.getScript(tcModuleBaseUrl+'/../globkuriermodule/views/js/inpost-front-17.js');
// globKurierModuleLoaded = true;
}
},
init_once: function (elements) {
},
delivery_option: function (element) {
},
extra_content: function (element) {
}
}

View File

@@ -9,10 +9,17 @@
*/
/* (!) IMPORTANT (!)
It's necessary to comment-out following line in: modules/itellashipping/views/js/front.js, like this:
// $master_container.find('#itella-ps17-extra').remove();
*/
tc_confirmOrderValidations['itellashipping'] = function() {
if (
$('.delivery-option.itellashipping input[name^=delivery_option]').is(':checked') &&
!$('#itella_pickup_point_id').val()
$('.delivery-option.itellashipping input[name^=delivery_option]:checked').closest('.delivery-option.itellashipping').next('.carrier-extra-content.itellashipping').length > 0 &&
$('.delivery-option.itellashipping input[name^=delivery_option]:checked').closest('.delivery-option.itellashipping').next('.carrier-extra-content.itellashipping').find('#itella_pickup_point_id').length > 0 &&
$('.delivery-option.itellashipping input[name^=delivery_option]:checked').closest('.delivery-option.itellashipping').next('.carrier-extra-content.itellashipping').find('#itella_pickup_point_id').val() == ''
) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.show();

View File

@@ -0,0 +1,52 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
tc_confirmOrderValidations['latvijaspastsexpresspastspostterminalslv'] = function() {
if (
$('.latvijaspasts_carrier.terminals').is(':visible') &&
$('[name=terminals]')?.val() == '0'
) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.text(shippingErrorMsg.text() + ' (piegādes punkts)');
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
}
checkoutShippingParser.latvijaspastsexpresspastspostterminalslv = {
after_load_callback: function(deliveryOptionIds) {
$.getScript(tcModuleBaseUrl + '/../latvijaspasts/views/js/carrier_script.js');
// Add CSS rule
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
.delivery-option.latvijaspastsexpresspastspostterminalslv > label {
flex-wrap: wrap;
}
`);
},
init_once: function (elements) {
},
delivery_option: function (element) {
},
extra_content: function (element) {
}
}

View File

@@ -0,0 +1,23 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
tc_confirmOrderValidations['lpshipping'] = function() {
if (
$('#lpshipping_express_terminal').is(':visible') &&
( "" == $('#lpshipping_express_terminal').val() || '-1' === $('#lpshipping_express_terminal').val())
) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
}

View File

@@ -0,0 +1,84 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* Last tested on 22.03.2024 with mijoravenipak v1.1.4 by mijora.lt */
// var tc_tmjs = null;
// var tc_venipak_custom_modal = function() {
// let mjvp_map_container = document.getElementById('mjvp-pickup-select-modal');
// let tmjs = null;
// if (typeof(mjvp_map_container) != 'undefined' && mjvp_map_container != null) {
// tc_tmjs = new TerminalMappingMjvp('https://venipak.uat.megodata.com/ws');
// tmjs = tc_tmjs;
// tmjs.setImagesPath(mjvp_imgs_url);
// tmjs.setTranslation(mjvp_terminal_select_translates);
// tmjs.dom.setContainerParent(document.getElementById('mjvp-pickup-select-modal'));
// // tmjs.terminals_cache = null;
// tmjs.init({
// country_code: mjvp_country_code,
// identifier: '',
// isModal: true,
// hideContainer: false,
// hideSelectBtn: false,
// postal_code: mjvp_postal_code,
// city: mjvp_city
// });
// tmjs.sub('tmjs-ready', function(data) {
// let selected_terminal = document.getElementById("mjvp-selected-terminal")?.value;
// let selected_location = tmjs.map?.getLocationById(parseInt(selected_terminal));
// if (typeof(selected_location) != 'undefined' && selected_location != null) {
// tmjs.publish('terminal-selected', selected_location);
// document.querySelector('.tmjs-selected-terminal').innerHTML = '<span class="mjvp-tmjs-terminal-name">' + selected_location.name + '</span> <span class="mjvp-tmjs-terminal-address">(' + selected_location.address + ')</span> <span class="mjvp-tmjs-terminal-comment">' + selected_location.city + '.</span>';
// }
// });
// tmjs.sub('terminal-selected', function(data) {
// document.getElementById("mjvp-selected-terminal").value = data.id;
// mjvp_registerSelection('mjvp-selected-terminal');
// tmjs.publish('close-map-modal');
// document.querySelector('.tmjs-selected-terminal').innerHTML = '<span class="mjvp-tmjs-terminal-name">' + data.name + '</span> <span class="mjvp-tmjs-terminal-address">(' + data.address + ')</span> <span class="mjvp-tmjs-terminal-comment">' + data.city + '.</span>';
// });
// }
// if (typeof window['venipak_custom_modal'] !== 'undefined') {
// window['venipak_custom_modal'].tmjs = tmjs;
// }
// }
checkoutShippingParser.mijoravenipak = {
after_load_callback: function(deliveryOptionIds) {
// check every 500ms at most for 3 seconds when length > 0 and if so, call venipak_custom_modal()
const conditionallyInitializeMJVP = () => {
let counter = 0;
let checkInterval = setInterval(function() {
if (mjvp_terminals.length > 0) {
venipak_custom_modal();
clearInterval(checkInterval);
} else {
console.log('[tc-mijoravenipak] mjvp_terminals empty, wait 500ms...');
counter++;
if (counter >= 6) {
clearInterval(checkInterval);
}
}
}, 500);
}
if (typeof venipak_custom_modal === 'function') {
setTimeout(conditionallyInitializeMJVP, 500);
}
},
}

View File

@@ -10,6 +10,33 @@
checkoutPaymentParser.mollie = {
container: function (element) {
payment.setPopupPaymentType(element);
// Add CSS rule to hide payment form in payment methods list
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
section#checkout-payment-step [data-payment-module=mollie] > .additional-information > .mollie-iframe-container {
display: none!important;
}
`);
cssEl.sheet.insertRule(`
button.btn.btn-primary.center-block.disabled {
pointer-events: all;
opacity: 1;
}
`);
},
popup_onopen_callback: function () {
if ($('.additional-information.mollie > .mollie-iframe-container').length) {
var script = document.createElement('script');
script.src = tcModuleBaseUrl+'/../mollie/views/js/front/mollie_iframe.js';
document.head.appendChild(script);
}
},
form: function (element) {
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];

View File

@@ -8,6 +8,8 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* Last tested on 13.7.2023 with mondialrelay 3.3.7 by ScaleDEV */
tc_confirmOrderValidations['mondialrelay'] = function() {
if (
/*$('#mondialrelay_widget').is(':visible')*/
@@ -25,6 +27,17 @@ tc_confirmOrderValidations['mondialrelay'] = function() {
}
checkoutShippingParser.mondialrelay = {
after_load_callback: function(deliveryOptionIds) {
// reinit only when widget is already initialized = that means, mondialrelay module won't try to init it again, but we have to.
if (typeof mondialrelayWidget !== 'undefined' && mondialrelayWidget.initialized === true) {
$.getScript(tcModuleBaseUrl + '/../mondialrelay/views/js/front/checkout/checkout-17.js');
if (typeof MONDIALRELAY_ADDRESS_OPC !== 'undefined') {
MONDIALRELAY_ADDRESS_OPC = true;
}
}
},
init_once: function (elements) {
if (debug_js_controller) {
console.info('[thecheckout-mondialrelay.js] init_once()');
@@ -39,7 +52,7 @@ checkoutShippingParser.mondialrelay = {
// Uncheck mondialrelay item, so that it can be manually selected
//element.after("<script>$('.delivery-option.mondialrelay input[name^=delivery_option]').prop('checked', false)</script>");
// Mondial v3.0+ by 202 ecommerce
element.append("<script>$(document).ready(setTimeout(function(){$('#js-delivery').find('[name^=\"delivery_option\"]:checked').trigger('change');},500)); prestashop.emit(\"updatedDeliveryForm\",{dataForm:$('#js-delivery').serializeArray(),deliveryOption:$('#js-delivery').find('[name^=\"delivery_option\"]:checked')});</script>");
// element.append("<script>$(document).ready(setTimeout(function(){$('#js-delivery').find('[name^=\"delivery_option\"]:checked').trigger('change');},500)); prestashop.emit(\"updatedDeliveryForm\",{dataForm:$('#js-delivery').serializeArray(),deliveryOption:$('#js-delivery').find('[name^=\"delivery_option\"]:checked')});</script>");
},
extra_content: function (element) {

View File

@@ -23,6 +23,25 @@ tc_confirmOrderValidations['packetery'] = function() {
}
checkoutShippingParser.packetery = {
after_load_callback: function(deliveryOptionIds) {
// if ('undefined' !== typeof initializePacketaWidget && $(".zas-box").length)
// initializePacketaWidget();
// if ('undefined' !== typeof tools){
// tools.fixextracontent(country);
// if ('undefined' !== typeof tools && 'undefined' !== typeof tools.readAjaxFields) {
// tools.readAjaxFields();
// }
// var packeteryEl = $('.carrier-extra-content.packetery');
// if (packeteryEl.length) {
// var extra = packeteryEl.parent();
// if ('undefined' !== typeof packetery && 'undefined' !== typeof packetery.widgetGetCities) {
// packetery.widgetGetCities(extra);
// }
// }
// }
},
init_once: function (elements) {
},

View File

@@ -8,7 +8,49 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
Modify please /modules/paynow/controllers/front/payment.php, remove lines:
if ($id_customer != $this->context->customer->id) {
Tools::redirect('index.php?controller=order&step=1');
}
*/
tc_confirmOrderValidations['paynow'] = function () {
if (
$('.paynow-payment-option-container #paynow_blik_code').is(':visible') &&
$('.paynow-payment-option-container #paynow_blik_code').val() == ''
) {
var paymentErrorMsg = $('#thecheckout-payment .dynamic-content > .inner-wrapper > .error-msg');
$('.payment-validation-details').remove();
paymentErrorMsg.append('<span class="payment-validation-details"> (BLIK kod)</span>')
paymentErrorMsg.show();
scrollToElement(paymentErrorMsg);
return false;
} else {
return true;
}
}
checkoutPaymentParser.paynow = {
container: function(element) {
const isBlikPaymentOption = element.next('.js-payment-option-form').find('form.paynow-blik-form').length == 1
if (isBlikPaymentOption) {
payment.setPopupPaymentType(element);
}
// Add CSS rule to hide blik form in payment methods list when T&C checkbox is ticked;
// but keep it visible in the popup
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
section#checkout-payment-step .paynow-blik-form {
display: none;
}
`);
},
after_load_callback: function() {
$.getScript(tcModuleBaseUrl+'/../paynow/views/js/front.js')
.done(
@@ -16,6 +58,9 @@ checkoutPaymentParser.paynow = {
setTimeout(function() {
if (typeof enableBlikSupport !== 'undefined') { enableBlikSupport(); }
if (typeof enablePblSupport !== 'undefined') { enablePblSupport(); }
if (typeof paynow !== 'undefined' && typeof paynow.config !== 'undefined') {
paynow.config.validateTerms = false; // because if T&C are disabled in PS settings, BLIK will not confirm
}
}, 300);
});
// if ("undefined" !== typeof enableBlikSupport) {
@@ -24,15 +69,16 @@ checkoutPaymentParser.paynow = {
},
form: function (element) {
var blikPayButtonSelector = "form.paynow-blik-form .paynow-payment-option-container button.btn-primary";
if (element.find('.paynow-blik-form').length) {
element.find('.payment-form').attr('onsubmit', '$("'+blikPayButtonSelector+'").click(); return false;');
}
// Add CSS rule to hid blickPayButton
var element = document.createElement('style'),sheet;
document.head.appendChild(element);
element.sheet.insertRule(blikPayButtonSelector + '{ display: none; }');
// var blikPayButtonSelector = "form.paynow-blik-form .paynow-payment-option-container button.btn-primary";
// if (element.find('.paynow-blik-form').length) {
// element.find('.payment-form').attr('onsubmit', '$("'+blikPayButtonSelector+'").click(); return false;');
// element.find(blikPayButtonSelector).prop('disabled', false);
// }
//
// // Add CSS rule to hide blickPayButton
// var element = document.createElement('style'),sheet;
// document.head.appendChild(element);
// element.sheet.insertRule(blikPayButtonSelector + '{ display: none; }');
},
}

View File

@@ -12,6 +12,7 @@
/*
IMPORTANT: In paypal v5.8.0, make sure to disable 'Put the PayPal button at the end of the order page' option!
If using Giropay, Sofort, SEPA - also set in Paypal configuration 'Redirection' mode, instead of 'In-Context'
*/
checkoutPaymentParser.paypal = {
@@ -37,7 +38,7 @@ checkoutPaymentParser.paypal = {
additionalInfoElement = $(containerElement).next('[id$=-additional-information]');
// If embedded mode (=data-container-express-checkout button exists), set popup payment type and make it binary
if (additionalInfoElement.find('[data-container-express-checkout]').length || additionalInfoElement.find('[data-container-bnpl]').length) {
if (additionalInfoElement.find('[data-container-express-checkout]').length || additionalInfoElement.find('[data-container-bnpl]').length || additionalInfoElement.find('[paypal-acdc-card-wrapper]').length) {
payment.setPopupPaymentType($(containerElement), true);
additionalInfoElement.addClass('paypal').addClass('paypal-hide-pp-info-and-button');
additionalInfoElement.find('.pp-info').prependTo(additionalInfoElement);
@@ -80,6 +81,11 @@ checkoutPaymentParser.paypal = {
}
}
// New Paypal (5.7+) card payment (acdc)
if ($(paymentContent).find('[paypal-acdc-wrapper]').length) {
var acdcRadio = $(paymentContent).find('.payment-option');
payment.setPopupPaymentType(acdcRadio);
}
});
var express_checkout_make_visible = '<script>\
@@ -130,6 +136,14 @@ checkoutPaymentParser.paypal = {
element.append(additional_script_tag);
}
}
}
},
popup_onopen_callback: function () {
if ($('#bon-google-checkout').length) {
var script = document.createElement('script');
script.src = tcModuleBaseUrl+'/../bongooglepay/views/js/bongooglepay-front.js';
document.head.appendChild(script);
}
},
}

View File

@@ -0,0 +1,34 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
checkoutPaymentParser.pm_applepay = {
popup_onopen_callback: function () {
console.info('[pm_applepay] popup_onopen_callback');
if (typeof (pmApplePayPlugin) !== 'undefined' && typeof (initPmApplePayEventsListeners) !== 'undefined') {
initPmApplePayEventsListeners();
}
},
after_load_callback: function() {
$('.dynamic-content .pm-apple-pay-container').appendTo('#pm_applepay-popup-container');
},
container: function(element) {
// // Create additional information block, informing user that payment will be processed after confirmation
// var paymentOptionId = element.attr('id').match(/payment-option-\d+/);
//
// if (paymentOptionId && 'undefined' !== typeof paymentOptionId[0]) {
// paymentOptionId = paymentOptionId[0];
// element.after('<div id="'+paymentOptionId+'-additional-information" class="stripe_official popup-notice js-additional-information definition-list additional-information ps-hidden" style="display: none;"><section><p>'+i18_popupPaymentNotice+'</p></section></div>')
// }
payment.setPopupPaymentType(element);
}
}

View File

@@ -8,6 +8,11 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/** Important - change this:
* in modules/pm_subscription/models/Dispatcher/MainCase.php, in method includeAssetsOfPaymentModules():
$isOrderController = $this->context->controller instanceof OrderController || $this->context->controller instanceof OrderOpcController || $this->context->controller->page_name == "module-thecheckout-order";
*/
checkoutPaymentParser.pm_subscription_popup = {

View File

@@ -9,7 +9,7 @@
*/
/* (!)
postfinancecheckout v1.2.3 - by Customweb
Tested on 4.3.2024, with postfinancecheckout v1.2.34 - by Customweb
in modules/postfinancecheckout/views/js/frontend/checkout.js, change (!) on 2 places:
if (current_method.data("module-name") == "postfinancecheckout") {

View File

@@ -0,0 +1,53 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* Payment is done in popup, because since the Blik input initialization, we have a limitted time until the order must be finished, so we'd rather init in the popup */
checkoutPaymentParser.przelewy24 = {
container: function(element) {
const isBlikPaymentOption = element.find('[data-module-name=przelewy24-method-181]').length == 1;
if (isBlikPaymentOption) {
payment.setPopupPaymentType(element);
element.find('input[name=payment-option]').addClass('binary'); // so that our 'pay' button disappears
}
// Add CSS rule to hide blik form in payment methods list when T&C checkbox is ticked;
// but keep it visible in the popup
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
section#checkout-payment-step #p24-blik-section {
display: none!important;
}
`);
},
popup_onopen_callback: function () {
$.getScript(tcModuleBaseUrl+'/../przelewy24/views/js/p24_inside.js')
.done(
function() {
setTimeout(function() {
$('[name=payment-option]:checked').change(); // invoke blik code input initialization
setTimeout(function() {
const paymentFormEl = $('.popup-payment-form').find('.js-additional-information');
$('#p24-blik-section').prependTo(paymentFormEl);
}, 200);
}, 300);
});
},
form: function (element) {
},
}

View File

@@ -9,6 +9,7 @@
*/
/* Tested with ps_checkout v2.21.0 (12.01.2023) */
/* Tested with ps_checkout v8.4.0 - commented out payment form removal (29.04.2024) */
window.tc_ps_checkout = {
init: false
};
@@ -80,7 +81,7 @@ checkoutPaymentParser.ps_checkout = {
}
// Disable weird 'click' emitted by _dev\js\front\src\components\1_7\payment-options.component.js in renderPaymentOptionItems() method
$('body').off('click.ps_checkout').on('click.ps_checkout', '[data-module-name=ps_checkout-paypal]', (e) => {
$('body').off('click.ps_checkout').on('click.ps_checkout', '[data-module-name^=ps_checkout-paypal]', (e) => {
let stackTrace = JSON.stringify(Error().stack);
if (stackTrace && stackTrace.match('modules/ps_checkout/views/js/front.js')) {
console.log('triggered by ps_checkout paypal fundingSource HTMLElement.click(), skip selected payment toggle');
@@ -115,12 +116,12 @@ checkoutPaymentParser.ps_checkout = {
},
form: function (element, triggerElementName) {
if (!payment.isConfirmationTrigger(triggerElementName)) {
if (debug_js_controller) {
console.info('[ps_checkout parser] Not confirmation trigger, removing payment form');
}
element.remove();
}
// if (!payment.isConfirmationTrigger(triggerElementName)) {
// if (debug_js_controller) {
// console.info('[ps_checkout parser] Not confirmation trigger, removing payment form');
// }
// element.remove();
// }
},
additionalInformation: function (element) {

View File

@@ -0,0 +1,29 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
tc_confirmOrderValidations['pshugls'] = function() {
if (
$('.carrier-extra-content.pshugls:visible').is(':visible') &&
$('.delivery-option.pshugls.selected').length === 1 &&
(
$('.delivery-option.pshugls.selected ~ .carrier-extra-content.pshugls').find('#gls-map-success-parcel-shop:visible').length === 0 &&
$('.delivery-option.pshugls.selected ~ .carrier-extra-content.pshugls').find('#gls-map-success-parcel-locker:visible').length === 0
)
) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.find('.err-pshugls').remove();
shippingErrorMsg.append('<span class="err-pshugls"> (pickup point)</span>');
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
}

View File

@@ -0,0 +1,43 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
checkoutPaymentParser.redsysinsite = {
container: function(element) {
payment.setPopupPaymentType(element);
element.find('input[name=payment-option]').addClass('binary'); // so that our 'pay' button in the popup disappears
// Add CSS rule to hide payment form in payment methods list
// but keep it visible in the popup
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
section#checkout-payment-step .redsysinsite_form_container [id^='redsysinsite_card_form_container'] {
display: none!important;
}
`);
cssEl.sheet.insertRule(`
.popup-payment-form [id^=ri-messages] {
display: none;
}
`);
},
popup_onopen_callback: function () {
},
form: function (element) {
},
}

View File

@@ -9,6 +9,23 @@
*/
/* popup mode last tested on 15.4.2023 with revolutpayment v2.2.4 */
/* popup/direct(=embedded)/redirect modes tested on 1.5.2024 with revolutpayment v2.8.6 */
/* Update please \revolutpayment\views\js\version17\revolut.payment.js, method initCheckoutUpsellBanner():
function initCheckoutUpsellBanner() {
let upsellBannerElement = document.getElementById("revolut-upsell-banner");
// Thecheckout module update begin
if (upsellBannerElement === null) { return; }
// Thecheckout module udpate end
And for revolutpay button, also update stopLoading() method, like so:
function stopLoading() {
// Thecheckout module update BEGIN
if (typeof $.unblockUI === 'function') {
$.unblockUI();
}
// Thecheckout module update END
}
*/
checkoutPaymentParser.revolutpayment = {
@@ -20,6 +37,25 @@ checkoutPaymentParser.revolutpayment = {
},
after_load_callback: function() {
// Update card logos, by default only VISA is shown
if (typeof logo_path === "undefined") {
return;
}
let visa_logo = `<img class="visa-logo" src="${logo_path}visa-logo.svg"/>`;
let mastercard_logo = `<img class="mastercard-logo" src="${logo_path}master-card-logo.svg">`;
let amex_logo = `<img class="amex-logo" style="display:none" src="${logo_path}amex.svg">`;
$(`img[src="${logo_path}visa-logo.svg"] ~ .tc-rev-logos`).remove();
$(`img[src="${logo_path}visa-logo.svg"]`).after(`${visa_logo}<span class="tc-rev-logos">${mastercard_logo}${amex_logo}</span>`).remove();
$(`img[src="${revpay_logo}"]`).after(`${visa_logo}${mastercard_logo}${amex_logo}`).css({ width: "30px" });
if (amex_availability) {
$(".amex-logo").show();
}
},
initPayment: function() {
// revolut_card container present, but fields not yet initiated
if ($('#revolut_card').length && !($('#revolut_card.rc-card-field').length)) {
@@ -31,12 +67,28 @@ checkoutPaymentParser.revolutpayment = {
// Create additional information block, informing user that payment will be processed after confirmation
var paymentOptionId = element.attr('id').match(/payment-option-\d+/);
let isRevolutPay = element.next().find('#revolutPayForm').length === 1;
let isRevolutCard = element.next().find('#revolutPay').length === 1; // not used now
if (isRevolutPay) {
element.find('input[name=payment-option]').addClass('binary'); // so that our 'pay' button disappears
}
if (paymentOptionId && 'undefined' !== typeof paymentOptionId[0]) {
paymentOptionId = paymentOptionId[0];
element.after('<div id="'+paymentOptionId+'-additional-information" class="stripe_official popup-notice js-additional-information definition-list additional-information ps-hidden" style="display: none;"><section><p>'+i18_popupPaymentNotice+'</p></section></div>')
element.after('<div id="'+paymentOptionId+'-additional-information" class="revolutpayment popup-notice js-additional-information definition-list additional-information ps-hidden" style="display: none;"><section><p>'+i18_popupPaymentNotice+'</p></section></div>')
}
payment.setPopupPaymentType(element);
// Add CSS rule
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
[data-payment-module=revolutpayment] .amex-logo ~ .tc-rev-logos {
display: none;
}
`);
},
form: function (element, triggerElementName) {

View File

@@ -8,6 +8,18 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/*
Tested with sendcloud v2.0.9 (09.05.2024)
(!) important, update /modules/sendcloudv2/sendcloudv2.php, method hookDisplayHeader(..), change $allowedControllers to:
$allowedControllers = [
'HistoryController',
'OrderConfirmationController',
'OrderController',
'OrderOpcController',
'TheCheckoutModuleFrontController'
];
*/
tc_confirmOrderValidations['sendcloud'] = function() {
if (
/*$('#mondialrelay_widget').is(':visible')*/

View File

@@ -11,6 +11,25 @@
var shaim_shipping_modules_present = ('undefined' !== typeof exists_opc);
if (shaim_shipping_modules_present) {
document.addEventListener('DOMContentLoaded', function(event) {
if (typeof CheckHardPplparcelshop === 'function') {
prestashop.on('thecheckout_updateDeliveryOption', function () {
setTimeout(function () {
var ppl_parcelshop_iframe = document.getElementById('ppl_parcelshop_iframe');
if (typeof ppl_parcelshop_iframe !== 'undefined' && ppl_parcelshop_iframe && typeof iframeListenerPplparcelshop === 'function') {
var idoc_ppl_parcelshop = ppl_parcelshop_iframe.contentWindow || ppl_parcelshop_iframe.contentDocument;
idoc_ppl_parcelshop.document.addEventListener('ppl-parcelshop-map', function (e) {
iframeListenerPplparcelshop(e);
});
}
}, 1500);
});
}
});
tc_confirmOrderValidations['shaim_shipping_modules'] = function () {
/* openservis - WEDO - begin */
@@ -95,5 +114,3 @@ if (shaim_shipping_modules_present) {
/* openservis - Zásilkovna - end */
}
}

View File

@@ -8,10 +8,12 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/* popup mode last tested on 15.4.2023 with stripe_official v3.0.2 */
/* popup mode last tested on 15.03.2024 with stripe_official v3.2.0 */
/* (!) Set 'Payment Form Position' to 'With the Prestashop payment methods' in Stripe configuration
/* redirect mode last tested on 12.12.2023 with stripe_official v3.1.3 (removed JS redirect, it's supported now natively in stripe_official module through config option) */
checkoutPaymentParser.stripe_official_inline = {
checkoutPaymentParser.stripe_official_redirect = {
all_hooks_content: function (content) {
@@ -19,76 +21,10 @@ checkoutPaymentParser.stripe_official_inline = {
container: function (element) {
//payment.setPopupPaymentType(element);
// Add logos to payment method
// Img path:
var stripe_base_url = '';
if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {
stripe_base_url = prestashop.urls.base_url;
}
element.find('label').append('<img src="' + stripe_base_url + '/modules/stripe_official/views/img/logo-payment.png">');
},
form: function (element) {
// First, set the 'form' action to be our background confirmation button click
// On this background confirmation button, stripe action is hooked
let form = element.find('form');
let onSubmitAction = '$(\'#payment-confirmation button\').click();';
form.attr('action', 'javascript:void(0);');
form.attr('onsubmit', onSubmitAction);
// And now, let's put Stripe's form into static container, so that it's not being refreshed
var paymentOptionForm = element;
var staticContentContainer = $('#thecheckout-payment .static-content');
// Now create new block with original Id and place it inside of static-content block
if (!staticContentContainer.find('.stripe-payment-form').length) {
$('<div class="stripe-payment-form"></div>').appendTo(staticContentContainer);
paymentOptionForm.clone().appendTo(staticContentContainer.find('.stripe-payment-form'));
staticContentContainer.find('.stripe-payment-form script').remove();
// Formatted version - KEEP it
// Init only once - when we're first time moving CC form
// let stripe_orig_script_tag = `
// <script>
// if ($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) {
// var stripe_base_url = '';
// if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {
// stripe_base_url = prestashop.urls.base_url;
// }
// $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');
// }
// </script>
// `;
// https://babeljs.io/repl
var stripe_orig_script_tag = "\n <script>\n if (($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) || ($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length)) {\n var stripe_base_url = '';\n if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {\n stripe_base_url = prestashop.urls.base_url;\n }\n $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');\n }\n </script>\n ";
//
staticContentContainer.find('.stripe-payment-form').append(stripe_orig_script_tag);
}
// Remove stripe payment form from actual .js-payment-option-form container and keep only "dynamic" part,
// which is <script> tag with dynamically created variables
var scriptTag = paymentOptionForm.find('script');
// stripe_official can have multiple payment options, make sure move only card payment to static-container
if (paymentOptionForm.find('#stripe-card-payment').length) {
paymentOptionForm.find('*').remove();
paymentOptionForm.prepend(scriptTag);
// Update ID of fixed form, so that it's displayed/hidden automatically with payment method selection
var origId = paymentOptionForm.attr('id');
staticContentContainer.find('.stripe-payment-form .js-payment-option-form').attr('id', origId);
// Remove tag ID and class from original form
paymentOptionForm.attr('id', 'stripe-script-tag-container');
paymentOptionForm.removeClass('js-payment-option-form');
}
}
}
@@ -108,12 +44,36 @@ checkoutPaymentParser.stripe_official_popup = {
if (($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) ||
($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length) ||
($('#js-stripe-payment-element').length && !$('#js-stripe-payment-element.StripeElement').length)) {
// var stripe_base_url = '';
// if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {
// stripe_base_url = prestashop.urls.base_url;
// }
$.getScript(tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js');
// $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');
// $.getScript(tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js');
var script = document.createElement('script');
script.src = tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js';
// If we unselect payment option, checkout.js would click it by its own when loaded - it would click 1st option, I guess they
// somehow made sure they're always at first position; but, it is necessary only when there are multiple payment methods!
if (document.querySelectorAll('input[name="payment-option"]').length > 1) {
document.querySelector('input[name="payment-option"]:checked').checked = false;
}
script.addEventListener('load', function() {
setTimeout(function() {
// If #js-stripe-payment-form is located outside of payment-form (this can be set in Stripe options - 'Payment Form Position'
// This is only workaround, if preferably set 'Payment Form Position' to 'With the Prestashop payment methods'
const stripeForm = $('.payment-options > #js-stripe-payment-form');
if (stripeForm.length) {
$('.popup-payment-content[data-payment-module=stripe_official] .js-payment-option-form').append(stripeForm);
}
},1000);
// console.log(' -- checkout.js loaded, now lets dispatch change event to payment option');
// var radioButton = document.querySelector('input[name="payment-option"]:checked');
// if (radioButton) {
// radioButton.dispatchEvent(new Event('change'));
// console.log('dispatched change event to payment option', radioButton);
// }
});
document.head.appendChild(script);
}
},
@@ -136,20 +96,27 @@ checkoutPaymentParser.stripe_official_popup = {
payment.setPopupPaymentType(element);
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
.popup-payment-content[data-payment-module=stripe_official] .js-payment-option-form {
display: block!important;
}
`);
},
form: function (element, triggerElementName) {
if (!payment.isConfirmationTrigger(triggerElementName)) {
if (debug_js_controller) {
console.info('[stripe_official parser] Not confirmation trigger, removing payment form');
}
element.remove();
} else {
// var stripe_orig_script_tag = "\n <script>\n if (($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) || ($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length)) {\n var stripe_base_url = '';\n if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {\n stripe_base_url = prestashop.urls.base_url;\n }\n $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');\n }\n </script>\n ";
// element.append(stripe_orig_script_tag);
// checkoutPaymentParser.stripe_official_popup.initPayment();
}
// if (!payment.isConfirmationTrigger(triggerElementName)) {
// // Integrated payment form
// if (debug_js_controller) {
// console.info('[stripe_official parser] Not confirmation trigger, removing payment form');
// }
// element.remove();
// } else {
// // empty
// }
return;
}
@@ -157,7 +124,8 @@ checkoutPaymentParser.stripe_official_popup = {
}
// Default Stripe parser
//checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_inline;
checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_popup;
if (typeof stripe_payment_elements_enabled !== "undefined" && stripe_payment_elements_enabled === "1") {
checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_popup;
} else {
checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_redirect;
}

View File

@@ -8,52 +8,37 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
checkoutPaymentParser.stripejs_removed = {
/* tested with Stripe Payment Pro v4.6.0 - by NTS - on 12.03.2024, when embedded payment is enabled */
checkoutPaymentParser.stripejs = {
initiatePayment: function() {
if (typeof StripePubKey !=='undefined') {
var stripe = Stripe(StripePubKey,{locale: lang_iso_code});
var stripe_pm = document.getElementById('selected_pm').value;
var quickPay = ((stripe_pm!=1) ? 1 : 0);
// after_load_callback: function() {
// if (typeof initiateStripePayment !== 'undefined') {
// initiateStripePayment();
// }
// },
$('input[name=payment-option]:checked').focus();
$('#stripe-ajax-loader,#stripe-payment-form').toggle();
$('#payment-confirmation button[type=submit]').prop("disabled", true);
var toggle_selector = '#stripe-ajax-loader,#stripe-payment-form';
var error_selector = '#card-errors';
container: function (element) {
payment.setPopupPaymentType(element);
handlePI('checkout', function(res_status){
if(res_status.code==1) {
$('#checkout-success').show();
stripe.redirectToCheckout({
sessionId: res_status.sess_id
}).then(function (result) {
$('#checkout-success').hide();
var err_msg = showStripePayError(toggle_selector, 0, result.error.message, error_selector);
alert(result.error.message);
});
}
});
// Add CSS rule to hide payment form in payment methods list
var cssEl = document.createElement('style'),sheet;
document.head.appendChild(cssEl);
cssEl.sheet.insertRule(`
section#checkout-payment-step [data-payment-module=stripejs] > .additional-information {
display: none!important;
}
`);
},
popup_onopen_callback: function () {
if (typeof initiateStripePayment !== 'undefined') {
// out of some reason stripe_allow_prbutton is always false on initial page load
if ($('[data-module-name^=stripePRButton]').length && typeof stripe_allow_prbutton !== 'undefined') {
stripe_allow_prbutton = true;
}
initiateStripePayment();
}
},
after_load_callback: function() {
// $.getScript(tcModuleBaseUrl + '/../stripejs/views/js/stripe-prestashop.js');
},
all_hooks_content: function (content) {
},
container: function (element) {
},
form: function (element) {
let form = element.find('form');
let onSubmitAction = 'javascript:checkoutPaymentParser.stripejs.initiatePayment()';
form.attr('action', 'javascript:void(0);');
form.attr('onsubmit', onSubmitAction);
}
}

View File

@@ -0,0 +1,39 @@
/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
tc_confirmOrderValidations['tpay'] = function () {
if (
$('ul.tpay-payment-gateways:visible').length &&
$('[name=tpay_transfer_id]:checked').length == 0
) {
var paymentErrorMsg = $('#thecheckout-payment .dynamic-content > .inner-wrapper > .error-msg');
$('.payment-validation-details').remove();
paymentErrorMsg.append('<span class="payment-validation-details"> (Tpay channel)</span>')
paymentErrorMsg.show();
scrollToElement(paymentErrorMsg);
return false;
} else {
return true;
}
}
checkoutPaymentParser.tpay = {
after_load_callback: function() {
$.getScript(tcModuleBaseUrl+'/../tpay/views/js/main.min.js')
.done(
function() {
console.log('tpay loaded');
});
},
form: function (element) {
// intentionally empty
},
}

View File

@@ -8,6 +8,14 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/*
Update file: /modules/upsservice/upsservice.php, change in hookDisplayHeader():
from:
if (($this->context->controller instanceof OrderController) || ($this->context->controller instanceof OrderOpcController)) {
to:
if (($this->context->controller instanceof OrderController) || ($this->context->controller instanceof OrderOpcController) || $this->context->controller instanceof TheCheckoutModuleFrontController) {
*/
checkoutShippingParser.upsservice = {
after_load_callback: function(deliveryOptionIds) {

View File

@@ -4,20 +4,41 @@
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @author Veebipoed.ee | Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
tc_confirmOrderValidations['vp_omniva'] = function() {
if (
$('.vp_omniva select[name=terminals]').is(':visible') &&
'0' == $('.vp_omniva select[name=terminals]').val()
) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
tc_confirmOrderValidations['vp_omniva'] = function() {
let selectedDeliveryOption = $('.delivery-option-row.selected');
if (selectedDeliveryOption && 0 !== selectedDeliveryOption.length) {
if (selectedDeliveryOption[0].classList.contains('vp_omniva') ||
selectedDeliveryOption[0].classList.contains('vp_omniva_latvia') ||
selectedDeliveryOption[0].classList.contains('vp_omniva_lietuva')) {
let nextElement = selectedDeliveryOption[0].nextElementSibling;
if (nextElement && 0 !== nextElement.children.length) {
let selectElements = $(nextElement).find('select');
if (2 === selectElements.length) {
if (selectElements[1][0].selected) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
} else {
if (selectElements[0][0].selected) {
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.show();
scrollToElement(shippingErrorMsg);
return false;
} else {
return true;
}
}
}
}
}
}
return true; // default when validations are not needed
}

View File

@@ -67,9 +67,9 @@ var payment = (function () {
if (0 == $(selectedOption).length) {
// Only now try to select by default set in checkout options
// Changed to 'starts with' selector, e.g. paypal module has data-module-name=paypal_plus
selectedOption = '[data-module-name^=' + config_default_payment_method + ']';
selectedOption = '[data-module-name^=' + config_default_payment_method + ' i]';
}
if (0 == $(selectedOption).length) {
if (0 == $(selectedOption).length && config_default_payment_method != '') {
selectedOption = '.' + config_default_payment_method + ' [name=payment-option]:first';
}
@@ -180,7 +180,7 @@ var payment = (function () {
var paymentOption = getPaymentOptionSelector(option);
$(paymentOption).slideDown();
if (!dont_remove_confirmation_button) {
// self.confirmationButton.hide();
self.confirmationButton.hide();
}
}
@@ -242,7 +242,7 @@ var payment = (function () {
loadPaymentPopupLibrary(function() {
popupContainer.paymentpopup({
onopen: function () {
popupCallback(paymentMethodName)
popupCallback(paymentMethodName, option)
},
onclose: function() {
popupCloseCallback(paymentMethodName);
@@ -282,11 +282,11 @@ var payment = (function () {
}
}
function popupCallback(paymentMethodName) {
function popupCallback(paymentMethodName, optionId) {
if ('undefined' !== typeof checkoutPaymentParser[paymentMethodName]
&& 'undefined' !== typeof checkoutPaymentParser[paymentMethodName].popup_onopen_callback) {
console.info('popup open callback for ' + paymentMethodName + ' called');
checkoutPaymentParser[paymentMethodName].popup_onopen_callback();
checkoutPaymentParser[paymentMethodName].popup_onopen_callback(optionId);
}
}

View File

@@ -40,6 +40,12 @@ var tc_facebookLogin = (function () {
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
signedInUpdateForm();
}
},
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 500) {
console.error("Internal server error occurred: ", errorThrown);
}
location.reload();
}
});
}
@@ -103,7 +109,7 @@ var tc_googleLogin = (function () {
// Display the Sign In With Google Button
google.accounts.id.renderButton(
document.getElementById(customBtnId),
{ theme: 'outline', size: 'large' }
{ theme: 'outline', size: 'large', width: 240 }
);
}
@@ -124,6 +130,12 @@ var tc_googleLogin = (function () {
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
signedInUpdateForm();
}
},
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 500) {
console.error("Internal server error occurred: ", errorThrown);
}
location.reload();
}
});
}

View File

@@ -0,0 +1,27 @@
### [shipping] fedexdotcom
Add postcode to Shipping required fields (The Checkout configuration)
Edit /modules/fedexdotcom/classes/FedExDotComHandler.php, in method getShippingAddresses(...)
Change:
if (!Validate::isLoadedObject($customer)) {
return false;
}
To:
if (!Validate::isLoadedObject($customer)) {
$customer_email = '';
// return false;
} else {
$customer_email = $customer->email;
}
And few lines below:
Change: (notice customer->email vs. customer_email)
'EMailAddress' => (isset($this->destination_address['EMailAddress']) ? $this->destination_address['EMailAddress'] : $customer->email),
To:
'EMailAddress' => (isset($this->destination_address['EMailAddress']) ? $this->destination_address['EMailAddress'] : $customer_email),

View File

@@ -63,12 +63,12 @@
</fieldset>
{elseif "size" === $key} {*intentionally empty*}
{else}
{if 0 === $key|strpos:'flex-split'}
{if 0 === strpos($key,'flex-split')}
<fieldset class="checkout-block-container" data-default-size="{$data.size}">
<div class="{$key}">
{/if}
{blockContainer data=$sub_block}
{if 0 === $key|strpos:'flex-split'}
{if 0 === strpos($key,'flex-split')}
</div>
</fieldset>
{/if}

View File

@@ -32,7 +32,7 @@
{if $product.cover}
<img src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
{else}
<img src="{$urls.no_picture_image.bySize.cart_default.url}" />
<img src="{$urls.no_picture_image.bySize.cart_default.url|escape:'javascript':'UTF-8'}" />
{/if}
{/if}
</span>
@@ -42,95 +42,115 @@
<div class="product-line-body">
<div class="product-line-desc">
<div class="product-line-info product-title">
<a class="label" href="{$product.url}" data-id_customization="{$product.id_customization|intval}">{$product.name}</a>
<a class="label" href="{$product.url|escape:'javascript':'UTF-8'}"
data-id_customization="{$product.id_customization|intval}">{$product.name|escape:'javascript':'UTF-8'}</a>
</div>
<div class="product-line-info product-price h5 {if $product.has_discount}has-discount{/if} 11">
{if $product.has_discount}
<div class="product-line-info product-price h5 {if $product.has_discount}has-discount{/if}">
{if $product.has_discount|escape:'javascript':'UTF-8'}
<div class="product-discount">
<span class="regular-price">{$product.regular_price}</span>
<span class="regular-price">{$product.regular_price|escape:'javascript':'UTF-8'}</span>
{if $product.discount_type === 'percentage'}
<span class="discount discount-percentage">
-{$product.discount_percentage_absolute}
-{$product.discount_percentage_absolute|escape:'javascript':'UTF-8'}
</span>
{else}
<span class="discount discount-amount">
-{$product.discount_to_display}
-{$product.discount_to_display|escape:'javascript':'UTF-8'}
</span>
{/if}
</div>
{/if}
<div class="current-price">
<span class="price">{$product.price}</span>
<span class="price">{$product.price|escape:'javascript':'UTF-8'}</span>
{if $product.unit_price_full}
<div class="unit-price-cart">{$product.unit_price_full}</div>
<div class="unit-price-cart">{$product.unit_price_full|escape:'javascript':'UTF-8'}</div>
{/if}
</div>
</div>
<br />
<br/>
{foreach from=$product.attributes key="attribute" item="value"}
<div class="product-line-info product-attribute">
<span class="label">{$attribute}:</span>
<span class="value">{$value}</span>
<span class="label">{$attribute|escape:'htmlall':'UTF-8'}:</span>
<span class="value">{$value|escape:'htmlall':'UTF-8'}</span>
</div>
{/foreach}
{if $tc_config->show_product_stock_info} {*tc module config*}
<div class="product-line-info quantity-info">
<span class="{if $product.quantity_available <= 0 && !$product.allow_oosp}qty-label label-warning{else}qty-label label-success{/if}
{if $z_tc_config->show_product_stock_info} {*tc module config*}
<div class="product-line-info quantity-info">
<span class="{if $product.quantity_available <= 0 && !$product.allow_oosp}qty-label label-warning{else}qty-label label-success{/if}
{if $product.quantity_available <= 0} label-later{/if}">
{if $product.quantity_available <= 0}
{if $product.allow_oosp}
{if isset($product.available_later) && $product.available_later}
{$product.available_later}
{if $product.quantity_available <= 0}
{if $product.allow_oosp}
{if isset($product.available_later) && $product.available_later}
{$product.available_later|escape:'htmlall':'UTF-8'}
{else}
{*{$product.availability_message}*}
{l s='In supplier stock' mod='thecheckout'}
{/if}
{else}
{l s='Out of stock' mod='thecheckout'}
{/if}
{else}
{*{$product.availability_message}*}
{l s='In supplier stock' mod='thecheckout'}
{if isset($product.available_now) && $product.available_now}
{$product.available_now|escape:'htmlall':'UTF-8'}
{else}
{l s='In stock' d='Shop.Theme.Catalog'}
{/if}
{/if}
{else}
{l s='Out of stock' mod='thecheckout'}
{/if}
{else}
{if isset($product.available_now) && $product.available_now}
{$product.available_now}
{else}
{l s='In stock' d='Shop.Theme.Catalog'}
{/if}
{/if}
</span>
<div class='qty-insufficient-stock{if $product.quantity_available>=$product.quantity || $product.quantity_available<=0} hidden{/if}'>
<span class='qty-in-stock-only'>{l s='In stock only' mod='thecheckout'} {$product.quantity_available} {l s='pcs.' mod='thecheckout'}</span>
{if $product.allow_oosp}
<span class='qty-remaining-on'>{l s='Remaining pcs. in' mod='thecheckout'} {$product.available_later}</span>
{else}
<span class='qty-remaining-on no-longer-available'>{l s='Please adjust quantity' mod='thecheckout'}</span>
{/if}
</div>{*hook h="displayProductDeliveryTime" product=$product*}
</div>
{/if}
</span>
<div class='qty-insufficient-stock{if $product.quantity_available>=$product.quantity || $product.quantity_available<=0} hidden{/if}'>
<span class='qty-in-stock-only'>{l s='In stock only' mod='thecheckout'} {$product.quantity_available|escape:'htmlall':'UTF-8'} {l s='pcs.' mod='thecheckout'}</span>
{if $product.allow_oosp}
<span class='qty-remaining-on'>{l s='Remaining pcs. in' mod='thecheckout'} {$product.available_later|escape:'htmlall':'UTF-8'}</span>
{else}
<span class='qty-remaining-on no-longer-available'>{l s='Please adjust quantity' mod='thecheckout'}</span>
{/if}
</div>{*hook h="displayProductDeliveryTime" product=$product*}</div>
{/if}
{if $product.customizations|count}
<br>
{block name='cart_detailed_product_line_customization'}
{foreach from=$product.customizations item="customization"}
{foreach from=$customization.fields item="field"}
<div class="product-customization-line row">
<div class="col-12">
{$field.label}:
{if $field.type == 'text'}
{if (int)$field.id_module}
{$field.text nofilter}
{else}
{$field.text}
{/if}
{elseif $field.type == 'image'}
<img src="{$field.image.small.url}">
{/if}
<a href="#" data-toggle="modal"
data-target="#product-customizations-modal-{$customization.id_customization|escape:'javascript':'UTF-8'}">{l s='Product customization' d='Shop.Theme.Catalog'}</a>
<div class="modal fade customization-modal"
id="product-customizations-modal-{$customization.id_customization|escape:'javascript':'UTF-8'}" tabindex="-1" role="dialog"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">{l s='Product customization' d='Shop.Theme.Catalog'}</h4>
</div>
<div class="modal-body">
{foreach from=$customization.fields item="field"}
<div class="product-customization-line row">
<div class="col-sm-3 col-xs-4 label">
{$field.label|escape:'htmlall':'UTF-8'}
</div>
<div class="col-sm-9 col-xs-8 value">
{if $field.type == 'text'}
{if (int)$field.id_module}
{$field.text nofilter}
{else}
{$field.text|escape:'htmlall':'UTF-8'}
{/if}
{elseif $field.type == 'image'}
<img src="{$field.image.small.url|escape:'javascript':'UTF-8'}">
{/if}
</div>
</div>
{/foreach}
</div>
</div>
</div>
{/foreach}
</div>
{/foreach}
{/block}
{/if}
@@ -139,32 +159,59 @@
<!-- product left body: description -->
<div class="product-line-actions">
<div class="product-line-qty" data-qty-control="{$product.id_product|escape:'javascript':'UTF-8'}-{$product.id_product_attribute|escape:'javascript':'UTF-8'}-{$product.id_customization|escape:'javascript':'UTF-8'}">
<div class="product-line-qty"
data-qty-control="{$product.id_product|escape:'javascript':'UTF-8'}-{$product.id_product_attribute|escape:'javascript':'UTF-8'}-{$product.id_customization|escape:'javascript':'UTF-8'}">
<div class="qty-container">
<div class="qty-box">
{if isset($product.is_gift) && $product.is_gift}
<span class="gift-quantity">{$product.quantity}</span>
{else}
<input class="cart-line-product-quantity" data-link-action="x-update-cart-quantity" data-update-url="{$product.update_quantity_url}" data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}" data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}" data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}" data-qty-orig="{$product.quantity|escape:'javascript':'UTF-8'}" type="text" value="{$product.quantity}" name="product-quantity-spin" min="{$product.minimal_quantity}" />
<a class="cart-line-product-quantity-up" href="{$product.up_quantity_url}" data-link-action="x-update-cart-quantity-up">{*Up*}</a>
<a class="cart-line-product-quantity-down" href="{$product.down_quantity_url}" data-link-action="x-update-cart-quantity-down">{*Down*}</a>
<input
class="cart-line-product-quantity"
data-link-action="x-update-cart-quantity"
data-update-url="{$product.update_quantity_url}"
data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}"
data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}"
data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}"
data-qty-orig="{$product.quantity|escape:'javascript':'UTF-8'}"
{* data-step="{$product.minimal_quantity|escape:'javascript':'UTF-8'}"*}
type="text"
value="{$product.quantity}"
name="product-quantity-spin"
min="{$product.minimal_quantity}"
/>
<a class="cart-line-product-quantity-up"
href="{$product.up_quantity_url}"
data-link-action="x-update-cart-quantity-up">{*Up*}</a>
<a class="cart-line-product-quantity-down"
href="{$product.down_quantity_url}"
data-link-action="x-update-cart-quantity-down">{*Down*}</a>
{/if}
</div>
</div>
</div>
<div class="product-line-price">
<span class="product-price">
<strong>
{if isset($product.is_gift) && $product.is_gift}
<span class="gift">{l s='Gift' d='Shop.Theme.Checkout'}</span>
{else}
{$product.total}
{/if}
</strong>
</span>
<span class="product-price">
<strong>
{if isset($product.is_gift) && $product.is_gift}
<span class="gift">{l s='Gift' d='Shop.Theme.Checkout'}</span>
{else}
{$product.total}
{/if}
</strong>
</span>
</div>
<div class="product-line-delete">
<a class="remove-from-cart" rel="nofollow" href="{$product.remove_from_cart_url}" data-link-action="x-delete-from-cart" data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}" data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}" data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}" title="{l s='Delete' d='Shop.Theme.Actions'}">
<a
class="remove-from-cart"
rel="nofollow"
href="{$product.remove_from_cart_url}"
data-link-action="x-delete-from-cart"
data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}"
data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}"
data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}"
title="{l s='Delete' d='Shop.Theme.Actions'}"
>
{if !isset($product.is_gift) || !$product.is_gift}
<i class="material-icons delete-from-cart float-xs-left">delete</i>
<span class="non-material-icon delete-from-cart"></span>
@@ -178,4 +225,4 @@
{/block}
</div>
</div>
</div>

View File

@@ -31,15 +31,15 @@
<div class="card-block">
{foreach from=$cart.subtotals item="subtotal"}
{if isset($subtotal.value) && $subtotal.value && $subtotal.type !== 'tax'}
<div class="cart-summary-line{if $waitForShippingCls && 'products' != $subtotal.type}{$waitForShippingCls}{/if}{if !$subtotal.amount} free{/if}" id="cart-subtotal-{$subtotal.type}">
<div class="cart-summary-line{if $waitForShippingCls && 'products' != $subtotal.type}{$waitForShippingCls|escape:'javascript':'UTF-8'}{/if}{if !$subtotal.amount} free{/if}" id="cart-subtotal-{$subtotal.type|escape:'javascript':'UTF-8'}">
<span class="label{if 'products' === $subtotal.type} js-subtotal{/if}">
{if 'products' == $subtotal.type}
{$cart.summary_string}
{$cart.summary_string|escape:'htmlall':'UTF-8'}
{else}
{$subtotal.label}
{$subtotal.label|escape:'htmlall':'UTF-8'}
{/if}
</span>
<span class="value">{$subtotal.value}</span>
<span class="value">{$subtotal.value|escape:'htmlall':'UTF-8'}</span>
{if $subtotal.type === 'shipping'}
<div>
<small class="value">{hook h='displayCheckoutSubtotalDetails' subtotal=$subtotal}</small>
@@ -48,6 +48,7 @@
</div>
{/if}
{/foreach}
{hook h="displayPaymentRuleCartSummary"}
</div>
{block name='cart_voucher'}
@@ -59,34 +60,53 @@
<div class="card-block">
{if (isset($cart.subtotals.tax) && $cart.subtotals.tax.amount > 0) || (!$configuration.display_prices_tax_incl && $configuration.taxes_enabled) }
{* tax displayed in cart summary, we show Total (tax excl.), Tax and Total (tax incl.) *}
<div class="cart-summary-line cart-total-tax-excluded{$waitForShippingCls}">
<span class="label">{$cart.totals.total_excluding_tax.label}</span>
<span class="value">{$cart.totals.total_excluding_tax.value}</span>
<div class="cart-summary-line cart-total-tax-excluded{$waitForShippingCls|escape:'javascript':'UTF-8'}">
<span class="label">{$cart.totals.total_excluding_tax.label|escape:'htmlall':'UTF-8'}</span>
<span class="value">{$cart.totals.total_excluding_tax.value|escape:'htmlall':'UTF-8'}</span>
</div>
{if isset($cart.subtotals.tax)}
<div class="cart-summary-line cart-total-tax{$waitForShippingCls}">
<span class="label">{$cart.subtotals.tax.label}</span>
<span class="value">{$cart.subtotals.tax.value}</span>
<div class="cart-summary-line cart-total-tax{$waitForShippingCls|escape:'javascript':'UTF-8'}">
<div class="label" style="display: inline">{$cart.subtotals.tax.label|escape:'javascript':'UTF-8'}
{if $cart.totals.total_excluding_tax.amount > 0}
{math equation='(a/b)*100' a=$cart.subtotals.tax.amount b=$cart.totals.total_excluding_tax.amount assign='effective_tax_rate'}
{math equation='abs(round(a)-a)' a=$effective_tax_rate assign='rounding_delta'}
{if $rounding_delta < 0.09}
{math equation='round(a)' a=$effective_tax_rate assign='effective_tax_rate_rounded'}
{else}
{math equation='a' a=$effective_tax_rate assign='effective_tax_rate_rounded' format="%.1f"}
{/if}
<span class="effective-tax-rate">({$effective_tax_rate_rounded|escape:'javascript':'UTF-8'}%)</span>
{/if}
</div>
<span class="value">{$cart.subtotals.tax.value|escape:'javascript':'UTF-8'}</span>
</div>
{/if}
{* tax is set and non-zero cart summary, we show Total (tax incl.) *}
<div class="cart-summary-line cart-total cart-total-tax-included{$waitForShippingCls}">
<span class="label">{$cart.totals.total_including_tax.label}</span>
<span class="value">{$cart.totals.total_including_tax.value}</span>
<div class="cart-summary-line cart-total cart-total-tax-included{$waitForShippingCls|escape:'javascript':'UTF-8'}">
<span class="label">{$cart.totals.total_including_tax.label|escape:'htmlall':'UTF-8'}</span>
<span class="value">{$cart.totals.total_including_tax.value|escape:'htmlall':'UTF-8'}</span>
</div>
{else}
{* tax is zero or not used in cart summary, we show Total (tax_label) *}
<div class="cart-summary-line cart-total cart-total-auto-tax{$waitForShippingCls}">
<span class="label">{$cart.totals.total.label} {if isset($configuration) && $configuration.taxes_enabled}{$cart.labels.tax_short}{/if}</span>
<span class="value">{$cart.totals.total.value}</span>
<div class="cart-summary-line cart-total cart-total-auto-tax{$waitForShippingCls|escape:'javascript':'UTF-8'}">
<span class="label">{$cart.totals.total.label|escape:'htmlall':'UTF-8'}{if isset($configuration) && $configuration.taxes_enabled}<span class="tax-lbl"> {$cart.labels.tax_short|escape:'htmlall':'UTF-8'}</span>{/if}</span>
<span class="value">{$cart.totals.total.value|escape:'htmlall':'UTF-8'}</span>
</div>
{if isset($cart.subtotals.tax)}
<div class="cart-summary-line cart-total-tax{$waitForShippingCls}">
<span class="label">{$cart.subtotals.tax.label}</span>
<span class="value">{$cart.subtotals.tax.value}</span>
<div class="cart-summary-line cart-total-tax{$waitForShippingCls|escape:'javascript':'UTF-8'}">
<div class="label" style="display: inline">{$cart.subtotals.tax.label|escape:'javascript':'UTF-8'}
<span class="effective-tax-rate">(0%)</span>
</div>
<span class="value">{$cart.subtotals.tax.value|escape:'javascript':'UTF-8'}</span>
</div>
{/if}
{/if}
{if $cart.totals.total_excluding_tax.amount == $cart.totals.total.amount && $configuration.taxes_enabled}
<div style="display: none;" class="cart-summary-line vat-exempt">
<span class="label">{l s='Your order is now 0% VAT' mod='thecheckout'}</span>
</div>
{/if}
{assign var='ps_freeshipping_price' value=Configuration::get('PS_SHIPPING_FREE_PRICE')}
@@ -97,10 +117,10 @@
{math equation='a-b' a=$ps_freeshipping_price b=$total_without_shipping assign='remaining_to_spend'}
{math equation='(100*a)/b' a=$total_without_shipping b=$ps_freeshipping_price assign='completed_percentage'}
{if $remaining_to_spend > 0}
<div class="remaining-amount-to-free-shipping-container">
<div class="remaining-amount-to-free-shipping-container{if isset($cart.subtotals) && isset($cart.subtotals.shipping) && isset($cart.subtotals.shipping.amount) && $cart.subtotals.shipping.amount == 0} free{/if}">
<div class="remaining-amount-msg">{l s='Remaining amount to get free shipping: ' mod='thecheckout'} <span class="remaining-amount">{Tools::displayPrice($remaining_to_spend,$currency)}</span></div>
<div class="remaining-amount-progress">
<div class="inside-bar" style="width: {$completed_percentage}%"></div>
<div class="inside-bar" style="width: {$completed_percentage|escape:'javascript':'UTF-8'}%"></div>
</div>
</div>
{/if}

Some files were not shown because too many files have changed in this diff Show More