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

@@ -52,7 +52,61 @@
}, },
"1_index_sitemap.xml": { "1_index_sitemap.xml": {
"type": "-", "type": "-",
"size": 240, "size": 1192,
"lmtime": 0,
"modified": true
},
"1_pl_0_sitemap.xml": {
"type": "-",
"size": 1651031,
"lmtime": 0,
"modified": false
},
"1_pl_1_sitemap.xml": {
"type": "-",
"size": 1699287,
"lmtime": 0,
"modified": false
},
"1_pl_2_sitemap.xml": {
"type": "-",
"size": 1644205,
"lmtime": 0,
"modified": false
},
"1_pl_3_sitemap.xml": {
"type": "-",
"size": 1605435,
"lmtime": 0,
"modified": false
},
"1_pl_4_sitemap.xml": {
"type": "-",
"size": 1852772,
"lmtime": 0,
"modified": false
},
"1_pl_5_sitemap.xml": {
"type": "-",
"size": 2832459,
"lmtime": 0,
"modified": false
},
"1_pl_6_sitemap.xml": {
"type": "-",
"size": 2585737,
"lmtime": 0,
"modified": false
},
"1_pl_7_sitemap.xml": {
"type": "-",
"size": 2029626,
"lmtime": 0,
"modified": false
},
"1_pl_8_sitemap.xml": {
"type": "-",
"size": 52047,
"lmtime": 0, "lmtime": 0,
"modified": false "modified": false
}, },
@@ -289,9 +343,9 @@
}, },
"google-merchant_id-2.xml": { "google-merchant_id-2.xml": {
"type": "-", "type": "-",
"size": 695776, "size": 121074,
"lmtime": 0, "lmtime": 0,
"modified": false "modified": true
}, },
"google-merchant_id-3.xml": { "google-merchant_id-3.xml": {
"type": "-", "type": "-",
@@ -2385,7 +2439,18 @@
}, },
"anproductvideogallery": {}, "anproductvideogallery": {},
"anscrolltop": {}, "anscrolltop": {},
"arcontactus": {}, "arcontactus": {
"views": {
"css": {
"jquery.contactus.min.css": {
"type": "-",
"size": 106179,
"lmtime": 1751581652599,
"modified": false
}
}
}
},
"arseopro": {}, "arseopro": {},
"autoupgrade": {}, "autoupgrade": {},
"baselinker": {}, "baselinker": {},
@@ -3615,13 +3680,13 @@
"pliki": {}, "pliki": {},
"robots.txt": { "robots.txt": {
"type": "-", "type": "-",
"size": 3179, "size": 3300,
"lmtime": 0, "lmtime": 0,
"modified": false "modified": true
}, },
"sitemap_shop_1.xml": { "sitemap_shop_1.xml2": {
"type": "-", "type": "-",
"size": 569, "size": 271,
"lmtime": 0, "lmtime": 0,
"modified": false "modified": false
}, },
@@ -3633,12 +3698,6 @@
"lmtime": 0, "lmtime": 0,
"modified": false "modified": false
}, },
"test.txt": {
"type": "-",
"size": 1024,
"lmtime": 0,
"modified": false
},
"theme": {}, "theme": {},
"themes": { "themes": {
".htaccess": { ".htaccess": {

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 v3.3.8 - 20230428
[fix] Allow multiple 'sticky' elements in a column [fix] Allow multiple 'sticky' elements in a column
[feature] Display google and fb social login also on PS native login page [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 * International Registered Trademark & Property of PrestaShop SA
*/ */
if (!defined('_PS_VERSION_')) {
exit;
}
use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Translation\TranslatorInterface;
/** /**
@@ -124,7 +128,11 @@ class CheckoutAddressForm extends AbstractForm
} }
if (($hookReturn = Hook::exec('actionValidateCustomerAddressForm', array('form' => $this))) !== '') { 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 // 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( $result = $this->persister->save(
$this->address, $this->address,
$this->getValue('token'), $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) { } catch (PrestaShopException $e) {
//$e->displayMessage(); //$e->displayMessage();

View File

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

View File

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

View File

@@ -23,8 +23,14 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*/ */
if (!defined('_PS_VERSION_')) {
exit;
}
use PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto; use PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto;
use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Translation\TranslatorInterface;
use PrestaShop\PrestaShop\Core\Security\PasswordPolicyConfiguration;
use ZxcvbnPhp\Zxcvbn;
class CheckoutCustomerForm extends AbstractForm 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())) { if ($silentRegistration && Validate::isEmail($emailField->getValue())) {
// Allow silent guest registration when email field emits blur() - called from checkEmail routine // Allow silent guest registration when email field emits blur() - called from checkEmail routine
return true; return true;

View File

@@ -24,6 +24,10 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*/ */
if (!defined('_PS_VERSION_')) {
exit;
}
use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Translation\TranslatorInterface;
class CheckoutCustomerFormatter implements FormFormatterInterface 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) * @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 PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto;
use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Translation\TranslatorInterface;

View File

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

View File

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

View File

@@ -12,6 +12,10 @@
namespace module\thecheckout; namespace module\thecheckout;
if (!defined('_PS_VERSION_')) {
exit;
}
use Customer; use Customer;
use Validate; use Validate;
use CartRule; 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) * @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\Adapter\Product\PriceFormatter;
use \PrestaShop\PrestaShop\Core\Module\WidgetInterface; use \PrestaShop\PrestaShop\Core\Module\WidgetInterface;
use PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder;
use PrestaShop\PrestaShop\Adapter\ObjectPresenter; use PrestaShop\PrestaShop\Adapter\ObjectPresenter;
use module\thecheckout\Config; use module\thecheckout\Config;
use module\thecheckout\SocialLogin; use module\thecheckout\SocialLogin;
@@ -39,6 +44,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
private $amazonpayOngoingSession = false; private $amazonpayOngoingSession = false;
private $tcCopyInvoicePhoneToDelivery = true;
public function __construct() public function __construct()
{ {
$_GET['module'] = $this->name; $_GET['module'] = $this->name;
@@ -72,7 +79,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
// oyejorge/less.php v1.7.1 // oyejorge/less.php v1.7.1
private function autoCompileLess($inputFile, $outputFile) 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/'; $cacheDir = _PS_CACHE_DIR_ . 'thecheckout/';
$less_files = array($inputFile => ''); $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() private function compileLess()
{ {
try { try {
@@ -166,6 +148,12 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
array('media' => 'all', 'priority' => 140, 'server' => 'remote')); 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 // Include all views/css/*.css and views/js/*.js files
foreach (glob(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/*.css") as $filename) { foreach (glob(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/*.css") as $filename) {
$this->context->controller->registerStylesheet('modules-thecheckout-' . ($i++), $this->context->controller->registerStylesheet('modules-thecheckout-' . ($i++),
@@ -404,6 +392,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
// by other modules, not bound to specific field // by other modules, not bound to specific field
$formField->setType('hidden'); $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) { } elseif (count($fieldParts) === 2) {
list($entity, $entityField) = $fieldParts; list($entity, $entityField) = $fieldParts;
@@ -447,7 +440,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
} elseif ($entity === 'State') { } elseif ($entity === 'State') {
if ($country->contains_states) { if ($country->contains_states) {
$states = State::getStatesByIdCountry($country->id, true); // true = only active 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) { // usort($states, function ($a, $b) {
// $ax = strtr($a['name'], 'Ñ', 'N'); // $ax = strtr($a['name'], 'Ñ', 'N');
// $bx = strtr($b['name'], 'Ñ', 'N'); // $bx = strtr($b['name'], 'Ñ', 'N');
@@ -655,6 +648,9 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
->setName('token') ->setName('token')
->setType('hidden') ->setType('hidden')
->setValue($this->makeAddressPersister()->getToken()), ->setValue($this->makeAddressPersister()->getToken()),
'general_error' => (new CheckoutFormField)
->setName('general_error')
->setType('hidden')
); );
foreach ($this->module->config->customer_fields as $fieldName => $fieldOptions) { foreach ($this->module->config->customer_fields as $fieldName => $fieldOptions) {
@@ -781,6 +777,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$format[$moduleField->moduleName . '_' . $moduleField->getName()] = $moduleField; $format[$moduleField->moduleName . '_' . $moduleField->getName()] = $moduleField;
} }
// Sample format structure
/* /*
$format = [ $format = [
'back' => (new CheckoutFormField) 'back' => (new CheckoutFormField)
@@ -955,7 +952,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ($this->context->customer->isLogged()) { if ($this->context->customer->isLogged()) {
$customerAddresses = $this->context->customer->getSimpleAddresses(); $customerAddresses = $this->context->customer->getSimpleAddresses();
foreach ($customerAddresses as &$a) { 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(); $allCustomerUsedAddresses = $this->getAllCustomerUsedAddresses();
@@ -988,51 +985,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ($usedForInvoice || !$usedForDelivery) { if ($usedForInvoice || !$usedForDelivery) {
$addressesList['invoice'][$addressId] = $customerAddresses[$addressId]; $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) { if ($usedForDelivery && !$usedForInvoice) {
$addressesList['usedDeliveryExclusive'][$addressId] = $customerAddresses[$addressId]; $addressesList['usedDeliveryExclusive'][$addressId] = $customerAddresses[$addressId];
} }
@@ -1101,7 +1054,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ( if (
'' != $businessFieldName && '' != $businessFieldName &&
isset($formFieldsInvoiceMapped[$businessFieldName]) && isset($formFieldsInvoiceMapped[$businessFieldName]) &&
null != trim($formFieldsInvoiceMapped[$businessFieldName]['value']) && null != $formFieldsInvoiceMapped[$businessFieldName]['value'] &&
'' != trim($formFieldsInvoiceMapped[$businessFieldName]['value']) &&
'id_state' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] && 'id_state' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] &&
'id_country' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] && 'id_country' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] &&
('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass()) ('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1109,6 +1063,14 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hideBusinessFields = false; $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; $hidePrivateFields = true;
// if businessFields are visible (=not $hideBusinessFields), private fields will be hidden; otherwise, let's make check: // 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 ( if (
'' != $privateFieldName && '' != $privateFieldName &&
isset($formFieldsInvoiceMapped[$privateFieldName]) && isset($formFieldsInvoiceMapped[$privateFieldName]) &&
null != trim($formFieldsInvoiceMapped[$privateFieldName]['value']) && null != $formFieldsInvoiceMapped[$privateFieldName]['value'] &&
'' != trim($formFieldsInvoiceMapped[$privateFieldName]['value']) &&
'id_state' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] && 'id_state' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] &&
'id_country' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] && 'id_country' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] &&
('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass()) ('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1125,6 +1088,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hidePrivateFields = false; $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: // Same for delivery address fields:
@@ -1141,7 +1111,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ( if (
'' != $businessFieldName && '' != $businessFieldName &&
isset($formFieldsDeliveryMapped[$businessFieldName]) && isset($formFieldsDeliveryMapped[$businessFieldName]) &&
null != trim($formFieldsDeliveryMapped[$businessFieldName]['value']) && null != $formFieldsDeliveryMapped[$businessFieldName]['value'] &&
'' != trim($formFieldsDeliveryMapped[$businessFieldName]['value']) &&
'id_state' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] && 'id_state' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] &&
'id_country' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] && 'id_country' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] &&
('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass()) ('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1149,6 +1120,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hideBusinessFieldsDelivery = false; $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; $hidePrivateFieldsDelivery = true;
// if businessFields are visible (=not $hideBusinessFields), private fields will be hidden; otherwise, let's make check: // 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 ( if (
'' != $privateFieldName && '' != $privateFieldName &&
isset($formFieldsDeliveryMapped[$privateFieldName]) && isset($formFieldsDeliveryMapped[$privateFieldName]) &&
null != trim($formFieldsDeliveryMapped[$privateFieldName]['value']) && null != $formFieldsDeliveryMapped[$privateFieldName]['value'] &&
'' != trim($formFieldsDeliveryMapped[$privateFieldName]['value']) &&
'id_state' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] && 'id_state' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] &&
'id_country' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] && 'id_country' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] &&
('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass()) ('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
@@ -1165,6 +1144,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$hidePrivateFieldsDelivery = false; $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 // Old code, when business fields were hard-coded
@@ -1248,35 +1234,78 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$this->context->cookie->id_cart = $duplication['cart']->id; $this->context->cookie->id_cart = $duplication['cart']->id;
$context = $this->context; $context = $this->context;
$context->cart = $duplication['cart']; $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); CartRule::autoAddToCart($context);
$this->context->cookie->write(); $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() 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, // 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 // if enabled here, we'd need to flush caches before ajax call
//parent::initContent(); //parent::initContent();
// Initiate checkoutProcess object for ps_checkout module // Initiate checkoutProcess object for ps_checkout module
if (version_compare(_PS_VERSION_, '1.7.3') >= 0 && // if (version_compare(_PS_VERSION_, '1.7.3') >= 0 &&
Module::isInstalled('xps_checkout') && Module::isEnabled('xps_checkout')) { // Module::isInstalled('xps_checkout') && Module::isEnabled('xps_checkout')) {
$deliveryOptionsFinder = new DeliveryOptionsFinder( // $deliveryOptionsFinder = new DeliveryOptionsFinder(
$this->context, // $this->context,
$this->getTranslator(), // $this->getTranslator(),
new ObjectPresenter(), // new ObjectPresenter(),
new PriceFormatter() // new PriceFormatter()
); // );
//
$session = new CheckoutSession( // $session = new CheckoutSession(
$this->context, // $this->context,
$deliveryOptionsFinder // $deliveryOptionsFinder
); // );
$this->checkoutProcess = new CheckoutProcess($this->context, $session); // $this->checkoutProcess = new CheckoutProcess($this->context, $session);
} // }
if (Configuration::get('PS_RESTRICT_DELIVERED_COUNTRIES')) { if (Configuration::get('PS_RESTRICT_DELIVERED_COUNTRIES')) {
@@ -1308,6 +1337,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
} else { } else {
$this->parentInitContent(); $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 // Remove potentially unwanted JS includes from payment method - if we include them in hook call
//print_r($this->context->controller->getJavascript()); //print_r($this->context->controller->getJavascript());
$this->context->controller->unregisterJavascript('paypal-plus-payment-js'); $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) { if ($this->context->cart->id != $this->context->cookie->addreses_reset_at_cart_id) {
$lastOrderAddresses = $this->getCustomerLastUsedAddresses($this->getAllCustomerUsedAddresses()); $lastOrderAddresses = $this->getCustomerLastUsedAddresses($this->getAllCustomerUsedAddresses());
if (count($lastOrderAddresses)) { if (count($lastOrderAddresses)) {
$this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice']; if (!$this->module->config->use_old_address_on_reorder) {
$this->context->cart->id_address_delivery = $lastOrderAddresses['id_address_delivery']; $this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice'];
$this->context->cart->update(); $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->context->cart->setNoMultishipping();
$this->updateAddressIdInDeliveryOptions(); $this->updateAddressIdInDeliveryOptions();
$this->context->cookie->addreses_reset_at_cart_id = $this->context->cart->id; $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 // 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 // Logged-in customer groups
$customer_groups = $this->context->customer->getGroups(); $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-shipping-methods"] = $this->module->config->collapse_shipping_methods;
$page["body_classes"]["collapse-payment-methods"] = $this->module->config->collapse_payment_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"]["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))) { 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; $page["body_classes"]["paypal-express-checkout-session"] = true;
} }
$installedModules = array(); $installedModules = array();
foreach (array('mondialrelay', 'einvoicingprestalia') as $moduleName) { foreach (array('mondialrelay', 'einvoicingprestalia', 'chronopost') as $moduleName) {
$installedModules[$moduleName] = Module::isInstalled($moduleName) && Module::isEnabled($moduleName); $installedModules[$moduleName] = $this->isModuleEnabled($moduleName);
} }
$sendcloud_moduleName = 'sendcloud'; $sendcloud_moduleName = 'sendcloud';
$sendcloud_script = ''; $sendcloud_script = '';
if (Module::isInstalled($sendcloud_moduleName) && Module::isEnabled($sendcloud_moduleName)) { if ($this->isModuleEnabled($sendcloud_moduleName)) {
$sendcloud_moduleInstance = Module::getInstanceByName($sendcloud_moduleName); $sendcloud_moduleInstance = Module::getInstanceByName($sendcloud_moduleName);
if (isset($sendcloud_moduleInstance->connector) && $sendcloud_moduleInstance->connector) { if (isset($sendcloud_moduleInstance->connector) && $sendcloud_moduleInstance->connector) {
$sendcloud_script = $sendcloud_moduleInstance->connector->getServicePointScript(); $sendcloud_script = $sendcloud_moduleInstance->connector->getServicePointScript();
@@ -1451,7 +1498,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
} else { } else {
$needAddressModules = array('paypal', 'sendcloud', 'mondialrelay', 'omniva', 'multisafepay'); $needAddressModules = array('paypal', 'sendcloud', 'mondialrelay', 'omniva', 'multisafepay');
foreach ($needAddressModules as $moduleName) { foreach ($needAddressModules as $moduleName) {
if (Module::isInstalled($moduleName) && Module::isEnabled($moduleName)) { if ($this->isModuleEnabled($moduleName)) {
$forceAddressCreation = true; $forceAddressCreation = true;
break; break;
} }
@@ -1465,6 +1512,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
); );
$this->unifyAddresses(true, false); $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( $this->context->smarty->assign(array(
@@ -1489,7 +1550,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'forceRefreshShipping' => $forceRefreshShipping, 'forceRefreshShipping' => $forceRefreshShipping,
'installedModules' => $installedModules, 'installedModules' => $installedModules,
'separatePaymentKeyName' => Config::SEPARATE_PAYMENT_KEY_NAME, 'separatePaymentKeyName' => Config::SEPARATE_PAYMENT_KEY_NAME,
'sendcloud_script' => $sendcloud_script 'sendcloud_script' => $sendcloud_script,
'paypal_express_checkout' => $paypal_express_checkout
)); ));
$amazonPayCheckoutSessionClass = "AmazonPayCheckoutSession"; $amazonPayCheckoutSessionClass = "AmazonPayCheckoutSession";
@@ -1579,7 +1641,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if (version_compare(_PS_VERSION_, '1.7.3') >= 0) { if (version_compare(_PS_VERSION_, '1.7.3') >= 0) {
$this->context->cart->delivery_option = json_encode($newDeliveryOptions); $this->context->cart->delivery_option = json_encode($newDeliveryOptions);
} else { } 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(); $this->context->cart->autosetProductAddress();
@@ -1614,6 +1676,24 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
return $self->getCheckoutSession()->getDeliveryOptions(); 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 return
array( array(
'hookDisplayBeforeCarrier' => Hook::exec('displayBeforeCarrier', '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() public function getPaymentOptions()
{ {
$isFree = 0 == (float)$this->getCheckoutSession()->getCart()->getOrderTotal(true, Cart::BOTH); $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(); $paymentOptionsFinder = new PaymentOptionsFinder();
$paymentOptions = $paymentOptionsFinder->present($isFree); $paymentOptions = $paymentOptionsFinder->present($isFree);
@@ -1669,6 +1742,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$paymentOptions["amazonpay"] = $amazonPayOption; $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( return array(
'is_free' => $isFree, 'is_free' => $isFree,
'payment_options' => $paymentOptions, 'payment_options' => $paymentOptions,
@@ -1680,29 +1764,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
public function ajaxCall() public function ajaxCall()
{ {
// Uncomment to debug ajaxCall
// @error_reporting(E_ALL & ~E_NOTICE); // @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) { if ($this->module->debug) {
$this->module->logDebug("[AJAX*Start] " . Tools::getValue('action')); $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)) { 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}(); $result = $this->{'ajax' . $action}();
} else { } 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) { 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 // add dateofdelivery and apaczka module name into external shipping modules list, so that its parser is loaded at JS level
$dateofdelivery_moduleName = 'dateofdelivery'; $externalShippingModuleNames = ['dateofdelivery', 'apaczka', 'upsservice', 'globkuriermodule'];
if (Module::isInstalled($dateofdelivery_moduleName) && Module::isEnabled($dateofdelivery_moduleName)) { foreach ($externalShippingModuleNames as $ext_moduleName)
$externalShippingModules[$dateofdelivery_moduleName] = 0; if (Module::isInstalled($ext_moduleName) && Module::isEnabled($ext_moduleName)) {
$externalShippingModules[$ext_moduleName][] = 0;
} }
$this->getCheckoutSession()->setDeliveryOption( $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(); $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); $this->context->smarty->assign($paymentMethods);
// // Payment data, used by Stripe payment for live refresh (and possibly other modules in future) // // 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(); // $orderTotal = $this->context->cart->getOrderTotal();
// $stripeAmount = Tools::ps_round($orderTotal, 2); // $stripeAmount = Tools::ps_round($orderTotal, 2);
// $stripeAmount = $this->isZeroDecimalCurrency($currency) ? $stripeAmount : $stripeAmount * 100; // $stripeAmount = $this->isZeroDecimalCurrency($currency) ? $stripeAmount : $stripeAmount * 100;
@@ -2390,6 +2485,35 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
// $this->context->country->need_identification_number = false; // $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( $theCheckout_addressForm = new CheckoutAddressForm(
$this->module, $this->module,
$this->context->smarty, $this->context->smarty,
@@ -2630,9 +2754,18 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
//$this->updateAddressIdInDeliveryOptions(); //$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( return array(
"hasErrors" => $registerForm->hasErrors(), "hasErrors" => $tpl_hasErrors,
"errors" => $registerForm->getErrors(), "errors" => $tpl_errors,
"customerId" => $this->context->customer->id, "customerId" => $this->context->customer->id,
"newToken" => Tools::getToken(true, $this->context), "newToken" => Tools::getToken(true, $this->context),
"newStaticToken" => Tools::getToken(false), "newStaticToken" => Tools::getToken(false),
@@ -2676,10 +2809,18 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
return $isComplete; return $isComplete;
} }
private function copyPropertyFromToIfEmpty(&$source, &$target, $propertyName) { private function copyPropertyFromToIfEmpty(&$source, &$target, $propertyName, $alternativeValue) {
if ((!isset($target[$propertyName]) || "" == trim($target[$propertyName])) && $emptyValues = array('');
isset($source[$propertyName]) && "" != trim($source[$propertyName])) { if (in_array($propertyName, array('firstname', 'lastname'))) {
$target[$propertyName] = $source[$propertyName]; $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 $passwordRequired
) { ) {
// check if shipping methods has any validations
$shippingModuleStepComplete = $this->isShippingModuleComplete(Tools::getAllValues());
$shippingResult = null; $shippingResult = null;
if (!$shippingModuleStepComplete) { if (!$this->context->cart->isVirtualCart()) {
$shippingResult = array( // check if shipping methods has any validations
'errors' => $this->context->controller->errors, $shippingModuleStepComplete = $this->isShippingModuleComplete(Tools::getAllValues());
'hasErrors' => !empty($this->context->controller->errors) if (!$shippingModuleStepComplete) {
); $shippingResult = array(
'errors' => $this->context->controller->errors,
'hasErrors' => !empty($this->context->controller->errors)
);
}
} }
// Initialization defaults // Initialization defaults
@@ -2711,16 +2854,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
if ($invoiceVisible) { if ($invoiceVisible) {
// update invoice/delivery address firstname/lastname from customer name, if // 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) // 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, 'firstname', $this->context->customer->firstname);
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'lastname'); $this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'lastname', $this->context->customer->lastname);
if (isset($invoiceFormData['firstname']) && isset($invoiceFormData["lastname"])) { if (isset($invoiceFormData['firstname']) && isset($invoiceFormData["lastname"])) {
$firstname = $invoiceFormData['firstname']; $firstname = $invoiceFormData['firstname'];
$lastname = $invoiceFormData['lastname']; $lastname = $invoiceFormData['lastname'];
} }
} elseif($deliveryVisible) { }
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'firstname'); if($deliveryVisible) {
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'lastname'); $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"])) { if (isset($deliveryFormData['firstname']) && isset($deliveryFormData["lastname"])) {
$firstname = $deliveryFormData['firstname']; $firstname = $deliveryFormData['firstname'];
@@ -2804,6 +2948,15 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
$invoiceAddressResult = $deliveryAddressResult = null; $invoiceAddressResult = $deliveryAddressResult = null;
$finalConfirmation = true; $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) { if ($invoiceVisible) {
$invoiceAddressResult = $this->modifyAddress('invoice', $invoiceFormData, $shallCreateNewAddress, $invoiceAddressResult = $this->modifyAddress('invoice', $invoiceFormData, $shallCreateNewAddress,
$finalConfirmation); $finalConfirmation);
@@ -2835,34 +2988,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
&& !$invoiceAddressErrors && !$invoiceAddressErrors
&& !$deliveryAddressErrors && !$deliveryAddressErrors
) { ) {
$this->updateCheckoutSession();
$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);
} }
return array_merge( 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) private function unifyAddresses($invoiceVisible, $deliveryVisible)
{ {
// We need to unify addresses, if only one is visible - so that shipping methods are always reflecting selected zone // 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); parse_str(Tools::getValue('account'), $accountFormData);
$email = (isset($accountFormData['email'])) ? $accountFormData['email'] : (isset($accountFormData['forced-email'])?$accountFormData['forced-email']:''); $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? // is email valid?
if ("" !== trim($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) { 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', 'The email "%mail%" is already used, please choose another one or sign in',
array('%mail%' => $email), array('%mail%' => $email),
'Shop.Notifications.Error' 'Shop.Notifications.Error'
) . '<' . 'span id="sign-in-link"' . '>' . $this->translator->trans('Sign in', array(), ) . $this->module->tagIt('span', $this->translator->trans('Sign in', array(), 'Shop.Theme.Actions'), 'id="sign-in-link"');
'Shop.Theme.Actions') . '<' . '/' . 'span' . '>';
} }
} elseif ( } elseif (
($this->module->config->force_email_overlay || $this->module->config->register_guest_on_blur) ($this->module->config->force_email_overlay || $this->module->config->register_guest_on_blur)
&& Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) { && 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); $this->silentRegistration($accountFormData);
} elseif ($this->module->config->show_button_save_personal_info && "tc_save_account" == Tools::getValue('triggerEl')) } 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->getPaymentOptionsBlock(),
$this->getCartSummaryBlock()); $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); $accountResult['hasErrors'] = (isset($accountResult['hasErrors'])?$accountResult['hasErrors'] : false) || (count($errors) > 0);
@@ -3339,12 +3504,27 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'Shop.Notifications.Error' 'Shop.Notifications.Error'
); );
} elseif (!$eachProduct['allow_oosp'] && $eachProduct['cart_quantity'] > $eachProduct['stock_quantity']) { } elseif (!$eachProduct['allow_oosp'] && $eachProduct['cart_quantity'] > $eachProduct['stock_quantity']) {
$cartQuantityError = if ($this->isShopVersion813Plus()) {
$this->trans( $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.', 'You can only buy %quantity% "%product%". Please adjust the quantity in your cart to continue.',
array('%product%' => $eachProduct['name']), [
'%product%' => $eachProduct['name'],
'%quantity%' => $eachProduct['stock_quantity'],
],
'Shop.Notifications.Error' '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'])); 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( $this->context->smarty->assign(array(
'cart' => $presentedCart, 'cart' => $presentedCart,
'cartQuantityError' => $cartQuantityError, 'cartQuantityError' => $cartQuantityError,
@@ -3376,7 +3571,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'js_custom_vars' => $js_custom_vars, 'js_custom_vars' => $js_custom_vars,
'forceToChooseCarrier' => (bool)$this->module->config->force_customer_to_choose_carrier, 'forceToChooseCarrier' => (bool)$this->module->config->force_customer_to_choose_carrier,
'customerDeliveryOption' => $customerSelectedDeliveryOption, 'customerDeliveryOption' => $customerSelectedDeliveryOption,
'carrierSelected' => $this->context->cart->id_carrier 'carrierSelected' => $this->context->cart->id_carrier,
'otherErrors' => $otherErrors
)); ));
$minimalPurchase = array(); $minimalPurchase = array();
@@ -3394,7 +3590,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
'emptyCart' => !($presentedCart['products_count']), 'emptyCart' => !($presentedCart['products_count']),
'isVirtualCart' => $this->context->cart->isVirtualCart(), 'isVirtualCart' => $this->context->cart->isVirtualCart(),
'minimalPurchaseError' => !empty($minimalPurchase), '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()); 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) private function DB_saveCheckoutSessionData($data)
{ {
Db::getInstance()->execute( 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; namespace module\thecheckout;
if (!defined('_PS_VERSION_')) {
exit;
}
class TS_Functions class TS_Functions
{ {

View File

@@ -5,6 +5,11 @@
* @copyright Less lib * @copyright Less lib
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @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'); require_once( dirname(__FILE__).'/Version.php');
class Less_Cache{ class Less_Cache{

View File

@@ -5,6 +5,11 @@
* @copyright Less lib * @copyright Less lib
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/ */
if (!defined('_PS_VERSION_')) {
exit;
}
class Less_Version{ class Less_Version{
const version = '1.7.0.10'; // The current build number of less.php 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 * @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 * @var Config
*/ */
@@ -44,13 +44,13 @@ class TheCheckout extends Module
{ {
$this->name = 'thecheckout'; $this->name = 'thecheckout';
$this->tab = 'checkout'; $this->tab = 'checkout';
$this->version = '3.3.8'; $this->version = '3.3.10';
$this->author = 'PrestaDev.pl'; $this->author = 'PrestaDev.pl';
$this->module_key = "2e602e0a1021555e3d85311cd8ef756d"; $this->module_key = "2e602e0a1021555e3d85311cd8ef756d1";
//$this->moduleTHECHECKOUT_key = "2e602e0a1021555e3d85311cd8ef756d"; //$this->moduleTHECHECKOUT_key = "2e602e0a1021555e3d85311cd8ef756d";
//$this->moduleOPC_key = "38254238bedae1ccc492a65148109fdd"; //$this->moduleOPC_key = "38254238bedae1ccc492a65148109fdd";
$this->need_instance = 1; $this->need_instance = 0;
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => '9.1'); $this->ps_versions_compliancy = array('min' => '1.7', 'max' => '9.1');
$this->bootstrap = true; $this->bootstrap = true;
@@ -66,6 +66,16 @@ class TheCheckout extends Module
$this->initTheCheckout(); $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() private function checkStripeNeedPatch()
{ {
return false; // Since checkout module v2.3.4, patch in Stripe is no more required. 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()) { 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'; TheCheckout, please contact us for more details or check our blog';
} }
if ($this->checkMondialNeedPatch()) { 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'; TheCheckout, please contact us for more details or check our blog';
} }
if ($this->checkAmcPsShipItNeedPatch()) { 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 TheCheckout, please update amcpsshipit.php and extend condition if ($controllerClass !== \'OrderController\') with
&& $controllerClass !== \'TheCheckoutModuleFrontController\' and add this comment (thecheckout-patched) to remove this message'; && $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'); // $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT * FROM '. _DB_PREFIX_ .'required_field');
// print_r($result); exit; // print_r($result); exit;
@@ -248,9 +253,21 @@ class TheCheckout extends Module
// $this->l('PA'); // $this->l('PA');
// $this->l('Invalid DNI'); // $this->l('Invalid DNI');
// $this->l('Probably a typo? Please try again.'); // $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); 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() private function setConfigOptions()
{ {
$this->includeDependency('classes/Config.php'); $this->includeDependency('classes/Config.php');
@@ -321,20 +338,14 @@ class TheCheckout extends Module
$this->logger->error($msg); $this->logger->error($msg);
} }
private function flatten_array($input_array) private function flatten_array($input_array) {
{
$result = array(); $result = array();
array_walk_recursive($input_array, function ($array, $key) use (&$result) { array_walk_recursive($input_array, function($array, $key) use (&$result) { $result[] = $key; });
$result[] = $key;
});
return $result; return $result;
} }
private function setTagsList($key, $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)));
$input_json = json_encode(array_map(function ($a) {
return array('id' => $a, 'title' => $a);
}, array_values($array_input)));
Media::addJsDefL($key, $input_json); Media::addJsDefL($key, $input_json);
} }
@@ -353,7 +364,7 @@ class TheCheckout extends Module
Media::addJsDefL('thecheckout_init_html_editor', $this->l('Use HTML editor')); Media::addJsDefL('thecheckout_init_html_editor', $this->l('Use HTML editor'));
$flattened = $this->flatten_array($this->config->blocks_layout); $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); $this->setTagsList('thecheckout_available_layout_blocks', $available_layout_blocks);
$all_fields = array_keys(array_merge($this->config->invoice_fields, $this->config->delivery_fields)); $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_label_3 = array();
$existing_step_validation_error_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) { foreach (Language::getLanguages() as $language) {
$existingReassuranceHtml = Configuration::get('TC_html_box_1', $language['id_lang']); $existingReassuranceHtml = Configuration::get('TC_html_box_1', $language['id_lang']);
if (!$existingReassuranceHtml || "" == trim($existingReassuranceHtml)) { if (!$existingReassuranceHtml || "" == trim($existingReassuranceHtml)) {
$reassurance_sample_html[$language['id_lang']] = if (array_key_exists($language['iso_code'], $reassurance_samples)) {
'<' . 'div class="thecheckout-reassurance"' . '> $reassurance_sample_html[$language['id_lang']] = $reassurance_samples[$language['iso_code']];
<' . 'div class="reassurance-section security">' . '<' . 'span class="icon"' . '>' . '<' . '/' . 'span' . '> } else {
<' . 'h3' . '>Polityka bezpieczeństwa<' . '/' . 'h3' . '> $reassurance_sample_html[$language['id_lang']] = $reassurance_samples['en'];
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' . '>';
} else { } else {
$reassurance_sample_html[$language['id_lang']] = Configuration::get( $reassurance_sample_html[$language['id_lang']] = Configuration::get('TC_html_box_1',
'TC_html_box_1', $language['id_lang']);
$language['id_lang']
);
} }
$existing_step_label_1 = Configuration::get('TC_step_label_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)) { if (!$existing_step_label_1 || "" == trim($existing_step_label_1)) {
@@ -612,7 +648,7 @@ class TheCheckout extends Module
$iso = 'en_US'; $iso = 'en_US';
} }
$this->context->smarty->assign(array( $this->context->smarty->assign(array(
"tc_config" => $this->config, "z_tc_config" => $this->config,
"iso" => $iso "iso" => $iso
)); ));
@@ -623,30 +659,33 @@ class TheCheckout extends Module
('module-thecheckout-order' == $this->context->controller->page_name || 'checkout' == $this->context->controller->page_name); ('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) && $isLoginController = isset($this->context->controller->php_self) && ('authentication' == $this->context->controller->php_self) &&
$this->config->social_login_display_on_login_page; $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 (!$isDisabled && ($isCheckoutController || $isLoginController)) {
if (!$this->context->customer->isLogged()) { if (!$this->context->customer->isLogged()) {
if ($isLoginController) { if ($isLoginController) {
$this->context->controller->registerJavascript( $this->context->controller->registerJavascript('modules-thecheckout-200',
'modules-thecheckout-200', Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/social-login-page.js",
Tools::substr( Tools::strlen(_PS_ROOT_DIR_) + 1),
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/social-login-page.js", array('position' => 'bottom', 'priority' => 1140));
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('position' => 'bottom', 'priority' => 1140)
);
Media::addJsDefL('i18_signInWithFB', $this->l('Sign in with Facebook')); Media::addJsDefL('i18_signInWithFB', $this->l('Sign in with Facebook'));
$this->context->controller->registerStylesheet( $this->context->controller->registerStylesheet('modules-thecheckout-200',
'modules-thecheckout-200', Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/social-login-page.css",
Tools::substr( Tools::strlen(_PS_ROOT_DIR_) + 1),
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/social-login-page.css",
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array( array(
'media' => 'all', 'media' => 'all',
'priority' => 1200 'priority' => 1200
) ));
);
} }
if ($this->config->social_login_fb) { 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'); $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 ($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'); $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'); Media::addJsDefL('dm_hash', '0');
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js")) { if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js")) {
$this->context->controller->registerJavascript( $this->context->controller->registerJavascript('modules-thecheckout-trial',
'modules-thecheckout-trial', Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js",
Tools::substr( Tools::strlen(_PS_ROOT_DIR_) + 1),
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js", array('position' => 'bottom', 'priority' => 200));
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('position' => 'bottom', 'priority' => 200)
);
} }
} else { } else {
Media::addJsDefL('dm_mode', 0); Media::addJsDefL('dm_mode', 0);
@@ -682,14 +724,10 @@ class TheCheckout extends Module
if (trim($this->config->smartform_client_id) !== '') { if (trim($this->config->smartform_client_id) !== '') {
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js")) { if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js")) {
$this->context->controller->registerJavascript( $this->context->controller->registerJavascript('modules-thecheckout-smartform',
'modules-thecheckout-smartform', Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js",
Tools::substr( Tools::strlen(_PS_ROOT_DIR_) + 1),
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js", array('position' => 'bottom', 'priority' => 500));
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('position' => 'bottom', 'priority' => 500)
);
Media::addJsDefL('tc_smartformClientId', trim($this->config->smartform_client_id)); 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 // include assets to manipulate content on separate payment page
if (Tools::getIsset(Config::SEPARATE_PAYMENT_KEY_NAME)) { if (Tools::getIsset(Config::SEPARATE_PAYMENT_KEY_NAME)) {
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js")) { if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js")) {
$this->context->controller->registerJavascript( $this->context->controller->registerJavascript('modules-thecheckout-separate-payment',
'modules-thecheckout-separate-payment', Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js",
Tools::substr( Tools::strlen(_PS_ROOT_DIR_) + 1),
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js", array('position' => 'bottom', 'priority' => 200));
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")) { if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css")) {
$this->context->controller->registerStylesheet( $this->context->controller->registerStylesheet('modules-thecheckout-separate-payment',
'modules-thecheckout-separate-payment', Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css",
Tools::substr( Tools::strlen(_PS_ROOT_DIR_) + 1),
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css", array('media' => 'all', 'priority' => 150));
Tools::strlen(_PS_ROOT_DIR_) + 1
),
array('media' => 'all', 'priority' => 150)
);
} }
$formatted_addresses = array( $formatted_addresses = array(
'invoice' => AddressFormat::generateAddress( 'invoice' => AddressFormat::generateAddress(new Address($this->context->cart->id_address_invoice),
new Address($this->context->cart->id_address_invoice), array(), $this->tagIt('br')),
array(), 'delivery' => AddressFormat::generateAddress(new Address($this->context->cart->id_address_delivery),
'<br>' array(), $this->tagIt('br')),
),
'delivery' => AddressFormat::generateAddress(
new Address($this->context->cart->id_address_delivery),
array(),
'<br>'
),
); );
if (version_compare(_PS_VERSION_, '1.7.3') >= 0) { if (version_compare(_PS_VERSION_, '1.7.3') >= 0) {
@@ -745,6 +769,7 @@ class TheCheckout extends Module
); );
$delivery_message = html_entity_decode($session->getMessage()); $delivery_message = html_entity_decode($session->getMessage());
} else { } else {
$delivery_message = ''; $delivery_message = '';
} }
@@ -774,8 +799,9 @@ class TheCheckout extends Module
public function hookActionDispatcher($params = null) public function hookActionDispatcher($params = null)
{ {
// Stop-by only for Order and Cart controllers // Stop-by only for Order and Cart controllers
if ("OrderController" !== $params['controller_class'] if (
&& "CartController" !== $params['controller_class'] ("OrderController" !== $params['controller_class'] && "CartController" !== $params['controller_class']) ||
(!$params['cookie']->id_cart && strpos(Tools::getValue('action'), 'socialLogin') !== 0)
) { ) {
return false; return false;
} }
@@ -827,6 +853,8 @@ class TheCheckout extends Module
} }
} }
// $this->initPsKernel();
$checkoutController = new TheCheckoutModuleFrontController(); $checkoutController = new TheCheckoutModuleFrontController();
$checkoutController->run(); $checkoutController->run();
exit; exit;
@@ -862,22 +890,21 @@ class TheCheckout extends Module
return $requiredCheckboxes; return $requiredCheckboxes;
} }
public function hookActionBuildFrontEndObject($params) public function hookActionBuildFrontEndObject($params) {
{
// $existingAddresses = $params['obj']['customer']['addresses'] ?? []; // $existingAddresses = $params['obj']['customer']['addresses'] ?? [];
// Probably we shall override JS's prestashop.customer.addresses always, regardless of being set or not by PS core // Probably we shall override JS's prestashop.customer.addresses always, regardless of being set or not by PS core
// if (!count($existingAddresses)) { // if (!count($existingAddresses)) {
$deliveryAddressId = $this->context->cart->id_address_delivery; $deliveryAddressId = $this->context->cart->id_address_delivery;
$invoiceAddressId = $this->context->cart->id_address_invoice; $invoiceAddressId = $this->context->cart->id_address_invoice;
$newAddresses = []; $newAddresses = [];
if ($deliveryAddressId > 0) { if ($deliveryAddressId > 0) {
$newAddresses[$deliveryAddressId] = new Address($deliveryAddressId); $newAddresses[$deliveryAddressId] = new Address($deliveryAddressId);
} }
if ($invoiceAddressId > 0 && $invoiceAddressId !== $deliveryAddressId) { if ($invoiceAddressId > 0 && $invoiceAddressId !== $deliveryAddressId) {
$newAddresses[$invoiceAddressId] = new Address($invoiceAddressId); $newAddresses[$invoiceAddressId] = new Address($invoiceAddressId);
} }
$params['obj']['customer']['addresses'] = $newAddresses; $params['obj']['customer']['addresses'] = $newAddresses;
// } // }
} }
@@ -950,13 +977,8 @@ class TheCheckout extends Module
'category' === $params['smarty']->tpl_vars['page']->value['page_name'] && 'category' === $params['smarty']->tpl_vars['page']->value['page_name'] &&
file_exists($this->local_path . 'views/templates/front/_partials/secure-notice.tpl')) { file_exists($this->local_path . 'views/templates/front/_partials/secure-notice.tpl')) {
$baseIdx = 3; $baseIdx = 3;
$blocks_idxs = explode(',', Configuration::get( $blocks_idxs = explode(',', Configuration::get('blocks_idxs', null, null, null,
'blocks_idxs', ($baseIdx + 1) . ',' . ($baseIdx + 31) . ',' . ($baseIdx + 101) . ',' . ($baseIdx + 102)));
null,
null,
null,
($baseIdx + 1) . ',' . ($baseIdx + 31) . ',' . ($baseIdx + 101) . ',' . ($baseIdx + 102)
));
$smarty_tpl_vars = $params['smarty']->tpl_vars; $smarty_tpl_vars = $params['smarty']->tpl_vars;
if (isset($smarty_tpl_vars['category']) && if (isset($smarty_tpl_vars['category']) &&
in_array($smarty_tpl_vars['category']->value['id'], $blocks_idxs)) { in_array($smarty_tpl_vars['category']->value['id'], $blocks_idxs)) {
@@ -1056,26 +1078,20 @@ class TheCheckout extends Module
if ('alert' == Tools::getValue('postProcessResultCode')) { if ('alert' == Tools::getValue('postProcessResultCode')) {
$output .= $output .=
'<' . 'div style="margin-top: 35px" class="alert alert-danger"' . '>' . $this->tagIt('div',
'<' . 'button type="button" class="close" data-dismiss="alert"' . '>×<' . '/' . 'button' . '>' . $this->tagIt('button','x', 'type="button" class="close" data-dismiss="alert"') . Tools::getValue('postProcessResult'),
Tools::getValue('postProcessResult') . 'style="margin-top: 35px" class="alert alert-danger"');
'<' . '/' . 'div' . '>';
} elseif ('ok' == Tools::getValue('postProcessResultCode')) { } elseif ('ok' == Tools::getValue('postProcessResultCode')) {
$output .= $this->displayConfirmation($this->trans( $output .= $this->displayConfirmation($this->trans('The settings have been updated.', array(),
'The settings have been updated.', 'Admin.Notifications.Success'));
array(),
'Admin.Notifications.Success'
));
} }
$this->context->smarty->assign('module_dir', $this->_path); $this->context->smarty->assign('module_dir', $this->_path);
if (!empty($this->warning)) { if (!empty($this->warning)) {
$output .= $output .=
'<' . 'div style="margin-top: 35px" class="alert alert-danger"' . '>' . $this->tagIt('div', $this->tagIt('button','x', 'type="button" class="close" data-dismiss="alert"') . $this->warning,
'<' . 'button type="button" class="close" data-dismiss="alert"' . '>×<' . '/' . 'button' . '>' . 'style="margin-top: 35px" class="alert alert-danger"');
$this->warning .
'<' . '/' . 'div' . '>';
} }
$this->context->smarty->assign(array( $this->context->smarty->assign(array(
@@ -1213,6 +1229,8 @@ class TheCheckout extends Module
$subst = '$0 ' . $blocksLayoutSortable; $subst = '$0 ' . $blocksLayoutSortable;
$result = preg_replace($re, $subst, $result, 1); $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; return $result;
} }
@@ -1328,12 +1346,8 @@ class TheCheckout extends Module
$this->l('Test mode'), $this->l('Test mode'),
$this->l('Checkout module will be enabled only when using URL parameter:') . ' ' . Config::TEST_MODE_KEY_NAME, $this->l('Checkout module will be enabled only when using URL parameter:') . ' ' . Config::TEST_MODE_KEY_NAME,
array(), array(),
$this->l('When enabled, Checkout is visible only using this URL: ') . ' ' . '<' . 'a href="' . $this->context->link->getPageLink( $this->l('When enabled, Checkout is visible only using this URL: ') . ' ' .
'order', $this->tagIt('a', $this->l('Checkout-test-URL'), 'href='.$this->context->link->getPageLink('order', true, null, Config::TEST_MODE_KEY_NAME))
true,
null,
Config::TEST_MODE_KEY_NAME
) . '">' . $this->l('Checkout-test-URL') . '<' . '/' . 'a>'
), ),
$this->generateSwitch( $this->generateSwitch(
'separate_cart_summary', 'separate_cart_summary',
@@ -1362,18 +1376,18 @@ class TheCheckout extends Module
$this->generateSelect( $this->generateSelect(
'font', 'font',
$this->l('Checkout form 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">' . $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"') .
'<' . '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" 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">' . $this->tagIt('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">' . $this->tagIt('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">' . $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"') .
'<' . '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-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">' . $this->tagIt('input','', 'type="hidden" name="font-weight-Indie-Flower" value="regular 400"') .
'<' . 'input type="hidden" name="font-weight-Great-Vibes" value="regular 400">' . $this->tagIt('input','', 'type="hidden" name="font-weight-Great-Vibes" value="regular 400"') .
'<' . 'input type="hidden" name="font-weight-Gloria-Hallelujah" value="regular 400">' . $this->tagIt('input','', 'type="hidden" name="font-weight-Gloria-Hallelujah" value="regular 400"') .
'<' . 'input type="hidden" name="font-weight-Amatic-SC" value="regular 400,bold 700">' . $this->tagIt('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">' . $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"') .
'<' . '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-Yanone-Kaffeesatz" value="extra-light 200,light 300,regular 400,bold 700"'),
$this->l('Font-family used on checkout form'), $this->l('Font-family used on checkout form'),
array( array(
array('id' => 'theme-default', 'name' => 'Theme default'), 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.'), $this->l('Inactive because "Show I am a private" is disabled.'),
'desc-visible-only-when-inactive' '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( $this->generateSwitch(
'offer_second_address', 'offer_second_address',
$this->l('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('Show "Save" button in Personal Info'),
$this->l('Display button to save guest/account before showing shipping and payment methods') $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( $this->generateText(
'google_maps_api_key', 'google_maps_api_key',
$this->l('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'), $this->l('When single payment method is selected, collapse remaining ones'),
array() 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( 'submit' => array(
'title' => $this->l('Save') 'title' => $this->l('Save')
@@ -1705,11 +1735,8 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled 'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand', 'class' => 'tinymce-on-demand',
'col' => 8, 'col' => 8,
'hint' => $this->trans( 'hint' => $this->trans('Invalid characters:', array(),
'Invalid characters:', 'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
), ),
array( array(
'type' => 'textarea', 'type' => 'textarea',
@@ -1719,11 +1746,8 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled 'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand', 'class' => 'tinymce-on-demand',
'col' => 8, 'col' => 8,
'hint' => $this->trans( 'hint' => $this->trans('Invalid characters:', array(),
'Invalid characters:', 'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
), ),
array( array(
'type' => 'textarea', 'type' => 'textarea',
@@ -1733,11 +1757,8 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled 'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand', 'class' => 'tinymce-on-demand',
'col' => 8, 'col' => 8,
'hint' => $this->trans( 'hint' => $this->trans('Invalid characters:', array(),
'Invalid characters:', 'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
), ),
array( array(
'type' => 'textarea', 'type' => 'textarea',
@@ -1747,17 +1768,14 @@ class TheCheckout extends Module
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled 'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand', 'class' => 'tinymce-on-demand',
'col' => 8, 'col' => 8,
'hint' => $this->trans( 'hint' => $this->trans('Invalid characters:', array(),
'Invalid characters:', 'Admin.Notifications.Info') . ' &lt;&gt;;=#{}'
array(),
'Admin.Notifications.Info'
) . ' &lt;&gt;;=#{}'
), ),
array( array(
'type' => 'textarea', 'type' => 'textarea',
'label' => $this->l('Required Checkbox No.1'), 'label' => $this->l('Required Checkbox No.1'),
'name' => 'TC_required_checkbox_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, 'lang' => true,
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled 'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
'class' => 'tinymce-on-demand', 'class' => 'tinymce-on-demand',
@@ -1800,47 +1818,37 @@ class TheCheckout extends Module
$this->generateSwitch( $this->generateSwitch(
'checkout_steps', 'checkout_steps',
$this->l('Checkout steps'), $this->l('Checkout steps'),
$this->l('Enable virtual steps'), $this->l('Enable virtual steps'), array(),
array(),
$this->l('Leave \'Label\' empty if you wish to disable particular step below') . $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->tagIt('div', $this->tagIt('a', $this->l('Click to set Starting configuration sample'),
$this->l('Click to set Starting configuration sample') . "</a></div>" '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 // Step 1
$this->generateText( $this->generateText(
'step_label_1', 'step_label_1',
$this->l('Label'), $this->l('Label'),
$this->l('Step 1 label, multi-language field'), $this->l('Step 1 label, multi-language field'),
array(), array(), '', 'config-step-1', true
'',
'config-step-1',
true
), ),
$this->generateText( $this->generateText(
'step_blocks_1', 'step_blocks_1',
$this->l('Visible blocks'), $this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'), $this->l('Comma separated list of blocks visible in this step'),
array(), array(), '', 'config-step-1'
'',
'config-step-1'
), ),
// Step 2 // Step 2
$this->generateText( $this->generateText(
'step_label_2', 'step_label_2',
$this->l('Label'), $this->l('Label'),
$this->l('Step 2 label, multi-language field'), $this->l('Step 2 label, multi-language field'),
array(), array(), '', 'config-step-2', true
'',
'config-step-2',
true
), ),
$this->generateText( $this->generateText(
'step_blocks_2', 'step_blocks_2',
$this->l('Visible blocks'), $this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'), $this->l('Comma separated list of blocks visible in this step'),
array(), array(), '', 'config-step-2'
'',
'config-step-2'
), ),
array( array(
'type' => 'textarea', 'type' => 'textarea',
@@ -1859,29 +1867,20 @@ class TheCheckout extends Module
'step_validation_error_2', 'step_validation_error_2',
$this->l('Error message'), $this->l('Error message'),
$this->l('Error shown to user when validation to reach this step fails'), $this->l('Error shown to user when validation to reach this step fails'),
array(), array(), '', 'config-step-2', true
'',
'config-step-2',
true
), ),
// Step 3 // Step 3
$this->generateText( $this->generateText(
'step_label_3', 'step_label_3',
$this->l('Label'), $this->l('Label'),
$this->l('Step 3 label, multi-language field'), $this->l('Step 3 label, multi-language field'),
array(), array(), '', 'config-step-3', true
'',
'config-step-3',
true
), ),
$this->generateText( $this->generateText(
'step_blocks_3', 'step_blocks_3',
$this->l('Visible blocks'), $this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'), $this->l('Comma separated list of blocks visible in this step'),
array(), array(), '', 'config-step-3', false
'',
'config-step-3',
false
), ),
array( array(
'type' => 'textarea', 'type' => 'textarea',
@@ -1900,29 +1899,20 @@ class TheCheckout extends Module
'step_validation_error_3', 'step_validation_error_3',
$this->l('Error message'), $this->l('Error message'),
$this->l('Error shown to user when validation to reach this step fails'), $this->l('Error shown to user when validation to reach this step fails'),
array(), array(), '', 'config-step-3', true
'',
'config-step-3',
true
), ),
// Step 4 // Step 4
$this->generateText( $this->generateText(
'step_label_4', 'step_label_4',
$this->l('Label'), $this->l('Label'),
$this->l('Step 4 label, multi-language field'), $this->l('Step 4 label, multi-language field'),
array(), array(), '', 'config-step-4', true
'',
'config-step-4',
true
), ),
$this->generateText( $this->generateText(
'step_blocks_4', 'step_blocks_4',
$this->l('Visible blocks'), $this->l('Visible blocks'),
$this->l('Comma separated list of blocks visible in this step'), $this->l('Comma separated list of blocks visible in this step'),
array(), array(), '', 'config-step-4', false
'',
'config-step-4',
false
), ),
array( array(
'type' => 'textarea', 'type' => 'textarea',
@@ -1941,10 +1931,7 @@ class TheCheckout extends Module
'step_validation_error_4', 'step_validation_error_4',
$this->l('Error message'), $this->l('Error message'),
$this->l('Error shown to user when validation to reach this step fails'), $this->l('Error shown to user when validation to reach this step fails'),
array(), array(), '', 'config-step-4', true
'',
'config-step-4',
true
), ),
), ),
@@ -2005,6 +1992,14 @@ class TheCheckout extends Module
$this->l('Display also on PS login page'), $this->l('Display also on PS login page'),
$this->l('Social login buttons will be shown also on Prestashop default 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( 'submit' => array(
@@ -2030,6 +2025,11 @@ class TheCheckout extends Module
$this->l('Clean checkout session'), $this->l('Clean checkout session'),
$this->l('Clean remembered status of checkboxes (Terms & conditions, Customer privacy, ...) after order is confirmed') $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( $this->generateText(
'ps_css_cache_version', 'ps_css_cache_version',
$this->l('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!'), 'hint' => $this->l('Custom JS, (!) consider that jQuery might be loaded later, use it only in plain JS DOMready handler!'),
'class' => 'max-size-lg', 'class' => 'max-size-lg',
// Generate reset link markup through description of this very last config element // Generate reset link markup through description of this very last config element
'desc' => '<div id="reset-all-settings">'. '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"'),
$this->l('Reset ALL SETTINGS to default values') .': <span class="reset-link" data-section="ALL SETTINGS" data-action="resetAllSettings"></span></div>' 'id="reset-all-settings"')
), ),
), ),
@@ -2125,6 +2125,7 @@ class TheCheckout extends Module
Configuration::get($name, (int)$lang['id_lang']) Configuration::get($name, (int)$lang['id_lang'])
); );
} }
} }
return array_merge($tc_options, $other_options, $fields_localized); return array_merge($tc_options, $other_options, $fields_localized);
} }
@@ -2135,7 +2136,7 @@ class TheCheckout extends Module
protected function postProcess() protected function postProcess()
{ {
//if ('demo@demo.com' == $this->context->employee->email) { //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 = ''; $errors = '';
@@ -2144,6 +2145,7 @@ class TheCheckout extends Module
)); ));
foreach (array_keys($form_values) as $key) { foreach (array_keys($form_values) as $key) {
$errors .= $this->config->updateByName($key); $errors .= $this->config->updateByName($key);
//echo "updating $key with: ".Tools::getValue($key)."\n\n"; //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_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Vyžadován checkbox č.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Vyžadován checkbox č.2'; $_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_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_368fe771261fcb18f7988833c9294a20'] = 'Návod';
$_MODULE['<{thecheckout}prestashop>thecheckout_ef70fe300c69a44e69d930f40ec17fd6'] = 'Jak vytvořit Facebook App ID a Secret?'; $_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?'; $_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_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_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_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_e0fec84c6a529b8bc9d40e42cdcd02ba'] = 'Google maps API klíč';
$_MODULE['<{thecheckout}prestashop>thecheckout_0f2b4315a2ae98076259c3ec37a68eed'] = 'API klíč pro službu doplňování adresy'; $_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_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_d1e8b16bd7dcf9767116d34e3626444f'] = 'Přeprava a Platba';
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Vynutit zvolení země'; $_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'; $_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_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_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_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_1640a6435b91ac7acb3ef36e9dfc197e'] = 'Pole adresy';
$_MODULE['<{thecheckout}prestashop>thecheckout_ebd9bec4d70abc789d439c1f136b0538'] = 'Rozvržení'; $_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_a2229590cf589ce982e1891a7f194104'] = 'HTML pole č.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML pole č.2'; $_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML pole č.2';
$_MODULE['<{thecheckout}prestashop>thecheckout_237959b1bb2bc9e30b0d2d526ac4c35a'] = 'HTML pole č.3'; $_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_35fab128e0c8232829a4b8b6eb0eebe2'] = 'Kroky v košíku';
$_MODULE['<{thecheckout}prestashop>thecheckout_3137d4e00674c1ac08f8904f94cab707'] = 'Aktivovuje virtuální 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_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_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_b021df6aac4654c454f46c77646e745f'] = 'Popis';
$_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Popis kroku č.1, je možné zadat popis pro různé jazyky'; $_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Popis kroku č.1, je možné zadat popis pro různé jazyky';
$_MODULE['<{thecheckout}prestashop>thecheckout_c477048d0832c367da078df08c429569'] = 'Zobrazené sekce'; $_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_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_386b07d40ba6a78eaf150cb4a6ca6aa3'] = '\'Client Secret\' kód z Google developers API';
$_MODULE['<{thecheckout}prestashop>thecheckout_5222a2ea579802f15d9b3b7686cc4ac4'] = 'Styl tlačítek'; $_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_9b6545e4cea9b4ad4979d41bb9170e2b'] = 'Pokročilé';
$_MODULE['<{thecheckout}prestashop>thecheckout_2d614e2af90c0e53143574430071b0f3'] = 'Zapomenout stav košíkové session'; $_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_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_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_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'; $_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-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Poslat na jinou adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Doručovací adresa'; $_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Doručovací adresa';
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Změnit adresu'; $_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>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_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Chybí číslo ulice';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Horní 235'; $_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Horní 235';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(nepovinné)'; $_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_a61135d90c71314ab95d73045f3a6968'] = 'Dodatkowe pole nr.4';
$_MODULE['<{thecheckout}prestashop>thecheckout_e5405e2b17df4a7c87bae444cf74dbc5'] = 'Dodatkowe pole nr.5'; $_MODULE['<{thecheckout}prestashop>thecheckout_e5405e2b17df4a7c87bae444cf74dbc5'] = 'Dodatkowe pole nr.5';
$_MODULE['<{thecheckout}prestashop>thecheckout_020c2091aec3019d02193cef080bcf97'] = 'Metoda płatności'; $_MODULE['<{thecheckout}prestashop>thecheckout_020c2091aec3019d02193cef080bcf97'] = 'Metoda płatności';
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Wymagane pole checkbox #1'; $_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Wymagane pole wyboru nr 1';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Wymagane pole checkbox #2'; $_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Wymagane pole wyboru nr 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_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Prawdopodobnie literówka? Proszę spróbuj ponownie.'; $_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_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_04aef6cc5b0457f1992c53b260512ccc'] = 'Jak utworzyć identyfikator klienta Google i klucz secret?';
$_MODULE['<{thecheckout}prestashop>thecheckout_09f528290e1be8f60121b7822d57bcfb'] = 'Jak utworzyć klucz API map Google?'; $_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_9e8be93331a53b67e484e6a135d616b5'] = 'Zresetuj domyślną konfigurację dla';
$_MODULE['<{thecheckout}prestashop>thecheckout_30c39756e5084394d51f2806683b3ef8'] = 'Użyj edytora HTML'; $_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_d1eb833874dffe11131f82a82077187f'] = 'Pola formularz klienta';
$_MODULE['<{thecheckout}prestashop>thecheckout_93eb8b33c7191c7df06dcd8b79a95b2e'] = 'Pola formularza adresu faktury'; $_MODULE['<{thecheckout}prestashop>thecheckout_93eb8b33c7191c7df06dcd8b79a95b2e'] = 'Pola formularza adresu faktury';
$_MODULE['<{thecheckout}prestashop>thecheckout_518f4c51b8e8cf98e1ae8e7d83447ca0'] = 'Pola formularza adresu dostawy'; $_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_b9f5c797ebbf55adccdd8539a65a0241'] = 'Wyłączone';
$_MODULE['<{thecheckout}prestashop>thecheckout_0db377921f4ce762c62526131097968f'] = 'Główne ustawienia'; $_MODULE['<{thecheckout}prestashop>thecheckout_0db377921f4ce762c62526131097968f'] = 'Główne ustawienia';
$_MODULE['<{thecheckout}prestashop>thecheckout_4245499695408b974322be6f01b0d17a'] = 'Tryb testowy'; $_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_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_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_8b155326841f2a2c70769eb9250ad186'] = 'URL testu Checkout-u';
$_MODULE['<{thecheckout}prestashop>thecheckout_8aa091003f4ed518d2259626fa0fada8'] = 'Oddzielne podsumowanie koszyka'; $_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_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_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_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_234763312f3ed61b0d2ff78b33d71507'] = 'Śliczne - zaokrąglone rogi, płaskie, bez animacji';
$_MODULE['<{thecheckout}prestashop>thecheckout_a65ed164784e56a22e6514ae659dba14'] = 'Nowoczesne - zmaterializowane style 3d'; $_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_f0b1ccae19a55a420f8dc9862b6eaf02'] = 'Czcionka formularza procesu zakupów';
$_MODULE['<{thecheckout}prestashop>thecheckout_f0c6aa2e4f605345b3f7c1ae4c77a1f6'] = 'Rodzina czcionek używana w formularzu 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_dd47ba7fc524dae895ebac9e45348dd9'] = 'Grubość czcionki';
$_MODULE['<{thecheckout}prestashop>thecheckout_7c835e80f65debd61bc7b9d7254a70c8'] = 'Jak \"gruba\" będzie czcionka'; $_MODULE['<{thecheckout}prestashop>thecheckout_7c835e80f65debd61bc7b9d7254a70c8'] = 'Jak \"gruba\" będzie czcionka';
$_MODULE['<{thecheckout}prestashop>thecheckout_c03bfb7476c17a7c82493eb7bb1e5003'] = 'Używaj ikon materiałów'; $_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_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_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_8b147e8f84dd39a802480b58b6b9059d'] = 'Kompaktowy wózek';
$_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_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 stanie produktu'; $_MODULE['<{thecheckout}prestashop>thecheckout_7ae536068882e59ea1d025e8db464832'] = 'Pokaż informacje o magazynie produktów';
$_MODULE['<{thecheckout}prestashop>thecheckout_e546d5e5798692adb0d15823cf1e4b46'] = 'Wyświetl podsumowanie w magazynie, w magazynie lub brakującej ilości w koszyku.'; $_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_c9cc8cce247e49bae79f15173ce97354'] = 'Zapisz';
$_MODULE['<{thecheckout}prestashop>thecheckout_dd40f868e9e5ae4efbd8b7d469b94264'] = 'Klient i adres'; $_MODULE['<{thecheckout}prestashop>thecheckout_dd40f868e9e5ae4efbd8b7d469b94264'] = 'Klient i adres';
$_MODULE['<{thecheckout}prestashop>thecheckout_51809ca4b5f1f9802840f94b9e3b5767'] = 'Wymuś nakładkę e-mail'; $_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_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'] = 'Nieaktywny, ponieważ hasło jest wymagane w sekcji Pola klienta.'; $_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_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_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'] = 'Nieaktywny, ponieważ włączona jest opcja „Wymuś nakładkę e-mail”.'; $_MODULE['<{thecheckout}prestashop>thecheckout_33da89796a0ec28047c8283dee17ec7a'] = 'Nieaktywne, 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_5de896c6747a927f8ba5416f6bf21f50'] = 'Zezwalaj na kasę gościnną 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_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_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_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_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_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_ab4a04a19b1b29bab635deb4ea51acd4'] = '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_53f6f23877e143b3147764311bfe51e9'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, co rozwinie pola Firma i podatek';
$_MODULE['<{thecheckout}prestashop>thecheckout_01ac200aa4fde394ef13da890bb29a94'] = '.. pol bizensowe'; $_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_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_1d13e7254965c494c9e60bba574c99e3'] = 'Nieaktywne, ponieważ opcja „Pokaż, że jestem firmą” jest wyłączona.';
$_MODULE['<{thecheckout}prestashop>thecheckout_1fe6fb10cdeca2ace3db8b9185a40c15'] = '.. wyłączone pola biznesowe '; $_MODULE['<{thecheckout}prestashop>thecheckout_1fe6fb10cdeca2ace3db8b9185a40c15'] = '... pola dla osób niepełnosprawnych biznesowo';
$_MODULE['<{thecheckout}prestashop>thecheckout_0848fa8ca4180d676c524a2a5ef746a2'] = 'Rozdzielona przecinkami lista pól ukrytych dla klientów biznesowych (widoczna tylko dla innych)'; $_MODULE['<{thecheckout}prestashop>thecheckout_0848fa8ca4180d676c524a2a5ef746a2'] = 'Lista pól oddzielonych przecinkami UKRYTA dla klientów biznesowych (widoczna tylko dla innych)';
$_MODULE['<{thecheckout}prestashop>thecheckout_375b6233cb0ea0d44071ad58aedd7877'] = 'Pokaz \"Jestem klientem prywatnym\" pole wyboru'; $_MODULE['<{thecheckout}prestashop>thecheckout_375b6233cb0ea0d44071ad58aedd7877'] = 'Pokaż pole wyboru „Jestem klientem prywatnym”.';
$_MODULE['<{thecheckout}prestashop>thecheckout_a706ab7df922b5ce69adaab9eb74beaa'] = 'Pokaże pole wyboru na górze adresu do faktury, które będzie rozwiniete'; $_MODULE['<{thecheckout}prestashop>thecheckout_a706ab7df922b5ce69adaab9eb74beaa'] = 'Pokaż pole wyboru na górze adresu faktury, które rozwinie (zwykle) pole dni';
$_MODULE['<{thecheckout}prestashop>thecheckout_c5f143d6ad58a47d2545bbfdcef971d1'] = 'Pokaz \"Jestem klientem prywatnym\" pole wyboru w adresie dostawy'; $_MODULE['<{thecheckout}prestashop>thecheckout_c5f143d6ad58a47d2545bbfdcef971d1'] = 'Jestem klientem prywatnym 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_c4465575f7c097f647d87896c56cba6f'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, które rozwinie (zwykle) pole dni';
$_MODULE['<{thecheckout}prestashop>thecheckout_b0361fc89b0d10dee9c3c3b698049aba'] = '....pola prywatnego klienta'; $_MODULE['<{thecheckout}prestashop>thecheckout_b0361fc89b0d10dee9c3c3b698049aba'] = '... pola klientów prywatnych';
$_MODULE['<{thecheckout}prestashop>thecheckout_4f2f7717196071e4740cb118ce0870a7'] = 'Oddzielona przecinkami lista pól pokazana w osobnej sekcji dla 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 klientem” jest wyłączona. '; $_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_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_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_38752a8491cc15f92f3bfe564819fcb5'] = 'Automatycznie rozwijaj drugi adres';
$_MODULE['<{thecheckout}prestashop>thecheckout_0a5257d71d1b16bef8753b3699aafe70'] = 'Sprawdź, czy oba adresy (faktura + dostawa) są widoczne od razu'; $_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_76152639439c91e37b4114425129216a'] = 'Zaznacz wymagane pola (*)';
$_MODULE['<{thecheckout}prestashop>thecheckout_ce44a24d986a7c14734bbf7d159634d5'] = 'Pokaż czerwoną gwiazdkę obok wymaganej etykiety 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_d81977209c6519c11278b7f8b39b6d9c'] = 'Biuletyn domyślnie zaznaczony';
$_MODULE['<{thecheckout}prestashop>thecheckout_e4ba505bcd85e1d676149ddf3955e593'] = 'Newsletter zaznaczony domyślnie - ps_emailsubscription moduł musi być włączony'; $_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ż prefix numeru telefonu'; $_MODULE['<{thecheckout}prestashop>thecheckout_cadbf263f422d0e0477eefed970e7693'] = 'Pokaż prefiks połączenia';
$_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_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_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_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_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_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_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_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 adresów Google'; $_MODULE['<{thecheckout}prestashop>thecheckout_7bd9d84f516ab95a7b5d1603423825ba'] = 'Ustaw klucz API, aby włączyć automatyczne uzupełnianie adresu Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_d41085761a011df55d32d157f3024e02'] = 'Smartform clientId'; $_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_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_d1e8b16bd7dcf9767116d34e3626444f'] = 'Dostawa i płatność'; $_MODULE['<{thecheckout}prestashop>thecheckout_d1e8b16bd7dcf9767116d34e3626444f'] = 'Dostawa i płatność';
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Wymuś na kliencie wybór kraju'; $_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Zmuś klienta do wyboru 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_45ab5651afbfeee56ebf21053ef1b3ba'] = 'Ukrywa metody wysyłki i na początku odznacza kraj, tak że klient musi wybrać kraj ręcznie';
$_MODULE['<{thecheckout}prestashop>thecheckout_ad24dd475f201d88a6ff27b2ecc9c828'] = 'Wymagane pola dostawy'; $_MODULE['<{thecheckout}prestashop>thecheckout_ad24dd475f201d88a6ff27b2ecc9c828'] = 'Pola wymagane do wysyłki';
$_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_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_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_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_d9c07f06e99782f73f623c09f8a2e541'] = 'Pokaż „wysyłka do” u przewoźników';
$_MODULE['<{thecheckout}prestashop>thecheckout_da36d8fc577d053eaae305f4f163cdb5'] = 'Pokaż nazwę przesyłki w wyborze przewoźników, dla lepszej przejrzystości'; $_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_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_1cb049175732c198e1eb4a3c340667a5'] = 'Pokaż wiadomość zamówienia';
$_MODULE['<{thecheckout}prestashop>thecheckout_241973cbee85abce3d2c8bfab9a92870'] = 'Pokaż Textarea dla dowolnego komunikatu o zamówieniu'; $_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_2dcb573a9ad3cfdf065f94b41dfce113'] = 'Opcje płatności 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_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 oficjalny Braintree] jest włączony'; $_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_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_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_c8e608334254ae14807323821f622019'] = 'Pola wymagane do 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_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'] = 'Nieaktywny, ponieważ „Opcje płatności na osobnej stronie” są włączone.'; $_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_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_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_1640a6435b91ac7acb3ef36e9dfc197e'] = 'Pola adresowe';
$_MODULE['<{thecheckout}prestashop>thecheckout_ebd9bec4d70abc789d439c1f136b0538'] = 'Układ'; $_MODULE['<{thecheckout}prestashop>thecheckout_ebd9bec4d70abc789d439c1f136b0538'] = 'Układ';
$_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Przenieść logowanie do bloku konta'; $_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Przenieś login do blokady konta';
$_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Wyświetla panel logowania na górze bloku konta'; $_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Przenieś sekcję logowania do konta';
$_MODULE['<{thecheckout}prestashop>thecheckout_a2229590cf589ce982e1891a7f194104'] = 'HTML box nr.1'; $_MODULE['<{thecheckout}prestashop>thecheckout_a2229590cf589ce982e1891a7f194104'] = 'HTML box nr.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML box nr.2'; $_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML box nr.2';
$_MODULE['<{thecheckout}prestashop>thecheckout_237959b1bb2bc9e30b0d2d526ac4c35a'] = 'HTML box nr.3'; $_MODULE['<{thecheckout}prestashop>thecheckout_237959b1bb2bc9e30b0d2d526ac4c35a'] = 'HTML box nr.3';
$_MODULE['<{thecheckout}prestashop>thecheckout_dff191476bb6fc6505df0ac0feb4196a'] = 'HTML box nr.4'; $_MODULE['<{thecheckout}prestashop>thecheckout_dff191476bb6fc6505df0ac0feb4196a'] = 'HTML box nr.4';
$_MODULE['<{thecheckout}prestashop>thecheckout_f3a29486bed19a90f2da6d007818b427'] = 'Kroki'; $_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_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_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_b021df6aac4654c454f46c77646e745f'] = 'Etykieta';
$_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Etykieta kroku 1, pole wielojęzyczne'; $_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Etykieta kroku 1, pole wielojęzyczne';
$_MODULE['<{thecheckout}prestashop>thecheckout_c477048d0832c367da078df08c429569'] = 'Widoczne bloki'; $_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_f80850c55f43a798f0aac4ea930a91f6'] = 'Etykieta kroku 2, pole wielojęzyczne';
$_MODULE['<{thecheckout}prestashop>thecheckout_058809ec6e7124a5cd1b5eb1a68fca8d'] = 'Wyrażenie walidacji (JS)'; $_MODULE['<{thecheckout}prestashop>thecheckout_058809ec6e7124a5cd1b5eb1a68fca8d'] = 'Wyrażenie walidacyjne (JS)';
$_MODULE['<{thecheckout}prestashop>thecheckout_5ac3ad9aac3ddba0f492ac737999d3aa'] = 'Aby przejść do tego kroku, wymagane jest wyrażenie sprawdzania poprawności 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_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_57332a8bbbaf983d292d1c56fef26ca9'] = 'Etykieta kroku 3, pole wielojęzyczne';
$_MODULE['<{thecheckout}prestashop>thecheckout_165e07c5032fa2218d83c0d1fae1459e'] = 'Etykieta kroku 4, 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_e21a59ad123e5cfb3f4569129bb87d58'] = 'Logowanie społecznościowe';
$_MODULE['<{thecheckout}prestashop>thecheckout_34013ea6c574585085c7569fbf7c0a70'] = 'Logowanie Facebook'; $_MODULE['<{thecheckout}prestashop>thecheckout_34013ea6c574585085c7569fbf7c0a70'] = 'Logowanie Facebook';
$_MODULE['<{thecheckout}prestashop>thecheckout_e2c483e0ded711e9d0c7947443475c40'] = 'Włącz logoanie z kontem Facebook-a'; $_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_139e25e29b316c755292d2437eea404f'] = 'Identyfikator aplikacji od API programistów Facebooka';
$_MODULE['<{thecheckout}prestashop>thecheckout_fd125f225efc3440c92a219e9b396543'] = 'Facebook App Secret'; $_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_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 Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_cbfdaa9ce5eb620875701b69e93ef240'] = 'Włącz logowanie przez Google ';
$_MODULE['<{thecheckout}prestashop>thecheckout_2a9fc9efe56971027f8c92eff8dc0c39'] = 'Google ID klienta'; $_MODULE['<{thecheckout}prestashop>thecheckout_2a9fc9efe56971027f8c92eff8dc0c39'] = 'Google ID klienta';
$_MODULE['<{thecheckout}prestashop>thecheckout_83b4f1306e5fd5d77bf725a252b7fe13'] = 'Identyfikator klienta od API programistów Google'; $_MODULE['<{thecheckout}prestashop>thecheckout_83b4f1306e5fd5d77bf725a252b7fe13'] = 'Identyfikator klienta od API programistów Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_3708118127eeeb0b1c89deca62badbfa'] = 'Google client secret'; $_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_386b07d40ba6a78eaf150cb4a6ca6aa3'] = 'Klucz klienta secret od API programistów Google';
$_MODULE['<{thecheckout}prestashop>thecheckout_5222a2ea579802f15d9b3b7686cc4ac4'] = 'Styl przycisków logowania'; $_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_4f7f8f230c7892a475fe8536e3c0786c'] = 'Wyświetlaj także na stronie logowania PS';
$_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_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_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_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_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_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_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_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_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_42e6feb7f76e910efcda54034ecc83ce'] = 'Własne style CSS';
$_MODULE['<{thecheckout}prestashop>thecheckout_df327001e4ac7d3d586835d8fa588c44'] = 'Niestandardowy CSS używany w procesie zakupowym'; $_MODULE['<{thecheckout}prestashop>thecheckout_df327001e4ac7d3d586835d8fa588c44'] = 'Niestandardowy CSS używany w procesie zakupowym';
$_MODULE['<{thecheckout}prestashop>thecheckout_a2122f3de6b6faa3a601d1f85a2df298'] = 'Własny kod JS'; $_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_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Wymagane';
$_MODULE['<{thecheckout}prestashop>customer-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]'; $_MODULE['<{thecheckout}prestashop>customer-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]';
$_MODULE['<{thecheckout}prestashop>customer-fields_669202ab0d075ca23040e1abac74ba04'] = '- zarządzane automatycznie -'; $_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_7c0ce662f121e2b553cf8733d73f7bd5'] = 'Zmiana kolejności';
$_MODULE['<{thecheckout}prestashop>address-fields_eff88d54854b0637031f4066736623bc'] = 'Nazwa pola'; $_MODULE['<{thecheckout}prestashop>address-fields_eff88d54854b0637031f4066736623bc'] = 'Nazwa pola';
$_MODULE['<{thecheckout}prestashop>address-fields_ec24d78ce33048dc73a2b6b1a0690192'] = 'Widoczne'; $_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_955ad3298db330b5ee880c2c9e6f23a0'] = 'Dynamiczne';
$_MODULE['<{thecheckout}prestashop>address-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]'; $_MODULE['<{thecheckout}prestashop>address-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]';
$_MODULE['<{thecheckout}prestashop>address-fields_669202ab0d075ca23040e1abac74ba04'] = '- zarządzane automatycznie -'; $_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>front_007d68b97afe3a874a17fbae7c4b90c0'] = 'Po potwierdzeniu formularza pojawi się wyskakujące okienko dotyczące płatności';
$_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>front_ad92169e95e13b3fcd8bad5afedbd49b'] = 'Błąd walidacji';
$_MODULE['<{thecheckout}prestashop>blocks-layout_6481c22f8022411a6bf1c0ef19b2e42b'] = 'Ustaw liczbę dla bloku:'; $_MODULE['<{thecheckout}prestashop>front_9c4164c072282c2ab419a843347ad7e2'] = 'Tryb testowy jest włączony, tylko Ty widzisz aktywny moduł Kasa.';
$_MODULE['<{thecheckout}prestashop>blocks-layout_bdadd7083181526ea914a5d2ee44906a'] = 'Ustaw blok niewidoczny:'; $_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'OK, zamknij';
$_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_0557fa923dcee4d0f86b1409f5c2167f'] = 'Z powrotem'; $_MODULE['<{thecheckout}prestashop>front_0557fa923dcee4d0f86b1409f5c2167f'] = 'Z powrotem';
$_MODULE['<{thecheckout}prestashop>front_300225ee958b6350abc51805dab83c24'] = 'Kontynuować zakupy'; $_MODULE['<{thecheckout}prestashop>front_300225ee958b6350abc51805dab83c24'] = 'Kontynuować zakupy';
$_MODULE['<{thecheckout}prestashop>front_c290a5941ad6eb0d5fe8752c15c5fd78'] = 'Następny krok'; $_MODULE['<{thecheckout}prestashop>front_c290a5941ad6eb0d5fe8752c15c5fd78'] = 'Następny krok';
$_MODULE['<{thecheckout}prestashop>front_0009f88d4eb5a6f588108ce3d45ea1a4'] = 'Potwierdź i pokaż płatności'; $_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_0c458988127eb2150776881e2ef3f0c4'] = 'Adres dostawy';
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Zmiana adresu'; $_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Zmiana adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym'; $_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym';
$_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym'; $_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym';
$_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Faktura na inny adres'; $_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Faktura na inny adres';
$_MODULE['<{thecheckout}prestashop>shipping_8797ca7dc4de41ee400665f53c842a42'] = 'Proszę wybrać sposób dostawy'; $_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>shipping_76d5f66dd7c64439d8f886935db5ed58'] = 'Wybierz kraj wysyłki, aby zobaczyć opcje wysyłki'; $_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Brakuje numeru ulicy?';
$_MODULE['<{thecheckout}prestashop>shipping_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz:'; $_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(opcjonalny)';
$_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_3389dae361af79b04c9c8e7057f60cc6'] = '*'; $_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_7d807ccbace31aa0bbf0d41099c75099'] = 'Zapisane adresy:';
$_MODULE['<{thecheckout}prestashop>customer-addresses-dropdown_03c2e7e41ffc181a4e84080b4710e81e'] = 'Nowy'; $_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>payment-confirmation-button_99938b17c91170dfb0c2f3f8bc9f2a85'] = 'Płacić';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_8797ca7dc4de41ee400665f53c842a42'] = 'Wybierz metodę wysyłki'; $_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'; $_MODULE['<{thecheckout}prestashop>cart-detailed-totals_d3487ff3db8ee621475532d31c533e88'] = 'Waga całkowita';

View File

@@ -2,34 +2,47 @@
global $_MODULE; global $_MODULE;
$_MODULE = array(); $_MODULE = array();
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Req. checkbox number one'; $_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Required Checkbox No.1';
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Req. checkbox number two'; $_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Required Checkbox No.2';
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Upss, že by překlep? Zkuste to ještě jednou.'; $_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_9c4164c072282c2ab419a843347ad7e2'] = 'Test mód aktívny, len Vy vidíte TheCheckout modul';
$_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'OK, zatvoriť'; $_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>front_0009f88d4eb5a6f588108ce3d45ea1a4'] = 'Potvrdiť a zobraziť spôsoby platby';
$_MODULE['<{thecheckout}prestashop>payment_0da0a5ab420b2906c2c3c593d6d78647'] = 'Prosím vyberte spôsob 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_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_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_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_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_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_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_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_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_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>confirm_dcd2f414067d31441432886d40f1adcc'] = 'Vyskytli sa chybu na formulári, prosím skontrolujte a opravte';
$_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = '--'; $_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = '--';
$_MODULE['<{thecheckout}prestashop>login-form_d7085e2b5b40144896a996a297e3847d'] = 'Prihlásiť sa cez Facebook'; $_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_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_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_8c3c555f8e492a991b7d235af1c1a597'] = 'Pokračovať >';
$_MODULE['<{thecheckout}prestashop>login-form_9fc096a9da7670b366f6bc91c3ca3935'] = 'Prosím zadajte Váš email pre pokračovanie v objednávke.'; $_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_1fbc7e5f1b92c7ec072397b59a0bb5da'] = 'Fakturačná adresa';
$_MODULE['<{thecheckout}prestashop>address-invoice_aca89f3de809fc6630068ad413c20f8c'] = 'Firemný zákazník'; $_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-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Doručiť na inú adresu';
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Doručovacia adresa'; $_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>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_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Nechýba číslo ulice?';
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Trnavská cesta 92'; $_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_dc6c32f4320d95f02c77e4fc7b7ea6e5'] = 'ks.';
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_752b5c9d86a955c013daa3ccf2241386'] = 'Zvyšné ks. o'; $_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-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_8797ca7dc4de41ee400665f53c842a42'] = 'Prosím vyberte spôsob dopravy';
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_d3487ff3db8ee621475532d31c533e88'] = 'Celková hmotnosť';

View File

@@ -20,9 +20,10 @@
color: #a458ff; 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, .checkout-block .inner-area .offer-login a:hover,
.has-discount .discount { .has-discount .discount,
.reassurance-section>.icon::after {
background-color: #a458ff; background-color: #a458ff;
} }

View File

@@ -69,12 +69,14 @@
} }
.is-empty-cart #tc-container, .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; display: none;
} }
.checkout-block { .checkout-block {
margin: 0; margin: 0;
padding: 10px 3px;
} }
.checkout-block .inner-area { .checkout-block .inner-area {
@@ -221,15 +223,15 @@ a.custom-link:hover {
border-bottom: 1px solid #2fb5d2; border-bottom: 1px solid #2fb5d2;
} }
.business-customer, //.business-customer,
.private-customer { //.private-customer {
padding: 0 0 15px; // padding: 0 0 15px;
} //}
// put .private-customer checkbox closer to .business-customer if both are visible // put .private-customer checkbox closer to .business-customer if both are visible
.business-customer ~ .private-customer { //.business-customer ~ .private-customer {
margin-top: -15px; // margin-top: -15px;
} //}
#i_am_business[disabled=disabled], #i_am_business[disabled=disabled] ~ label, #i_am_business[disabled=disabled], #i_am_business[disabled=disabled] ~ label,
#i_am_private[disabled=disabled], #i_am_private[disabled=disabled] ~ label { #i_am_private[disabled=disabled], #i_am_private[disabled=disabled] ~ label {
@@ -296,7 +298,8 @@ form.hidden {
} }
.card-block.block-promo { .card-block.block-promo {
padding: 10px 0; padding-top: 0;
padding-bottom: 0;
} }
.cart-grid.row { .cart-grid.row {
@@ -384,6 +387,20 @@ div#thecheckout-address-invoice {
margin: -2px 0 20px; 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 { .error-msg.visible {
display: block; display: block;
} }
@@ -393,6 +410,11 @@ div#thecheckout-address-invoice {
margin-top: 1px; margin-top: 1px;
} }
.-error > .error-msg {
display: block;
margin-top: 1px;
}
.error-msg #sign-in-link { .error-msg #sign-in-link {
margin: 0 10px; margin: 0 10px;
padding: 0 3px; padding: 0 3px;
@@ -414,6 +436,7 @@ body#checkout span.custom-checkbox,
body#checkout span.custom-checkbox span { body#checkout span.custom-checkbox span {
position: relative; position: relative;
//flex: unset; //flex: unset;
margin-top: 0.15rem;
} }
body#checkout .custom-checkbox span.label { body#checkout .custom-checkbox span.label {
@@ -423,19 +446,6 @@ body#checkout .custom-checkbox span.label {
flex-grow: 1; 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 span.custom-checkbox,
#conditions-to-approve ul, #conditions-to-approve ul,
.condition-label { .condition-label {
@@ -488,10 +498,6 @@ span.custom-radio {
margin-top: 5px; margin-top: 5px;
} }
.custom-checkbox span.label {
text-align: left;
}
.payment-option-fee.hidden { .payment-option-fee.hidden {
display: none; display: none;
} }
@@ -562,43 +568,77 @@ button#confirm_order:disabled {
.delivery-option > label > .row { .delivery-option > label > .row {
margin: 0; margin: 0;
text-align: left; text-align: left;
display: block;
}
.delivery-option > label > .row > div > .row > div {
padding: 0;
}
.delivery-option-detail > .row {
display: flex; 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; margin: 0;
position: relative; 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 { .delivery-option-logo {
position: absolute; max-width: 70px;
right: 10px;
width: 50px;
height: 50px;
} }
.delivery-option .delivery-option-logo img { .delivery-option-price {
max-height: 100%; &.free {
max-width: 100%; .carrier-price-with-tax-formatted {
margin-left: 10px; display: none;
} }
.delivery-option-label.has-logo {
.delivery-option-name, .delivery-option-delay {
margin-right: 50px;
} }
&: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 { .delivery-options .row.delivery-option {
margin: 0; margin: 0;
line-height: 1.5; line-height: 1.5;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: nowrap;
} }
label.delivery-option-label { label.delivery-option-label {
@@ -989,23 +1029,18 @@ label.required:before {
.already-account-label { .already-account-label {
flex-basis: 100%; flex-basis: 100%;
color: #000;
} }
.classic-login, .social-login { .classic-login, .social-login {
display: inline-block; display: inline-block;
position: relative; position: relative;
} }
.social-login {
padding-top: 25px
}
.classic-login { .classic-login {
margin-left: 20px; margin-left: 20px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
padding-left: 125px;
} }
/** /**
@@ -1111,7 +1146,7 @@ label.required:before {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
opacity: 0.8; //opacity: 0.8;
display: none; display: none;
} }
@@ -1136,7 +1171,7 @@ span.social-logo > span {
.tc-social-login-btn .social-logo { .tc-social-login-btn .social-logo {
position: absolute; position: absolute;
display: inline-block; 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; left: 0;
padding: 6px 6px 6px 5px; padding: 6px 6px 6px 5px;
top: 1px; top: 1px;
@@ -1174,37 +1209,41 @@ span.social-logo > span {
} }
/* Social style: Light */ /* Social style: Light */
.social-btn-style-light .google-logo { .tc-social-login-btn .google-logo {
.google-logo-official; .google-logo-official;
} }
.social-btn-style-light .facebook-logo { .tc-social-login-btn .facebook-logo {
.facebook-logo-official; .facebook-logo-official;
} }
.social-btn-style-light #tc-facebook-signin { .tc-social-login-btn #tc-facebook-signin {
background-color: white; background-color: white;
} }
.social-btn-style-light #tc-facebook-signin:hover { #tc-facebook-signin:hover {
background-color: #eee; border-color: #d2e3fc;
background-color: #f8faff;
} }
.social-btn-style-light #tc-google-signin { .tc-social-login-btn #tc-google-signin {
background-color: white; background-color: white;
} }
.social-btn-style-light #tc-google-signin:hover { .tc-social-login-btn #tc-google-signin:hover {
background-color: #eee; background-color: #eee;
} }
.social-btn-style-light .tc-social-login-btn { .tc-social-login-btn {
color: #666; color: #3c4043;
border: 1px solid #ccc; border: 1px solid #dadce0;
padding: 10px 11px 9px 45px; 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 padding: 8px 7px 7px 8px
} }
@@ -1311,7 +1350,7 @@ span.social-logo > span {
background: #e9e9e9; background: #e9e9e9;
box-shadow: 0 4px 4px -4px #9b9b9b; box-shadow: 0 4px 4px -4px #9b9b9b;
border-radius: 5px; border-radius: 5px;
margin: -4px; margin: 0 -4px;
} }
.popup-body { .popup-body {
@@ -1609,8 +1648,32 @@ a.edit-customer-info {
padding: 1px; 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 */ /* Only for Chromium and Firefox; IE11 does not support feature query @supports, so it won't evaluate */
@supports (display: flex) { @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 { .form-fields, .business-fields-container, .private-fields-container {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@@ -1619,12 +1682,37 @@ a.edit-customer-info {
flex-basis: 100%; flex-basis: 100%;
} }
.form-group { .form-group, .business-customer, .private-customer, .second-address, .order-options, .terms-and-conditions, .shaim_gdpr_checkbox {
padding-left: 5px; //padding-left: 5px;
padding-right: 5px; //padding-right: 5px;
flex-grow: 1; flex-grow: 1;
flex-basis: 100%; 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 */ /* Debug: flash block that's re-loading data */
@@ -1735,6 +1823,7 @@ div#tc-container-mobile {
.social-login .tc-social-login-btn { .social-login .tc-social-login-btn {
max-width: 100%; max-width: 100%;
width: 240px;
} }
/* Column-responsive styles for login-block BEGIN */ /* 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 { #tc-container .form-group {
overflow: visible; overflow: visible;
margin-bottom: 10px;
} }
// Sticky block // Sticky block
@@ -1840,11 +1928,6 @@ body.is-virtual-cart.is-invoice-address-primary .checkout-block .second-address
max-width: 100%; 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-tax-included > span,
.cart-summary-line.cart-total.cart-total-auto-tax > span { .cart-summary-line.cart-total.cart-total-auto-tax > span {
font-size: 1.2em; font-size: 1.2em;
@@ -1883,7 +1966,7 @@ body.is-test-mode #is-test-mode-notice {
border: 1px solid black; border: 1px solid black;
animation: collapse-smaller .6s forwards; animation: collapse-smaller .6s forwards;
animation-delay: 5s; animation-delay: 5s;
z-index: 100; z-index: 1000;
} }
@keyframes collapse-smaller { @keyframes collapse-smaller {
@@ -1933,82 +2016,79 @@ body.is-test-mode #is-test-mode-notice {
// Test mode notice box END // Test mode notice box END
// Compact cart styling (only desktop view) BEGIN // Compact cart styling (only desktop view) BEGIN
body.compact-cart #tc-container .product-line-image img { body.compact-cart {
max-width: 100px; #tc-container {
} .product-line-image img {
max-width: 100px;
}
body.compact-cart #tc-container .cart-item .product-line { .cart-item .product-line {
//display: block; //display: block;
min-height: 100px; min-height: 100px;
} }
.cart-item .product-line-info {
width: 100%;
}
body.compact-cart #tc-container .cart-item .product-line-info { .product-line-info.product-price.h5 {
width: 100%; display: none;
} }
//body.compact-cart #tc-container .product-line .product-line-image { .product-line-actions {
// float: left; align-items: center;
//} padding-top: 5px;
margin-top: 5px;
}
body.compact-cart #tc-container .product-line-info.product-price.h5 { .product-line-info .label {
display: none; font-size: 0.8em;
} line-height: 1em;
}
body.compact-cart #tc-container .product-line-actions { .product-line-info.product-attribute {
align-items: center; font-size: 0.9em;
padding-top: 5px; }
//border: 1px solid #f5f5f5;
//background: #fafafa;
margin-top: 5px;
}
body.compact-cart #tc-container .product-line-info .label { .cart-item .product-line-info:first-child {
font-size: 0.8em; margin-top: 0;
line-height: 1em; }
}
body.compact-cart #tc-container .product-line-info.product-attribute { .product-line-body {
font-size: 0.9em; display: flex;
} flex-wrap: wrap;
align-items: center;
}
body.compact-cart #tc-container .cart-item .product-line-info:first-child { .cart-detailed-totals {
margin-top: 0; width: 100%;
} left: 0;
}
body.compact-cart #tc-container .product-line-body { .qty-container .qty-box {
display: flex; transform: scale(0.8);
flex-wrap: wrap; }
align-items: center;
}
body.compact-cart #tc-container .cart-detailed-totals { .cart-summary-line > span {
width: 100%; font-size: 0.85em;
left: 0; }
}
body.compact-cart #tc-container .qty-container .qty-box { .block-promo .promo-code {
transform: scale(0.8); padding: 10px 5px;
} }
body.compact-cart #tc-container .cart-summary-line > span { .product-line-actions .product-line-qty {
font-size: 0.85em; flex-grow: 5;
} text-align: right;
}
body.compact-cart #tc-container .block-promo .promo-code { .product-line-actions > div {
padding: 10px 5px; line-height: 20px;
} }
body.compact-cart #tc-container .product-line-actions .product-line-qty { .product-line-delete {
flex-grow: 5; padding-top: 0;
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;
} }
// Compact cart styling (only desktop view) END // 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 { .lang-rtl.using-material-icons .custom-radio {
margin-right: 0; margin-right: 0;
margin-left: 10px; margin-left: 1.25em;
} }
.lang-rtl span.carrier-delay { .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; display: none;
} }
@@ -2627,10 +2707,9 @@ div[paypal-bnpl-button-container] {
.remaining-amount { .remaining-amount {
font-weight: bold; font-weight: bold;
} }
} &.free {
/* Fix chronopost's map display - allow it to have wider area */ display: none;
.delivery-options .row.delivery-option.chronopost { }
flex-wrap: wrap;
} }
/* Paypal v5.7 fix */ /* Paypal v5.7 fix */
@@ -2777,13 +2856,15 @@ p.toast-title {
} }
} }
.cart-voucher>p>a.promo-code-button { .cart-voucher>p>a.promo-code-button.collapsed {
border: 0; border: 1px dashed #b1adad;
padding: 10px 20px; padding: 10px 20px;
background: #a20401; background: #f5fff7;
display: inline-block; display: inline-block;
color: #FFF; }
border-radius: 25px;
.cart-voucher>p>a.promo-code-button {
display: none;
} }
.block-promo { .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() { .expandOtherOptionsVisible() {
max-height: 60px; max-height: 60px;
opacity: 1; opacity: 1;
@@ -2897,7 +2983,7 @@ p.toast-title {
body#checkout .additional-information { body#checkout .additional-information {
margin-left: 0; margin-left: 0;
} }
.form-group { .form-group, .shaim_gdpr_checkbox {
padding-left: 0; padding-left: 0;
} }
} }
@@ -2961,6 +3047,7 @@ div#vyhledejte_pobocku_dpdparcelshop {
.delivery-options :is(.row.delivery-option.chronopost, .row.delivery-option.dpdfrance) { .delivery-options :is(.row.delivery-option.chronopost, .row.delivery-option.dpdfrance) {
flex-wrap: wrap; flex-wrap: wrap;
display: flex;
.shipping-radio { .shipping-radio {
flex-basis: 5%; flex-basis: 5%;
} }
@@ -2969,13 +3056,20 @@ div#vyhledejte_pobocku_dpdparcelshop {
} }
#chronorelais_container .row { #chronorelais_container .row {
flex-wrap: wrap; flex-wrap: wrap;
display: flex;
& > div { & > div {
flex-grow: 1; flex-grow: 1;
flex-basis: 20em; flex-basis: 20em;
} }
} }
input#relais_postcode {
padding-top: 2px;
height: 100%;
padding-bottom: 1px;
}
} }
#chronorelais_dummy_container { #chronorelais_dummy_container {
display: none; display: none;
} }
@@ -3054,6 +3148,141 @@ body#checkout .checkout-block .inner-area .login-block-moved .offer-login a {
position: sticky; position: sticky;
top: 0; 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) { .payment-options.amazon_ongoing_session > div:not(.amazon-visible) {
display: none; 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; display: flex;
justify-content: center; justify-content: center;
margin-bottom: 15px; 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 { & span.social-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"); 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 { & > span {
position: absolute; display: inline-block;
display: inline-block; width: 21px;
border-right: 1px solid rgba(0, 0, 0, 0.2); height: 21px;
left: 0; background-size: contain;
padding: 7px 7px 7px 8px; background-repeat: no-repeat;
top: 1px; background-position: center center;
bottom: 1px; }
text-align: center; }
}
#tc-social-logins span.social-logo > span { &:hover {
display: inline-block; border-color: #d2e3fc;
width: 21px; background-color: #f8faff;
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);
} }

View File

@@ -31,7 +31,8 @@
display: none; 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; padding: 15px 7px;
} }
@@ -192,7 +193,6 @@ span.non-material-icon.delete-from-cart {
padding-top: 0; padding-top: 0;
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
width: 100%;
} }
.payment-options .payment-option { .payment-options .payment-option {
@@ -244,9 +244,20 @@ span.non-material-icon.delete-from-cart {
filter: brightness(0); 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 { .country-call-prefix {
font-size: 1.2em; font-size: 1.2em;
width: 49px; width: 49px;
height: 47px;
} }
/* einvoicing prestalia */ /* einvoicing prestalia */
@@ -268,6 +279,11 @@ label.col-md-3.form-control-label {
max-width: 100%; max-width: 100%;
} }
.form-fields .form-group {
padding-left: 3px;
padding-right: 3px;
}
.col-md-3.form-control-comment { .col-md-3.form-control-comment {
display: none; display: none;
} }

View File

@@ -26,7 +26,13 @@
.checkout-block[class*='num-'] .block-header:before { .checkout-block[class*='num-'] .block-header:before {
display: none; 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; padding: 15px 7px;
} }
.has-float-label input:placeholder-shown:not(:focus) ~ span.field-label, .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; padding-top: 0;
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
width: 100%;
} }
.payment-options .payment-option { .payment-options .payment-option {
padding: 5px 0; padding: 5px 0;
@@ -194,9 +199,17 @@ div.product-line-actions .qty-box a {
.page-content .custom-checkbox input[type=checkbox]:checked + span { .page-content .custom-checkbox input[type=checkbox]:checked + span {
filter: brightness(0); 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 { .country-call-prefix {
font-size: 1.2em; font-size: 1.2em;
width: 49px; width: 49px;
height: 47px;
} }
/* einvoicing prestalia */ /* einvoicing prestalia */
label.col-md-3.form-control-label { label.col-md-3.form-control-label {
@@ -214,6 +227,10 @@ label.col-md-3.form-control-label {
margin: 0; margin: 0;
max-width: 100%; max-width: 100%;
} }
.form-fields .form-group {
padding-left: 3px;
padding-right: 3px;
}
.col-md-3.form-control-comment { .col-md-3.form-control-comment {
display: none; display: none;
} }
@@ -221,4 +238,4 @@ label.col-md-3.form-control-label {
.checkout-block.no-header { .checkout-block.no-header {
margin-top: -37px; 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; background: white;
} }
.input-effects-flash .has-float-label input: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 { .input-effects-flash .has-float-label select:focus ~ .effects-helper::after {
-webkit-animation: none; -webkit-animation: none;
animation: none; animation: none;
} }
@@ -24,14 +24,13 @@
.mark-required .form-group.tel label.required .field-label::after, .mark-required .form-group.tel label.required .field-label::after,
.mark-required .form-group.select 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 { .mark-required .form-group.countrySelect label.required .field-label::after {
color: #a20401; color: #36b4d2;
} }
#wrapper :is(.label, label) { #wrapper :is(.label, label) {
color: #232323; color: #232323;
text-align: left; text-align: left;
font-size: 13px; font-size: 13.5px;
font-weight: 400;
} }
.form-group.radio-buttons { .form-group.radio-buttons {
@@ -43,10 +42,6 @@
//margin-top: 30px; //margin-top: 30px;
} }
label {
margin-bottom: 10px;
}
.static-customer-info { .static-customer-info {
border-bottom: 1px solid transparent; border-bottom: 1px solid transparent;
} }
@@ -60,7 +55,7 @@ a.edit-customer-info:hover .static-customer-info:after {
position: absolute; position: absolute;
right: 0; right: 0;
bottom: 0; bottom: 0;
background: #a20401; background: #2fb5d2;
color: white; color: white;
padding: 2px 6px; padding: 2px 6px;
font-size: 0.9em; 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 { a.edit-customer-info:hover .static-customer-info {
border-bottom: 1px solid #a20401; border-bottom: 1px solid #2fb5d2;
} }
span.carrier-delay { span.carrier-delay {
color: #a20401; color: #36b4d2;
padding-right: 50px; padding-right: 50px;
} }
.delivery-options, .delivery-options, .payment-options {
.payment-options {
width: 100%; width: 100%;
border: 1px solid #ccc;
padding: 20px;
} }
#thecheckout-shipping .inner-area, #thecheckout-shipping .inner-area, #thecheckout-payment .inner-area {
#thecheckout-payment .inner-area {
border: 0 solid #e9e9e9; border: 0 solid #e9e9e9;
} }
@@ -100,7 +95,7 @@ span.carrier-delay {
border-radius: 5px; border-radius: 5px;
} }
.-error~.error-msg { .-error ~ .error-msg {
margin-top: -9px; margin-top: -9px;
padding: 15px 5px 7px; padding: 15px 5px 7px;
} }
@@ -108,18 +103,18 @@ span.carrier-delay {
.using-material-icons .custom-radio { .using-material-icons .custom-radio {
display: inline-block; display: inline-block;
position: relative; position: relative;
width: 20px; width: 30px;
height: 20px; height: 30px;
vertical-align: middle; vertical-align: middle;
cursor: pointer; cursor: pointer;
border-radius: 50%; border-radius: 50%;
border: none; border: none;
background: #fff; background: #fff;
margin-right: 10px; margin-right: 1.25rem;
margin-top: 7px; margin-top: 0;
} }
.using-material-icons .custom-radio input[type=radio]+span { .using-material-icons .custom-radio input[type=radio] + span {
display: inline-block; display: inline-block;
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -135,8 +130,8 @@ span.carrier-delay {
background: transparent; background: transparent;
} }
.using-material-icons .custom-radio input[type=radio]:checked+span { .using-material-icons .custom-radio input[type=radio]:checked + span {
border-color: #a20401; border-color: #2fb5d2;
background: url(../../img/checkmark.png) center no-repeat; background: url(../../img/checkmark.png) center no-repeat;
} }
@@ -166,15 +161,16 @@ label.radio-inline {
padding-top: 5px; padding-top: 5px;
} }
.form-group { @media (min-width: 768px) {
padding-left: 5px; .form-group, .account_creation.shaim_gdpr_checkbox {
padding-right: 5px; padding-left: 5px;
flex-grow: 1; padding-right: 5px;
flex-basis: 100%; flex-grow: 1;
flex-basis: 100%;
}
} }
.has-float-label input.form-control, .has-float-label input.form-control, .has-float-label select.form-control.form-control-select {
.has-float-label select.form-control.form-control-select {
font-size: 0.95em; font-size: 0.95em;
margin-bottom: 2px; margin-bottom: 2px;
border-radius: 5px; border-radius: 5px;
@@ -186,6 +182,9 @@ label.radio-inline {
position: relative; position: relative;
background-color: white; background-color: white;
} }
.has-float-label {
margin-bottom: 15px;
}
.has-float-label :not(:placeholder-shown):not(:focus) { .has-float-label :not(:placeholder-shown):not(:focus) {
border-color: #e5e5e5; border-color: #e5e5e5;
@@ -202,8 +201,8 @@ label.radio-inline {
opacity: 0.8; opacity: 0.8;
} }
.has-float-label input: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 { .has-float-label select:placeholder-shown:not(:focus) ~ span.field-label {
font-size: 0.95em; font-size: 0.95em;
opacity: 0.8; opacity: 0.8;
padding-left: 0; padding-left: 0;
@@ -232,8 +231,7 @@ label.radio-inline {
margin: 20px auto 30px; margin: 20px auto 30px;
} }
.reassurance-section.security:after, .reassurance-section.security:after, .reassurance-section.delivery:after {
.reassurance-section.delivery:after {
content: ""; content: "";
display: block; display: block;
width: 80%; width: 80%;
@@ -242,25 +240,26 @@ label.radio-inline {
border-bottom: 2px solid #85cad9; border-bottom: 2px solid #85cad9;
} }
.has-float-label input: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 {
.has-float-label select:placeholder-shown:not(:focus)~span.field-label {
top: -20px; top: -20px;
cursor: text; cursor: text;
opacity: 0.6; opacity: 0.6;
} }
.block-header {
margin-bottom: 0px;
padding: 20px 0px;
font-size: 16px;
letter-spacing: 1px;
}
section.form-fields { section.form-fields {
padding-top: 25px; padding-top: 25px;
} }
.business-customer, //.business-customer, .private-customer {
.private-customer { // padding: 5px 5px 0px;
padding: 5px 5px 0px; //}
}
.second-address {
padding-left: 5px;
}
/* Cart summary section */ /* Cart summary section */
@@ -295,32 +294,33 @@ section.form-fields {
.checkout-block[class*='num-'] .block-header:before { .checkout-block[class*='num-'] .block-header:before {
font-weight: bold; font-weight: bold;
background: #a20401; border: 2px solid #ccc;
color: #FFF; color: #2fb5d2;
border: 0;
border-radius: 50%; border-radius: 50%;
width: 40px; width: 64px;
height: 40px; height: 64px;
line-height: 40px; line-height: 64px;
margin: 0px 0px 12px 0px; margin: 0px 0px 12px 0px;
padding: 0; padding: 0;
text-align: center; text-align: center;
display: block; 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 { body#checkout .checkout-block .inner-area .offer-login a {
background: #a20401; background: #2fb5d2;
max-width: 219px; max-width: 219px;
padding: 10px 25px; padding: 15px;
border-radius: 40px; border-radius: 40px;
color: white; color: white;
margin: 10px auto; margin: 10px auto;
font-size: 14px; font-size: 20px;
&:hover { &:hover {
text-decoration: none; text-decoration: none;
color: #750200; background: #037d9a;
} }
} }
@@ -364,12 +364,12 @@ img#OffAmazonPaymentsWidgets0 {
height: auto; height: auto;
} }
.page-content .custom-checkbox input[type=checkbox]+span { .page-content .custom-checkbox input[type=checkbox] + span {
border-radius: 3px; 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; min-width: 16px;
width: 16px; width: 16px;
height: 16px; height: 16px;
@@ -390,33 +390,31 @@ img#OffAmazonPaymentsWidgets0 {
min-height: 16px; min-height: 16px;
} }
.product-line-body .product-line-info span.label, .product-line-body .product-line-info span.label, .value {
.value {
color: #171717a8; color: #171717a8;
} }
.custom-checkbox input[type=checkbox]+span .checkbox-checked { .custom-checkbox input[type=checkbox] + span .checkbox-checked {
color: #a20401; color: #36b4d2;
} }
.page-content .custom-checkbox input[type=checkbox]:checked+span { .page-content .custom-checkbox input[type=checkbox]:checked + span {
background-color: transparent; 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; display: none;
} }
#delivery_message, #delivery_message, #gift_message {
#gift_message {
min-height: 100px; min-height: 100px;
border-radius: 5px; border-radius: 5px;
padding: 8px; padding: 8px;
} }
.mark-required .form-group.checkbox label.required span.label::before { .mark-required .form-group.checkbox label.required span.label::before {
color: #a20401; color: #36b4d2;
} }
span.custom-checkbox span.label { span.custom-checkbox span.label {
@@ -433,14 +431,11 @@ span.custom-checkbox span.label em {
} }
.checkout-block { .checkout-block {
.cart-summary-line .label, .cart-summary-line .value {
.cart-summary-line .label,
.cart-summary-line .value {
font-size: 16px; font-size: 16px;
} }
a.cart-line-product-quantity-up, a.cart-line-product-quantity-up, a.cart-line-product-quantity-down {
a.cart-line-product-quantity-down {
width: 30px; width: 30px;
height: 30px; height: 30px;
border: 1px solid gray; 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>'); 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-up:hover, a.cart-line-product-quantity-down:hover {
a.cart-line-product-quantity-down:hover {
background-color: inherit; background-color: inherit;
background-size: auto; background-size: auto;
background-size: 60%; background-size: 60%;
@@ -474,11 +468,11 @@ span.custom-checkbox span.label em {
} }
.has-discount .discount { .has-discount .discount {
background: #a20401; background: #36b4d2;
} }
.product-price { .product-price {
color: #a20401; color: #2fb5d2;
display: inline-block; display: inline-block;
} }
@@ -500,8 +494,7 @@ span.custom-checkbox span.label em {
border-color: gray; border-color: gray;
} }
.product-price-section .product-price, .product-price-section .product-price, .product-price-section a {
.product-price-section a {
color: white; color: white;
font-size: 13px; font-size: 13px;
font-weight: bold; font-weight: bold;
@@ -513,12 +506,6 @@ span.custom-checkbox span.label em {
position: relative; position: relative;
left: 124px; left: 124px;
} }
@media (max-width: 991px) {
.cart-detailed-totals {
width: 100%;
left: 0;
}
}
.card-block:first-child { .card-block:first-child {
border-bottom: 1px dotted #c6c6c6; border-bottom: 1px dotted #c6c6c6;
@@ -536,17 +523,14 @@ span.custom-checkbox span.label em {
border-bottom: 1px solid #c1c1c1; border-bottom: 1px solid #c1c1c1;
} }
.card.cart-container, .card.cart-container, .card.cart-summary {
.card.cart-summary {
box-shadow: none; box-shadow: none;
border: none; border: none;
} }
.card.cart-summary { .card.cart-summary {
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
} }
} }
.block-header.shopping-cart-header { .block-header.shopping-cart-header {
border-top: 1px solid #ccc; border-top: 1px solid #ccc;
margin-top: 10px; margin-top: 10px;
@@ -554,19 +538,16 @@ span.custom-checkbox span.label em {
padding-top: 20px; padding-top: 20px;
} }
.thecheckout-reassurance, .thecheckout-reassurance, .delivery-options, .payment-options {
.delivery-options,
.payment-options {
border-radius: 5px; border-radius: 5px;
} }
.delivery-options, .delivery-options, .payment-options {
.payment-options {
margin-bottom: 20px; margin-bottom: 20px;
} }
.card-block.block-promo { .card-block.block-promo {
padding-top: 10px;
} }
@@ -601,8 +582,13 @@ span.custom-checkbox span.label em {
font-size: 22px; font-size: 22px;
} }
body#checkout .form-group { .delivery-options, .payment-options {
padding-left: 0; padding: 20px 10px;
}
.checkout-block .cart-detailed-totals {
width: 100%;
left: 0;
} }
} }
@@ -611,4 +597,4 @@ span.custom-checkbox span.label em {
width: 100%; width: 100%;
left: 0; 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"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <path d="M0 0h24v24H0z" fill="none"/>
<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" <path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" fill="#36b4d2"/>
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> </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) { function setHash(hash) {
if ("onhashchange" in window) { if ("onhashchange" in window) {
window.location.hash = '#' + hash; 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() { $('#module_form > .panel').each(function() {
var label = $.trim($(this).find('.panel-heading').text()); var label = $.trim($(this).find('.panel-heading').text());
$('#tab-handles').append('<div data-section-id="'+$(this).attr('id')+'">'+label+'</div>'); $('#tab-handles').append('<div data-section-id="'+$(this).attr('id')+'">'+label+'</div>');
@@ -571,6 +583,8 @@ $(document).ready(function () {
setForceEmailOverlay(isPasswordRequired()); setForceEmailOverlay(isPasswordRequired());
}); });
setPaypalExpressCheckoutState($('[name=tc_paypal_express_checkout_active]').val() != '1');
// Fix for big header on config page // Fix for big header on config page
window.onscroll = function () { window.onscroll = function () {

View File

@@ -83,19 +83,14 @@ body.is-virtual-cart #thecheckout-address-invoice
display: block; display: block;
} }
/* // ---------------> Update labels here */
/* English and Danish versions, for other languages, add new rules .lang-xx prefix instead of .lang-en */ /* 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 { .lang-en .email-verification .field.error-msg.emails-do-not-match:before {
content: 'Emails do not match'; 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 { .lang-da .email-verification .field.error-msg.emails-do-not-match:before {
content: 'E-mail adresserne er ikke ens'; 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: 2/ Add Custom JS in checkout module settings:
@@ -107,10 +102,10 @@ document.addEventListener('DOMContentLoaded', function(event) {
tc_confirmOrderValidations['email_verification'] = function() { tc_confirmOrderValidations['email_verification'] = function() {
$(email_verif_selector +' .error-msg').remove(); $(email_verif_selector +' .error-msg').remove();
if ( if (
$(email_verif_selector + ' input[name=email]:visible').length && $(email_verif_selector + ' input[name=email-verification]:visible').length &&
$(email_selector + ' input[name=email]').val() != $(email_verif_selector + ' input[name=email]').val() $(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>'); $(email_verif_selector + ' label input').after('<div class="field error-msg emails-do-not-match"></div>');
scrollToElement($(email_verif_selector)); scrollToElement($(email_verif_selector));
return false; 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'); $('.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') { if (prestashop.language.iso_code == 'en') {
$(email_verif_selector + ' .field-label').html('Confirm e-mail '); $(email_verif_selector + ' .field-label').html('Confirm e-mail ');
} else if (prestashop.language.iso_code == 'da') { } else if (prestashop.language.iso_code == 'da') {
$(email_verif_selector + ' .field-label').html('Bekræft e-mail '); $(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(); 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 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 () { $('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')) { if ($('#thecheckout-address-delivery').is(':visible')) {
$(this).prop('checked', false); $(this).prop('checked', false);
@@ -210,6 +216,11 @@ $(document).ready(function () {
}); });
$('body').on('change', '[data-link-action=x-bill-to-different-address]', 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')) { if ($('#thecheckout-address-invoice').is(':visible')) {
$(this).prop('checked', false); $(this).prop('checked', false);
$('#thecheckout-address-invoice').hide(10, function () { $('#thecheckout-address-invoice').hide(10, function () {
@@ -256,6 +267,7 @@ $(document).ready(function () {
if ($('#dni-placeholder').length && $('#thecheckout-address-invoice .business-field.dni').length) { if ($('#dni-placeholder').length && $('#thecheckout-address-invoice .business-field.dni').length) {
swapElements($('#dni-placeholder'), $('#thecheckout-address-invoice .business-field.dni')); swapElements($('#dni-placeholder'), $('#thecheckout-address-invoice .business-field.dni'));
} }
removeError('.business-private-checkboxes > .error-msg');
return false; return false;
}); });
@@ -280,6 +292,7 @@ $(document).ready(function () {
if ($('#dni-placeholder-delivery').length && $('#thecheckout-address-delivery .business-field.dni').length) { if ($('#dni-placeholder-delivery').length && $('#thecheckout-address-delivery .business-field.dni').length) {
swapElements($('#dni-placeholder-delivery'), $('#thecheckout-address-delivery .business-field.dni')); swapElements($('#dni-placeholder-delivery'), $('#thecheckout-address-delivery .business-field.dni'));
} }
removeError('.business-private-checkboxes > .error-msg');
return false; return false;
}); });
@@ -304,6 +317,7 @@ $(document).ready(function () {
if ($('#dni-placeholder-private').length && $('#thecheckout-address-invoice .private-field.dni').length) { if ($('#dni-placeholder-private').length && $('#thecheckout-address-invoice .private-field.dni').length) {
swapElements($('#dni-placeholder-private'), $('#thecheckout-address-invoice .private-field.dni')); swapElements($('#dni-placeholder-private'), $('#thecheckout-address-invoice .private-field.dni'));
} }
removeError('.business-private-checkboxes > .error-msg');
return false; return false;
}); });
@@ -328,10 +342,37 @@ $(document).ready(function () {
if ($('#dni-placeholder-private-delivery').length && $('#thecheckout-address-delivery .private-field.dni').length) { if ($('#dni-placeholder-private-delivery').length && $('#thecheckout-address-delivery .private-field.dni').length) {
swapElements($('#dni-placeholder-private-delivery'), $('#thecheckout-address-delivery .private-field.dni')); swapElements($('#dni-placeholder-private-delivery'), $('#thecheckout-address-delivery .private-field.dni'));
} }
removeError('.business-private-checkboxes > .error-msg');
return false; 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 () { $('body').on('click', '[data-link-action=toggle-password-visibility]', function () {
var input = $(this).closest('label').find('input'); 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 () { $('body').on('click', '[data-link-action=x-update-cart-quantity-up]', function () {
var inputEl = $(this).parent().find('[data-link-action=x-update-cart-quantity]'); 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', { inputEl.get(0).dispatchEvent(new Event('input', {
bubbles: true bubbles: true
})) }))
@@ -375,8 +419,11 @@ $(document).ready(function () {
}); });
$('body').on('click', '[data-link-action=x-update-cart-quantity-down]', 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]'); var inputEl = $(this).parent().find('[data-link-action=x-update-cart-quantity]');
if (parseInt(inputEl.attr('min')) < parseInt(inputEl.val())) { const data = inputEl.data();
inputEl.val(parseInt(inputEl.val()) - 1).data('no-wait', 1); // .trigger('input'); 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', { inputEl.get(0).dispatchEvent(new Event('input', {
bubbles: true bubbles: true
})) }))
@@ -518,6 +565,11 @@ $(document).ready(function () {
$('[data-link-action="toggle-password-visibility"]').removeClass('hidden'); $('[data-link-action="toggle-password-visibility"]').removeClass('hidden');
$(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) { $(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" + console.info("Ajax error \n\nDetails:\nError thrown: " + thrownError + "\n" +
'event: '); 'event: ');
console.info(event); console.info(event);
@@ -534,6 +586,7 @@ $(document).ready(function () {
var modalTriggeredToBeShown = 0; var modalTriggeredToBeShown = 0;
setTimeout( function() { setTimeout( function() {
$(".js-terms a").off('click'); $(".js-terms a").off('click');
$(".dm_gdpr_active a.iframe").removeClass('iframe');
$("body#checkout").on("click", ".js-terms a", function (t) { $("body#checkout").on("click", ".js-terms a", function (t) {
modalTriggeredToBeShown++; modalTriggeredToBeShown++;
setTimeout(function() { modalTriggeredToBeShown--; }, 1000); setTimeout(function() { modalTriggeredToBeShown--; }, 1000);
@@ -597,7 +650,7 @@ $(document).ready(function () {
} }
// Attach also loading-remove handler, when (this) ajax is finished // Attach also loading-remove handler, when (this) ajax is finished
jqxhr.always(function() { 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) { function handleWindowResize(win) {
if (win.width() <= tcMobileViewThreshold && !tcIsMobileView) { const winWidth = window.innerWidth; // win.width()
if (winWidth <= tcMobileViewThreshold && !tcIsMobileView) {
tcIsMobileView = true; tcIsMobileView = true;
// Take out all checkout blocks from their desktop layout and put into new container for mobile sorting // Take out all checkout blocks from their desktop layout and put into new container for mobile sorting
$('.checkout-block').each(function () { $('.checkout-block').each(function () {
$(this).appendTo('#tc-container-mobile'); $(this).appendTo('#tc-container-mobile');
}); });
} else if (win.width() > tcMobileViewThreshold && tcIsMobileView) { } else if (winWidth > tcMobileViewThreshold && tcIsMobileView) {
tcIsMobileView = false; tcIsMobileView = false;
// Put .checkout-block containers back to desktop (out of mobile / single column layout) // Put .checkout-block containers back to desktop (out of mobile / single column layout)
$('.checkout-block').each(function () { $('.checkout-block').each(function () {
@@ -706,6 +760,13 @@ function checkAndHideGlobalError() {
function showGlobalError() { function showGlobalError() {
$('#tc-payment-confirmation > .error-msg').show(); $('#tc-payment-confirmation > .error-msg').show();
scrollToError(); scrollToError();
if (typeof grecaptcha !== 'undefined' && typeof grecaptcha.reset === 'function') {
try {
grecaptcha.reset();
} catch (error) {
// intentionally empty
}
}
} }
function scrollToError() { 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) { function printContextErrors(blockSel, errors, triggerElement, dontShowGlobal) {
var highlightOnElements = []; var highlightOnElements = [];
@@ -818,6 +886,13 @@ function printContextErrors(blockSel, errors, triggerElement, dontShowGlobal) {
if (switchToStep > 0 && typeof setHash === 'function') { if (switchToStep > 0 && typeof setHash === 'function') {
setHash(switchToStep); 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'); $(blockSel + ' [name=' + index + ']').addClass('-error');
if ($(blockSel + ' [name=' + index + ']').is(':checkbox') || $(blockSel + ' [name=' + index + ']').is(':radio')) { 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>'); $(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 // so we need to fetch this again; only enable if voucher affect shipping cost
getShippingAndPaymentBlocks(); getShippingAndPaymentBlocks();
} else { } else {
updateCheckoutBlocks(jsonData, true, false, false); updateCheckoutBlocks(jsonData, true, false, false, true);
} }
} }
} }
@@ -960,7 +1035,7 @@ function removeVoucher(data) {
if (tcGlobal_fetchAgainAfterVoucher) { if (tcGlobal_fetchAgainAfterVoucher) {
getShippingAndPaymentBlocks(); getShippingAndPaymentBlocks();
} else { } else {
updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping); updateCheckoutBlocks(jsonData, true, false, tc_updatePaymentWithShipping, true);
} }
} }
} }
@@ -979,6 +1054,7 @@ function confirmOrder(confirmButtonEl) {
var validationFailed = false; var validationFailed = false;
// clear shipping error before validations // clear shipping error before validations
$('#thecheckout-shipping .error-msg').not(':first-child').remove();
$('#thecheckout-shipping .error-msg').hide(); $('#thecheckout-shipping .error-msg').hide();
$.each(tc_confirmOrderValidations, function (validationName, validationCallback) { $.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').prepend('<div class="error-msg">' + errMsg + '</div>')
// $('#thecheckout-cart-summary > .error-msg').show(); // $('#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); updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping);
} }
@@ -1213,6 +1295,12 @@ function checkEmail(accountFormSelector, triggerEl, callback) {
blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr)'; blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr)';
printContextErrors(blockSel, jsonData.errors, undefined, true); printContextErrors(blockSel, jsonData.errors, undefined, true);
} else { } 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); updateAccountToken(jsonData.newToken);
updateStaticToken(jsonData.newStaticToken); updateStaticToken(jsonData.newStaticToken);
// if out of some reason, shipping/payment blocks are still disallowed, maybe entering email // 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) { if ($('[name=colissimo_is_mobile_valid]').length) {
extraAccountParams += '&colissimo_is_mobile_valid=' + encodeURIComponent($('[name=colissimo_is_mobile_valid]').val()); 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) // djtalbrazilianregister (CPF/CNPJ fields module)
if ($('[name=document_type]').length && $('[name=document_number]').length) { 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) => { $('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) { if ($('#parcel_codigo').length === 1) {
extraAccountParams += '&parcel[codigo]=' + encodeURIComponent($('#parcel_codigo').val()); 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; return extraAccountParams;
} }
@@ -1403,8 +1508,8 @@ function modifyAccountAndAddress(triggerElement, callback) {
dataType: "json", dataType: "json",
data: "modifyAccountAndAddress=1&ajax_request=1&action=modifyAccountAndAddress&trigger=" + triggerSection + data: "modifyAccountAndAddress=1&ajax_request=1&action=modifyAccountAndAddress&trigger=" + triggerSection +
"&account=" + serializeVisibleFields('form.account-fields') + "&account=" + serializeVisibleFields('form.account-fields') +
"&invoice=" + encodeURIComponent($('#thecheckout-address-invoice 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').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 + "&passwordVisible=" + $('#thecheckout-account input[name=password]:visible').length +
"&passwordRequired=" + $('#thecheckout-account input[name=create-account]:checked').length + "&passwordRequired=" + $('#thecheckout-account input[name=create-account]:checked').length +
"&invoiceVisible=" + $('#thecheckout-address-invoice form:visible').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 // Go through account, invoice and delivery errors, show them all
if ("undefined" !== typeof jsonData.account && null !== jsonData.account) { 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 (jsonData.account.hasErrors) {
if (debug_js_controller) { if (debug_js_controller) {
var errMsg = formatErrors(jsonData.account.errors, triggerElement); var errMsg = formatErrors(jsonData.account.errors, triggerElement);
console.info('modifyAccountAndAddress: account has errros'); console.info('modifyAccountAndAddress: account has errors');
console.info(errMsg); console.info(errMsg);
} }
@@ -1515,7 +1638,7 @@ function modifyAccountAndAddress(triggerElement, callback) {
hideConfirmButtonLoader($('[data-link-action=x-save-account-overlay]')); hideConfirmButtonLoader($('[data-link-action=x-save-account-overlay]'));
if ("undefined" !== typeof jsonData.shippingErrors && null !== jsonData.shippingErrors && "undefined" !== typeof jsonData.shippingErrors.errors) { 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(); $('<div class="error-msg shipping-errors">'+errorsTxt+'</div>').prependTo($('#thecheckout-shipping .inner-wrapper')).show();
noErrors = false; noErrors = false;
showGlobalError(); showGlobalError();
@@ -1574,6 +1697,12 @@ function signIn() {
signedInUpdateForm(); 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 // Avanto an_productfields module support
var anGroupId = $(self).attr('href').match('an_group_id.*'); var anGroupId = $(self).attr('href').match('an_group_id.*');
additionalData += (anGroupId)?'&'+anGroupId:''; additionalData += (anGroupId)?'&'+anGroupId:'';
// url - implicitly using current // url - implicitly using current
$.ajax({ $.ajax({
customPropAffectedBlocks: '#thecheckout-shipping, #thecheckout-payment, #thecheckout-cart-summary', customPropAffectedBlocks: '#thecheckout-shipping, #thecheckout-payment, #thecheckout-cart-summary',
@@ -1605,6 +1734,13 @@ function deleteFromCart(data, self) {
"&token=" + static_token + additionalData, "&token=" + static_token + additionalData,
success: function (jsonData) { 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); 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) { function updateShippingBlock(shippingModulesList, html, checksum, triggerElementName) {
if ('undefined' !== html && null !== html && shippingBlockChecksum != checksum) { if ('undefined' !== html && null !== html && shippingBlockChecksum != checksum) {
html = parseShippingMethods(shippingModulesList, html); 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); 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; shippingBlockChecksum = checksum;
afterShippingLoadCallbacks(shippingModulesList, html, triggerElementName); 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 // 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 // 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 // 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'); $(deliveryOptionSelector).prop('checked', false).trigger('click');
return true; return true;
} else { } 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 // 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]') // then, we need an exception: .not('[data-payment-module=add_gopay_new] input[type=hidden]')
// Exception for hidden fields: input[name="issuer"] = mollie payments // 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') { if ("undefined" !== typeof $(this).attr('id') && !$(this).is(':radio') && $(this).attr('name') !== 'pmethod') {
payment_fields_values['[id=' + $(this).attr('id') + ']'] = $(this).val(); payment_fields_values['[id=' + $(this).attr('id') + ']'] = $(this).val();
} else if ("undefined" !== typeof $(this).attr('name')) { } else if ("undefined" !== typeof $(this).attr('name')) {
@@ -1978,6 +2169,8 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
afterPaymentLoadCallbacks(paymentModulesList, html, triggerElementName); afterPaymentLoadCallbacks(paymentModulesList, html, triggerElementName);
// Hook to this:
// prestashop.on('thecheckout_updatePaymentBlock', function() { console.log('payment block updated!'); })
prestashop.emit('thecheckout_updatePaymentBlock', { prestashop.emit('thecheckout_updatePaymentBlock', {
reason: 'update', reason: 'update',
}); });
@@ -1985,7 +2178,7 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
// restore payment for input and select fields values // restore payment for input and select fields values
$.each(payment_fields_values, function (index, value) { $.each(payment_fields_values, function (index, value) {
if ($(index).is(':radio')) { if ($(index).is(':radio')) {
$(index+'[value='+value+']').prop('checked', true); $(index+'[value="'+value+'"]').prop('checked', true);
} else { } else {
$(index).val(value); $(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) // 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()) { 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+']'); var aMollieEl = $('a[data-ideal-issuer='+selectedMolliePayment+']');
if (aMollieEl.length) { if (aMollieEl.length) {
$('#mollie-issuer-dropdown-button').text(aMollieEl.text()); $('#mollie-issuer-dropdown-button').text(aMollieEl.text());
} }
} }
} }
// Init PS Checkout render // 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 }) { // $(document).on('thecheckout_Address_Modified', function(event, { addressType }) {
// console.log('Address modified!', 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 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) { if ("undefined" !== typeof jsonData.emptyCart && jsonData.emptyCart === true) {
$('body').addClass('is-empty-cart'); $('body').addClass('is-empty-cart');
// if ("undefined" !== typeof prestashop && "undefined" !== typeof prestashop.urls) { // if ("undefined" !== typeof prestashop && "undefined" !== typeof prestashop.urls) {
@@ -2135,6 +2328,10 @@ function updateCheckoutBlocks(jsonData, updateSummary, updateShipping, updatePay
var shippingBlockUpdated = false; var shippingBlockUpdated = false;
var paymentBlockUpdated = false; var paymentBlockUpdated = false;
if ('undefined' !== typeof updateShippingPricesOnly && updateShippingPricesOnly) {
updateShippingPrices(jsonData.shippingBlock);
}
if ('undefined' !== typeof updateShipping && updateShipping) { if ('undefined' !== typeof updateShipping && updateShipping) {
shippingBlockUpdated = updateShippingBlock(jsonData.externalShippingModules, jsonData.shippingBlock, jsonData.shippingBlockChecksum, jsonData.triggerElementName); shippingBlockUpdated = updateShippingBlock(jsonData.externalShippingModules, jsonData.shippingBlock, jsonData.shippingBlockChecksum, jsonData.triggerElementName);
} }
@@ -2178,19 +2375,22 @@ function toggleGiftMessage() {
$(this).addClass('in show') $(this).addClass('in show')
}); });
} }
selectDeliveryOption($('#js-delivery'));
} }
function selectDeliveryOption(deliveryForm) { function selectDeliveryOption(deliveryForm) {
highlightSelectedShippingMethod(); highlightSelectedShippingMethod();
// To support mondial relay v3.0+, allow a bit of time for widget markup appear in extra content // To support mondial relay v3.0+, allow a bit of time for widget markup appear in extra content
setTimeout(function () { if (installedModules['mondialrelay']) {
var selectedDeliveryOptionExtra = $(deliveryOptionSelector).closest('.delivery-option-row').next('.carrier-extra-content'); setTimeout(function () {
$('.carrier-extra-content').not(selectedDeliveryOptionExtra).hide(); var selectedDeliveryOptionExtra = $(deliveryOptionSelector).closest('.delivery-option-row').next('.carrier-extra-content');
if (selectedDeliveryOptionExtra.height()) { $('.carrier-extra-content').not(selectedDeliveryOptionExtra).hide();
selectedDeliveryOptionExtra.slideDown(); if (selectedDeliveryOptionExtra.height()) {
} selectedDeliveryOptionExtra.slideDown();
}, 100); }
}, 100);
}
// url - implicitly using current // url - implicitly using current
$.ajax({ $.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'); formEl.addClass('amazon-visible');
additionalEl.addClass('amazon-visible'); additionalEl.addClass('amazon-visible');
titleEl.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) { function backendSignIn(access_token) {
$.ajax({ $.ajax({
url: prestashop.urls.pages.order,
type: 'POST', type: 'POST',
cache: false, cache: false,
dataType: "json", dataType: "json",
@@ -45,8 +46,15 @@ var tc_facebookLogin = (function () {
// TODO: better error handling // TODO: better error handling
console.error(jsonData.errors); console.error(jsonData.errors);
} else if ('undefined' !== typeof jsonData.email && jsonData.email) { } 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) { } else if ('undefined' !== typeof jsonData.email && jsonData.email) {
location.reload(); 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) { init_once: function(elements) {
// Change original .additional-information block to js-payment-option-form // Change original .additional-information block to js-payment-option-form
const additionalInfoEl = elements.find('.additional-information'); 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'); 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.attr('id', formId).attr('class', 'js-payment-option-form ps-hidden').hide();
additionalInfoEl.find('.row > .col-md-10').removeClass('col-md-10'); 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 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) { if ('undefined' !== typeof feeEl && feeEl) {
var fee = parseFloat(feeEl.text().replace(/[^\d,]/g,'').replace(',','.')); var fee = parseFloat(feeEl.text().replace(/[^\d,]/g,'').replace(',','.'));
element.last().append('<div class="payment-option-fee hidden" id="'+paymentOption+'-fee">'+fee+'</div>'); 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) * @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 = { 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() { on_ready: function() {
setTimeout(function(){ setTimeout(function(){
if ($('.iti').length == 0 && 'undefined' !== typeof initMobileField) { 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 paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
var feeHtml = element.find('label span').html(); var feeHtml = element.find('label span').html();
var fee = payment.parsePrice(feeHtml); 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>'); 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 paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
var feeHtml = element.find('section p').html(); var feeHtml = element.find('section p').html();
var fee = payment.parsePrice(feeHtml); 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>'); 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 = { checkoutShippingParser.dpdpoland = {
after_load_callback: function(deliveryOptionIds) { 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 */ } // 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() { tc_confirmOrderValidations['itellashipping'] = function() {
if ( if (
$('.delivery-option.itellashipping input[name^=delivery_option]').is(':checked') && $('.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'); var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
shippingErrorMsg.show(); 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 = { 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) { form: function (element) {
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0]; 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) * @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() { tc_confirmOrderValidations['mondialrelay'] = function() {
if ( if (
/*$('#mondialrelay_widget').is(':visible')*/ /*$('#mondialrelay_widget').is(':visible')*/
@@ -25,6 +27,17 @@ tc_confirmOrderValidations['mondialrelay'] = function() {
} }
checkoutShippingParser.mondialrelay = { 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) { init_once: function (elements) {
if (debug_js_controller) { if (debug_js_controller) {
console.info('[thecheckout-mondialrelay.js] init_once()'); console.info('[thecheckout-mondialrelay.js] init_once()');
@@ -39,7 +52,7 @@ checkoutShippingParser.mondialrelay = {
// Uncheck mondialrelay item, so that it can be manually selected // Uncheck mondialrelay item, so that it can be manually selected
//element.after("<script>$('.delivery-option.mondialrelay input[name^=delivery_option]').prop('checked', false)</script>"); //element.after("<script>$('.delivery-option.mondialrelay input[name^=delivery_option]').prop('checked', false)</script>");
// Mondial v3.0+ by 202 ecommerce // 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) { extra_content: function (element) {

View File

@@ -23,6 +23,25 @@ tc_confirmOrderValidations['packetery'] = function() {
} }
checkoutShippingParser.packetery = { 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) { 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) * @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 = { 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() { after_load_callback: function() {
$.getScript(tcModuleBaseUrl+'/../paynow/views/js/front.js') $.getScript(tcModuleBaseUrl+'/../paynow/views/js/front.js')
.done( .done(
@@ -16,6 +58,9 @@ checkoutPaymentParser.paynow = {
setTimeout(function() { setTimeout(function() {
if (typeof enableBlikSupport !== 'undefined') { enableBlikSupport(); } if (typeof enableBlikSupport !== 'undefined') { enableBlikSupport(); }
if (typeof enablePblSupport !== 'undefined') { enablePblSupport(); } 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); }, 300);
}); });
// if ("undefined" !== typeof enableBlikSupport) { // if ("undefined" !== typeof enableBlikSupport) {
@@ -24,15 +69,16 @@ checkoutPaymentParser.paynow = {
}, },
form: function (element) { form: function (element) {
var blikPayButtonSelector = "form.paynow-blik-form .paynow-payment-option-container button.btn-primary"; // var blikPayButtonSelector = "form.paynow-blik-form .paynow-payment-option-container button.btn-primary";
if (element.find('.paynow-blik-form').length) { // if (element.find('.paynow-blik-form').length) {
element.find('.payment-form').attr('onsubmit', '$("'+blikPayButtonSelector+'").click(); return false;'); // element.find('.payment-form').attr('onsubmit', '$("'+blikPayButtonSelector+'").click(); return false;');
} // element.find(blikPayButtonSelector).prop('disabled', false);
// }
// Add CSS rule to hid blickPayButton //
var element = document.createElement('style'),sheet; // // Add CSS rule to hide blickPayButton
document.head.appendChild(element); // var element = document.createElement('style'),sheet;
element.sheet.insertRule(blikPayButtonSelector + '{ display: none; }'); // 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! 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 = { checkoutPaymentParser.paypal = {
@@ -37,7 +38,7 @@ checkoutPaymentParser.paypal = {
additionalInfoElement = $(containerElement).next('[id$=-additional-information]'); additionalInfoElement = $(containerElement).next('[id$=-additional-information]');
// If embedded mode (=data-container-express-checkout button exists), set popup payment type and make it binary // 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); payment.setPopupPaymentType($(containerElement), true);
additionalInfoElement.addClass('paypal').addClass('paypal-hide-pp-info-and-button'); additionalInfoElement.addClass('paypal').addClass('paypal-hide-pp-info-and-button');
additionalInfoElement.find('.pp-info').prependTo(additionalInfoElement); 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>\ var express_checkout_make_visible = '<script>\
@@ -130,6 +136,14 @@ checkoutPaymentParser.paypal = {
element.append(additional_script_tag); 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) * @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 = { 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: in modules/postfinancecheckout/views/js/frontend/checkout.js, change (!) on 2 places:
if (current_method.data("module-name") == "postfinancecheckout") { 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 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 = { window.tc_ps_checkout = {
init: false 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 // 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); let stackTrace = JSON.stringify(Error().stack);
if (stackTrace && stackTrace.match('modules/ps_checkout/views/js/front.js')) { 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'); 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) { form: function (element, triggerElementName) {
if (!payment.isConfirmationTrigger(triggerElementName)) { // if (!payment.isConfirmationTrigger(triggerElementName)) {
if (debug_js_controller) { // if (debug_js_controller) {
console.info('[ps_checkout parser] Not confirmation trigger, removing payment form'); // console.info('[ps_checkout parser] Not confirmation trigger, removing payment form');
} // }
element.remove(); // element.remove();
} // }
}, },
additionalInformation: function (element) { 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 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 = { 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() { initPayment: function() {
// revolut_card container present, but fields not yet initiated // revolut_card container present, but fields not yet initiated
if ($('#revolut_card').length && !($('#revolut_card.rc-card-field').length)) { 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 // Create additional information block, informing user that payment will be processed after confirmation
var paymentOptionId = element.attr('id').match(/payment-option-\d+/); 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]) { if (paymentOptionId && 'undefined' !== typeof paymentOptionId[0]) {
paymentOptionId = 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); 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) { 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) * @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() { tc_confirmOrderValidations['sendcloud'] = function() {
if ( if (
/*$('#mondialrelay_widget').is(':visible')*/ /*$('#mondialrelay_widget').is(':visible')*/

View File

@@ -11,6 +11,25 @@
var shaim_shipping_modules_present = ('undefined' !== typeof exists_opc); var shaim_shipping_modules_present = ('undefined' !== typeof exists_opc);
if (shaim_shipping_modules_present) { 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 () { tc_confirmOrderValidations['shaim_shipping_modules'] = function () {
/* openservis - WEDO - begin */ /* openservis - WEDO - begin */
@@ -95,5 +114,3 @@ if (shaim_shipping_modules_present) {
/* openservis - Zásilkovna - end */ /* 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) * @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) { all_hooks_content: function (content) {
@@ -19,76 +21,10 @@ checkoutPaymentParser.stripe_official_inline = {
container: function (element) { 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) { 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) || if (($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) ||
($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length) || ($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length) ||
($('#js-stripe-payment-element').length && !$('#js-stripe-payment-element.StripeElement').length)) { ($('#js-stripe-payment-element').length && !$('#js-stripe-payment-element.StripeElement').length)) {
// var stripe_base_url = ''; // $.getScript(tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js');
// if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {
// stripe_base_url = prestashop.urls.base_url; var script = document.createElement('script');
// } script.src = tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js';
$.getScript(tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js');
// $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.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); 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) { form: function (element, triggerElementName) {
if (!payment.isConfirmationTrigger(triggerElementName)) { // if (!payment.isConfirmationTrigger(triggerElementName)) {
if (debug_js_controller) { // // Integrated payment form
console.info('[stripe_official parser] Not confirmation trigger, removing payment form'); // if (debug_js_controller) {
} // console.info('[stripe_official parser] Not confirmation trigger, removing payment form');
element.remove(); // }
} else { // element.remove();
// 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 "; // } else {
// element.append(stripe_orig_script_tag); // // empty
// checkoutPaymentParser.stripe_official_popup.initPayment(); // }
}
return; return;
} }
@@ -157,7 +124,8 @@ checkoutPaymentParser.stripe_official_popup = {
} }
// Default Stripe parser // Default Stripe parser
//checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_inline; if (typeof stripe_payment_elements_enabled !== "undefined" && stripe_payment_elements_enabled === "1") {
checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_popup; 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) * @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() { // after_load_callback: function() {
if (typeof StripePubKey !=='undefined') { // if (typeof initiateStripePayment !== 'undefined') {
var stripe = Stripe(StripePubKey,{locale: lang_iso_code}); // initiateStripePayment();
var stripe_pm = document.getElementById('selected_pm').value; // }
var quickPay = ((stripe_pm!=1) ? 1 : 0); // },
$('input[name=payment-option]:checked').focus(); container: function (element) {
$('#stripe-ajax-loader,#stripe-payment-form').toggle(); payment.setPopupPaymentType(element);
$('#payment-confirmation button[type=submit]').prop("disabled", true);
var toggle_selector = '#stripe-ajax-loader,#stripe-payment-form';
var error_selector = '#card-errors';
handlePI('checkout', function(res_status){ // Add CSS rule to hide payment form in payment methods list
if(res_status.code==1) { var cssEl = document.createElement('style'),sheet;
$('#checkout-success').show(); document.head.appendChild(cssEl);
stripe.redirectToCheckout({ cssEl.sheet.insertRule(`
sessionId: res_status.sess_id section#checkout-payment-step [data-payment-module=stripejs] > .additional-information {
}).then(function (result) { display: none!important;
$('#checkout-success').hide(); }
var err_msg = showStripePayError(toggle_selector, 0, result.error.message, error_selector); `);
alert(result.error.message); },
});
} 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) * @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 = { checkoutShippingParser.upsservice = {
after_load_callback: function(deliveryOptionIds) { after_load_callback: function(deliveryOptionIds) {

View File

@@ -4,20 +4,41 @@
* This source file is subject to the Software License Agreement * This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt. * 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) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/ */
tc_confirmOrderValidations['vp_omniva'] = function() { tc_confirmOrderValidations['vp_omniva'] = function() {
if ( let selectedDeliveryOption = $('.delivery-option-row.selected');
$('.vp_omniva select[name=terminals]').is(':visible') && if (selectedDeliveryOption && 0 !== selectedDeliveryOption.length) {
'0' == $('.vp_omniva select[name=terminals]').val() if (selectedDeliveryOption[0].classList.contains('vp_omniva') ||
) { selectedDeliveryOption[0].classList.contains('vp_omniva_latvia') ||
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg'); selectedDeliveryOption[0].classList.contains('vp_omniva_lietuva')) {
shippingErrorMsg.show(); let nextElement = selectedDeliveryOption[0].nextElementSibling;
scrollToElement(shippingErrorMsg); if (nextElement && 0 !== nextElement.children.length) {
return false; let selectElements = $(nextElement).find('select');
} else { if (2 === selectElements.length) {
return true; 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) { if (0 == $(selectedOption).length) {
// Only now try to select by default set in checkout options // 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 // 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'; selectedOption = '.' + config_default_payment_method + ' [name=payment-option]:first';
} }
@@ -180,7 +180,7 @@ var payment = (function () {
var paymentOption = getPaymentOptionSelector(option); var paymentOption = getPaymentOptionSelector(option);
$(paymentOption).slideDown(); $(paymentOption).slideDown();
if (!dont_remove_confirmation_button) { if (!dont_remove_confirmation_button) {
// self.confirmationButton.hide(); self.confirmationButton.hide();
} }
} }
@@ -242,7 +242,7 @@ var payment = (function () {
loadPaymentPopupLibrary(function() { loadPaymentPopupLibrary(function() {
popupContainer.paymentpopup({ popupContainer.paymentpopup({
onopen: function () { onopen: function () {
popupCallback(paymentMethodName) popupCallback(paymentMethodName, option)
}, },
onclose: function() { onclose: function() {
popupCloseCallback(paymentMethodName); popupCloseCallback(paymentMethodName);
@@ -282,11 +282,11 @@ var payment = (function () {
} }
} }
function popupCallback(paymentMethodName) { function popupCallback(paymentMethodName, optionId) {
if ('undefined' !== typeof checkoutPaymentParser[paymentMethodName] if ('undefined' !== typeof checkoutPaymentParser[paymentMethodName]
&& 'undefined' !== typeof checkoutPaymentParser[paymentMethodName].popup_onopen_callback) { && 'undefined' !== typeof checkoutPaymentParser[paymentMethodName].popup_onopen_callback) {
console.info('popup open callback for ' + paymentMethodName + ' called'); 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) { } else if ('undefined' !== typeof jsonData.email && jsonData.email) {
signedInUpdateForm(); 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 // Display the Sign In With Google Button
google.accounts.id.renderButton( google.accounts.id.renderButton(
document.getElementById(customBtnId), 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) { } else if ('undefined' !== typeof jsonData.email && jsonData.email) {
signedInUpdateForm(); 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> </fieldset>
{elseif "size" === $key} {*intentionally empty*} {elseif "size" === $key} {*intentionally empty*}
{else} {else}
{if 0 === $key|strpos:'flex-split'} {if 0 === strpos($key,'flex-split')}
<fieldset class="checkout-block-container" data-default-size="{$data.size}"> <fieldset class="checkout-block-container" data-default-size="{$data.size}">
<div class="{$key}"> <div class="{$key}">
{/if} {/if}
{blockContainer data=$sub_block} {blockContainer data=$sub_block}
{if 0 === $key|strpos:'flex-split'} {if 0 === strpos($key,'flex-split')}
</div> </div>
</fieldset> </fieldset>
{/if} {/if}

View File

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

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