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
13
modules/thecheckout/.htaccess
Normal 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>
|
||||
@@ -1,3 +1,72 @@
|
||||
vNext - 20240801
|
||||
[feature] Your order is now 0% VAT message in cart summary (enable with CSS)
|
||||
[feature] New config option 'use_other_field_for_business_private'
|
||||
[fix] Correctly escaping quote in address fields
|
||||
[fix-shipping] geodis v1.0.3 - by GEODIS
|
||||
[fix-shipping] .carrier-extra-content wasn't parsed properly on PS 8.1+
|
||||
[fix-payment] przelewy24 v1.3.98 - by Przelewy24 - BLIK payment in popup mode
|
||||
[fix] Emit updateCart event on quantity change / product removal
|
||||
[fix-payment] revolutpayments v2.8.6 - by Revolut
|
||||
[fix-payment] ps_checkout v8.4.0 - by PrestaShop
|
||||
[fix] Copy phone number from invoice to delivery - fix for live update
|
||||
[fix-payment] paypal v6.3.0 - by 202 ecommerce
|
||||
[fix] Gift wrapping checkbox state wasn't stored
|
||||
[fix] Google/FB logins were not working from login page if cart was empty
|
||||
[fix] dpdbaltics - phone validation did not work when multiple dpd options were available
|
||||
[fix-payment] bongooglepay v2.0.0 - by Bonpresta
|
||||
[fix] Skip shipping module validation for virtual carts
|
||||
[fix-payment] floapay v1.2.4 - by 202 ecommerce / Floa Bank
|
||||
[fix-payment] buckaroo3 v4.2.0 - by Buckaroo (payment fee parsing)
|
||||
[fix-payment] stripe_official v3.2.0 (popup mode) - by Stripe
|
||||
[fix-payment] stripejs v4.6.0 - by NTS
|
||||
|
||||
v3.3.10 - 20240301
|
||||
[feature] Copy phone number from invoice to delivery address, if phone number is disabled in delivery address
|
||||
[fix-payment] datatranscw v4.0.193 - by customweb ltd
|
||||
[fix-payment] redsysinsite v2.2.1 - by idnovate
|
||||
[fix] Unable to set quantity from 2 to 1 using '-' button in cart summary
|
||||
[fix-payment] popup mode for przelewy24's BLIK payment
|
||||
[feature] New config option - 'Use old address on reorder'
|
||||
[fix] Assign already used address when expanding second address form
|
||||
[fix] Show 'free' carrier price when free shipping cart rule is used
|
||||
[fix] Implemented new PS 8 Security password policy
|
||||
[fix-payment] popup mode for paynow's BLIK payment
|
||||
[fix-shipping] latvijaspastsexpresspastspostterminalslv v1
|
||||
[feature] New config option - 'shipping/payment logos on the right'
|
||||
[fix] Silent registration did overwrite also existing customer's first/lastname
|
||||
[fix-shipping] dhlassistant v1.7
|
||||
[feature] New config option 'Assign Address to Customer ASAP'
|
||||
[fix] With silent registration enabled, firstname/lastname were not enforced even when set as required
|
||||
[fix] Value targetting selector for payment fields wasn't quoted properly
|
||||
[fix] changed google-places-autocomplete from jQuery to vanilla js implementation
|
||||
[fix-payment] stripe_official v3.1.3 (redirect mode)
|
||||
[feature] Google Maps address autocomplete added to PS address form
|
||||
[fix-payment] Fixed earlier issue with ps_checkout after md5 ID hashes change
|
||||
[feature] added support (error message propagation) for blockproductsbycountry module
|
||||
[feature] improved google places autocomplete for Italy (provinces matching)
|
||||
[fix-shipping] estimateddelivery v3.8.8
|
||||
[fix-shipping] mijoravenipak v1.1.3
|
||||
[fix] join() arguments order in PHP8 when using Smarty (shippingAddressNotice)
|
||||
|
||||
v3.3.9 - 20230906
|
||||
[fix-shipping] dpdbaltics v3.2.15
|
||||
[fix-payment] pm_applepay v2.1.1
|
||||
[fix-shipping] apaczka shipping v1.1.0
|
||||
[fix-shipping] lpshipping v1.0.17
|
||||
[fix] With Initialize Address config option, new (empty) carts were created on /order visit
|
||||
[feature] eicaptcha module support (ReCaptcha)
|
||||
[feature] Added notice 'You already have an account with us. Sign in or continue as guest.' to email field.
|
||||
[fix-shipping] mondialrelay 3.3.7 by ScaleDEV
|
||||
[fix] Google places (autocomplete) did not trigger for second address when initially collapsed
|
||||
[fix] Better context errors when checkout steps are enabled
|
||||
[feature] Display effective tax rate in cart summary
|
||||
[fix-payment] Paypal card payment (ACDC) in official Paypal module
|
||||
[fix] Config option to display Paypal express checkout button in Log-in area
|
||||
[fix] Duplicated slide-down of carrier extra information
|
||||
[fix-payment] Stripe_official, implemented redirect mode
|
||||
[fix] FB social login button styling and FB action on login page
|
||||
[fix-shipping] fspickupatstore v3.2.1
|
||||
|
||||
v3.3.8 - 20230428
|
||||
[fix] Allow multiple 'sticky' elements in a column
|
||||
[feature] Display google and fb social login also on PS native login page
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\Translation\TranslatorInterface;
|
||||
|
||||
/**
|
||||
@@ -124,7 +128,11 @@ class CheckoutAddressForm extends AbstractForm
|
||||
}
|
||||
|
||||
if (($hookReturn = Hook::exec('actionValidateCustomerAddressForm', array('form' => $this))) !== '') {
|
||||
$is_valid &= (bool)$hookReturn;
|
||||
if ($hookReturn === null) {
|
||||
$is_valid &= true;
|
||||
} else {
|
||||
$is_valid &= (bool)$hookReturn;
|
||||
}
|
||||
}
|
||||
|
||||
// We need to call this separately due to side-effect - getting all errors at once, not only postcode error first
|
||||
@@ -188,7 +196,7 @@ class CheckoutAddressForm extends AbstractForm
|
||||
$result = $this->persister->save(
|
||||
$this->address,
|
||||
$this->getValue('token'),
|
||||
$finalConfirmation || !$this->isOpcTransientAddress($address->alias) // attach_customer_id
|
||||
$finalConfirmation || !$this->isOpcTransientAddress($address->alias) || $this->checkoutModule->config->assign_customer_id_asap // attach_customer_id
|
||||
);
|
||||
} catch (PrestaShopException $e) {
|
||||
//$e->displayMessage();
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\Translation\TranslatorInterface;
|
||||
|
||||
class CheckoutAddressFormatter implements FormFormatterInterface
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class CheckoutCustomerAddressPersister
|
||||
{
|
||||
private $customer;
|
||||
|
||||
@@ -23,8 +23,14 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto;
|
||||
use Symfony\Component\Translation\TranslatorInterface;
|
||||
use PrestaShop\PrestaShop\Core\Security\PasswordPolicyConfiguration;
|
||||
use ZxcvbnPhp\Zxcvbn;
|
||||
|
||||
class CheckoutCustomerForm extends AbstractForm
|
||||
{
|
||||
@@ -127,6 +133,59 @@ class CheckoutCustomerForm extends AbstractForm
|
||||
}
|
||||
}
|
||||
|
||||
// New PS 8 Password strength validation
|
||||
$passwordField = $this->getField('password');
|
||||
$guestAllowedCheckout = Configuration::get('PS_GUEST_CHECKOUT_ENABLED');
|
||||
$passwordRequired = is_string($passwordField->getValue()) &&
|
||||
(!empty($passwordField->getValue()) || !$guestAllowedCheckout);
|
||||
if (method_exists('Validate', 'isAcceptablePasswordLength') &&
|
||||
method_exists('Validate', 'isAcceptablePasswordScore') &&
|
||||
$passwordRequired) {
|
||||
if (Validate::isAcceptablePasswordLength($passwordField->getValue()) === false) {
|
||||
$passwordField->addError($this->translator->trans(
|
||||
'Password must be between %d and %d characters long',
|
||||
[
|
||||
Configuration::get(PasswordPolicyConfiguration::CONFIGURATION_MINIMUM_LENGTH),
|
||||
Configuration::get(PasswordPolicyConfiguration::CONFIGURATION_MAXIMUM_LENGTH),
|
||||
],
|
||||
'Shop.Notifications.Error'
|
||||
));
|
||||
}
|
||||
|
||||
if (Validate::isAcceptablePasswordScore($passwordField->getValue()) === false) {
|
||||
$wordingsForScore = [
|
||||
$this->translator->trans('Very weak', [], 'Shop.Theme.Global'),
|
||||
$this->translator->trans('Weak', [], 'Shop.Theme.Global'),
|
||||
$this->translator->trans('Average', [], 'Shop.Theme.Global'),
|
||||
$this->translator->trans('Strong', [], 'Shop.Theme.Global'),
|
||||
$this->translator->trans('Very strong', [], 'Shop.Theme.Global'),
|
||||
];
|
||||
$globalErrorMessage = $this->translator->trans(
|
||||
'The minimum score must be: %s',
|
||||
[
|
||||
$wordingsForScore[(int) Configuration::get(PasswordPolicyConfiguration::CONFIGURATION_MINIMUM_SCORE)],
|
||||
],
|
||||
'Shop.Notifications.Error'
|
||||
);
|
||||
if ($this->context->shop->theme->get('global_settings.new_password_policy_feature') !== true) {
|
||||
$zxcvbn = new Zxcvbn();
|
||||
$result = $zxcvbn->passwordStrength($passwordField->getValue());
|
||||
if (!empty($result['feedback']['warning'])) {
|
||||
$passwordField->addError($this->translator->trans(
|
||||
$result['feedback']['warning'], [], 'Shop.Theme.Global'
|
||||
));
|
||||
} else {
|
||||
$passwordField->addError($globalErrorMessage);
|
||||
}
|
||||
foreach ($result['feedback']['suggestions'] as $suggestion) {
|
||||
$passwordField->addError($this->translator->trans($suggestion, [], 'Shop.Theme.Global'));
|
||||
}
|
||||
} else {
|
||||
$passwordField->addError($globalErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($silentRegistration && Validate::isEmail($emailField->getValue())) {
|
||||
// Allow silent guest registration when email field emits blur() - called from checkEmail routine
|
||||
return true;
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use Symfony\Component\Translation\TranslatorInterface;
|
||||
|
||||
class CheckoutCustomerFormatter implements FormFormatterInterface
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use PrestaShop\PrestaShop\Core\Crypto\Hashing as Crypto;
|
||||
use Symfony\Component\Translation\TranslatorInterface;
|
||||
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class CheckoutFormField
|
||||
{
|
||||
private $name = '';
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
|
||||
namespace module\thecheckout;
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use \Configuration;
|
||||
use \Tools;
|
||||
use \Context;
|
||||
@@ -451,6 +455,7 @@ class Config
|
||||
|
||||
public $refresh_minicart = 0;
|
||||
public $clean_checkout_session_after_confirmation = 0;
|
||||
public $assign_customer_id_asap = 0;
|
||||
|
||||
public $show_block_reassurance = 0;
|
||||
|
||||
@@ -466,10 +471,12 @@ class Config
|
||||
public $business_fields = 'company, dni, vat_number';
|
||||
public $private_fields = 'dni';
|
||||
public $business_disabled_fields = '';
|
||||
public $use_other_field_for_business_private = 0;
|
||||
public $shipping_required_fields = '';
|
||||
public $payment_required_fields = '';
|
||||
public $collapse_shipping_methods = 0;
|
||||
public $collapse_payment_methods = 0;
|
||||
public $logos_on_the_right = 1;
|
||||
public $show_shipping_country_in_carriers = 0;
|
||||
public $force_customer_to_choose_country = 0;
|
||||
public $force_customer_to_choose_carrier = 0;
|
||||
@@ -500,6 +507,8 @@ class Config
|
||||
public $smartform_client_id = '';
|
||||
public $social_login_btn_style = 'light';
|
||||
public $social_login_display_on_login_page = 0;
|
||||
public $paypal_express_checkout = 0;
|
||||
public $use_old_address_on_reorder = 0;
|
||||
|
||||
public $ps_css_cache_version;
|
||||
public $ps_js_cache_version;
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
|
||||
namespace module\thecheckout;
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use Customer;
|
||||
use Validate;
|
||||
use CartRule;
|
||||
|
||||
13
modules/thecheckout/config_pl.xml
Normal 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>
|
||||
@@ -10,8 +10,13 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
|
||||
use \PrestaShop\PrestaShop\Core\Module\WidgetInterface;
|
||||
use PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder;
|
||||
use PrestaShop\PrestaShop\Adapter\ObjectPresenter;
|
||||
use module\thecheckout\Config;
|
||||
use module\thecheckout\SocialLogin;
|
||||
@@ -39,6 +44,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
|
||||
private $amazonpayOngoingSession = false;
|
||||
|
||||
private $tcCopyInvoicePhoneToDelivery = true;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$_GET['module'] = $this->name;
|
||||
@@ -72,7 +79,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
// oyejorge/less.php v1.7.1
|
||||
private function autoCompileLess($inputFile, $outputFile)
|
||||
{
|
||||
require_once $this->module_root . "/lib/less.php_1.7.0.10/Less.php";
|
||||
$lessLib = $this->module_root . "/lib/less.php_1.7.0.10/Less.php";
|
||||
|
||||
// If less library is not present (e.g. in production, when used package from Addons), do not compile .less files at all
|
||||
if (!file_exists($lessLib)) {
|
||||
return;
|
||||
}
|
||||
require_once $lessLib;
|
||||
|
||||
$cacheDir = _PS_CACHE_DIR_ . 'thecheckout/';
|
||||
$less_files = array($inputFile => '');
|
||||
@@ -95,37 +108,6 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// lessc 0.4 implementation
|
||||
// private function autoCompileLess($inputFile, $outputFile)
|
||||
// {
|
||||
// require $this->module_root . "/lib/lessc.inc.php";
|
||||
//
|
||||
// $cacheFile = $inputFile . ".cache";
|
||||
//
|
||||
// if (file_exists($cacheFile)) {
|
||||
// $cache = unserialize(file_get_contents($cacheFile));
|
||||
// } else {
|
||||
// $cache = $inputFile;
|
||||
// }
|
||||
//
|
||||
// $less = new lessc;
|
||||
// if (!$this->module->debug) {
|
||||
// $less->setFormatter("compressed");
|
||||
// }
|
||||
//
|
||||
// $forceCompile = ($this->module->debug) ? true : false;
|
||||
//
|
||||
// $newCache = $less->cachedCompile($cache, $forceCompile);
|
||||
//
|
||||
// if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
|
||||
// file_put_contents($cacheFile, serialize($newCache));
|
||||
// file_put_contents($outputFile, $newCache['compiled']);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
private function compileLess()
|
||||
{
|
||||
try {
|
||||
@@ -166,6 +148,12 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
array('media' => 'all', 'priority' => 140, 'server' => 'remote'));
|
||||
}
|
||||
|
||||
if ($this->module->config->social_login_fb) {
|
||||
$this->context->controller->registerStylesheet('modules-thecheckout-' . ($i++),
|
||||
'//fonts.googleapis.com/css?family=Roboto:500',
|
||||
array('media' => 'all', 'priority' => 140, 'server' => 'remote'));
|
||||
}
|
||||
|
||||
// Include all views/css/*.css and views/js/*.js files
|
||||
foreach (glob(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/*.css") as $filename) {
|
||||
$this->context->controller->registerStylesheet('modules-thecheckout-' . ($i++),
|
||||
@@ -404,6 +392,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
// by other modules, not bound to specific field
|
||||
$formField->setType('hidden');
|
||||
}
|
||||
if ($fieldName === 'other') {
|
||||
if ($this->module->config->use_other_field_for_business_private) {
|
||||
$formField->setCssClass('use-other-for-business-private');
|
||||
}
|
||||
}
|
||||
} elseif (count($fieldParts) === 2) {
|
||||
list($entity, $entityField) = $fieldParts;
|
||||
|
||||
@@ -447,7 +440,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
} elseif ($entity === 'State') {
|
||||
if ($country->contains_states) {
|
||||
$states = State::getStatesByIdCountry($country->id, true); // true = only active states
|
||||
// Sort states by alphabet
|
||||
// Sort states by alphabet - uncomment to activate
|
||||
// usort($states, function ($a, $b) {
|
||||
// $ax = strtr($a['name'], 'Ñ', 'N');
|
||||
// $bx = strtr($b['name'], 'Ñ', 'N');
|
||||
@@ -655,6 +648,9 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
->setName('token')
|
||||
->setType('hidden')
|
||||
->setValue($this->makeAddressPersister()->getToken()),
|
||||
'general_error' => (new CheckoutFormField)
|
||||
->setName('general_error')
|
||||
->setType('hidden')
|
||||
);
|
||||
|
||||
foreach ($this->module->config->customer_fields as $fieldName => $fieldOptions) {
|
||||
@@ -781,6 +777,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$format[$moduleField->moduleName . '_' . $moduleField->getName()] = $moduleField;
|
||||
}
|
||||
|
||||
// Sample format structure
|
||||
/*
|
||||
$format = [
|
||||
'back' => (new CheckoutFormField)
|
||||
@@ -955,7 +952,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if ($this->context->customer->isLogged()) {
|
||||
$customerAddresses = $this->context->customer->getSimpleAddresses();
|
||||
foreach ($customerAddresses as &$a) {
|
||||
$a['formatted'] = AddressFormat::generateAddress(new Address($a['id']), array(), '<br>');
|
||||
$a['formatted'] = AddressFormat::generateAddress(new Address($a['id']), array(), $this->module->tagIt('br', ''));
|
||||
}
|
||||
$allCustomerUsedAddresses = $this->getAllCustomerUsedAddresses();
|
||||
|
||||
@@ -988,51 +985,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if ($usedForInvoice || !$usedForDelivery) {
|
||||
$addressesList['invoice'][$addressId] = $customerAddresses[$addressId];
|
||||
}
|
||||
// Data preparation for other purposes, e.g. setting up this address filter in PS 'addresses'
|
||||
// For that, controllers/front/AddressesController.php needs to include this in initContent():
|
||||
//
|
||||
// if (file_exists(_PS_MODULE_DIR_ . 'thecheckout/controllers/front/front.php')) {
|
||||
// include_once(_PS_MODULE_DIR_ . 'thecheckout/controllers/front/front.php');
|
||||
// $tc_frontController = new TheCheckoutModuleFrontController();
|
||||
// $delivery_invoice_addresses = $tc_frontController->api_getAddressSelectionTplVars();
|
||||
//
|
||||
// $this->context->smarty->assign('delivery_invoice_addresses', $delivery_invoice_addresses);
|
||||
// }
|
||||
//
|
||||
// And respective template, /themes/classic/templates/customer/addresses.tpl shall be also updated
|
||||
// $addressesList['invoice'] + $addressesList['usedDeliveryExclusive'] make up "full set",
|
||||
// as 'invoice' includes also addresses we can't exactly say are invoice or delivery:
|
||||
//
|
||||
// {if isset($delivery_invoice_addresses) && isset($delivery_invoice_addresses.addressesList)}
|
||||
// {if isset($delivery_invoice_addresses.addressesList.invoice)}
|
||||
// <div class="invoice-primary-addresses" style="float:left;width:100%">
|
||||
// <h2>{l s='Primary and invoice addresses' d='Shop.Theme.Customeraccount'}</h2>
|
||||
// {foreach $delivery_invoice_addresses.addressesList.invoice as $address}
|
||||
// <div class="col-lg-4 col-md-6 col-sm-6">
|
||||
// {block name='customer_address'}
|
||||
// {include file='customer/_partials/block-address.tpl' address=$address}
|
||||
// {/block}
|
||||
// </div>
|
||||
// {/foreach}
|
||||
// </div>
|
||||
// {/if}
|
||||
// {/if}
|
||||
//
|
||||
// {if isset($delivery_invoice_addresses) && isset($delivery_invoice_addresses.addressesList)}
|
||||
// {if isset($delivery_invoice_addresses.addressesList.usedDeliveryExclusive)}
|
||||
// <div class="delivery-addresses" style="float:left;width:100%">
|
||||
// <h2>{l s='Delivery addresses' d='Shop.Theme.Customeraccount'}</h2>
|
||||
// {foreach $delivery_invoice_addresses.addressesList.usedDeliveryExclusive as $address}
|
||||
// <div class="col-lg-4 col-md-6 col-sm-6">
|
||||
// {block name='customer_address'}
|
||||
// {include file='customer/_partials/block-address.tpl' address=$address}
|
||||
// {/block}
|
||||
// </div>
|
||||
// {/foreach}
|
||||
// </div>
|
||||
// {/if}
|
||||
// {/if}
|
||||
//
|
||||
|
||||
if ($usedForDelivery && !$usedForInvoice) {
|
||||
$addressesList['usedDeliveryExclusive'][$addressId] = $customerAddresses[$addressId];
|
||||
}
|
||||
@@ -1101,7 +1054,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if (
|
||||
'' != $businessFieldName &&
|
||||
isset($formFieldsInvoiceMapped[$businessFieldName]) &&
|
||||
null != trim($formFieldsInvoiceMapped[$businessFieldName]['value']) &&
|
||||
null != $formFieldsInvoiceMapped[$businessFieldName]['value'] &&
|
||||
'' != trim($formFieldsInvoiceMapped[$businessFieldName]['value']) &&
|
||||
'id_state' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] &&
|
||||
'id_country' !== $formFieldsInvoiceMapped[$businessFieldName]['name'] &&
|
||||
('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
|
||||
@@ -1109,6 +1063,14 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$hideBusinessFields = false;
|
||||
}
|
||||
}
|
||||
if ($hideBusinessFields && $this->module->config->use_other_field_for_business_private &&
|
||||
isset($formFieldsInvoiceMapped['other']) &&
|
||||
null != $formFieldsInvoiceMapped['other']['value'] &&
|
||||
$this->trans('business', [], 'Modules.Thecheckout.front') === trim($formFieldsInvoiceMapped['other']['value'])
|
||||
) {
|
||||
$hideBusinessFields = false;
|
||||
}
|
||||
|
||||
|
||||
$hidePrivateFields = true;
|
||||
// if businessFields are visible (=not $hideBusinessFields), private fields will be hidden; otherwise, let's make check:
|
||||
@@ -1117,7 +1079,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if (
|
||||
'' != $privateFieldName &&
|
||||
isset($formFieldsInvoiceMapped[$privateFieldName]) &&
|
||||
null != trim($formFieldsInvoiceMapped[$privateFieldName]['value']) &&
|
||||
null != $formFieldsInvoiceMapped[$privateFieldName]['value'] &&
|
||||
'' != trim($formFieldsInvoiceMapped[$privateFieldName]['value']) &&
|
||||
'id_state' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] &&
|
||||
'id_country' !== $formFieldsInvoiceMapped[$privateFieldName]['name'] &&
|
||||
('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
|
||||
@@ -1125,6 +1088,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$hidePrivateFields = false;
|
||||
}
|
||||
}
|
||||
if ($hidePrivateFields && $this->module->config->use_other_field_for_business_private &&
|
||||
isset($formFieldsInvoiceMapped['other']) &&
|
||||
null != $formFieldsInvoiceMapped['other']['value'] &&
|
||||
$this->trans('private', [], 'Modules.Thecheckout.front') === trim($formFieldsInvoiceMapped['other']['value'])
|
||||
) {
|
||||
$hidePrivateFields = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Same for delivery address fields:
|
||||
@@ -1141,7 +1111,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if (
|
||||
'' != $businessFieldName &&
|
||||
isset($formFieldsDeliveryMapped[$businessFieldName]) &&
|
||||
null != trim($formFieldsDeliveryMapped[$businessFieldName]['value']) &&
|
||||
null != $formFieldsDeliveryMapped[$businessFieldName]['value'] &&
|
||||
'' != trim($formFieldsDeliveryMapped[$businessFieldName]['value']) &&
|
||||
'id_state' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] &&
|
||||
'id_country' !== $formFieldsDeliveryMapped[$businessFieldName]['name'] &&
|
||||
('dni' !== $businessFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
|
||||
@@ -1149,6 +1120,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$hideBusinessFieldsDelivery = false;
|
||||
}
|
||||
}
|
||||
if ($hideBusinessFieldsDelivery && $this->module->config->use_other_field_for_business_private &&
|
||||
isset($formFieldsDeliveryMapped['other']) &&
|
||||
null != $formFieldsDeliveryMapped['other']['value'] &&
|
||||
$this->trans('business', [], 'Modules.Thecheckout.front') === trim($formFieldsDeliveryMapped['other']['value'])
|
||||
) {
|
||||
$hideBusinessFieldsDelivery = false;
|
||||
}
|
||||
|
||||
$hidePrivateFieldsDelivery = true;
|
||||
// if businessFields are visible (=not $hideBusinessFields), private fields will be hidden; otherwise, let's make check:
|
||||
@@ -1157,7 +1135,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if (
|
||||
'' != $privateFieldName &&
|
||||
isset($formFieldsDeliveryMapped[$privateFieldName]) &&
|
||||
null != trim($formFieldsDeliveryMapped[$privateFieldName]['value']) &&
|
||||
null != $formFieldsDeliveryMapped[$privateFieldName]['value'] &&
|
||||
'' != trim($formFieldsDeliveryMapped[$privateFieldName]['value']) &&
|
||||
'id_state' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] &&
|
||||
'id_country' !== $formFieldsDeliveryMapped[$privateFieldName]['name'] &&
|
||||
('dni' !== $privateFieldName || 'need-dni' !== $formFieldsInvoice['dni']->getCssClass())
|
||||
@@ -1165,6 +1144,13 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$hidePrivateFieldsDelivery = false;
|
||||
}
|
||||
}
|
||||
if ($hidePrivateFieldsDelivery && $this->module->config->use_other_field_for_business_private &&
|
||||
isset($formFieldsDeliveryMapped['other']) &&
|
||||
null != $formFieldsDeliveryMapped['other']['value'] &&
|
||||
$this->trans('private', [], 'Modules.Thecheckout.front') === trim($formFieldsDeliveryMapped['other']['value'])
|
||||
) {
|
||||
$hidePrivateFieldsDelivery = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Old code, when business fields were hard-coded
|
||||
@@ -1248,35 +1234,78 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$this->context->cookie->id_cart = $duplication['cart']->id;
|
||||
$context = $this->context;
|
||||
$context->cart = $duplication['cart'];
|
||||
|
||||
if ($this->module->config->use_old_address_on_reorder) {
|
||||
// assign oldCart's addresses to the new cart
|
||||
$oldDeliveryAddress = new Address($oldCart->id_address_delivery);
|
||||
$oldInvoiceAddress = new Address($oldCart->id_address_invoice);
|
||||
if (!$oldDeliveryAddress->deleted) {
|
||||
$this->context->cart->id_address_delivery = $oldCart->id_address_delivery;
|
||||
}
|
||||
if (!$oldInvoiceAddress->deleted) {
|
||||
$this->context->cart->id_address_invoice = $oldCart->id_address_invoice;
|
||||
}
|
||||
|
||||
$this->context->cart->update();
|
||||
}
|
||||
|
||||
CartRule::autoAddToCart($context);
|
||||
$this->context->cookie->write();
|
||||
Tools::redirect('index.php?controller=order');
|
||||
// Tools::redirect('index.php?controller=order');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function isShopVersion17Plus()
|
||||
{
|
||||
return version_compare(_PS_VERSION_, '1.7.0.0', '>=');
|
||||
}
|
||||
|
||||
private function isShopVersion8Plus()
|
||||
{
|
||||
return version_compare(_PS_VERSION_, '8.0.0', '>=');
|
||||
}
|
||||
|
||||
private function isShopVersion813Plus()
|
||||
{
|
||||
return version_compare(_PS_VERSION_, '8.1.3', '>=');
|
||||
}
|
||||
|
||||
private function isModuleEnabled($moduleName) {
|
||||
if (false === $this->isShopVersion17Plus()) {
|
||||
return \Module::isInstalled($moduleName) && \Module::isEnabled($moduleName);
|
||||
}
|
||||
|
||||
$moduleManagerBuilder = ModuleManagerBuilder::getInstance();
|
||||
$moduleManager = $moduleManagerBuilder->build();
|
||||
|
||||
return $moduleManager->isInstalled($moduleName) && \Module::isEnabled($moduleName);
|
||||
}
|
||||
|
||||
public function initContent()
|
||||
{
|
||||
// kernel initialization moved here from thecheckout.php, so that it executes less often
|
||||
$this->module->initPsKernel();
|
||||
// Can we skip it for ajax calls? parent::initContent set caches for delivery options,
|
||||
// if enabled here, we'd need to flush caches before ajax call
|
||||
//parent::initContent();
|
||||
|
||||
// Initiate checkoutProcess object for ps_checkout module
|
||||
if (version_compare(_PS_VERSION_, '1.7.3') >= 0 &&
|
||||
Module::isInstalled('xps_checkout') && Module::isEnabled('xps_checkout')) {
|
||||
$deliveryOptionsFinder = new DeliveryOptionsFinder(
|
||||
$this->context,
|
||||
$this->getTranslator(),
|
||||
new ObjectPresenter(),
|
||||
new PriceFormatter()
|
||||
);
|
||||
|
||||
$session = new CheckoutSession(
|
||||
$this->context,
|
||||
$deliveryOptionsFinder
|
||||
);
|
||||
$this->checkoutProcess = new CheckoutProcess($this->context, $session);
|
||||
}
|
||||
// if (version_compare(_PS_VERSION_, '1.7.3') >= 0 &&
|
||||
// Module::isInstalled('xps_checkout') && Module::isEnabled('xps_checkout')) {
|
||||
// $deliveryOptionsFinder = new DeliveryOptionsFinder(
|
||||
// $this->context,
|
||||
// $this->getTranslator(),
|
||||
// new ObjectPresenter(),
|
||||
// new PriceFormatter()
|
||||
// );
|
||||
//
|
||||
// $session = new CheckoutSession(
|
||||
// $this->context,
|
||||
// $deliveryOptionsFinder
|
||||
// );
|
||||
// $this->checkoutProcess = new CheckoutProcess($this->context, $session);
|
||||
// }
|
||||
|
||||
|
||||
if (Configuration::get('PS_RESTRICT_DELIVERED_COUNTRIES')) {
|
||||
@@ -1308,6 +1337,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
} else {
|
||||
$this->parentInitContent();
|
||||
|
||||
// Reset carrier selection on full-page load
|
||||
// $opc_form_radios = json_decode($this->context->cookie->opc_form_radios, true);
|
||||
// unset($opc_form_radios['delivery_option']);
|
||||
// $this->context->cookie->opc_form_radios = json_encode($opc_form_radios);
|
||||
|
||||
// Remove potentially unwanted JS includes from payment method - if we include them in hook call
|
||||
//print_r($this->context->controller->getJavascript());
|
||||
$this->context->controller->unregisterJavascript('paypal-plus-payment-js');
|
||||
@@ -1348,9 +1382,21 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if ($this->context->cart->id != $this->context->cookie->addreses_reset_at_cart_id) {
|
||||
$lastOrderAddresses = $this->getCustomerLastUsedAddresses($this->getAllCustomerUsedAddresses());
|
||||
if (count($lastOrderAddresses)) {
|
||||
$this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice'];
|
||||
$this->context->cart->id_address_delivery = $lastOrderAddresses['id_address_delivery'];
|
||||
$this->context->cart->update();
|
||||
if (!$this->module->config->use_old_address_on_reorder) {
|
||||
$this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice'];
|
||||
$this->context->cart->id_address_delivery = $lastOrderAddresses['id_address_delivery'];
|
||||
$this->context->cart->update();
|
||||
} else {
|
||||
$oldDeliveryAddress = new Address($this->context->cart->id_address_delivery);
|
||||
$oldInvoiceAddress = new Address($this->context->cart->id_address_invoice);
|
||||
if ($oldDeliveryAddress->deleted) {
|
||||
$this->context->cart->id_address_delivery = $lastOrderAddresses['id_address_delivery'];
|
||||
}
|
||||
if ($oldInvoiceAddress->deleted) {
|
||||
$this->context->cart->id_address_invoice = $lastOrderAddresses['id_address_invoice'];
|
||||
}
|
||||
}
|
||||
|
||||
$this->context->cart->setNoMultishipping();
|
||||
$this->updateAddressIdInDeliveryOptions();
|
||||
$this->context->cookie->addreses_reset_at_cart_id = $this->context->cart->id;
|
||||
@@ -1391,7 +1437,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
}
|
||||
|
||||
// myparcel loads iframe picker, and thus markup is always same even though, we need to change iframe content always
|
||||
$forceRefreshShipping = Module::isInstalled('myparcel');
|
||||
$forceRefreshShipping = $this->isModuleEnabled('myparcel');
|
||||
|
||||
// Logged-in customer groups
|
||||
$customer_groups = $this->context->customer->getGroups();
|
||||
@@ -1423,18 +1469,19 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$page["body_classes"]["collapse-shipping-methods"] = $this->module->config->collapse_shipping_methods;
|
||||
$page["body_classes"]["collapse-payment-methods"] = $this->module->config->collapse_payment_methods;
|
||||
$page["body_classes"]["fetchifyuk-enabled"] = Module::isEnabled('fetchifyuk'); // formerly craftyclicks
|
||||
$page["body_classes"]["logos-on-the-right"] = $this->module->config->logos_on_the_right;
|
||||
|
||||
if ((Configuration::get('PAYPAL_EXPRESS_CHECKOUT_SHORTCUT') || Configuration::get('PAYPAL_EXPRESS_CHECKOUT_SHORTCUT_CART')) && (isset($this->context->cookie->paypal_ecs) || isset($this->context->cookie->paypal_pSc))) {
|
||||
$page["body_classes"]["paypal-express-checkout-session"] = true;
|
||||
}
|
||||
$installedModules = array();
|
||||
foreach (array('mondialrelay', 'einvoicingprestalia') as $moduleName) {
|
||||
$installedModules[$moduleName] = Module::isInstalled($moduleName) && Module::isEnabled($moduleName);
|
||||
foreach (array('mondialrelay', 'einvoicingprestalia', 'chronopost') as $moduleName) {
|
||||
$installedModules[$moduleName] = $this->isModuleEnabled($moduleName);
|
||||
}
|
||||
|
||||
$sendcloud_moduleName = 'sendcloud';
|
||||
$sendcloud_script = '';
|
||||
if (Module::isInstalled($sendcloud_moduleName) && Module::isEnabled($sendcloud_moduleName)) {
|
||||
if ($this->isModuleEnabled($sendcloud_moduleName)) {
|
||||
$sendcloud_moduleInstance = Module::getInstanceByName($sendcloud_moduleName);
|
||||
if (isset($sendcloud_moduleInstance->connector) && $sendcloud_moduleInstance->connector) {
|
||||
$sendcloud_script = $sendcloud_moduleInstance->connector->getServicePointScript();
|
||||
@@ -1451,7 +1498,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
} else {
|
||||
$needAddressModules = array('paypal', 'sendcloud', 'mondialrelay', 'omniva', 'multisafepay');
|
||||
foreach ($needAddressModules as $moduleName) {
|
||||
if (Module::isInstalled($moduleName) && Module::isEnabled($moduleName)) {
|
||||
if ($this->isModuleEnabled($moduleName)) {
|
||||
$forceAddressCreation = true;
|
||||
break;
|
||||
}
|
||||
@@ -1465,6 +1512,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
);
|
||||
$this->unifyAddresses(true, false);
|
||||
}
|
||||
|
||||
$needCheckoutSessionModules = array('mondialrelay');
|
||||
foreach ($needCheckoutSessionModules as $moduleName) {
|
||||
if ($this->isModuleEnabled($moduleName)) {
|
||||
$this->updateCheckoutSession(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// render paypal express checkout button in sign-up?
|
||||
$paypal_express_checkout = '';
|
||||
if ($this->module->config->paypal_express_checkout) {
|
||||
$paypal_express_checkout = Hook::exec('displayExpressCheckout');
|
||||
}
|
||||
|
||||
$this->context->smarty->assign(array(
|
||||
@@ -1489,7 +1550,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
'forceRefreshShipping' => $forceRefreshShipping,
|
||||
'installedModules' => $installedModules,
|
||||
'separatePaymentKeyName' => Config::SEPARATE_PAYMENT_KEY_NAME,
|
||||
'sendcloud_script' => $sendcloud_script
|
||||
'sendcloud_script' => $sendcloud_script,
|
||||
'paypal_express_checkout' => $paypal_express_checkout
|
||||
));
|
||||
|
||||
$amazonPayCheckoutSessionClass = "AmazonPayCheckoutSession";
|
||||
@@ -1579,7 +1641,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if (version_compare(_PS_VERSION_, '1.7.3') >= 0) {
|
||||
$this->context->cart->delivery_option = json_encode($newDeliveryOptions);
|
||||
} else {
|
||||
$this->context->cart->delivery_option = serialize($newDeliveryOptions);
|
||||
// 16.10.2023 - we won't support older PS versions anymore, so this is left empty
|
||||
}
|
||||
}
|
||||
$this->context->cart->autosetProductAddress();
|
||||
@@ -1614,6 +1676,24 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
return $self->getCheckoutSession()->getDeliveryOptions();
|
||||
});
|
||||
|
||||
|
||||
$priceFormatter = new PriceFormatter();
|
||||
$freeShippingLabel = $this->translator->trans(
|
||||
'Free',
|
||||
[],
|
||||
'Shop.Theme.Checkout'
|
||||
);
|
||||
foreach ($deliveryOptions as &$option) {
|
||||
if ($option['price'] === $freeShippingLabel) {
|
||||
$option['price_with_tax_formatted'] = $option['price'];
|
||||
$option['price_without_tax_formatted'] = $option['price'];
|
||||
} else {
|
||||
$option['price_with_tax_formatted'] = $priceFormatter->format($option['price_with_tax']);
|
||||
$option['price_without_tax_formatted'] = $priceFormatter->format($option['price_without_tax']);
|
||||
}
|
||||
// $option['price'] = " -- [price] '" . $option['price'] . "' == [freeShippingLabel] '" . $freeShippingLabel ."' (". ($option['price'] === $freeShippingLabel) .")";
|
||||
}
|
||||
|
||||
return
|
||||
array(
|
||||
'hookDisplayBeforeCarrier' => Hook::exec('displayBeforeCarrier',
|
||||
@@ -1640,24 +1720,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
);
|
||||
}
|
||||
|
||||
// public function selectPaymentOption(array $requestParams = array())
|
||||
// {
|
||||
// if (isset($requestParams['select_payment_option'])) {
|
||||
// $this->selected_payment_option = $requestParams['select_payment_option'];
|
||||
// }
|
||||
//
|
||||
// $this->setTitle(
|
||||
// $this->getTranslator()->trans(
|
||||
// 'Payment',
|
||||
// array(),
|
||||
// 'Shop.Theme.Checkout'
|
||||
// )
|
||||
// );
|
||||
// }
|
||||
|
||||
public function getPaymentOptions()
|
||||
{
|
||||
$isFree = 0 == (float)$this->getCheckoutSession()->getCart()->getOrderTotal(true, Cart::BOTH);
|
||||
|
||||
# if paypal module is installed and enabled, make sure that if customer object is empty, set is_guest to 1
|
||||
if ($this->isModuleEnabled('paypal')) {
|
||||
if (empty($this->context->customer->id)) {
|
||||
$this->context->customer->is_guest = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$paymentOptionsFinder = new PaymentOptionsFinder();
|
||||
$paymentOptions = $paymentOptionsFinder->present($isFree);
|
||||
|
||||
@@ -1669,6 +1742,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$paymentOptions["amazonpay"] = $amazonPayOption;
|
||||
}
|
||||
|
||||
// pm_applepay module doesn't use paymentOptions hook, so we'll add it manually
|
||||
if ($this->isModuleEnabled('pm_applepay') && Module::getInstanceByName('pm_applepay')->isPaymentAvailable()) {
|
||||
$paymentOptions['pm_applepay'][] = array(
|
||||
'id' => 'payment-option-1001',
|
||||
'module_name' => 'pm_applepay',
|
||||
'call_to_action_text' => $this->module->getTranslation('Apple Pay'),
|
||||
'form' => $this->module->tagIt('div', '', 'id="pm_applepay-popup-container"'),
|
||||
'binary' => true
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'is_free' => $isFree,
|
||||
'payment_options' => $paymentOptions,
|
||||
@@ -1680,29 +1764,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
|
||||
public function ajaxCall()
|
||||
{
|
||||
// Uncomment to debug ajaxCall
|
||||
// @error_reporting(E_ALL & ~E_NOTICE);
|
||||
// multisafepay fix BEGIN
|
||||
// multisafepay.php:hasSetApiKey(), loads multisafepay.sdk_service, but the $kernel is not started in this ajax request yet
|
||||
// Commented out due to validator requirements (no globals), uncomment for multisafepay support
|
||||
// global $kernel;
|
||||
// if(!$kernel){
|
||||
// require_once _PS_ROOT_DIR_.'/app/AppKernel.php';
|
||||
// $kernel = new \AppKernel('prod', false);
|
||||
// $kernel->boot();
|
||||
// }
|
||||
// multisafepay fix END
|
||||
|
||||
if ($this->module->debug) {
|
||||
$this->module->logDebug("[AJAX*Start] " . Tools::getValue('action'));
|
||||
}
|
||||
|
||||
$action = Tools::ucfirst(Tools::getValue('action'));
|
||||
$action = Tools::ucfirst(strip_tags(Tools::getValue('action')));
|
||||
|
||||
if (!empty($action) && method_exists($this, 'ajax' . $action)) {
|
||||
$this->context->smarty->assign("tc_config", $this->module->config);
|
||||
$this->context->smarty->assign("z_tc_config", $this->module->config);
|
||||
$result = $this->{'ajax' . $action}();
|
||||
} else {
|
||||
$result = (array('error' => 'Ajax parameter used, but action \'' . Tools::getValue('action') . '\' is not defined'));
|
||||
$result = (array('error' => 'Ajax parameter used, but action \'' . strip_tags(Tools::getValue('action')) . '\' is not defined'));
|
||||
}
|
||||
|
||||
if ($this->module->debug) {
|
||||
@@ -1944,10 +2019,11 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
}
|
||||
}
|
||||
|
||||
// add dateofdelivery module name into external shipping modules list, so that its parser is loaded at JS level
|
||||
$dateofdelivery_moduleName = 'dateofdelivery';
|
||||
if (Module::isInstalled($dateofdelivery_moduleName) && Module::isEnabled($dateofdelivery_moduleName)) {
|
||||
$externalShippingModules[$dateofdelivery_moduleName] = 0;
|
||||
// add dateofdelivery and apaczka module name into external shipping modules list, so that its parser is loaded at JS level
|
||||
$externalShippingModuleNames = ['dateofdelivery', 'apaczka', 'upsservice', 'globkuriermodule'];
|
||||
foreach ($externalShippingModuleNames as $ext_moduleName)
|
||||
if (Module::isInstalled($ext_moduleName) && Module::isEnabled($ext_moduleName)) {
|
||||
$externalShippingModules[$ext_moduleName][] = 0;
|
||||
}
|
||||
|
||||
$this->getCheckoutSession()->setDeliveryOption(
|
||||
@@ -1999,7 +2075,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
}
|
||||
}
|
||||
|
||||
$this->context->smarty->assign('shippingAddressNotice', $shippingAddressNotice);
|
||||
$this->context->smarty->assign('shippingAddressNotice', implode(', ', $shippingAddressNotice));
|
||||
|
||||
}
|
||||
|
||||
@@ -2076,11 +2152,30 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
|
||||
$paymentMethods = $this->getPaymentOptions();
|
||||
|
||||
// add md5 checksum to payment options (+exceptions)
|
||||
// Some payment modules (e.g. paynow) do not always return same order of payment methods, so we need an ID that would be unique for every option
|
||||
foreach ($paymentMethods['payment_options'] as $modName => &$options) {
|
||||
foreach ($options as &$option) {
|
||||
// ps_checkout needs exact data-module-name attribute, it won't initialize widget otherwise
|
||||
|
||||
if ($modName == 'ps_checkout' ||
|
||||
strpos($modName, 'paypal') === 0 ||
|
||||
strpos($modName, 'przelewy-method') === 0 ||
|
||||
strpos($modName, 'przelewy24') === 0 ||
|
||||
strpos($modName, 'stripe_official') === 0
|
||||
) {
|
||||
$option['call_to_action_text_md5'] = '';
|
||||
} else {
|
||||
$option['call_to_action_text_md5'] = '-'.substr(md5($option['call_to_action_text']), -5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->context->smarty->assign($paymentMethods);
|
||||
|
||||
// // Payment data, used by Stripe payment for live refresh (and possibly other modules in future)
|
||||
|
||||
// $currency = $this->context->currency->iso_code;
|
||||
// $currency = $this->context->currency->iso_code;
|
||||
// $orderTotal = $this->context->cart->getOrderTotal();
|
||||
// $stripeAmount = Tools::ps_round($orderTotal, 2);
|
||||
// $stripeAmount = $this->isZeroDecimalCurrency($currency) ? $stripeAmount : $stripeAmount * 100;
|
||||
@@ -2390,6 +2485,35 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
// $this->context->country->need_identification_number = false;
|
||||
// }
|
||||
|
||||
// Copy invoice phone or phone_mobile to delivery phone or phone_mobile, if delivery phone or phone_mobile is empty and both phone fields are disabled in delivery form
|
||||
if ($this->tcCopyInvoicePhoneToDelivery && $this->context->cart->id_address_invoice !== $this->context->cart->id_address_delivery &&
|
||||
!$this->module->config->delivery_fields['phone_mobile']['visible'] && !$this->module->config->delivery_fields['phone']['visible']) {
|
||||
# if we're updating invoice address, take phone/phone_mobile from $formData
|
||||
# if we're updating delivery address, take phone/phone_mobile from invoice address ojbect
|
||||
if ($isAddressTypeInvoice) {
|
||||
$invoicePhoneMobile = isset($formData['phone_mobile']) && $formData['phone_mobile'] ? trim($formData['phone_mobile']) : '';
|
||||
$invoicePhone = isset($formData['phone']) && $formData['phone'] ? trim($formData['phone']) : '';
|
||||
$deliveryAddress = new Address($this->context->cart->id_address_delivery);
|
||||
if ($invoicePhoneMobile !== "") {
|
||||
$deliveryAddress->phone_mobile = $invoicePhoneMobile;
|
||||
$deliveryAddress->save();
|
||||
} elseif ($invoicePhone !== "") {
|
||||
$deliveryAddress->phone = $invoicePhone;
|
||||
$deliveryAddress->save();
|
||||
}
|
||||
} else {
|
||||
$invoiceAddress = new Address($this->context->cart->id_address_invoice);
|
||||
$invoicePhoneMobile = trim($invoiceAddress->phone_mobile);
|
||||
$invoicePhone = trim($invoiceAddress->phone);
|
||||
if ($invoicePhoneMobile !== "") {
|
||||
$formData['phone_mobile'] = $invoicePhoneMobile;
|
||||
} elseif ($invoicePhone !== "") {
|
||||
$formData['phone'] = $invoicePhone;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$theCheckout_addressForm = new CheckoutAddressForm(
|
||||
$this->module,
|
||||
$this->context->smarty,
|
||||
@@ -2630,9 +2754,18 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
//$this->updateAddressIdInDeliveryOptions();
|
||||
|
||||
|
||||
$tpl_hasErrors = $registerForm->hasErrors();
|
||||
$tpl_errors = $registerForm->getErrors();
|
||||
|
||||
if ($this->isModuleEnabled('eicaptcha')) {
|
||||
Hook::exec('actionCustomerRegisterSubmitCaptcha');
|
||||
$tpl_hasErrors = $tpl_hasErrors || sizeof($this->context->controller->errors);
|
||||
$tpl_errors = array_merge($tpl_errors, array('captcha' => $this->context->controller->errors));
|
||||
}
|
||||
|
||||
return array(
|
||||
"hasErrors" => $registerForm->hasErrors(),
|
||||
"errors" => $registerForm->getErrors(),
|
||||
"hasErrors" => $tpl_hasErrors,
|
||||
"errors" => $tpl_errors,
|
||||
"customerId" => $this->context->customer->id,
|
||||
"newToken" => Tools::getToken(true, $this->context),
|
||||
"newStaticToken" => Tools::getToken(false),
|
||||
@@ -2676,10 +2809,18 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
return $isComplete;
|
||||
}
|
||||
|
||||
private function copyPropertyFromToIfEmpty(&$source, &$target, $propertyName) {
|
||||
if ((!isset($target[$propertyName]) || "" == trim($target[$propertyName])) &&
|
||||
isset($source[$propertyName]) && "" != trim($source[$propertyName])) {
|
||||
$target[$propertyName] = $source[$propertyName];
|
||||
private function copyPropertyFromToIfEmpty(&$source, &$target, $propertyName, $alternativeValue) {
|
||||
$emptyValues = array('');
|
||||
if (in_array($propertyName, array('firstname', 'lastname'))) {
|
||||
$emptyValues = array('', 'a', 'A');
|
||||
}
|
||||
if ((!isset($target[$propertyName]) || in_array(trim($target[$propertyName]), $emptyValues)))
|
||||
{
|
||||
if (isset($source[$propertyName]) && !in_array(trim($source[$propertyName]), $emptyValues)) {
|
||||
$target[$propertyName] = $source[$propertyName];
|
||||
} elseif (!in_array(trim($alternativeValue), $emptyValues)) {
|
||||
$target[$propertyName] = $alternativeValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2693,14 +2834,16 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$passwordRequired
|
||||
) {
|
||||
|
||||
// check if shipping methods has any validations
|
||||
$shippingModuleStepComplete = $this->isShippingModuleComplete(Tools::getAllValues());
|
||||
$shippingResult = null;
|
||||
if (!$shippingModuleStepComplete) {
|
||||
$shippingResult = array(
|
||||
'errors' => $this->context->controller->errors,
|
||||
'hasErrors' => !empty($this->context->controller->errors)
|
||||
);
|
||||
if (!$this->context->cart->isVirtualCart()) {
|
||||
// check if shipping methods has any validations
|
||||
$shippingModuleStepComplete = $this->isShippingModuleComplete(Tools::getAllValues());
|
||||
if (!$shippingModuleStepComplete) {
|
||||
$shippingResult = array(
|
||||
'errors' => $this->context->controller->errors,
|
||||
'hasErrors' => !empty($this->context->controller->errors)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialization defaults
|
||||
@@ -2711,16 +2854,17 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
if ($invoiceVisible) {
|
||||
// update invoice/delivery address firstname/lastname from customer name, if
|
||||
// address' name is empty and customer's not (e.g. firstname/lastname can be hidden in address section)
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'firstname');
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'lastname');
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'firstname', $this->context->customer->firstname);
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $invoiceFormData, 'lastname', $this->context->customer->lastname);
|
||||
|
||||
if (isset($invoiceFormData['firstname']) && isset($invoiceFormData["lastname"])) {
|
||||
$firstname = $invoiceFormData['firstname'];
|
||||
$lastname = $invoiceFormData['lastname'];
|
||||
}
|
||||
} elseif($deliveryVisible) {
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'firstname');
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'lastname');
|
||||
}
|
||||
if($deliveryVisible) {
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'firstname', $this->context->customer->firstname);
|
||||
$this->copyPropertyFromToIfEmpty($accountFormData, $deliveryFormData, 'lastname', $this->context->customer->lastname);
|
||||
|
||||
if (isset($deliveryFormData['firstname']) && isset($deliveryFormData["lastname"])) {
|
||||
$firstname = $deliveryFormData['firstname'];
|
||||
@@ -2804,6 +2948,15 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$invoiceAddressResult = $deliveryAddressResult = null;
|
||||
$finalConfirmation = true;
|
||||
|
||||
// copy phone or phone_mobile from invoice to delivery, if both delivery phones are not visible
|
||||
if ($this->tcCopyInvoicePhoneToDelivery && $invoiceVisible && $deliveryVisible && !$this->module->config->delivery_fields['phone_mobile']['visible'] && !$this->module->config->delivery_fields['phone']['visible']) {
|
||||
if ("" == trim($deliveryFormData['phone_mobile']) && "" != trim($invoiceFormData['phone_mobile'])) {
|
||||
$deliveryFormData['phone_mobile'] = $invoiceFormData['phone_mobile'];
|
||||
} elseif ("" == trim($deliveryFormData['phone']) && "" != trim($invoiceFormData['phone'])) {
|
||||
$deliveryFormData['phone'] = $invoiceFormData['phone'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($invoiceVisible) {
|
||||
$invoiceAddressResult = $this->modifyAddress('invoice', $invoiceFormData, $shallCreateNewAddress,
|
||||
$finalConfirmation);
|
||||
@@ -2835,34 +2988,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
&& !$invoiceAddressErrors
|
||||
&& !$deliveryAddressErrors
|
||||
) {
|
||||
|
||||
$cartChecksum = new CartChecksum(new AddressChecksum());
|
||||
|
||||
// Update cart's secure key:
|
||||
$this->context->cart->secure_key = $this->context->customer->secure_key;
|
||||
|
||||
$checkout_session_data = array(
|
||||
"checkout-personal-information-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => true
|
||||
),
|
||||
"checkout-addresses-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => true,
|
||||
"use_same_address" => ($this->context->cart->id_address_delivery == $this->context->cart->id_address_invoice)
|
||||
),
|
||||
"checkout-delivery-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => true
|
||||
),
|
||||
"checkout-payment-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => false
|
||||
),
|
||||
"checksum" => $cartChecksum->generateChecksum($this->context->cart)
|
||||
);
|
||||
|
||||
$this->DB_saveCheckoutSessionData($checkout_session_data);
|
||||
$this->updateCheckoutSession();
|
||||
}
|
||||
|
||||
return array_merge(
|
||||
@@ -2873,6 +2999,36 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
);
|
||||
}
|
||||
|
||||
private function updateCheckoutSession($deliveryStepComplete = true) {
|
||||
$cartChecksum = new CartChecksum(new AddressChecksum());
|
||||
|
||||
// Update cart's secure key:
|
||||
$this->context->cart->secure_key = $this->context->customer->secure_key;
|
||||
|
||||
$checkout_session_data = array(
|
||||
"checkout-personal-information-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => true
|
||||
),
|
||||
"checkout-addresses-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => true,
|
||||
"use_same_address" => ($this->context->cart->id_address_delivery == $this->context->cart->id_address_invoice)
|
||||
),
|
||||
"checkout-delivery-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => $deliveryStepComplete
|
||||
),
|
||||
"checkout-payment-step" => array(
|
||||
"step_is_reachable" => true,
|
||||
"step_is_complete" => false
|
||||
),
|
||||
"checksum" => $cartChecksum->generateChecksum($this->context->cart)
|
||||
);
|
||||
|
||||
$this->DB_saveCheckoutSessionData($checkout_session_data);
|
||||
}
|
||||
|
||||
private function unifyAddresses($invoiceVisible, $deliveryVisible)
|
||||
{
|
||||
// We need to unify addresses, if only one is visible - so that shipping methods are always reflecting selected zone
|
||||
@@ -2898,7 +3054,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
parse_str(Tools::getValue('account'), $accountFormData);
|
||||
|
||||
$email = (isset($accountFormData['email'])) ? $accountFormData['email'] : (isset($accountFormData['forced-email'])?$accountFormData['forced-email']:'');
|
||||
$id_customer = Customer::customerExists($email, true, true);
|
||||
$id_customer = Customer::customerExists($email, true, true); // email, returnId, ignoreGuest
|
||||
|
||||
// is email valid?
|
||||
if ("" !== trim($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||
@@ -2921,13 +3077,20 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
'The email "%mail%" is already used, please choose another one or sign in',
|
||||
array('%mail%' => $email),
|
||||
'Shop.Notifications.Error'
|
||||
) . '<' . 'span id="sign-in-link"' . '>' . $this->translator->trans('Sign in', array(),
|
||||
'Shop.Theme.Actions') . '<' . '/' . 'span' . '>';
|
||||
) . $this->module->tagIt('span', $this->translator->trans('Sign in', array(), 'Shop.Theme.Actions'), 'id="sign-in-link"');
|
||||
|
||||
}
|
||||
|
||||
} elseif (
|
||||
($this->module->config->force_email_overlay || $this->module->config->register_guest_on_blur)
|
||||
&& Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) {
|
||||
// pre-set customer's first/lastnames, if we have that already in the session
|
||||
// if this won't be done, checkEmail and consequently silentRegistration will create "a a" customer
|
||||
if ($this->context->cart->id_customer) {
|
||||
$customer = new Customer($this->context->cart->id_customer);
|
||||
$accountFormData['firstname'] = $customer->firstname;
|
||||
$accountFormData['lastname'] = $customer->lastname;
|
||||
}
|
||||
$this->silentRegistration($accountFormData);
|
||||
} elseif ($this->module->config->show_button_save_personal_info && "tc_save_account" == Tools::getValue('triggerEl'))
|
||||
{
|
||||
@@ -2940,6 +3103,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
$this->getPaymentOptionsBlock(),
|
||||
$this->getCartSummaryBlock());
|
||||
}
|
||||
} elseif (Configuration::get('PS_GUEST_CHECKOUT_ENABLED') && $id_customer) {
|
||||
$accountResult['notices']['email'] = $this->module->getTranslation('You already have an account with us. Sign in or continue as guest.');
|
||||
}
|
||||
|
||||
$accountResult['hasErrors'] = (isset($accountResult['hasErrors'])?$accountResult['hasErrors'] : false) || (count($errors) > 0);
|
||||
@@ -3339,12 +3504,27 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
'Shop.Notifications.Error'
|
||||
);
|
||||
} elseif (!$eachProduct['allow_oosp'] && $eachProduct['cart_quantity'] > $eachProduct['stock_quantity']) {
|
||||
$cartQuantityError =
|
||||
$this->trans(
|
||||
'The item %product% in your cart is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.',
|
||||
array('%product%' => $eachProduct['name']),
|
||||
if ($this->isShopVersion813Plus()) {
|
||||
$cartQuantityError = $this->trans(
|
||||
'You can only buy %quantity% "%product%". Please adjust the quantity in your cart to continue.',
|
||||
[
|
||||
'%product%' => $eachProduct['name'],
|
||||
'%quantity%' => $eachProduct['stock_quantity'],
|
||||
],
|
||||
'Shop.Notifications.Error'
|
||||
);
|
||||
} else {
|
||||
$err_str = 'The item %product% in your cart is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.';
|
||||
if ($this->isShopVersion8Plus()) {
|
||||
$err_str = '%product% is no longer available in this quantity. You cannot proceed with your order until the quantity is adjusted.';
|
||||
}
|
||||
$cartQuantityError =
|
||||
$this->trans(
|
||||
$err_str,
|
||||
array('%product%' => $eachProduct['name']),
|
||||
'Shop.Notifications.Error'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3369,6 +3549,21 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
reset($opc_form_radios['delivery_option']));
|
||||
}
|
||||
|
||||
$otherErrors = [];
|
||||
// 18.10.2023 - support for blockproductsbycountry module
|
||||
if ($this->isModuleEnabled('blockproductsbycountry')) {
|
||||
$bpbc_module = Module::getInstanceByName('blockproductsbycountry');
|
||||
$bpbc_context = Context::getContext();
|
||||
$bpbc_id_country = $bpbc_context->country->id;
|
||||
if ($bpbc_id_country) {
|
||||
foreach ($bpbc_context->cart->getProducts() as $product) {
|
||||
if ($bpbc_module->isProductBlocked((int)$product['id_product'], $bpbc_id_country)) {
|
||||
$otherErrors['blockproductsbycountry'] = sprintf(Configuration::get('BPBC_TEXT_BLOCKED_CART', $bpbc_context->language->id), Product::getProductName((int)$product['id_product']), $bpbc_context->country->name[$bpbc_context->language->id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->context->smarty->assign(array(
|
||||
'cart' => $presentedCart,
|
||||
'cartQuantityError' => $cartQuantityError,
|
||||
@@ -3376,7 +3571,8 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
'js_custom_vars' => $js_custom_vars,
|
||||
'forceToChooseCarrier' => (bool)$this->module->config->force_customer_to_choose_carrier,
|
||||
'customerDeliveryOption' => $customerSelectedDeliveryOption,
|
||||
'carrierSelected' => $this->context->cart->id_carrier
|
||||
'carrierSelected' => $this->context->cart->id_carrier,
|
||||
'otherErrors' => $otherErrors
|
||||
));
|
||||
|
||||
$minimalPurchase = array();
|
||||
@@ -3394,7 +3590,7 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
'emptyCart' => !($presentedCart['products_count']),
|
||||
'isVirtualCart' => $this->context->cart->isVirtualCart(),
|
||||
'minimalPurchaseError' => !empty($minimalPurchase),
|
||||
'cartQuantityError' => ($cartQuantityError !== false),
|
||||
'cartQuantityError' => ($cartQuantityError !== false)
|
||||
));
|
||||
}
|
||||
|
||||
@@ -3498,12 +3694,6 @@ class TheCheckoutModuleFrontController extends ModuleFrontController
|
||||
return array("errors" => $loginForm->getErrors(), "hasErrors" => $loginForm->hasErrors());
|
||||
}
|
||||
|
||||
// private function ajaxModifyAccount()
|
||||
// {
|
||||
// // Is this still used? Probably not (20.3.2019).
|
||||
// return $this->modifyAccount(Tools::getAllValues());
|
||||
// }
|
||||
|
||||
private function DB_saveCheckoutSessionData($data)
|
||||
{
|
||||
Db::getInstance()->execute(
|
||||
|
||||
BIN
modules/thecheckout/docs/readme_en.pdf
Normal file
34
modules/thecheckout/lib/assets/fonts/index.php
Normal 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;
|
||||
34
modules/thecheckout/lib/assets/index.php
Normal 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;
|
||||
@@ -12,6 +12,10 @@
|
||||
|
||||
namespace module\thecheckout;
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class TS_Functions
|
||||
{
|
||||
|
||||
|
||||
@@ -5,6 +5,11 @@
|
||||
* @copyright Less lib
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once( dirname(__FILE__).'/Version.php');
|
||||
|
||||
class Less_Cache{
|
||||
|
||||
@@ -5,6 +5,11 @@
|
||||
* @copyright Less lib
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class Less_Version{
|
||||
|
||||
const version = '1.7.0.10'; // The current build number of less.php
|
||||
|
||||
BIN
modules/thecheckout/logo.webp
Normal file
|
After Width: | Height: | Size: 892 B |
@@ -30,7 +30,7 @@ class TheCheckout extends Module
|
||||
/**
|
||||
* @var array $module_settings An array of settings provided on configuration page
|
||||
*/
|
||||
public $conf_prefix = "opc_";
|
||||
// public $conf_prefix = "opc_"; // not used anymore, prefix is fixed to 'tc_'
|
||||
/**
|
||||
* @var Config
|
||||
*/
|
||||
@@ -44,13 +44,13 @@ class TheCheckout extends Module
|
||||
{
|
||||
$this->name = 'thecheckout';
|
||||
$this->tab = 'checkout';
|
||||
$this->version = '3.3.8';
|
||||
$this->version = '3.3.10';
|
||||
$this->author = 'PrestaDev.pl';
|
||||
$this->module_key = "2e602e0a1021555e3d85311cd8ef756d";
|
||||
$this->module_key = "2e602e0a1021555e3d85311cd8ef756d1";
|
||||
//$this->moduleTHECHECKOUT_key = "2e602e0a1021555e3d85311cd8ef756d";
|
||||
//$this->moduleOPC_key = "38254238bedae1ccc492a65148109fdd";
|
||||
|
||||
$this->need_instance = 1;
|
||||
$this->need_instance = 0;
|
||||
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => '9.1');
|
||||
$this->bootstrap = true;
|
||||
|
||||
@@ -66,6 +66,16 @@ class TheCheckout extends Module
|
||||
$this->initTheCheckout();
|
||||
}
|
||||
|
||||
public function initPsKernel() {
|
||||
// Uncomment if kernel is necessary for e.g. shipping modules
|
||||
// global $kernel;
|
||||
// if(!$kernel){
|
||||
// require_once _PS_ROOT_DIR_.'/app/AppKernel.php';
|
||||
// $kernel = new \AppKernel(_PS_MODE_DEV_ ? 'dev' : 'prod', _PS_MODE_DEV_);
|
||||
// $kernel->boot();
|
||||
// }
|
||||
}
|
||||
|
||||
private function checkStripeNeedPatch()
|
||||
{
|
||||
return false; // Since checkout module v2.3.4, patch in Stripe is no more required.
|
||||
@@ -143,26 +153,21 @@ class TheCheckout extends Module
|
||||
}
|
||||
|
||||
if ($this->checkStripeNeedPatch()) {
|
||||
return 'Detected <b>stripe_official</b> payment module - it <b>requires a patch</b> to work properly with
|
||||
return 'Detected '.$this->tagIt('b', 'stripe_official').' payment module - it '.$this->tagIt('b', 'requires a patch').' to work properly with
|
||||
TheCheckout, please contact us for more details or check our blog';
|
||||
}
|
||||
|
||||
if ($this->checkMondialNeedPatch()) {
|
||||
return 'Detected <b>mondialrelay</b> shipping module - it <b>requires a patch</b> to work properly with
|
||||
return 'Detected '.$this->tagIt('b', 'mondialrelay').' shipping module - it '.$this->tagIt('b', 'requires a patch').' to work properly with
|
||||
TheCheckout, please contact us for more details or check our blog';
|
||||
}
|
||||
|
||||
if ($this->checkAmcPsShipItNeedPatch()) {
|
||||
return 'Detected <b>amcpsshipit</b> shipping module - it <b>requires a patch</b> to work properly with
|
||||
return 'Detected '.$this->tagIt('b', 'amcpsshipit').' shipping module - it '.$this->tagIt('b', 'requires a patch').' to work properly with
|
||||
TheCheckout, please update amcpsshipit.php and extend condition if ($controllerClass !== \'OrderController\') with
|
||||
&& $controllerClass !== \'TheCheckoutModuleFrontController\' and add this comment (thecheckout-patched) to remove this message';
|
||||
}
|
||||
|
||||
// if ($this->checkBraintreeNeedsPatch()) {
|
||||
// return 'Detected <b>braintreeofficial</b> payment module - it <b>requires a patch</b> to work properly with
|
||||
// TheCheckout, please contact us for more details or check our blog';
|
||||
// }
|
||||
|
||||
// $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT * FROM '. _DB_PREFIX_ .'required_field');
|
||||
// print_r($result); exit;
|
||||
|
||||
@@ -248,9 +253,21 @@ class TheCheckout extends Module
|
||||
// $this->l('PA');
|
||||
// $this->l('Invalid DNI');
|
||||
// $this->l('Probably a typo? Please try again.');
|
||||
// $this->l('You already have an account with us. Sign in or continue as guest.');
|
||||
// $this->l('Apple Pay');
|
||||
return $this->l($key);
|
||||
}
|
||||
|
||||
public function tagIt($tag, $content = '', $attr = '') {
|
||||
$lt = '<';
|
||||
$gt = '>';
|
||||
$single = in_array($tag, ['br', 'input']);
|
||||
$open = $lt.$tag.' '.$attr.$gt;
|
||||
$close = $single ? '' : $lt.'/'.$tag.$gt;
|
||||
$content = $single ? '' : $content;
|
||||
return $open.$content.$close;
|
||||
}
|
||||
|
||||
private function setConfigOptions()
|
||||
{
|
||||
$this->includeDependency('classes/Config.php');
|
||||
@@ -321,20 +338,14 @@ class TheCheckout extends Module
|
||||
$this->logger->error($msg);
|
||||
}
|
||||
|
||||
private function flatten_array($input_array)
|
||||
{
|
||||
private function flatten_array($input_array) {
|
||||
$result = array();
|
||||
array_walk_recursive($input_array, function ($array, $key) use (&$result) {
|
||||
$result[] = $key;
|
||||
});
|
||||
array_walk_recursive($input_array, function($array, $key) use (&$result) { $result[] = $key; });
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function setTagsList($key, $array_input)
|
||||
{
|
||||
$input_json = json_encode(array_map(function ($a) {
|
||||
return array('id' => $a, 'title' => $a);
|
||||
}, array_values($array_input)));
|
||||
private function setTagsList($key, $array_input) {
|
||||
$input_json = json_encode(array_map(function ($a) { return array('id' => $a, 'title' => $a); }, array_values($array_input)));
|
||||
Media::addJsDefL($key, $input_json);
|
||||
}
|
||||
|
||||
@@ -353,7 +364,7 @@ class TheCheckout extends Module
|
||||
Media::addJsDefL('thecheckout_init_html_editor', $this->l('Use HTML editor'));
|
||||
|
||||
$flattened = $this->flatten_array($this->config->blocks_layout);
|
||||
$available_layout_blocks = array_diff(array_unique($flattened), ['size']);
|
||||
$available_layout_blocks = array_diff( array_unique($flattened), ['size'] );
|
||||
$this->setTagsList('thecheckout_available_layout_blocks', $available_layout_blocks);
|
||||
|
||||
$all_fields = array_keys(array_merge($this->config->invoice_fields, $this->config->delivery_fields));
|
||||
@@ -393,26 +404,51 @@ class TheCheckout extends Module
|
||||
$existing_step_label_3 = array();
|
||||
$existing_step_validation_error_3 = array();
|
||||
|
||||
$reassurance_samples = array(
|
||||
'en' => $this->tagIt('div',
|
||||
$this->tagIt('div',
|
||||
$this->tagIt('span', '', 'class="icon"') .
|
||||
$this->tagIt('h3', 'Security policy') . 'We use modern SSL to '. $this->tagIt('b', 'secure payment'),
|
||||
'class="reassurance-section security"').
|
||||
$this->tagIt('div',
|
||||
$this->tagIt('span', '', 'class="icon"') .
|
||||
$this->tagIt('h3', 'Delivery policy') . 'Orders made on workdays, until 13:00 are '. $this->tagIt('b', 'shipped same day') . ' (if all goods are in stock)',
|
||||
'class="reassurance-section delivery"').
|
||||
$this->tagIt('div',
|
||||
$this->tagIt('span', '', 'class="icon"') .
|
||||
$this->tagIt('h3', 'Return policy') . 'Purchases can be '. $this->tagIt('b', 'returned') . ' within 14 days, without any explanation',
|
||||
'class="reassurance-section return"'),
|
||||
'class="thecheckout-reassurance"').
|
||||
$this->tagIt('p', '*please edit this in TheCheckout module configuration, Layout tab -> HTML Box No.1 for your language'),
|
||||
'cs' => $this->tagIt('div',
|
||||
$this->tagIt('div',
|
||||
$this->tagIt('span', '', 'class="icon"') .
|
||||
$this->tagIt('h3', 'Bezpečnostní politika') . 'Používáme moderní SSL pro '. $this->tagIt('b', 'bezpeční platbu'),
|
||||
'class="reassurance-section security"').
|
||||
$this->tagIt('div',
|
||||
$this->tagIt('span', '', 'class="icon"') .
|
||||
$this->tagIt('h3', 'Dodací podmínky') . 'Objednávky zadané v pracovní dny do 13:00 jsou '. $this->tagIt('b', 'odeslány v ten samý den') . ' (v případe, že všechno zboží je skladem)',
|
||||
'class="reassurance-section delivery"').
|
||||
$this->tagIt('div',
|
||||
$this->tagIt('span', '', 'class="icon"') .
|
||||
$this->tagIt('h3', 'Vrácení zboží') . 'Zboží můžete '. $this->tagIt('b', 'vrátit') . ' v lhůtě 14 dní bez uvedení důvodu.',
|
||||
'class="reassurance-section return"'),
|
||||
'class="thecheckout-reassurance"').
|
||||
$this->tagIt('p', '*prosím upravte tento blok v nastavení modulu TheCheckout, záložka Rozvržení -> HTML pole č.1 pro jazyk [ Čeština (Czech) ]')
|
||||
);
|
||||
|
||||
|
||||
foreach (Language::getLanguages() as $language) {
|
||||
$existingReassuranceHtml = Configuration::get('TC_html_box_1', $language['id_lang']);
|
||||
if (!$existingReassuranceHtml || "" == trim($existingReassuranceHtml)) {
|
||||
$reassurance_sample_html[$language['id_lang']] =
|
||||
'<' . 'div class="thecheckout-reassurance"' . '>
|
||||
<' . 'div class="reassurance-section security">' . '<' . 'span class="icon"' . '>' . '<' . '/' . 'span' . '>
|
||||
<' . 'h3' . '>Polityka bezpieczeństwa<' . '/' . 'h3' . '>
|
||||
Używamy certyfikatu SSL ' . '<' . 'b' . '>' . 'by zabezpieczyć proces zakupów.<' . '/' . 'b>' . '<' . '/' . 'div' . '>
|
||||
<' . 'div class="reassurance-section delivery"' . '>' . '<' . 'span class="icon"' . '>' . '<' . '/' . 'span' . '>
|
||||
<' . 'h3' . '>Polityka dostaw<' . '/' . 'h3' . '>
|
||||
Zamówienia złożone w dni robocze przed 10.00 <' . 'b' . '>dostawa w następnym dniu roboczym<' . '/' . 'b' . '>' . ' (jeśli są na stanie).<' . '/' . 'div' . '>
|
||||
<' . 'div class="reassurance-section return"' . '><' . 'span class="icon"' . '>' . '<' . '/' . 'span' . '>
|
||||
<' . 'h3' . '>Polityka zwrotów<' . '/' . 'h3' . '>
|
||||
Zamówione produkty <' . 'b' . '>zwrócone<' . '/' . 'b' . '> w ciągu 14 dni od daty zakupu.<' . '/' . 'div' . '>
|
||||
<' . '/' . 'div' . '>';
|
||||
if (array_key_exists($language['iso_code'], $reassurance_samples)) {
|
||||
$reassurance_sample_html[$language['id_lang']] = $reassurance_samples[$language['iso_code']];
|
||||
} else {
|
||||
$reassurance_sample_html[$language['id_lang']] = $reassurance_samples['en'];
|
||||
}
|
||||
} else {
|
||||
$reassurance_sample_html[$language['id_lang']] = Configuration::get(
|
||||
'TC_html_box_1',
|
||||
$language['id_lang']
|
||||
);
|
||||
$reassurance_sample_html[$language['id_lang']] = Configuration::get('TC_html_box_1',
|
||||
$language['id_lang']);
|
||||
}
|
||||
$existing_step_label_1 = Configuration::get('TC_step_label_1', $language['id_lang']);
|
||||
if (!$existing_step_label_1 || "" == trim($existing_step_label_1)) {
|
||||
@@ -612,7 +648,7 @@ class TheCheckout extends Module
|
||||
$iso = 'en_US';
|
||||
}
|
||||
$this->context->smarty->assign(array(
|
||||
"tc_config" => $this->config,
|
||||
"z_tc_config" => $this->config,
|
||||
"iso" => $iso
|
||||
));
|
||||
|
||||
@@ -623,30 +659,33 @@ class TheCheckout extends Module
|
||||
('module-thecheckout-order' == $this->context->controller->page_name || 'checkout' == $this->context->controller->page_name);
|
||||
$isLoginController = isset($this->context->controller->php_self) && ('authentication' == $this->context->controller->php_self) &&
|
||||
$this->config->social_login_display_on_login_page;
|
||||
$isAddressController = isset($this->context->controller->php_self) && ('address' == $this->context->controller->php_self);
|
||||
|
||||
$isOrderConfirmationController = isset($this->context->controller->php_self) && ('order-confirmation' == $this->context->controller->php_self);
|
||||
if ($isOrderConfirmationController) {
|
||||
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/iframe-payment-confirmation.js")) {
|
||||
$this->context->controller->registerJavascript('modules-thecheckout-iframe-payment-confirmation',
|
||||
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/iframe-payment-confirmation.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1),
|
||||
array('position' => 'bottom', 'priority' => 200));
|
||||
}
|
||||
}
|
||||
|
||||
if (!$isDisabled && ($isCheckoutController || $isLoginController)) {
|
||||
if (!$this->context->customer->isLogged()) {
|
||||
if ($isLoginController) {
|
||||
$this->context->controller->registerJavascript(
|
||||
'modules-thecheckout-200',
|
||||
Tools::substr(
|
||||
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/social-login-page.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1
|
||||
),
|
||||
array('position' => 'bottom', 'priority' => 1140)
|
||||
);
|
||||
$this->context->controller->registerJavascript('modules-thecheckout-200',
|
||||
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/social-login-page.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1),
|
||||
array('position' => 'bottom', 'priority' => 1140));
|
||||
Media::addJsDefL('i18_signInWithFB', $this->l('Sign in with Facebook'));
|
||||
$this->context->controller->registerStylesheet(
|
||||
'modules-thecheckout-200',
|
||||
Tools::substr(
|
||||
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/social-login-page.css",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1
|
||||
),
|
||||
$this->context->controller->registerStylesheet('modules-thecheckout-200',
|
||||
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/social-login-page.css",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1),
|
||||
array(
|
||||
'media' => 'all',
|
||||
'priority' => 1200
|
||||
)
|
||||
);
|
||||
));
|
||||
}
|
||||
|
||||
if ($this->config->social_login_fb) {
|
||||
@@ -656,7 +695,14 @@ class TheCheckout extends Module
|
||||
$ret .= $this->context->smarty->fetch($this->local_path . 'views/templates/front/_partials/social-login-google.tpl');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$isDisabled && ($isCheckoutController || $isAddressController)) {
|
||||
if ($this->config->google_maps_api_key && strlen($this->config->google_maps_api_key) > 10) {
|
||||
if ($isAddressController) {
|
||||
$isoCodes = @Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT id_country, iso_code FROM ' . _DB_PREFIX_ . 'country where active = 1');
|
||||
Media::addJsDefL('tc_countriesIsoCodes', json_encode($isoCodes));
|
||||
}
|
||||
$ret .= $this->context->smarty->fetch($this->local_path . 'views/templates/front/_partials/google-places-autocomplete.tpl');
|
||||
}
|
||||
}
|
||||
@@ -666,14 +712,10 @@ class TheCheckout extends Module
|
||||
Media::addJsDefL('dm_hash', '0');
|
||||
|
||||
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js")) {
|
||||
$this->context->controller->registerJavascript(
|
||||
'modules-thecheckout-trial',
|
||||
Tools::substr(
|
||||
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1
|
||||
),
|
||||
array('position' => 'bottom', 'priority' => 200)
|
||||
);
|
||||
$this->context->controller->registerJavascript('modules-thecheckout-trial',
|
||||
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/lib/secure-trial.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1),
|
||||
array('position' => 'bottom', 'priority' => 200));
|
||||
}
|
||||
} else {
|
||||
Media::addJsDefL('dm_mode', 0);
|
||||
@@ -682,14 +724,10 @@ class TheCheckout extends Module
|
||||
|
||||
if (trim($this->config->smartform_client_id) !== '') {
|
||||
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js")) {
|
||||
$this->context->controller->registerJavascript(
|
||||
'modules-thecheckout-smartform',
|
||||
Tools::substr(
|
||||
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1
|
||||
),
|
||||
array('position' => 'bottom', 'priority' => 500)
|
||||
);
|
||||
$this->context->controller->registerJavascript('modules-thecheckout-smartform',
|
||||
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/smartform.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1),
|
||||
array('position' => 'bottom', 'priority' => 500));
|
||||
Media::addJsDefL('tc_smartformClientId', trim($this->config->smartform_client_id));
|
||||
}
|
||||
}
|
||||
@@ -697,37 +735,23 @@ class TheCheckout extends Module
|
||||
// include assets to manipulate content on separate payment page
|
||||
if (Tools::getIsset(Config::SEPARATE_PAYMENT_KEY_NAME)) {
|
||||
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js")) {
|
||||
$this->context->controller->registerJavascript(
|
||||
'modules-thecheckout-separate-payment',
|
||||
Tools::substr(
|
||||
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1
|
||||
),
|
||||
array('position' => 'bottom', 'priority' => 200)
|
||||
);
|
||||
$this->context->controller->registerJavascript('modules-thecheckout-separate-payment',
|
||||
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/js/includes/separate-payment.js",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1),
|
||||
array('position' => 'bottom', 'priority' => 200));
|
||||
}
|
||||
if (file_exists(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css")) {
|
||||
$this->context->controller->registerStylesheet(
|
||||
'modules-thecheckout-separate-payment',
|
||||
Tools::substr(
|
||||
_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1
|
||||
),
|
||||
array('media' => 'all', 'priority' => 150)
|
||||
);
|
||||
$this->context->controller->registerStylesheet('modules-thecheckout-separate-payment',
|
||||
Tools::substr(_PS_ROOT_DIR_ . '/modules/' . $this->name . "/views/css/includes/separate-payment.css",
|
||||
Tools::strlen(_PS_ROOT_DIR_) + 1),
|
||||
array('media' => 'all', 'priority' => 150));
|
||||
}
|
||||
|
||||
$formatted_addresses = array(
|
||||
'invoice' => AddressFormat::generateAddress(
|
||||
new Address($this->context->cart->id_address_invoice),
|
||||
array(),
|
||||
'<br>'
|
||||
),
|
||||
'delivery' => AddressFormat::generateAddress(
|
||||
new Address($this->context->cart->id_address_delivery),
|
||||
array(),
|
||||
'<br>'
|
||||
),
|
||||
'invoice' => AddressFormat::generateAddress(new Address($this->context->cart->id_address_invoice),
|
||||
array(), $this->tagIt('br')),
|
||||
'delivery' => AddressFormat::generateAddress(new Address($this->context->cart->id_address_delivery),
|
||||
array(), $this->tagIt('br')),
|
||||
);
|
||||
|
||||
if (version_compare(_PS_VERSION_, '1.7.3') >= 0) {
|
||||
@@ -745,6 +769,7 @@ class TheCheckout extends Module
|
||||
);
|
||||
|
||||
$delivery_message = html_entity_decode($session->getMessage());
|
||||
|
||||
} else {
|
||||
$delivery_message = '';
|
||||
}
|
||||
@@ -774,8 +799,9 @@ class TheCheckout extends Module
|
||||
public function hookActionDispatcher($params = null)
|
||||
{
|
||||
// Stop-by only for Order and Cart controllers
|
||||
if ("OrderController" !== $params['controller_class']
|
||||
&& "CartController" !== $params['controller_class']
|
||||
if (
|
||||
("OrderController" !== $params['controller_class'] && "CartController" !== $params['controller_class']) ||
|
||||
(!$params['cookie']->id_cart && strpos(Tools::getValue('action'), 'socialLogin') !== 0)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
@@ -827,6 +853,8 @@ class TheCheckout extends Module
|
||||
}
|
||||
}
|
||||
|
||||
// $this->initPsKernel();
|
||||
|
||||
$checkoutController = new TheCheckoutModuleFrontController();
|
||||
$checkoutController->run();
|
||||
exit;
|
||||
@@ -862,22 +890,21 @@ class TheCheckout extends Module
|
||||
return $requiredCheckboxes;
|
||||
}
|
||||
|
||||
public function hookActionBuildFrontEndObject($params)
|
||||
{
|
||||
public function hookActionBuildFrontEndObject($params) {
|
||||
// $existingAddresses = $params['obj']['customer']['addresses'] ?? [];
|
||||
|
||||
// Probably we shall override JS's prestashop.customer.addresses always, regardless of being set or not by PS core
|
||||
// if (!count($existingAddresses)) {
|
||||
$deliveryAddressId = $this->context->cart->id_address_delivery;
|
||||
$invoiceAddressId = $this->context->cart->id_address_invoice;
|
||||
$newAddresses = [];
|
||||
if ($deliveryAddressId > 0) {
|
||||
$newAddresses[$deliveryAddressId] = new Address($deliveryAddressId);
|
||||
}
|
||||
if ($invoiceAddressId > 0 && $invoiceAddressId !== $deliveryAddressId) {
|
||||
$newAddresses[$invoiceAddressId] = new Address($invoiceAddressId);
|
||||
}
|
||||
$params['obj']['customer']['addresses'] = $newAddresses;
|
||||
$deliveryAddressId = $this->context->cart->id_address_delivery;
|
||||
$invoiceAddressId = $this->context->cart->id_address_invoice;
|
||||
$newAddresses = [];
|
||||
if ($deliveryAddressId > 0) {
|
||||
$newAddresses[$deliveryAddressId] = new Address($deliveryAddressId);
|
||||
}
|
||||
if ($invoiceAddressId > 0 && $invoiceAddressId !== $deliveryAddressId) {
|
||||
$newAddresses[$invoiceAddressId] = new Address($invoiceAddressId);
|
||||
}
|
||||
$params['obj']['customer']['addresses'] = $newAddresses;
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -950,13 +977,8 @@ class TheCheckout extends Module
|
||||
'category' === $params['smarty']->tpl_vars['page']->value['page_name'] &&
|
||||
file_exists($this->local_path . 'views/templates/front/_partials/secure-notice.tpl')) {
|
||||
$baseIdx = 3;
|
||||
$blocks_idxs = explode(',', Configuration::get(
|
||||
'blocks_idxs',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
($baseIdx + 1) . ',' . ($baseIdx + 31) . ',' . ($baseIdx + 101) . ',' . ($baseIdx + 102)
|
||||
));
|
||||
$blocks_idxs = explode(',', Configuration::get('blocks_idxs', null, null, null,
|
||||
($baseIdx + 1) . ',' . ($baseIdx + 31) . ',' . ($baseIdx + 101) . ',' . ($baseIdx + 102)));
|
||||
$smarty_tpl_vars = $params['smarty']->tpl_vars;
|
||||
if (isset($smarty_tpl_vars['category']) &&
|
||||
in_array($smarty_tpl_vars['category']->value['id'], $blocks_idxs)) {
|
||||
@@ -1056,26 +1078,20 @@ class TheCheckout extends Module
|
||||
|
||||
if ('alert' == Tools::getValue('postProcessResultCode')) {
|
||||
$output .=
|
||||
'<' . 'div style="margin-top: 35px" class="alert alert-danger"' . '>' .
|
||||
'<' . 'button type="button" class="close" data-dismiss="alert"' . '>×<' . '/' . 'button' . '>' .
|
||||
Tools::getValue('postProcessResult') .
|
||||
'<' . '/' . 'div' . '>';
|
||||
$this->tagIt('div',
|
||||
$this->tagIt('button','x', 'type="button" class="close" data-dismiss="alert"') . Tools::getValue('postProcessResult'),
|
||||
'style="margin-top: 35px" class="alert alert-danger"');
|
||||
} elseif ('ok' == Tools::getValue('postProcessResultCode')) {
|
||||
$output .= $this->displayConfirmation($this->trans(
|
||||
'The settings have been updated.',
|
||||
array(),
|
||||
'Admin.Notifications.Success'
|
||||
));
|
||||
$output .= $this->displayConfirmation($this->trans('The settings have been updated.', array(),
|
||||
'Admin.Notifications.Success'));
|
||||
}
|
||||
|
||||
$this->context->smarty->assign('module_dir', $this->_path);
|
||||
|
||||
if (!empty($this->warning)) {
|
||||
$output .=
|
||||
'<' . 'div style="margin-top: 35px" class="alert alert-danger"' . '>' .
|
||||
'<' . 'button type="button" class="close" data-dismiss="alert"' . '>×<' . '/' . 'button' . '>' .
|
||||
$this->warning .
|
||||
'<' . '/' . 'div' . '>';
|
||||
$this->tagIt('div', $this->tagIt('button','x', 'type="button" class="close" data-dismiss="alert"') . $this->warning,
|
||||
'style="margin-top: 35px" class="alert alert-danger"');
|
||||
}
|
||||
|
||||
$this->context->smarty->assign(array(
|
||||
@@ -1213,6 +1229,8 @@ class TheCheckout extends Module
|
||||
$subst = '$0 ' . $blocksLayoutSortable;
|
||||
$result = preg_replace($re, $subst, $result, 1);
|
||||
|
||||
$paypal_express_active = Module::isEnabled('paypal');
|
||||
$result .= $this->tagIt('input', '','type="hidden" name="tc_paypal_express_checkout_active" value="'.$paypal_express_active);
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -1328,12 +1346,8 @@ class TheCheckout extends Module
|
||||
$this->l('Test mode'),
|
||||
$this->l('Checkout module will be enabled only when using URL parameter:') . ' ' . Config::TEST_MODE_KEY_NAME,
|
||||
array(),
|
||||
$this->l('When enabled, Checkout is visible only using this URL: ') . ' ' . '<' . 'a href="' . $this->context->link->getPageLink(
|
||||
'order',
|
||||
true,
|
||||
null,
|
||||
Config::TEST_MODE_KEY_NAME
|
||||
) . '">' . $this->l('Checkout-test-URL') . '<' . '/' . 'a>'
|
||||
$this->l('When enabled, Checkout is visible only using this URL: ') . ' ' .
|
||||
$this->tagIt('a', $this->l('Checkout-test-URL'), 'href='.$this->context->link->getPageLink('order', true, null, Config::TEST_MODE_KEY_NAME))
|
||||
),
|
||||
$this->generateSwitch(
|
||||
'separate_cart_summary',
|
||||
@@ -1362,18 +1376,18 @@ class TheCheckout extends Module
|
||||
$this->generateSelect(
|
||||
'font',
|
||||
$this->l('Checkout form font') .
|
||||
'<' . 'input type="hidden" name="font-weight-Montserrat" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Open-Sans" value="light 300,regular 400,semi-bold 600,bold 700,extra-bold 800">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Open-Sans-Condensed" value="light 300,bold 700">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Playfair-Display" value="regular 400,bold 700,black 900">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Dosis" value="extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Titillium-Web" value="extra-light 200,light 300,regular 400,semi-bold 600,bold 700,black 900">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Indie-Flower" value="regular 400">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Great-Vibes" value="regular 400">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Gloria-Hallelujah" value="regular 400">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Amatic-SC" value="regular 400,bold 700">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Exo-2" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900">' .
|
||||
'<' . 'input type="hidden" name="font-weight-Yanone-Kaffeesatz" value="extra-light 200,light 300,regular 400,bold 700">',
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Montserrat" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Open-Sans" value="light 300,regular 400,semi-bold 600,bold 700,extra-bold 800"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Open-Sans-Condensed" value="light 300,bold 700"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Playfair-Display" value="regular 400,bold 700,black 900"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Dosis" value="extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Titillium-Web" value="extra-light 200,light 300,regular 400,semi-bold 600,bold 700,black 900"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Indie-Flower" value="regular 400"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Great-Vibes" value="regular 400"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Gloria-Hallelujah" value="regular 400"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Amatic-SC" value="regular 400,bold 700"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Exo-2" value="thin 100,extra-light 200,light 300,regular 400,medium 500,semi-bold 600,bold 700,extra-bold 800,black 900"') .
|
||||
$this->tagIt('input','', 'type="hidden" name="font-weight-Yanone-Kaffeesatz" value="extra-light 200,light 300,regular 400,bold 700"'),
|
||||
$this->l('Font-family used on checkout form'),
|
||||
array(
|
||||
array('id' => 'theme-default', 'name' => 'Theme default'),
|
||||
@@ -1511,6 +1525,11 @@ class TheCheckout extends Module
|
||||
$this->l('Inactive because "Show I am a private" is disabled.'),
|
||||
'desc-visible-only-when-inactive'
|
||||
),
|
||||
$this->generateSwitch(
|
||||
'use_other_field_for_business_private',
|
||||
$this->l('Use "other" field for business/private'),
|
||||
$this->l('Store status of "I am a business" and "I am a private" checkboxes in address "other" field.')
|
||||
),
|
||||
$this->generateSwitch(
|
||||
'offer_second_address',
|
||||
$this->l('Offer second address'),
|
||||
@@ -1546,6 +1565,11 @@ class TheCheckout extends Module
|
||||
$this->l('Show "Save" button in Personal Info'),
|
||||
$this->l('Display button to save guest/account before showing shipping and payment methods')
|
||||
),
|
||||
$this->generateSwitch(
|
||||
'use_old_address_on_reorder',
|
||||
$this->l('Use old address on reorder'),
|
||||
$this->l('When customer makes Re-order, use the same address as in original order - do not use his latest address')
|
||||
),
|
||||
$this->generateText(
|
||||
'google_maps_api_key',
|
||||
$this->l('Google maps API key'),
|
||||
@@ -1647,6 +1671,12 @@ class TheCheckout extends Module
|
||||
$this->l('When single payment method is selected, collapse remaining ones'),
|
||||
array()
|
||||
),
|
||||
$this->generateSwitch(
|
||||
'logos_on_the_right',
|
||||
$this->l('Shipping/payment logos on the right'),
|
||||
$this->l('Show shipping and payment logos on the right side in a listing'),
|
||||
array()
|
||||
),
|
||||
),
|
||||
'submit' => array(
|
||||
'title' => $this->l('Save')
|
||||
@@ -1705,11 +1735,8 @@ class TheCheckout extends Module
|
||||
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
|
||||
'class' => 'tinymce-on-demand',
|
||||
'col' => 8,
|
||||
'hint' => $this->trans(
|
||||
'Invalid characters:',
|
||||
array(),
|
||||
'Admin.Notifications.Info'
|
||||
) . ' <>;=#{}'
|
||||
'hint' => $this->trans('Invalid characters:', array(),
|
||||
'Admin.Notifications.Info') . ' <>;=#{}'
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
@@ -1719,11 +1746,8 @@ class TheCheckout extends Module
|
||||
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
|
||||
'class' => 'tinymce-on-demand',
|
||||
'col' => 8,
|
||||
'hint' => $this->trans(
|
||||
'Invalid characters:',
|
||||
array(),
|
||||
'Admin.Notifications.Info'
|
||||
) . ' <>;=#{}'
|
||||
'hint' => $this->trans('Invalid characters:', array(),
|
||||
'Admin.Notifications.Info') . ' <>;=#{}'
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
@@ -1733,11 +1757,8 @@ class TheCheckout extends Module
|
||||
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
|
||||
'class' => 'tinymce-on-demand',
|
||||
'col' => 8,
|
||||
'hint' => $this->trans(
|
||||
'Invalid characters:',
|
||||
array(),
|
||||
'Admin.Notifications.Info'
|
||||
) . ' <>;=#{}'
|
||||
'hint' => $this->trans('Invalid characters:', array(),
|
||||
'Admin.Notifications.Info') . ' <>;=#{}'
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
@@ -1747,17 +1768,14 @@ class TheCheckout extends Module
|
||||
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
|
||||
'class' => 'tinymce-on-demand',
|
||||
'col' => 8,
|
||||
'hint' => $this->trans(
|
||||
'Invalid characters:',
|
||||
array(),
|
||||
'Admin.Notifications.Info'
|
||||
) . ' <>;=#{}'
|
||||
'hint' => $this->trans('Invalid characters:', array(),
|
||||
'Admin.Notifications.Info') . ' <>;=#{}'
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
'label' => $this->l('Required Checkbox No.1'),
|
||||
'name' => 'TC_required_checkbox_1',
|
||||
'desc' => 'To enable a required checkbox in checkout page, fill-in the checkbox label here. You can add label also with link, for example: <' . 'br' . '><' . 'b' . '>' . 'I agree with <a href="content/3-privacy-policy">privacy policy</a><' . '/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 <a href="content/3-privacy-policy">privacy policy</a>'),
|
||||
'lang' => true,
|
||||
'autoload_rte' => '', //'rte' = enable TinyMCE editor, empty = not enabled
|
||||
'class' => 'tinymce-on-demand',
|
||||
@@ -1800,47 +1818,37 @@ class TheCheckout extends Module
|
||||
$this->generateSwitch(
|
||||
'checkout_steps',
|
||||
$this->l('Checkout steps'),
|
||||
$this->l('Enable virtual steps'),
|
||||
array(),
|
||||
$this->l('Enable virtual steps'), array(),
|
||||
$this->l('Leave \'Label\' empty if you wish to disable particular step below') .
|
||||
'<div id="set-steps-sample"><a data-confirm-msg="'. $this->l('Are you sure? This will change blocks layout and also add custom CSS rules.') . '">' .
|
||||
$this->l('Click to set Starting configuration sample') . "</a></div>"
|
||||
$this->tagIt('div', $this->tagIt('a', $this->l('Click to set Starting configuration sample'),
|
||||
'data-confirm-msg="'. $this->l('Are you sure? This will change blocks layout and also add custom CSS rules.').'"'),
|
||||
'id="set-steps-sample"')
|
||||
),
|
||||
// Step 1
|
||||
$this->generateText(
|
||||
'step_label_1',
|
||||
$this->l('Label'),
|
||||
$this->l('Step 1 label, multi-language field'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-1',
|
||||
true
|
||||
array(), '', 'config-step-1', true
|
||||
),
|
||||
$this->generateText(
|
||||
'step_blocks_1',
|
||||
$this->l('Visible blocks'),
|
||||
$this->l('Comma separated list of blocks visible in this step'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-1'
|
||||
array(), '', 'config-step-1'
|
||||
),
|
||||
// Step 2
|
||||
$this->generateText(
|
||||
'step_label_2',
|
||||
$this->l('Label'),
|
||||
$this->l('Step 2 label, multi-language field'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-2',
|
||||
true
|
||||
array(), '', 'config-step-2', true
|
||||
),
|
||||
$this->generateText(
|
||||
'step_blocks_2',
|
||||
$this->l('Visible blocks'),
|
||||
$this->l('Comma separated list of blocks visible in this step'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-2'
|
||||
array(), '', 'config-step-2'
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
@@ -1859,29 +1867,20 @@ class TheCheckout extends Module
|
||||
'step_validation_error_2',
|
||||
$this->l('Error message'),
|
||||
$this->l('Error shown to user when validation to reach this step fails'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-2',
|
||||
true
|
||||
array(), '', 'config-step-2', true
|
||||
),
|
||||
// Step 3
|
||||
$this->generateText(
|
||||
'step_label_3',
|
||||
$this->l('Label'),
|
||||
$this->l('Step 3 label, multi-language field'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-3',
|
||||
true
|
||||
array(), '', 'config-step-3', true
|
||||
),
|
||||
$this->generateText(
|
||||
'step_blocks_3',
|
||||
$this->l('Visible blocks'),
|
||||
$this->l('Comma separated list of blocks visible in this step'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-3',
|
||||
false
|
||||
array(), '', 'config-step-3', false
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
@@ -1900,29 +1899,20 @@ class TheCheckout extends Module
|
||||
'step_validation_error_3',
|
||||
$this->l('Error message'),
|
||||
$this->l('Error shown to user when validation to reach this step fails'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-3',
|
||||
true
|
||||
array(), '', 'config-step-3', true
|
||||
),
|
||||
// Step 4
|
||||
$this->generateText(
|
||||
'step_label_4',
|
||||
$this->l('Label'),
|
||||
$this->l('Step 4 label, multi-language field'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-4',
|
||||
true
|
||||
array(), '', 'config-step-4', true
|
||||
),
|
||||
$this->generateText(
|
||||
'step_blocks_4',
|
||||
$this->l('Visible blocks'),
|
||||
$this->l('Comma separated list of blocks visible in this step'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-4',
|
||||
false
|
||||
array(), '', 'config-step-4', false
|
||||
),
|
||||
array(
|
||||
'type' => 'textarea',
|
||||
@@ -1941,10 +1931,7 @@ class TheCheckout extends Module
|
||||
'step_validation_error_4',
|
||||
$this->l('Error message'),
|
||||
$this->l('Error shown to user when validation to reach this step fails'),
|
||||
array(),
|
||||
'',
|
||||
'config-step-4',
|
||||
true
|
||||
array(), '', 'config-step-4', true
|
||||
),
|
||||
),
|
||||
|
||||
@@ -2005,6 +1992,14 @@ class TheCheckout extends Module
|
||||
$this->l('Display also on PS login page'),
|
||||
$this->l('Social login buttons will be shown also on Prestashop default login page')
|
||||
)
|
||||
// $this->generateSwitch(
|
||||
// 'paypal_express_checkout',
|
||||
// $this->l('Paypal express checkout'),
|
||||
// $this->l('Show Paypal express checkout button in Sign-in area'),
|
||||
// array(),
|
||||
// $this->l('Inactive because Paypal module is NOT enabled.'),
|
||||
// 'desc-visible-only-when-inactive'
|
||||
// )
|
||||
),
|
||||
|
||||
'submit' => array(
|
||||
@@ -2030,6 +2025,11 @@ class TheCheckout extends Module
|
||||
$this->l('Clean checkout session'),
|
||||
$this->l('Clean remembered status of checkboxes (Terms & conditions, Customer privacy, ...) after order is confirmed')
|
||||
),
|
||||
$this->generateSwitch(
|
||||
'assign_customer_id_asap',
|
||||
$this->l('Assign Address to Customer ASAP'),
|
||||
$this->l('Even when Address is not yet fully filled-in, assign it to Customer as soon as possible')
|
||||
),
|
||||
$this->generateText(
|
||||
'ps_css_cache_version',
|
||||
$this->l('PS CSS cache version'),
|
||||
@@ -2070,8 +2070,8 @@ class TheCheckout extends Module
|
||||
'hint' => $this->l('Custom JS, (!) consider that jQuery might be loaded later, use it only in plain JS DOMready handler!'),
|
||||
'class' => 'max-size-lg',
|
||||
// Generate reset link markup through description of this very last config element
|
||||
'desc' => '<div id="reset-all-settings">'.
|
||||
$this->l('Reset ALL SETTINGS to default values') .': <span class="reset-link" data-section="ALL SETTINGS" data-action="resetAllSettings"></span></div>'
|
||||
'desc' => $this->tagIt('div',$this->l('Reset ALL SETTINGS to default values') . ': '. $this->tagIt('span', '', 'class="reset-link" data-section="ALL SETTINGS" data-action="resetAllSettings"'),
|
||||
'id="reset-all-settings"')
|
||||
),
|
||||
),
|
||||
|
||||
@@ -2125,6 +2125,7 @@ class TheCheckout extends Module
|
||||
Configuration::get($name, (int)$lang['id_lang'])
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
return array_merge($tc_options, $other_options, $fields_localized);
|
||||
}
|
||||
@@ -2135,7 +2136,7 @@ class TheCheckout extends Module
|
||||
protected function postProcess()
|
||||
{
|
||||
//if ('demo@demo.com' == $this->context->employee->email) {
|
||||
// return 'This is DEMO store, set in <' . 'b' . '>read-only mode<' . '/' . 'b' . '>, settings cannot be updated.';
|
||||
// return 'This is DEMO store, set in read-only mode, settings cannot be updated.';
|
||||
//}
|
||||
$errors = '';
|
||||
|
||||
@@ -2144,6 +2145,7 @@ class TheCheckout extends Module
|
||||
));
|
||||
|
||||
foreach (array_keys($form_values) as $key) {
|
||||
|
||||
$errors .= $this->config->updateByName($key);
|
||||
//echo "updating $key with: ".Tools::getValue($key)."\n\n";
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_020c2091aec3019d02193cef080bcf97'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Vyžadován checkbox č.1';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Vyžadován checkbox č.2';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Možná překlep? Prosím zkuste to znovu.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f7207e8a369e565ea88ad64be867e80a'] = 'Už u nás máte účet. Přihlaste se nebo pokračujte jako host.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_368fe771261fcb18f7988833c9294a20'] = 'Návod';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ef70fe300c69a44e69d930f40ec17fd6'] = 'Jak vytvořit Facebook App ID a Secret?';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_04aef6cc5b0457f1992c53b260512ccc'] = 'Jak vytvořit Google Client ID and Secret?';
|
||||
@@ -87,9 +88,12 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_5cfecdee97aedd59782a36558b276ba1'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_279693ab12adc751d603a7ef7cc129b4'] = 'Při prvním načtení košíku se inicializuje Adresa - aktivujte jenom když Vaši přepravci závisí na adrese nebo používaté widget pro odhad datumu / času dodání';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d23da85a488d5a36b9d6c21b87b5b9be'] = 'Zobraz tlačítko \"Uložit\" v sekci Osobní informace';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_09b187fa484cb537515ac230e4ecd0e7'] = 'Zákazník musí \"Uložit\" Osobní informace před zobrazením způsobů přepravy a platby - použijte v případě, že Vaše přepravní nebo platební moduly vyžadují vytvořený účet.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_eebe9bb92bb6af7f4268b298caa45986'] = 'Původní adresy při znovu-objednání';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_aeda727de969841338bf6ac66c91b27c'] = 'Když zákazník použije funkci objednat znovu, předvyberou se adresy použité při původní objednávce, t.j. nepoužijí se jeho nejnovější adresy.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e0fec84c6a529b8bc9d40e42cdcd02ba'] = 'Google maps API klíč';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0f2b4315a2ae98076259c3ec37a68eed'] = 'API klíč pro službu doplňování adresy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7bd9d84f516ab95a7b5d1603423825ba'] = 'Nastavte API klíč pro zapnutí funkce doplňování adresy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c9b709510aa783ba2cc5fc6e1e5ec4e8'] = 'Pro doplňování Českých a Slovenských adres';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d1e8b16bd7dcf9767116d34e3626444f'] = 'Přeprava a Platba';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Vynutit zvolení země';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_45ab5651afbfeee56ebf21053ef1b3ba'] = 'Skryje způsoby přepravy a odoznačí předvolenou zemi, což přinutí zákazníka zvolit zemi a až pak uvidí způsoby přepravy';
|
||||
@@ -114,8 +118,12 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_f4da157e669ad954ca1063310bccc99a'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0fa9672e69bbcd0e6e6274df9a725330'] = 'Pokud je zvolen způsob přapravy, ostatní způsoby se schovají';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9235432fb9d9616dacecdf0583490573'] = 'Schovat způsoby platby';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_659a188ea1a3d15738b9554520c90fbb'] = 'Pokud je zvolen způsob platby, ostatní způsoby se schovají';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bc662f89a16f511fffea55013dd25702'] = 'Loga dopravců a plateb vpravo';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9f897e9d0d6b5bd91f853812c4f81508'] = 'Zobrazí loga dopravců a plateb napravo od názvu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1640a6435b91ac7acb3ef36e9dfc197e'] = 'Pole adresy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ebd9bec4d70abc789d439c1f136b0538'] = 'Rozvržení';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Přesunout přihlášení do bloku účet';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Zobrazí nabídku přihlášení v horní části bloku účtu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a2229590cf589ce982e1891a7f194104'] = 'HTML pole č.1';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML pole č.2';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_237959b1bb2bc9e30b0d2d526ac4c35a'] = 'HTML pole č.3';
|
||||
@@ -124,8 +132,8 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_f3a29486bed19a90f2da6d007818b427'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_35fab128e0c8232829a4b8b6eb0eebe2'] = 'Kroky v košíku';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3137d4e00674c1ac08f8904f94cab707'] = 'Aktivovuje virtuální kroky v košíku';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_335af32bd7b95ee70332041b8b62b6ef'] = 'Nechte pole \'Popis\' prázdné, pokud nechcete daný krok použít';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_499b257fbc18720b981e243c0403cbc8'] = 'Určitě? Změní se i rozložení sekcí a přidá se Custom CSS kód.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d9fbcb055979997e1828726cd4ebd818'] = 'Klikněte pro vzorovou konfiguraci.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_499b257fbc18720b981e243c0403cbc8'] = 'Určitě? Změní se i rozložení sekcí a přidá se Custom CSS kód.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_b021df6aac4654c454f46c77646e745f'] = 'Popis';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Popis kroku č.1, je možné zadat popis pro různé jazyky';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c477048d0832c367da078df08c429569'] = 'Zobrazené sekce';
|
||||
@@ -148,9 +156,15 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_cbfdaa9ce5eb620875701b69e93ef240'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_83b4f1306e5fd5d77bf725a252b7fe13'] = '\'Client ID\' kód z Google developers API';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_386b07d40ba6a78eaf150cb4a6ca6aa3'] = '\'Client Secret\' kód z Google developers API';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5222a2ea579802f15d9b3b7686cc4ac4'] = 'Styl tlačítek';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4f7f8f230c7892a475fe8536e3c0786c'] = 'Zobrazit také na přihlašovací stránce PS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_511d2a69923b4d67f68aa041de4acb68'] = 'Login tlačítka se zobrazí také na výchozí přihlašovací stránce Prestashop';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c464fdf93af3eba7d2f018b42a0e7d68'] = 'Zobrazit tlačítko pro Paypal express checkout v bloku přihlášení';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bd5875df2eeae205ea71dde844360cd1'] = 'Neaktivní, protože modul Paypal NENÍ povolen.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9b6545e4cea9b4ad4979d41bb9170e2b'] = 'Pokročilé';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2d614e2af90c0e53143574430071b0f3'] = 'Zapomenout stav košíkové session';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e8910cc1981cd20b3f704e738569edca'] = 'Zapomene stav checkboxů (různé souhlasy) po potvrzení objednávky. Vhodné zapnout když chcete vynutit zaškrtnutí při každé objednávce toho samého zákazníka.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_66ab0c98fcae4caa431be53ebd98fd17'] = 'Nastavit adresu zákazníkovi co nejdříve';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a4f7268616cd2005ddbb1d3e489d4748'] = 'I když adresa ještě není zcela vyplněna, přiradí se co nejdříve zákazníkovi';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_088a98b774d277617b0cafd43bee4398'] = 'PS CSS verze systémové cache';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_fd30bf78415712f2e3e2408872c93703'] = 'Zvyšte hodnotu cache-id pokud potřebujete vynutit obnovení minifikovaného cache souboru';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_faf7133064ec9dc6bf27fd5c8c95c054'] = 'PS JS verze systémové cache';
|
||||
@@ -217,7 +231,10 @@ $_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Poslat na jinou adresu';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Doručovací adresa';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Změnit adresu';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Nakupuji na firmu';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Nakupuji jako spotřebitel';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Fakturovat na jinou adresu';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_4d26a4e106aa8a35f25d97fd14055981'] = 'Přeji si vytvořit účet';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Chybí číslo ulice';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Horní 235';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(nepovinné)';
|
||||
|
||||
@@ -11,20 +11,15 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_0362fbd010f7c3dd68bdf43707497f8b'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a61135d90c71314ab95d73045f3a6968'] = 'Dodatkowe pole nr.4';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e5405e2b17df4a7c87bae444cf74dbc5'] = 'Dodatkowe pole nr.5';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_020c2091aec3019d02193cef080bcf97'] = 'Metoda płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Wymagane pole checkbox #1';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Wymagane pole checkbox #2';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_feb0f83763ffbce1dd2a640cfaecd940'] = 'SDI';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ae9c8ff8b03900d519995001118b9e4d'] = 'PEC';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_06f6a489209115c5cef3f45036aad3ec'] = 'PA';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_081cb23adfff623ec98dfb6e7d5673ea'] = 'Nie prawidłowy numer DNI';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Wymagane pole wyboru nr 1';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Wymagane pole wyboru nr 2';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Prawdopodobnie literówka? Proszę spróbuj ponownie.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_368fe771261fcb18f7988833c9294a20'] = 'Tutorial';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f7207e8a369e565ea88ad64be867e80a'] = 'Masz już u nas konto. Zaloguj się lub kontynuuj jako gość.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ef70fe300c69a44e69d930f40ec17fd6'] = 'Jak utworzyć identyfikator aplikacji Facebook i klucz secret?';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_04aef6cc5b0457f1992c53b260512ccc'] = 'Jak utworzyć identyfikator klienta Google i klucz secret?';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_09f528290e1be8f60121b7822d57bcfb'] = 'Jak utworzyć klucz API map Google?';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9e8be93331a53b67e484e6a135d616b5'] = 'Zresetuj domyślną konfigurację dla';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_30c39756e5084394d51f2806683b3ef8'] = 'Użyj edytora HTML';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d7085e2b5b40144896a996a297e3847d'] = 'Zaloguj się z Facebook';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d1eb833874dffe11131f82a82077187f'] = 'Pola formularz klienta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_93eb8b33c7191c7df06dcd8b79a95b2e'] = 'Pola formularza adresu faktury';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_518f4c51b8e8cf98e1ae8e7d83447ca0'] = 'Pola formularza adresu dostawy';
|
||||
@@ -33,128 +28,130 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_00d23a76e43b46dae9ec7aa9dcbebb32'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_b9f5c797ebbf55adccdd8539a65a0241'] = 'Wyłączone';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0db377921f4ce762c62526131097968f'] = 'Główne ustawienia';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4245499695408b974322be6f01b0d17a'] = 'Tryb testowy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d8f5c412a5db756a0d2b13a6e3d808a1'] = 'Moduł koszyka zostanie włączony tylko przy użyciu parametru adresu URL:';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8e5b9dff85ed69fece9fe5a4f4251f87'] = 'Po włączeniu usługa Checkout jest widoczna tylko przy użyciu tego adresu URL: ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d8f5c412a5db756a0d2b13a6e3d808a1'] = 'Moduł kasy zostanie włączony tylko w przypadku użycia parametru URL:';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8e5b9dff85ed69fece9fe5a4f4251f87'] = 'Po włączeniu usługa Checkout jest widoczna tylko przy użyciu tego adresu URL:';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8b155326841f2a2c70769eb9250ad186'] = 'URL testu Checkout-u';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8aa091003f4ed518d2259626fa0fada8'] = 'Oddzielne podsumowanie koszyka';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_93a721dd9497cdcc09153679c13e09e4'] = 'Wyświetl podgląd koszyka przed zakupem. W przeciwnym razie przejdź bezpośrednio do procesu zakupowego';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7345b84221ad2845f6f86cb911e42802'] = 'Stylowanie formularza procesu zakupów';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dce119d532c1c7ba1ddf708999e14ed3'] = 'Predefiniowane style, wybierz jeden i dokonaj dalszych dostosowań w plikach CSS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dce119d532c1c7ba1ddf708999e14ed3'] = 'Wstępnie zdefiniowane style, wybierz jeden i wprowadź dalsze dostosowania w plikach CSS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f5a8ebc4feca0648ebd035130b00155d'] = 'Minimalny - wybierz, jeśli wykonujesz wiele niestandardowych CSS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_234763312f3ed61b0d2ff78b33d71507'] = 'Śliczne - zaokrąglone rogi, płaskie, bez animacji';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a65ed164784e56a22e6514ae659dba14'] = 'Nowoczesne - zmaterializowane style 3d';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_46088bcab8148956d826af8efbcc3ce7'] = 'Czysty- w stylu niemieckim';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_46088bcab8148956d826af8efbcc3ce7'] = 'Clean - niemiecki styl, granice legendy, tylko kilka efektów';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f0b1ccae19a55a420f8dc9862b6eaf02'] = 'Czcionka formularza procesu zakupów';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f0c6aa2e4f605345b3f7c1ae4c77a1f6'] = 'Rodzina czcionek używana w formularzu procesu zakupów';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dd47ba7fc524dae895ebac9e45348dd9'] = 'Grubość czcionki';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7c835e80f65debd61bc7b9d7254a70c8'] = 'Jak \"gruba\" będzie czcionka';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c03bfb7476c17a7c82493eb7bb1e5003'] = 'Używaj ikon materiałów';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_79ac069315735c920605a93ccfcdf343'] = 'Wyłącz, jeśli Twój motyw NIE korzysta z ikon materiałów (większość motywów PS1.7 go używa)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2c75551687f8b885af7625ade5295ac9'] = 'Loader dla bloków';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2c75551687f8b885af7625ade5295ac9'] = 'Moduł ładujący aktualizację bloków';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_879db1c4d5cef354f772919a2ac2a51c'] = 'Wyświetlaj animację ładowania za każdym razem, gdy bloki w formularzu kasy są aktualizowane przez Ajax.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8b147e8f84dd39a802480b58b6b9059d'] = 'Kompaktowy koszyk';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5ea09f716787c0257a52f714f33ca87f'] = 'Jeśli masz blok koszyka w wąskiej kolumnie, ta opcja sprawi, że koszyk będzie lepiej pasować do małej szerokości.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7ae536068882e59ea1d025e8db464832'] = 'Pokaż informacje o stanie produktu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e546d5e5798692adb0d15823cf1e4b46'] = 'Wyświetl podsumowanie w magazynie, w magazynie lub brakującej ilości w koszyku.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8b147e8f84dd39a802480b58b6b9059d'] = 'Kompaktowy wózek';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5ea09f716787c0257a52f714f33ca87f'] = 'Jeśli masz blok wózka w cienkiej kolumnie, ta opcja sprawi, że projekt wózka będzie lepiej pasował do małej szerokości.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7ae536068882e59ea1d025e8db464832'] = 'Pokaż informacje o magazynie produktów';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e546d5e5798692adb0d15823cf1e4b46'] = 'Wyświetla ilość w magazynie, brak w magazynie lub brakującą ilość w podsumowaniu koszyka.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c9cc8cce247e49bae79f15173ce97354'] = 'Zapisz';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dd40f868e9e5ae4efbd8b7d469b94264'] = 'Klient i adres';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_51809ca4b5f1f9802840f94b9e3b5767'] = 'Wymuś nakładkę e-mail';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d13a8f0a78e2a9599f4a8849a650dc47'] = 'Ukrywa formularz zakupowy, dopóki klient się nie zaloguje lub nie wprowadzi wiadomości e-mail. Uwaga: Wymusi to cichą rejestrację!';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3950fe11ca6c10c657eca505fb0a6c53'] = 'Nieaktywny, ponieważ hasło jest wymagane w sekcji Pola klienta.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d13a8f0a78e2a9599f4a8849a650dc47'] = 'Ukrywa formularz realizacji transakcji do czasu zalogowania się klienta lub wpisania adresu e-mail. Uwaga: wymusi to cichą rejestrację!';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3950fe11ca6c10c657eca505fb0a6c53'] = 'Nieaktywne, ponieważ w sekcji Pola klienta wymagane jest ustawienie hasła.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8eb0e6076b9e04da1f3d8b2ec0c7441e'] = 'Po cichu zarejestruj konto gościa';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ab2d86fc5ba000cef672c364944818f5'] = 'Zarejestruj konto gościa automatycznie, gdy klient wypełni pole e-mail. Uwaga: Zakupy dla gości muszą być włączone!';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_33da89796a0ec28047c8283dee17ec7a'] = 'Nieaktywny, ponieważ włączona jest opcja „Wymuś nakładkę e-mail”.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5de896c6747a927f8ba5416f6bf21f50'] = 'Zezwalaj na przyjmowanie gości dla zarejestrowanych';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_01e733ab2c3a319e61be216fa5ffdead'] = 'Zezwalaj nawet zarejestrowanym klientom na zamówienia jako gość, aby nie było wymagane logowanie.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ab2d86fc5ba000cef672c364944818f5'] = 'Zarejestruj konto gościa automatycznie, gdy klient wypełni pole e-mail. Uwaga: musi być włączona funkcja kasowania gości!';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_33da89796a0ec28047c8283dee17ec7a'] = 'Nieaktywne, ponieważ włączona jest opcja „Wymuś nakładkę e-mail”.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5de896c6747a927f8ba5416f6bf21f50'] = 'Zezwalaj na kasę gościnną dla zarejestrowanych';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_01e733ab2c3a319e61be216fa5ffdead'] = 'Pozwól nawet zarejestrowanym klientom na realizację transakcji jako gość, dzięki czemu nie jest wymagane logowanie.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3a3df23cca9592a4f6f22ee79e26b1a9'] = 'Pole wyboru \"Utwórz konto\"';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8df2fec7b477ea43eeaccdd08f69ae0f'] = 'Zamiast pola hasła pokaż pole wyboru, aby utworzyć konto. \"hasło\" nie może być wymagane w polach klienta poniżej.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c46a048666d56df34733e7db61c76a4b'] = 'Pokaż pole wyboru \"Jestem firmą\"';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f7798ad0c7f0481d2e9cf37b87917d0c'] = 'Pokaż pole wyboru na górze adresu faktury, co spowoduje rozwinięcie pól firmowych i podatkowych';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ab4a04a19b1b29bab635deb4ea51acd4'] = 'Pokaż pole wyboru \"Jestem firmą\" w adresie dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_53f6f23877e143b3147764311bfe51e9'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, co rozwinie pola Firma i numer VAT';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_01ac200aa4fde394ef13da890bb29a94'] = '.. pol bizensowe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ab4a04a19b1b29bab635deb4ea51acd4'] = '„Jestem firmą” w adresie dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_53f6f23877e143b3147764311bfe51e9'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, co rozwinie pola Firma i podatek';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_01ac200aa4fde394ef13da890bb29a94'] = '...obszary biznesowe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_db0b2e900d72bbf985076523d340e6c6'] = 'Rozdzielana przecinkami lista pól pokazana w oddzielnej sekcji dla klientów biznesowych';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1d13e7254965c494c9e60bba574c99e3'] = 'Nieaktywny, ponieważ „Pokaż, że jestem firmą” jest wyłączone.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1fe6fb10cdeca2ace3db8b9185a40c15'] = '.. wyłączone pola biznesowe ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0848fa8ca4180d676c524a2a5ef746a2'] = 'Rozdzielona przecinkami lista pól ukrytych dla klientów biznesowych (widoczna tylko dla innych)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_375b6233cb0ea0d44071ad58aedd7877'] = 'Pokaz \"Jestem klientem prywatnym\" pole wyboru';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a706ab7df922b5ce69adaab9eb74beaa'] = 'Pokaże pole wyboru na górze adresu do faktury, które będzie rozwiniete';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c5f143d6ad58a47d2545bbfdcef971d1'] = 'Pokaz \"Jestem klientem prywatnym\" pole wyboru w adresie dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c4465575f7c097f647d87896c56cba6f'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, co rozwinie (zwykle) pole dni';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_b0361fc89b0d10dee9c3c3b698049aba'] = '....pola prywatnego klienta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4f2f7717196071e4740cb118ce0870a7'] = 'Oddzielona przecinkami lista pól pokazana w osobnej sekcji dla klientów prywatnych ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_576f816790a8b47768fb256a2f0f74d8'] = 'Nieaktywne, ponieważ opcja „Pokaż, że jestem prywatnym klientem” jest wyłączona. ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1d13e7254965c494c9e60bba574c99e3'] = 'Nieaktywne, ponieważ opcja „Pokaż, że jestem firmą” jest wyłączona.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1fe6fb10cdeca2ace3db8b9185a40c15'] = '... pola dla osób niepełnosprawnych biznesowo';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0848fa8ca4180d676c524a2a5ef746a2'] = 'Lista pól oddzielonych przecinkami UKRYTA dla klientów biznesowych (widoczna tylko dla innych)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_375b6233cb0ea0d44071ad58aedd7877'] = 'Pokaż pole wyboru „Jestem klientem prywatnym”.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a706ab7df922b5ce69adaab9eb74beaa'] = 'Pokaż pole wyboru na górze adresu faktury, które rozwinie (zwykle) pole dni';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c5f143d6ad58a47d2545bbfdcef971d1'] = '„Jestem klientem prywatnym” w adresie dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c4465575f7c097f647d87896c56cba6f'] = 'Pokaż pole wyboru na górze adresu *Dostawy*, które rozwinie (zwykle) pole dni';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_b0361fc89b0d10dee9c3c3b698049aba'] = '... pola klientów prywatnych';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4f2f7717196071e4740cb118ce0870a7'] = 'Lista pól oddzielonych przecinkami pokazana w osobnej sekcji dla klientów prywatnych';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_576f816790a8b47768fb256a2f0f74d8'] = 'Nieaktywne, ponieważ opcja „Pokaż, że jestem prywatnym” jest wyłączona.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3a6d6b12d0acde19a54b34b29173bd88'] = 'Zaoferuj drugi adres';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ca180b42dfb89f59df825d2cfa730987'] = 'W głównym adresie (fakturze) zaznacz pole wyboru, aby rozwinąć drugi adres (dostawa)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_38752a8491cc15f92f3bfe564819fcb5'] = 'Automatycznie rozwijaj drugi adres';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0a5257d71d1b16bef8753b3699aafe70'] = 'Sprawdź, czy oba adresy (faktura + dostawa) są widoczne od razu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_76152639439c91e37b4114425129216a'] = 'Zaznacz wymagane pola (*)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ce44a24d986a7c14734bbf7d159634d5'] = 'Pokaż czerwoną gwiazdkę obok wymaganej etykiety pola';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d81977209c6519c11278b7f8b39b6d9c'] = 'Newsletter zaznaczony domyślnie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e4ba505bcd85e1d676149ddf3955e593'] = 'Newsletter zaznaczony domyślnie - ps_emailsubscription moduł musi być włączony';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_cadbf263f422d0e0477eefed970e7693'] = 'Pokaż prefix numeru telefonu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8e404fbe455f95cad7a766f7fab58bde'] = 'Pokaż prefix numeru telefonu na początku pola z numerem telefonu (dynamicznie zmieniane bazując na kraju wybranym)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d81977209c6519c11278b7f8b39b6d9c'] = 'Biuletyn domyślnie zaznaczony';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e4ba505bcd85e1d676149ddf3955e593'] = 'Pole wyboru Newsletter będzie domyślnie zaznaczone - moduł ps_emailsubscription musi być włączony!';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_cadbf263f422d0e0477eefed970e7693'] = 'Pokaż prefiks połączenia';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8e404fbe455f95cad7a766f7fab58bde'] = 'Wyświetl numer prefiksu połączenia przed polami numeru telefonu - zmienia się dynamicznie w zależności od wybranego kraju';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5cfecdee97aedd59782a36558b276ba1'] = 'Zainicjuj adres';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_279693ab12adc751d603a7ef7cc129b4'] = 'Podczas początkowego ładowania ustaw obiekt adresu - włącz, jeśli metody wysyłki zależą od identyfikatora adresu lub jeśli używasz widżetu daty / godziny dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d23da85a488d5a36b9d6c21b87b5b9be'] = 'Pokaż przycisk „Zapisz” w informacjach osobistych ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_09b187fa484cb537515ac230e4ecd0e7'] = 'Wyświetl przycisk, aby zapisać gościa / konto przed wyświetleniem metod wysyłki i płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_279693ab12adc751d603a7ef7cc129b4'] = 'Przy pierwszym ładowaniu ustaw obiekt adresu - włącz, jeśli metody wysyłki zależą od identyfikatora adresu lub jeśli korzystasz z widżetu daty/godziny dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d23da85a488d5a36b9d6c21b87b5b9be'] = 'Pokaż przycisk „Zapisz” w informacjach osobistych';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_09b187fa484cb537515ac230e4ecd0e7'] = 'Wyświetl przycisk umożliwiający zapisanie gościa/konta przed wyświetleniem metod wysyłki i płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_eebe9bb92bb6af7f4268b298caa45986'] = 'Oryginalny adres przy ponownym zamówieniu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_aeda727de969841338bf6ac66c91b27c'] = 'Kiedy klient składa ponowne zamówienie, użyj tego samego adresu, co w pierwotnym zamówieniu - nie używaj jego najnowszego adresu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e0fec84c6a529b8bc9d40e42cdcd02ba'] = 'Klucz API map Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0f2b4315a2ae98076259c3ec37a68eed'] = 'Klucz API umożliwiający automatyczne uzupełnianie adresów Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7bd9d84f516ab95a7b5d1603423825ba'] = 'Ustaw klucz API, aby włączyć automatyczne uzupełnianie adresów Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d41085761a011df55d32d157f3024e02'] = 'Smartform clientId';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c9b709510aa783ba2cc5fc6e1e5ec4e8'] = 'W przypadku autouzupełniania adresu czeskiego/słowackiego';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4cebcb37232b5f70ef1e9879f3988300'] = 'Ustaw identyfikator klienta (clientId) z poziomu administracji Smartform (prawy górny róg)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0f2b4315a2ae98076259c3ec37a68eed'] = 'Klucz API umożliwiający automatyczne uzupełnianie adresu Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7bd9d84f516ab95a7b5d1603423825ba'] = 'Ustaw klucz API, aby włączyć automatyczne uzupełnianie adresu Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c9b709510aa783ba2cc5fc6e1e5ec4e8'] = 'W przypadku adresów wysyłkowych w Czechach i na Słowacji są one uzupełniane automatycznie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d1e8b16bd7dcf9767116d34e3626444f'] = 'Dostawa i płatność';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Wymuś na kliencie wybór kraju';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_45ab5651afbfeee56ebf21053ef1b3ba'] = 'Na początku ukrywa metody wysyłki i odznacz kraj, aby klient musiał wybrać kraj ręcznie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ad24dd475f201d88a6ff27b2ecc9c828'] = 'Wymagane pola dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0b6a5e5303a78d305550503227096074'] = 'Rozdzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje wysyłki, w tym: id_state, kod pocztowy, miasto';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_701c34f41890a3444300b6290432c645'] = 'Zmuś klienta do wyboru przewoźnika ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ab64e8a77cf76885f8a0f1d29bd606f2'] = 'Odznacz domyślnego przewoźnika i zmuś klienta do dokonania własnego wyboru ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d9c07f06e99782f73f623c09f8a2e541'] = 'Pokaż „wysyłkę do” w bloku dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_da36d8fc577d053eaae305f4f163cdb5'] = 'Pokaż nazwę przesyłki w wyborze przewoźników, dla lepszej przejrzystości';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1f8e177d632f88ce6b442dbc0f61f7c2'] = 'Zmuś klienta do wyboru kraju';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_45ab5651afbfeee56ebf21053ef1b3ba'] = 'Ukrywa metody wysyłki i na początku odznacza kraj, tak że klient musi wybrać kraj ręcznie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ad24dd475f201d88a6ff27b2ecc9c828'] = 'Pola wymagane do wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0b6a5e5303a78d305550503227096074'] = 'Oddzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje wysyłki, np.: id_state, kod pocztowy, miasto';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_701c34f41890a3444300b6290432c645'] = 'Zmuś klienta do wyboru przewoźnika';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ab64e8a77cf76885f8a0f1d29bd606f2'] = 'Odznacz domyślnego przewoźnika i zmuś klienta do dokonania własnego wyboru';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d9c07f06e99782f73f623c09f8a2e541'] = 'Pokaż „wysyłka do” u przewoźników';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_da36d8fc577d053eaae305f4f163cdb5'] = 'Dla większej przejrzystości pokaż nazwę kraju wysyłki przy wyborze przewoźnika';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_290d08e3417867bc8a510c7e757c445a'] = 'Usuń spacje z kodu pocztowego';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0f49b4dae642e026c8ea0e79a03b8c1f'] = 'Po zmodyfikowaniu pola kodu pocztowego spacje wewnętrzne są usuwane automatycznie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0f49b4dae642e026c8ea0e79a03b8c1f'] = 'Po zmodyfikowaniu pola kodu pocztowego spacje wewnętrzne są automatycznie usuwane';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1cb049175732c198e1eb4a3c340667a5'] = 'Pokaż wiadomość zamówienia';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_241973cbee85abce3d2c8bfab9a92870'] = 'Pokaż Textarea dla dowolnego komunikatu o zamówieniu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2dcb573a9ad3cfdf065f94b41dfce113'] = 'Metody płatnośći na osobnej stronie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ee9573ddb54069593c93c5865885b2c3'] = 'Lista ostatecznych opcji płatności zostanie wyświetlona na osobnej stronie. Opcjonalne dla dowolnej metody płatności, ale wymagane, jeśli masz: [Prestashop Checkout lub Braintree Official]';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_86a482bde3bd752bb98c92dec2df5bf1'] = 'Opcja wymuszona, ponieważ moduł płatności [Prestashop Checkout lub oficjalny Braintree] jest włączony';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2dcb573a9ad3cfdf065f94b41dfce113'] = 'Opcje płatności na osobnej stronie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ee9573ddb54069593c93c5865885b2c3'] = 'Ostateczna lista opcji płatności zostanie wyświetlona na osobnej stronie. Opcjonalne dla dowolnej metody płatności, ale wymagane, jeśli masz: [Prestashop Checkout lub Braintree oficjalny]';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_86a482bde3bd752bb98c92dec2df5bf1'] = 'Opcja wymuszona, ponieważ moduł płatności [Prestashop Checkout lub Braintree oficjalny] jest włączony';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2abaf2b064ef33e1cb25174b229d45da'] = 'Domyślna metoda płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7af2c009f6d9bdbe89a7c1c035a94af8'] = 'Którą metodę płatności wybiera się domyślnie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c8e608334254ae14807323821f622019'] = 'Wymagane pola płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_b5b732a95e3ebc8fa8cb9444f43016da'] = 'Rozdzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje płatności, w tym.: Id_state, nazwisko';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_39a6e1af273e63c2ab3cb3df8a0c3891'] = 'Nieaktywny, ponieważ „Opcje płatności na osobnej stronie” są włączone.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c8e608334254ae14807323821f622019'] = 'Pola wymagane do płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_b5b732a95e3ebc8fa8cb9444f43016da'] = 'Oddzielona przecinkami lista pól, które należy wypełnić, aby wyświetlić opcje płatności, np.: id_state, lastname';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_39a6e1af273e63c2ab3cb3df8a0c3891'] = 'Nieaktywne, ponieważ włączona jest opcja „Opcje płatności na osobnej stronie”.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f4da157e669ad954ca1063310bccc99a'] = 'Zwiń metody wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0fa9672e69bbcd0e6e6274df9a725330'] = 'Gdy wybrana jest pojedyncza metoda wysyłki, zwiń pozostałe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_0fa9672e69bbcd0e6e6274df9a725330'] = 'W przypadku wybrania pojedynczej metody wysyłki zwiń pozostałe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9235432fb9d9616dacecdf0583490573'] = 'Zwiń metody płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_659a188ea1a3d15738b9554520c90fbb'] = 'Gdy wybrana jest pojedyncza metoda płatności, zwiń pozostałe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_659a188ea1a3d15738b9554520c90fbb'] = 'Po wybraniu pojedynczej metody płatności zwiń pozostałe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bc662f89a16f511fffea55013dd25702'] = 'Logo wysyłki/płatności po prawej stronie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9f897e9d0d6b5bd91f853812c4f81508'] = 'Pokaż logo wysyłki i płatności po prawej stronie w widoku metod';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_1640a6435b91ac7acb3ef36e9dfc197e'] = 'Pola adresowe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_ebd9bec4d70abc789d439c1f136b0538'] = 'Układ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Przenieść logowanie do bloku konta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Wyświetla panel logowania na górze bloku konta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2e85d91c2ee3a1593778ae296781aca2'] = 'Przenieś login do blokady konta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_af2aa73f27ec9887b018026622b217e2'] = 'Przenieś sekcję logowania do konta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a2229590cf589ce982e1891a7f194104'] = 'HTML box nr.1';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e98220ebb8bfae2a604684d55eb90314'] = 'HTML box nr.2';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_237959b1bb2bc9e30b0d2d526ac4c35a'] = 'HTML box nr.3';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dff191476bb6fc6505df0ac0feb4196a'] = 'HTML box nr.4';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f3a29486bed19a90f2da6d007818b427'] = 'Kroki';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_35fab128e0c8232829a4b8b6eb0eebe2'] = 'Kroki procesu zakupowego';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_35fab128e0c8232829a4b8b6eb0eebe2'] = 'Kroki kasy';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3137d4e00674c1ac08f8904f94cab707'] = 'Włącz wirtualne kroki';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_335af32bd7b95ee70332041b8b62b6ef'] = 'Pozostaw pole „Etykieta” puste, jeśli chcesz wyłączyć określony krok poniżej';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_335af32bd7b95ee70332041b8b62b6ef'] = 'Jeśli chcesz wyłączyć określony krok poniżej, pozostaw opcję „Etykieta” pustą';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d9fbcb055979997e1828726cd4ebd818'] = 'Kliknij, aby ustawić próbkę konfiguracji początkowej';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_499b257fbc18720b981e243c0403cbc8'] = 'Jesteś pewny? Spowoduje to zmianę układu bloków, a także dodanie niestandardowych reguł CSS.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_d9fbcb055979997e1828726cd4ebd818'] = 'Kliknij, aby ustawić Próbkę konfiguracji początkowej';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_b021df6aac4654c454f46c77646e745f'] = 'Etykieta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_847e6d4c6cbc5c00bce6990243be1db8'] = 'Etykieta kroku 1, pole wielojęzyczne';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c477048d0832c367da078df08c429569'] = 'Widoczne bloki';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9d08b3d2d7e49f6776ce95ff0887629b'] = 'Oddzielona przecinkami lista bloków widocznych w tym kroku';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9d08b3d2d7e49f6776ce95ff0887629b'] = 'Lista rozdzielonych przecinkami bloków widocznych w tym kroku';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f80850c55f43a798f0aac4ea930a91f6'] = 'Etykieta kroku 2, pole wielojęzyczne';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_058809ec6e7124a5cd1b5eb1a68fca8d'] = 'Wyrażenie walidacji (JS)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5ac3ad9aac3ddba0f492ac737999d3aa'] = 'Aby przejść do tego kroku, wymagane jest wyrażenie sprawdzania poprawności JS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_058809ec6e7124a5cd1b5eb1a68fca8d'] = 'Wyrażenie walidacyjne (JS)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5ac3ad9aac3ddba0f492ac737999d3aa'] = 'Do osiągnięcia tego kroku wymagane jest wyrażenie sprawdzające JS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e20cbb947afcf84cf58de1358ee1068d'] = 'Komunikat o błędzie';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7c1c2360ccbebc336c8ea2f8b4fb7e59'] = 'Błąd wyświetlany użytkownikowi, gdy sprawdzanie poprawności w celu osiągnięcia tego kroku nie powiedzie się';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7c1c2360ccbebc336c8ea2f8b4fb7e59'] = 'Błąd pokazywany użytkownikowi, gdy weryfikacja dotarcia do tego kroku nie powiedzie się';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_57332a8bbbaf983d292d1c56fef26ca9'] = 'Etykieta kroku 3, pole wielojęzyczne';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_165e07c5032fa2218d83c0d1fae1459e'] = 'Etykieta kroku 4, pole wielojęzyczne';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_63a9da971d0d4ff2763b41a487f644d2'] = 'Reguły sprawdzania poprawności JS dla tego kroku';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_63a9da971d0d4ff2763b41a487f644d2'] = 'Reguły walidacji JS dla tego kroku';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e21a59ad123e5cfb3f4569129bb87d58'] = 'Logowanie społecznościowe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_34013ea6c574585085c7569fbf7c0a70'] = 'Logowanie Facebook';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e2c483e0ded711e9d0c7947443475c40'] = 'Włącz logoanie z kontem Facebook-a';
|
||||
@@ -162,26 +159,25 @@ $_MODULE['<{thecheckout}prestashop>thecheckout_466ff61f4367f43a1e2bf7656be3a022'
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_139e25e29b316c755292d2437eea404f'] = 'Identyfikator aplikacji od API programistów Facebooka';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_fd125f225efc3440c92a219e9b396543'] = 'Facebook App Secret';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_8127caa8daeb1f5940435fa5f31a437e'] = 'Klucz secret aplikacji z API programistów Facebooka';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3a5fc7304426efef6c0cce713a174072'] = 'Logowanie przez Google ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_cbfdaa9ce5eb620875701b69e93ef240'] = 'Włącz logowanie przez Google ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_cbfdaa9ce5eb620875701b69e93ef240'] = 'Włącz logowanie Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2a9fc9efe56971027f8c92eff8dc0c39'] = 'Google ID klienta';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_83b4f1306e5fd5d77bf725a252b7fe13'] = 'Identyfikator klienta od API programistów Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_3708118127eeeb0b1c89deca62badbfa'] = 'Google client secret';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_386b07d40ba6a78eaf150cb4a6ca6aa3'] = 'Klucz klienta secret od API programistów Google';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_5222a2ea579802f15d9b3b7686cc4ac4'] = 'Styl przycisków logowania';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4f7f8f230c7892a475fe8536e3c0786c'] = 'Wyświetl również na stronie logowania sklepu';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_511d2a69923b4d67f68aa041de4acb68'] = 'Przyciski logowania społecznościowego będą również wyświetlane na domyślnej stronie logowania Prestashop';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4f7f8f230c7892a475fe8536e3c0786c'] = 'Wyświetlaj także na stronie logowania PS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_511d2a69923b4d67f68aa041de4acb68'] = 'Przyciski logowania społecznościowego będą wyświetlane także na domyślnej stronie logowania Prestashop';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c464fdf93af3eba7d2f018b42a0e7d68'] = 'Pokaż przycisk ekspresowej realizacji transakcji PayPal w obszarze logowania';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bd5875df2eeae205ea71dde844360cd1'] = 'Nieaktywny, ponieważ moduł PayPal NIE jest włączony.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_9b6545e4cea9b4ad4979d41bb9170e2b'] = 'Zaawansowany';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_45c65f91f37fdd8133aca725bf8f4165'] = 'Odśwież mini-koszyk';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_f62409740c2d72dab4675544d2357727'] = 'Przy każdej aktualizacji koszyka również aktualizacje mini-koszyka (dostępne tylko dla niektórych szablonów)';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_2d614e2af90c0e53143574430071b0f3'] = 'Czysta sesja procesu zakupów';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_e8910cc1981cd20b3f704e738569edca'] = 'Czysty, zapamiętany status pól wyboru (Warunki, prywatność klienta, ...) po potwierdzeniu zamówienia';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_66ab0c98fcae4caa431be53ebd98fd17'] = 'Przypisz adres klientowi jak najszybciej';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a4f7268616cd2005ddbb1d3e489d4748'] = 'Nawet jeśli Adres nie jest jeszcze w pełni wypełniony, przypisz go Klientowi tak szybko, jak to możliwe';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_088a98b774d277617b0cafd43bee4398'] = 'Wersja pamięci podręcznej CSS PS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_fd30bf78415712f2e3e2408872c93703'] = 'Zwiększ, jeśli zmiany w plikach CSS nie są widoczne w procesie zakupowym';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_faf7133064ec9dc6bf27fd5c8c95c054'] = 'Wersja pamięci podręcznej PS JS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_4c78c10b2395a12d88628daa7bac79d5'] = 'Zwiększ, jeśli zmiany w plikach JS nie są widoczne w procesie zakupowym';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_7a56b6af5555f2d6126ebbe477efcb6e'] = 'Automatyczne renderowanie PS Checkout wyłączone ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c0497424704d18745b4632286334082c'] = 'Ustaw opcję ps_checkout_auto_render_disabled ';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_42e6feb7f76e910efcda54034ecc83ce'] = 'Własne style CSS';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_df327001e4ac7d3d586835d8fa588c44'] = 'Niestandardowy CSS używany w procesie zakupowym';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_a2122f3de6b6faa3a601d1f85a2df298'] = 'Własny kod JS';
|
||||
@@ -193,6 +189,14 @@ $_MODULE['<{thecheckout}prestashop>customer-fields_ec24d78ce33048dc73a2b6b1a0690
|
||||
$_MODULE['<{thecheckout}prestashop>customer-fields_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Wymagane';
|
||||
$_MODULE['<{thecheckout}prestashop>customer-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]';
|
||||
$_MODULE['<{thecheckout}prestashop>customer-fields_669202ab0d075ca23040e1abac74ba04'] = '- zarządzane automatycznie -';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_a10fb8536bc9d4d3eb2180a2ab24570e'] = 'Edytuj klasy bloków - kliknij, aby rozwinąć';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_fe7b2cea70b3d3d0da8d82cf312f1ace'] = 'Pozwala to na dalszą manipulację przy użyciu wstępnie zdefiniowanych klas CSS. Możesz użyć tych predefiniowanych klas:';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_6481c22f8022411a6bf1c0ef19b2e42b'] = 'Ustaw liczbę dla bloku:';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_bdadd7083181526ea914a5d2ee44906a'] = 'Ustaw blok niewidoczny:';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_f4fd334279b439bb2497de073113cbc9'] = 'Ustaw pozycję bloku na urządzeniu mobilnym (właściwość \'order\' flexbox)';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_ebb4e560b49135dbdd2ed94a066ca1ff'] = 'Ustaw blok koszyka na tryb przyklejenia kolumny';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_2d8f76f3ce5cc381926d3c3b456c075e'] = 'Usuń nagłówek z bloku (np. adresu).';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_f2fb8719eae0b02799b90a6e2d0d1a08'] = 'Możesz też użyć niestandardowych klas zdefiniowanych w dowolnym miejscu w CSS, np.';
|
||||
$_MODULE['<{thecheckout}prestashop>address-fields_7c0ce662f121e2b553cf8733d73f7bd5'] = 'Zmiana kolejności';
|
||||
$_MODULE['<{thecheckout}prestashop>address-fields_eff88d54854b0637031f4066736623bc'] = 'Nazwa pola';
|
||||
$_MODULE['<{thecheckout}prestashop>address-fields_ec24d78ce33048dc73a2b6b1a0690192'] = 'Widoczne';
|
||||
@@ -200,69 +204,58 @@ $_MODULE['<{thecheckout}prestashop>address-fields_b651efdb98a5d6bd2b3935d0c3f4a5
|
||||
$_MODULE['<{thecheckout}prestashop>address-fields_955ad3298db330b5ee880c2c9e6f23a0'] = 'Dynamiczne';
|
||||
$_MODULE['<{thecheckout}prestashop>address-fields_3d0c3c4d8dbd68fc293694a7f5c0db9f'] = 'Szerokość [%]';
|
||||
$_MODULE['<{thecheckout}prestashop>address-fields_669202ab0d075ca23040e1abac74ba04'] = '- zarządzane automatycznie -';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_a10fb8536bc9d4d3eb2180a2ab24570e'] = 'Edytuj klasy bloków - kliknij, aby rozwinąć';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_fe7b2cea70b3d3d0da8d82cf312f1ace'] = 'Pozwala to na dalszą manipulację przy użyciu wstępnie zdefiniowanych klas CSS. Możesz użyć tych predefiniowanych klas:';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_6481c22f8022411a6bf1c0ef19b2e42b'] = 'Ustaw liczbę dla bloku:';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_bdadd7083181526ea914a5d2ee44906a'] = 'Ustaw blok niewidoczny:';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_f4fd334279b439bb2497de073113cbc9'] = 'Ustaw pozycję bloku na urządzeniu mobilnym (właściwość \'order\' flexbox)';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_ebb4e560b49135dbdd2ed94a066ca1ff'] = 'Ustaw blok koszyka na tryb przyklejenia do kolumny';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_2d8f76f3ce5cc381926d3c3b456c075e'] = 'Usuń nagłówek z bloku (np. adresu) ';
|
||||
$_MODULE['<{thecheckout}prestashop>blocks-layout_f2fb8719eae0b02799b90a6e2d0d1a08'] = 'Możesz też użyć niestandardowych klas zdefiniowanych w dowolnym miejscu w CSS, np.';
|
||||
$_MODULE['<{thecheckout}prestashop>front_4cc5d65de5302609630b8185d99d16bb'] = 'Wprowadź siedmiocyfrowy kod SDI. Wpisz siedem razy zero (0000000), jeśli nie masz kodu SDI';
|
||||
$_MODULE['<{thecheckout}prestashop>front_007d68b97afe3a874a17fbae7c4b90c0'] = 'Po potwierdzeniu formularza pojawi się okienko płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>front_ad92169e95e13b3fcd8bad5afedbd49b'] = 'Błąd weryfikacji';
|
||||
$_MODULE['<{thecheckout}prestashop>front_9c4164c072282c2ab419a843347ad7e2'] = 'Tryb testowy jest włączony, widoczny jest tylko moduł Zamówienie.';
|
||||
$_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'Ok, zamknij';
|
||||
$_MODULE['<{thecheckout}prestashop>front_007d68b97afe3a874a17fbae7c4b90c0'] = 'Po potwierdzeniu formularza pojawi się wyskakujące okienko dotyczące płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>front_ad92169e95e13b3fcd8bad5afedbd49b'] = 'Błąd walidacji';
|
||||
$_MODULE['<{thecheckout}prestashop>front_9c4164c072282c2ab419a843347ad7e2'] = 'Tryb testowy jest włączony, tylko Ty widzisz aktywny moduł Kasa.';
|
||||
$_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'OK, zamknij';
|
||||
$_MODULE['<{thecheckout}prestashop>front_0557fa923dcee4d0f86b1409f5c2167f'] = 'Z powrotem';
|
||||
$_MODULE['<{thecheckout}prestashop>front_300225ee958b6350abc51805dab83c24'] = 'Kontynuować zakupy';
|
||||
$_MODULE['<{thecheckout}prestashop>front_c290a5941ad6eb0d5fe8752c15c5fd78'] = 'Następny krok';
|
||||
$_MODULE['<{thecheckout}prestashop>front_0009f88d4eb5a6f588108ce3d45ea1a4'] = 'Potwierdź i pokaż płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_0da0a5ab420b2906c2c3c593d6d78647'] = 'Prosimy wybrać metodę płątności';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_63a2cc551776bf22869f963c36a65eb9'] = 'Aby zobaczyć opcje płatności, wybierz kraj dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz swoje:';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_ab7f27fdc4aa0e21f532b9c4dd0c3a6a'] = 'Podaj swój adres e-mail, aby zobaczyć opcje płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_6c7061d2fea6be43ad4fcfe3eabc7ca3'] = 'Zapisz swoje dane osobowe, aby zobaczyć opcje płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_348a68af11d3c251c25d1d905867773d'] = 'Inne opcje płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>account_2fdfd506efea08144c0794c32ca8250a'] = 'Utwórz konto';
|
||||
$_MODULE['<{thecheckout}prestashop>account_b4e68ab758cc4e36a043a7bdb418c062'] = 'Zapisz dane osobowe';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_8797ca7dc4de41ee400665f53c842a42'] = 'Proszę wybrać sposób dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_76d5f66dd7c64439d8f886935db5ed58'] = 'Aby zobaczyć opcje wysyłki, wybierz kraj dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz swoje:';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_7c5b66448b4e626068a036ef408c336d'] = 'Podaj swój adres e-mail, aby zobaczyć opcje wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_2690c48fe8919c089ddbefe036492a1b'] = 'Zapisz swoje dane osobowe, aby zobaczyć opcje wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_f2b4f5787d9c6797725ff6c2924c8f28'] = 'Inne opcje wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>confirm_8e021690c587eb788d4caf0d6f6784b0'] = 'Proszę zaakceptować regulamin sklepu';
|
||||
$_MODULE['<{thecheckout}prestashop>confirm_dcd2f414067d31441432886d40f1adcc'] = 'Wystąpił błąd w formularzu procesu zakupowego, proszę wprowadzić poprawki';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = 'lub';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_d7085e2b5b40144896a996a297e3847d'] = 'Zaloguj się z Facebook';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_03350966af02d441ef43f9a56c35c5c9'] = 'Zalogowanie się powiodło, prosimy poczekać...';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_0aaac8b981bdf916d2060a424690dff1'] = 'Nowy klient lub gość do kasy? Zacznij od e-maila.';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_8c3c555f8e492a991b7d235af1c1a597'] = 'Kontynuuj >';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_9fc096a9da7670b366f6bc91c3ca3935'] = 'Proszę podać swój adres e-mail, aby kontynuować składanie zamówienia.';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_1fbc7e5f1b92c7ec072397b59a0bb5da'] = 'Adres faktury';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Dostawa pod inny adres';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Adres dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Zmiana adresu';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Faktura na inny adres';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_8797ca7dc4de41ee400665f53c842a42'] = 'Proszę wybrać sposób dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_76d5f66dd7c64439d8f886935db5ed58'] = 'Wybierz kraj wysyłki, aby zobaczyć opcje wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz:';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_7c5b66448b4e626068a036ef408c336d'] = 'Podaj swój adres e-mail, aby zobaczyć opcje wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_2690c48fe8919c089ddbefe036492a1b'] = 'Zapisz swoje dane osobowe, aby móc zobaczyć opcje wysyłki ';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_f2b4f5787d9c6797725ff6c2924c8f28'] = 'Inne opcje wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>account_2fdfd506efea08144c0794c32ca8250a'] = 'Utwórz konto';
|
||||
$_MODULE['<{thecheckout}prestashop>account_b4e68ab758cc4e36a043a7bdb418c062'] = 'Zapisz dane personalne';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_1fbc7e5f1b92c7ec072397b59a0bb5da'] = 'Adres faktury';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_aca89f3de809fc6630068ad413c20f8c'] = 'Jestem klientem biznesowym';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da789'] = 'Jestem klientem prywatnym ';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Dostawa pod inny adres';
|
||||
$_MODULE['<{thecheckout}prestashop>confirm_8e021690c587eb788d4caf0d6f6784b0'] = 'Proszę zaakceptować regulamin sklepu';
|
||||
$_MODULE['<{thecheckout}prestashop>confirm_dcd2f414067d31441432886d40f1adcc'] = 'Wystąpił błąd w formularzu procesu zakupowego, proszę wprowadzić poprawki';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_0da0a5ab420b2906c2c3c593d6d78647'] = 'Prosimy wybrać metodę płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_63a2cc551776bf22869f963c36a65eb9'] = 'Wybierz kraj, aby zobaczyć opcje płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Najpierw wpisz:';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_ab7f27fdc4aa0e21f532b9c4dd0c3a6a'] = 'Podaj swój adres e-mail, aby zobaczyć opcje płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_6c7061d2fea6be43ad4fcfe3eabc7ca3'] = 'Zapisz swoje dane osobowe, aby zobaczyć opcje płatności ';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_348a68af11d3c251c25d1d905867773d'] = 'Inne opcje płatności';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = 'lub';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_d7085e2b5b40144896a996a297e3847d'] = 'Zaloguj się z Facebook';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_03350966af02d441ef43f9a56c35c5c9'] = 'Zalogowanie się powiodło, prosimy poczekać...';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_0aaac8b981bdf916d2060a424690dff1'] = 'Nowy klient lub gość? Zacznij od adresu e-mail.';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_8c3c555f8e492a991b7d235af1c1a597'] = 'Kontynuuj >';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_9fc096a9da7670b366f6bc91c3ca3935'] = 'Podaj swój adres e-mail, aby kontynuować składanie zamówienia.';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_4d26a4e106aa8a35f25d97fd14055981'] = 'Wybierz hasło, aby utworzyć konto i zaoszczędzić czas przy następnym zamówieniu (opcjonalnie)';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Brakuje numeru a adresie';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Twoja nazwa ulicy 14';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_8da8e55074b9f89a5b479a6d8c6e5dc2'] = '0911235669';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(opcjonalne)';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_4d26a4e106aa8a35f25d97fd14055981'] = 'Wybierz hasło, aby założyć konto i zaoszczędzić czas przy kolejnym zamówieniu (opcjonalnie)';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Brakuje numeru ulicy?';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_f53d1cd25e03173ba9eaa4e493636769'] = '(opcjonalny)';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_3389dae361af79b04c9c8e7057f60cc6'] = '*';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_d4d77380dc0608bac380eaec9c1eab36'] = 'Na stanie u dostawcy';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_b55197a49e8c4cd8c314bc2aa39d6feb'] = 'Brak na stanie';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_e71a03592770c34aa4164b8212098563'] = 'Dostępny na magazynie';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_dc6c32f4320d95f02c77e4fc7b7ea6e5'] = 'szt.';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_752b5c9d86a955c013daa3ccf2241386'] = 'Pozostała ilość w ';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_2e152f4c9e8cba38f50ca76ebe1ac0ef'] = 'Prosimy dostosować ilość';
|
||||
$_MODULE['<{thecheckout}prestashop>payment-confirmation-button_99938b17c91170dfb0c2f3f8bc9f2a85'] = 'Zapłać';
|
||||
$_MODULE['<{thecheckout}prestashop>customer-addresses-dropdown_7d807ccbace31aa0bbf0d41099c75099'] = 'Zapisane adresy:';
|
||||
$_MODULE['<{thecheckout}prestashop>customer-addresses-dropdown_03c2e7e41ffc181a4e84080b4710e81e'] = 'Nowy';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_38c118edcf699e74f48cc943c4250c92'] = 'Pozostała kwota do darmowej wysyłki:';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_8797ca7dc4de41ee400665f53c842a42'] = 'Wybierz metodę wysyłki';
|
||||
$_MODULE['<{thecheckout}prestashop>payment-confirmation-button_99938b17c91170dfb0c2f3f8bc9f2a85'] = 'Płacić';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_d4d77380dc0608bac380eaec9c1eab36'] = 'W magazynie dostawcy';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_b55197a49e8c4cd8c314bc2aa39d6feb'] = 'Obecnie brak na stanie';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_e71a03592770c34aa4164b8212098563'] = 'Tylko w magazynie';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_dc6c32f4320d95f02c77e4fc7b7ea6e5'] = 'szt.';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_752b5c9d86a955c013daa3ccf2241386'] = 'Pozostałe szt. w';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_2e152f4c9e8cba38f50ca76ebe1ac0ef'] = 'Proszę dostosować ilość';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_38c118edcf699e74f48cc943c4250c92'] = 'Pozostała kwota, aby skorzystać z bezpłatnej wysyłki:';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_8797ca7dc4de41ee400665f53c842a42'] = 'Proszę wybrać sposób dostawy';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_d3487ff3db8ee621475532d31c533e88'] = 'Waga całkowita';
|
||||
|
||||
@@ -2,34 +2,47 @@
|
||||
|
||||
global $_MODULE;
|
||||
$_MODULE = array();
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Req. checkbox number one';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Req. checkbox number two';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Upss, že by překlep? Zkuste to ještě jednou.';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_dcf65d10c36e1f1a1666b056b34fbdfb'] = 'Required Checkbox No.1';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_bf0aa1963c8d5c00add58bcee953162f'] = 'Required Checkbox No.2';
|
||||
$_MODULE['<{thecheckout}prestashop>thecheckout_c6e2a15d67f4d4097c5c3923beccc22d'] = 'Upss, že by preklep? Skúste to znovu prosím.';
|
||||
$_MODULE['<{thecheckout}prestashop>front_007d68b97afe3a874a17fbae7c4b90c0'] = 'Po potvrdení formulára sa zobrazí okno platby';
|
||||
$_MODULE['<{thecheckout}prestashop>front_ad92169e95e13b3fcd8bad5afedbd49b'] = 'Validačná chyba';
|
||||
$_MODULE['<{thecheckout}prestashop>front_9c4164c072282c2ab419a843347ad7e2'] = 'Test mód aktívny, len Vy vidíte TheCheckout modul';
|
||||
$_MODULE['<{thecheckout}prestashop>front_0aecaf172b94ce806b064c40b67df176'] = 'OK, zatvoriť';
|
||||
$_MODULE['<{thecheckout}prestashop>front_0557fa923dcee4d0f86b1409f5c2167f'] = 'Naspäť';
|
||||
$_MODULE['<{thecheckout}prestashop>front_300225ee958b6350abc51805dab83c24'] = 'Pokračovať v nákupe';
|
||||
$_MODULE['<{thecheckout}prestashop>front_c290a5941ad6eb0d5fe8752c15c5fd78'] = 'Ďalší krok';
|
||||
$_MODULE['<{thecheckout}prestashop>front_0009f88d4eb5a6f588108ce3d45ea1a4'] = 'Potvrdiť a zobraziť spôsoby platby';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_0da0a5ab420b2906c2c3c593d6d78647'] = 'Prosím vyberte spôsob platby';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_63a2cc551776bf22869f963c36a65eb9'] = 'Pre zobrazenie spôsobov platieb, prosím vyberte krajinu doručenia';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Začíname, prosím zadajte:';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_ab7f27fdc4aa0e21f532b9c4dd0c3a6a'] = 'Pre zobrazenie spôsobov platieb, prosím zadajte Váš email';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_6c7061d2fea6be43ad4fcfe3eabc7ca3'] = 'Pre zobrazenie možností platby, uložte najprv svoje osobné údaje';
|
||||
$_MODULE['<{thecheckout}prestashop>payment_348a68af11d3c251c25d1d905867773d'] = 'Ďalšie možnosti platby';
|
||||
$_MODULE['<{thecheckout}prestashop>account_2fdfd506efea08144c0794c32ca8250a'] = 'Vytvoriť účet';
|
||||
$_MODULE['<{thecheckout}prestashop>account_b4e68ab758cc4e36a043a7bdb418c062'] = 'Uložiť osobné údaje';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_8797ca7dc4de41ee400665f53c842a42'] = 'Prosím vyberte spôsob dopravy';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_76d5f66dd7c64439d8f886935db5ed58'] = 'Pre zobrazenie spôsobov dopravy, prosím vyberte krajinu doručenia';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_30f9c69c23c04dcf0f001611edc0a0b0'] = 'Začíname, prosím zadajte:';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_7c5b66448b4e626068a036ef408c336d'] = 'Pre zobrazenie spôsobov dopravy, prosím zadajte Váš email';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_2690c48fe8919c089ddbefe036492a1b'] = 'Pre zobrazenie možností dopravy, uložte najprv svoje osobné údaje';
|
||||
$_MODULE['<{thecheckout}prestashop>shipping_f2b4f5787d9c6797725ff6c2924c8f28'] = 'Ďalšie možnosti dopravy';
|
||||
$_MODULE['<{thecheckout}prestashop>confirm_8e021690c587eb788d4caf0d6f6784b0'] = 'Prosím prijmite všeobecné obchodné podmienky';
|
||||
$_MODULE['<{thecheckout}prestashop>confirm_dcd2f414067d31441432886d40f1adcc'] = 'Vyskytli sa chybu na formulári, prosím skontrolujte a opravte';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_1d00e7dce692e8dc3f6877f035e3a616'] = '--';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_d7085e2b5b40144896a996a297e3847d'] = 'Prihlásiť sa cez Facebook';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_95aacd4d4ac87524cfc63d9cc94c008e'] = 'Prihlásiť sa cez Google';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_03350966af02d441ef43f9a56c35c5c9'] = 'Prihlásenie úspešné, presmerovanie na objednávku...';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_0aaac8b981bdf916d2060a424690dff1'] = 'Nový zákazník alebo objednávka ako hosť? Začnite zadaním emailu.';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_8c3c555f8e492a991b7d235af1c1a597'] = 'Pokračovať >';
|
||||
$_MODULE['<{thecheckout}prestashop>login-form_9fc096a9da7670b366f6bc91c3ca3935'] = 'Prosím zadajte Váš email pre pokračovanie v objednávke.';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_1fbc7e5f1b92c7ec072397b59a0bb5da'] = 'Fakturačná adresa';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_aca89f3de809fc6630068ad413c20f8c'] = 'Firemný zákazník';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_d8b180181561dffa922f23e4610da789'] = 'Súkromný zákazník - spotrebiteľ';
|
||||
$_MODULE['<{thecheckout}prestashop>address-invoice_5a9d98e78e92b9fffa08d46ccafe60e0'] = 'Doručiť na inú adresu';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_0c458988127eb2150776881e2ef3f0c4'] = 'Doručovacia adresa';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_b7cea4f6e8dd41e0cc16f0da290a71df'] = 'Zmeniť adresu';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_aca89f3de809fc6630068ad413c20f8c'] = 'Firemný zákazník';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_d8b180181561dffa922f23e4610da789'] = 'Súkromný zákazník - spotrebiteľ';
|
||||
$_MODULE['<{thecheckout}prestashop>address-delivery_d1a87749c9dd4a1e2f5d35df747c733f'] = 'Fakturačná adresa je iná';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_638ddbe54a9fcaa0f20e1b1ce7baa7be'] = 'Nechýba číslo ulice?';
|
||||
$_MODULE['<{thecheckout}prestashop>checkout-form-fields_a03e708434621842a789140f3b93b73c'] = 'Trnavská cesta 92';
|
||||
@@ -43,4 +56,6 @@ $_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_e71a03592770c34aa4
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_dc6c32f4320d95f02c77e4fc7b7ea6e5'] = 'ks.';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_752b5c9d86a955c013daa3ccf2241386'] = 'Zvyšné ks. o';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-product-line_2e152f4c9e8cba38f50ca76ebe1ac0ef'] = 'Prosím upravte množstvo';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_38c118edcf699e74f48cc943c4250c92'] = 'Zostávajúca suma na získanie bezplatnej dopravy:';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_8797ca7dc4de41ee400665f53c842a42'] = 'Prosím vyberte spôsob dopravy';
|
||||
$_MODULE['<{thecheckout}prestashop>cart-detailed-totals_d3487ff3db8ee621475532d31c533e88'] = 'Celková hmotnosť';
|
||||
|
||||
@@ -20,9 +20,10 @@
|
||||
color: #a458ff;
|
||||
}
|
||||
|
||||
.page-content .checkout-block .inner-area .offer-login a,
|
||||
body#checkout .page-content .checkout-block .inner-area .offer-login a,
|
||||
.checkout-block .inner-area .offer-login a:hover,
|
||||
.has-discount .discount {
|
||||
.has-discount .discount,
|
||||
.reassurance-section>.icon::after {
|
||||
background-color: #a458ff;
|
||||
}
|
||||
|
||||
|
||||
@@ -69,12 +69,14 @@
|
||||
}
|
||||
|
||||
.is-empty-cart #tc-container,
|
||||
.is-empty-cart #tc-container-mobile {
|
||||
.is-empty-cart #tc-container-mobile,
|
||||
.is-empty-cart .prev-next-container {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.checkout-block {
|
||||
margin: 0;
|
||||
padding: 10px 3px;
|
||||
}
|
||||
|
||||
.checkout-block .inner-area {
|
||||
@@ -221,15 +223,15 @@ a.custom-link:hover {
|
||||
border-bottom: 1px solid #2fb5d2;
|
||||
}
|
||||
|
||||
.business-customer,
|
||||
.private-customer {
|
||||
padding: 0 0 15px;
|
||||
}
|
||||
//.business-customer,
|
||||
//.private-customer {
|
||||
// padding: 0 0 15px;
|
||||
//}
|
||||
|
||||
// put .private-customer checkbox closer to .business-customer if both are visible
|
||||
.business-customer ~ .private-customer {
|
||||
margin-top: -15px;
|
||||
}
|
||||
//.business-customer ~ .private-customer {
|
||||
// margin-top: -15px;
|
||||
//}
|
||||
|
||||
#i_am_business[disabled=disabled], #i_am_business[disabled=disabled] ~ label,
|
||||
#i_am_private[disabled=disabled], #i_am_private[disabled=disabled] ~ label {
|
||||
@@ -296,7 +298,8 @@ form.hidden {
|
||||
}
|
||||
|
||||
.card-block.block-promo {
|
||||
padding: 10px 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.cart-grid.row {
|
||||
@@ -384,6 +387,20 @@ div#thecheckout-address-invoice {
|
||||
margin: -2px 0 20px;
|
||||
}
|
||||
|
||||
.notice-msg {
|
||||
text-align: left;
|
||||
font-style: italic;
|
||||
background: #fcffe7;
|
||||
color: green;
|
||||
padding: 10px 5px;
|
||||
margin: -2px 0 20px;
|
||||
}
|
||||
|
||||
// Do not display notice if error is shown on the same field
|
||||
.-error.-notice ~ .notice-msg {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.error-msg.visible {
|
||||
display: block;
|
||||
}
|
||||
@@ -393,6 +410,11 @@ div#thecheckout-address-invoice {
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.-error > .error-msg {
|
||||
display: block;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.error-msg #sign-in-link {
|
||||
margin: 0 10px;
|
||||
padding: 0 3px;
|
||||
@@ -414,6 +436,7 @@ body#checkout span.custom-checkbox,
|
||||
body#checkout span.custom-checkbox span {
|
||||
position: relative;
|
||||
//flex: unset;
|
||||
margin-top: 0.15rem;
|
||||
}
|
||||
|
||||
body#checkout .custom-checkbox span.label {
|
||||
@@ -423,19 +446,6 @@ body#checkout .custom-checkbox span.label {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
body#checkout span.custom-checkbox > label,
|
||||
body#checkout .condition-label{
|
||||
padding-left: 0;
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
|
||||
@supports (display: flex) {
|
||||
span.custom-checkbox {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
|
||||
#conditions-to-approve span.custom-checkbox,
|
||||
#conditions-to-approve ul,
|
||||
.condition-label {
|
||||
@@ -488,10 +498,6 @@ span.custom-radio {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.custom-checkbox span.label {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.payment-option-fee.hidden {
|
||||
display: none;
|
||||
}
|
||||
@@ -562,43 +568,77 @@ button#confirm_order:disabled {
|
||||
.delivery-option > label > .row {
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.delivery-option > label > .row > div > .row > div {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.delivery-option-detail > .row {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.delivery-option > label,
|
||||
.payment-option > label{
|
||||
margin-bottom: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.payment-option, .delivery-option {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.delivery-option-detail {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.delivery-option-logo img {
|
||||
max-height: 100%;
|
||||
max-width: ~"calc(100% - 10px)"; // because of Less syntax
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
// Absolute positioned shipping logo (to save space) - replaced on 8.11.2023 with logo on the left
|
||||
//.delivery-option .delivery-option-logo img {
|
||||
// max-height: 100%;
|
||||
// max-width: 100%;
|
||||
// margin-left: 10px;
|
||||
//}
|
||||
|
||||
//.delivery-option-label.has-logo {
|
||||
// .delivery-option-name, .delivery-option-delay {
|
||||
// margin-right: 50px;
|
||||
// }
|
||||
//}
|
||||
|
||||
.delivery-option-logo {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
max-width: 70px;
|
||||
}
|
||||
|
||||
.delivery-option .delivery-option-logo img {
|
||||
max-height: 100%;
|
||||
max-width: 100%;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.delivery-option-label.has-logo {
|
||||
.delivery-option-name, .delivery-option-delay {
|
||||
margin-right: 50px;
|
||||
.delivery-option-price {
|
||||
&.free {
|
||||
.carrier-price-with-tax-formatted {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
&:not(.free) {
|
||||
.carrier-price {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.delivery-option-price .carrier-price-without-tax-formatted {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.delivery-option-detail .name-and-delay {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.delivery-options .row.delivery-option {
|
||||
margin: 0;
|
||||
line-height: 1.5;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
label.delivery-option-label {
|
||||
@@ -989,23 +1029,18 @@ label.required:before {
|
||||
|
||||
.already-account-label {
|
||||
flex-basis: 100%;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.classic-login, .social-login {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
.social-login {
|
||||
padding-top: 25px
|
||||
}
|
||||
|
||||
.classic-login {
|
||||
margin-left: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
padding-left: 125px;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1111,7 +1146,7 @@ label.required:before {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
opacity: 0.8;
|
||||
//opacity: 0.8;
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -1136,7 +1171,7 @@ span.social-logo > span {
|
||||
.tc-social-login-btn .social-logo {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.2);
|
||||
//border-right: 1px solid rgba(0, 0, 0, 0.2);
|
||||
left: 0;
|
||||
padding: 6px 6px 6px 5px;
|
||||
top: 1px;
|
||||
@@ -1174,37 +1209,41 @@ span.social-logo > span {
|
||||
}
|
||||
|
||||
/* Social style: Light */
|
||||
.social-btn-style-light .google-logo {
|
||||
.tc-social-login-btn .google-logo {
|
||||
.google-logo-official;
|
||||
}
|
||||
|
||||
.social-btn-style-light .facebook-logo {
|
||||
.tc-social-login-btn .facebook-logo {
|
||||
.facebook-logo-official;
|
||||
}
|
||||
|
||||
.social-btn-style-light #tc-facebook-signin {
|
||||
.tc-social-login-btn #tc-facebook-signin {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.social-btn-style-light #tc-facebook-signin:hover {
|
||||
background-color: #eee;
|
||||
#tc-facebook-signin:hover {
|
||||
border-color: #d2e3fc;
|
||||
background-color: #f8faff;
|
||||
}
|
||||
|
||||
.social-btn-style-light #tc-google-signin {
|
||||
.tc-social-login-btn #tc-google-signin {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.social-btn-style-light #tc-google-signin:hover {
|
||||
.tc-social-login-btn #tc-google-signin:hover {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.social-btn-style-light .tc-social-login-btn {
|
||||
color: #666;
|
||||
border: 1px solid #ccc;
|
||||
padding: 10px 11px 9px 45px;
|
||||
.tc-social-login-btn {
|
||||
color: #3c4043;
|
||||
border: 1px solid #dadce0;
|
||||
padding: 10px 11px 9px 40px;
|
||||
font-size: 12px;
|
||||
font-family: "Roboto", sans-serif;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.social-btn-style-light .tc-social-login-btn .social-logo {
|
||||
.tc-social-login-btn .social-logo {
|
||||
padding: 8px 7px 7px 8px
|
||||
}
|
||||
|
||||
@@ -1311,7 +1350,7 @@ span.social-logo > span {
|
||||
background: #e9e9e9;
|
||||
box-shadow: 0 4px 4px -4px #9b9b9b;
|
||||
border-radius: 5px;
|
||||
margin: -4px;
|
||||
margin: 0 -4px;
|
||||
}
|
||||
|
||||
.popup-body {
|
||||
@@ -1609,8 +1648,32 @@ a.edit-customer-info {
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
body#checkout .condition-label {
|
||||
padding-left: 0;
|
||||
margin-top: 0;
|
||||
& > label {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Only for Chromium and Firefox; IE11 does not support feature query @supports, so it won't evaluate */
|
||||
@supports (display: flex) {
|
||||
|
||||
body#checkout span.custom-checkbox {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
& span {
|
||||
top: 0;
|
||||
margin: 0 5px 0 0;
|
||||
}
|
||||
& > label, & span.label {
|
||||
margin: 0;
|
||||
line-height: 1.25em;
|
||||
text-align: left;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.form-fields, .business-fields-container, .private-fields-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@@ -1619,12 +1682,37 @@ a.edit-customer-info {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
.form-group, .business-customer, .private-customer, .second-address, .order-options, .terms-and-conditions, .shaim_gdpr_checkbox {
|
||||
//padding-left: 5px;
|
||||
//padding-right: 5px;
|
||||
flex-grow: 1;
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
.terms-and-conditions {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
body#checkout .condition-label {
|
||||
margin-left: 5px;
|
||||
& label {
|
||||
margin-top: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
body#checkout div.shaim_heureka_checkbox {
|
||||
margin-left: 26px;
|
||||
text-align: left;
|
||||
& label {
|
||||
margin-top: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.form-group, .business-customer, .private-customer, .second-address, .order-options, .terms-and-conditions, .shaim_gdpr_checkbox {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Debug: flash block that's re-loading data */
|
||||
@@ -1735,6 +1823,7 @@ div#tc-container-mobile {
|
||||
|
||||
.social-login .tc-social-login-btn {
|
||||
max-width: 100%;
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
/* Column-responsive styles for login-block BEGIN */
|
||||
@@ -1821,7 +1910,6 @@ body.is-virtual-cart.is-invoice-address-primary .checkout-block .second-address
|
||||
|
||||
#tc-container .form-group {
|
||||
overflow: visible;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
// Sticky block
|
||||
@@ -1840,11 +1928,6 @@ body.is-virtual-cart.is-invoice-address-primary .checkout-block .second-address
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.payment-option label {
|
||||
padding-top: 5px;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
.cart-summary-line.cart-total.cart-total-tax-included > span,
|
||||
.cart-summary-line.cart-total.cart-total-auto-tax > span {
|
||||
font-size: 1.2em;
|
||||
@@ -1883,7 +1966,7 @@ body.is-test-mode #is-test-mode-notice {
|
||||
border: 1px solid black;
|
||||
animation: collapse-smaller .6s forwards;
|
||||
animation-delay: 5s;
|
||||
z-index: 100;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
@keyframes collapse-smaller {
|
||||
@@ -1933,82 +2016,79 @@ body.is-test-mode #is-test-mode-notice {
|
||||
// Test mode notice box END
|
||||
|
||||
// Compact cart styling (only desktop view) BEGIN
|
||||
body.compact-cart #tc-container .product-line-image img {
|
||||
max-width: 100px;
|
||||
}
|
||||
body.compact-cart {
|
||||
#tc-container {
|
||||
.product-line-image img {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .cart-item .product-line {
|
||||
//display: block;
|
||||
min-height: 100px;
|
||||
}
|
||||
.cart-item .product-line {
|
||||
//display: block;
|
||||
min-height: 100px;
|
||||
}
|
||||
.cart-item .product-line-info {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .cart-item .product-line-info {
|
||||
width: 100%;
|
||||
}
|
||||
.product-line-info.product-price.h5 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
//body.compact-cart #tc-container .product-line .product-line-image {
|
||||
// float: left;
|
||||
//}
|
||||
.product-line-actions {
|
||||
align-items: center;
|
||||
padding-top: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-info.product-price.h5 {
|
||||
display: none;
|
||||
}
|
||||
.product-line-info .label {
|
||||
font-size: 0.8em;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-actions {
|
||||
align-items: center;
|
||||
padding-top: 5px;
|
||||
//border: 1px solid #f5f5f5;
|
||||
//background: #fafafa;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.product-line-info.product-attribute {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-info .label {
|
||||
font-size: 0.8em;
|
||||
line-height: 1em;
|
||||
}
|
||||
.cart-item .product-line-info:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-info.product-attribute {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.product-line-body {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .cart-item .product-line-info:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.cart-detailed-totals {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-body {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
.qty-container .qty-box {
|
||||
transform: scale(0.8);
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .cart-detailed-totals {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
.cart-summary-line > span {
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .qty-container .qty-box {
|
||||
transform: scale(0.8);
|
||||
}
|
||||
.block-promo .promo-code {
|
||||
padding: 10px 5px;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .cart-summary-line > span {
|
||||
font-size: 0.85em;
|
||||
}
|
||||
.product-line-actions .product-line-qty {
|
||||
flex-grow: 5;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .block-promo .promo-code {
|
||||
padding: 10px 5px;
|
||||
}
|
||||
.product-line-actions > div {
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-actions .product-line-qty {
|
||||
flex-grow: 5;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-actions > div {
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
body.compact-cart #tc-container .product-line-delete {
|
||||
padding-top: 0;
|
||||
.product-line-delete {
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Compact cart styling (only desktop view) END
|
||||
@@ -2339,7 +2419,7 @@ e.g. Amazon has confirmation button inside of additional info */
|
||||
|
||||
.lang-rtl.using-material-icons .custom-radio {
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
margin-left: 1.25em;
|
||||
}
|
||||
|
||||
.lang-rtl span.carrier-delay {
|
||||
@@ -2534,7 +2614,7 @@ label.delivery-option-label {
|
||||
}
|
||||
*/
|
||||
|
||||
.paypal-plus .pp-info {
|
||||
.paypal-plus .pp-info, div[data-pp-info]{
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -2627,10 +2707,9 @@ div[paypal-bnpl-button-container] {
|
||||
.remaining-amount {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
/* Fix chronopost's map display - allow it to have wider area */
|
||||
.delivery-options .row.delivery-option.chronopost {
|
||||
flex-wrap: wrap;
|
||||
&.free {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Paypal v5.7 fix */
|
||||
@@ -2777,13 +2856,15 @@ p.toast-title {
|
||||
}
|
||||
}
|
||||
|
||||
.cart-voucher>p>a.promo-code-button {
|
||||
border: 0;
|
||||
.cart-voucher>p>a.promo-code-button.collapsed {
|
||||
border: 1px dashed #b1adad;
|
||||
padding: 10px 20px;
|
||||
background: #a20401;
|
||||
background: #f5fff7;
|
||||
display: inline-block;
|
||||
color: #FFF;
|
||||
border-radius: 25px;
|
||||
}
|
||||
|
||||
.cart-voucher>p>a.promo-code-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.block-promo {
|
||||
@@ -2834,6 +2915,11 @@ p.toast-title {
|
||||
}
|
||||
}
|
||||
|
||||
body:not(.collapse-shipping-methods) #expand_other_shipping_options,
|
||||
body:not(.collapse-payment-methods) #expand_other_payment_options {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.expandOtherOptionsVisible() {
|
||||
max-height: 60px;
|
||||
opacity: 1;
|
||||
@@ -2897,7 +2983,7 @@ p.toast-title {
|
||||
body#checkout .additional-information {
|
||||
margin-left: 0;
|
||||
}
|
||||
.form-group {
|
||||
.form-group, .shaim_gdpr_checkbox {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
@@ -2961,6 +3047,7 @@ div#vyhledejte_pobocku_dpdparcelshop {
|
||||
|
||||
.delivery-options :is(.row.delivery-option.chronopost, .row.delivery-option.dpdfrance) {
|
||||
flex-wrap: wrap;
|
||||
display: flex;
|
||||
.shipping-radio {
|
||||
flex-basis: 5%;
|
||||
}
|
||||
@@ -2969,13 +3056,20 @@ div#vyhledejte_pobocku_dpdparcelshop {
|
||||
}
|
||||
#chronorelais_container .row {
|
||||
flex-wrap: wrap;
|
||||
display: flex;
|
||||
& > div {
|
||||
flex-grow: 1;
|
||||
flex-basis: 20em;
|
||||
}
|
||||
}
|
||||
input#relais_postcode {
|
||||
padding-top: 2px;
|
||||
height: 100%;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#chronorelais_dummy_container {
|
||||
display: none;
|
||||
}
|
||||
@@ -3054,6 +3148,141 @@ body#checkout .checkout-block .inner-area .login-block-moved .offer-login a {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
.form-group.vat_number {
|
||||
display: none !important;
|
||||
|
||||
/* iframe popup for payment methods - by default, iframe popup-embed is not visible, with CSS class .iframe, payment-form shall not be visible */
|
||||
.popup-body {
|
||||
iframe.popup-embed {
|
||||
display: none;
|
||||
}
|
||||
.popup-payment-form, .popup-payment-button {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.popup-payment-content.iframe {
|
||||
width: 50em;
|
||||
.popup-body {
|
||||
padding: 0;
|
||||
}
|
||||
iframe.popup-embed {
|
||||
width: 100%;
|
||||
height: 30em;
|
||||
display: block;
|
||||
border: none;
|
||||
}
|
||||
.popup-payment-form, .popup-payment-button {
|
||||
display: none;
|
||||
}
|
||||
// Specific height for certain payment methods
|
||||
&[data-payment-module=ps_checkpayment] .popup-embed {
|
||||
height: 18em;
|
||||
}
|
||||
}
|
||||
|
||||
// Add minus sign and change color of discount value in cart summary
|
||||
div#cart-subtotal-discount > .value:before {
|
||||
content: '-';
|
||||
padding-right: 2px;
|
||||
}
|
||||
div#cart-subtotal-discount > .value {
|
||||
color: #dd0000;
|
||||
}
|
||||
|
||||
// Display password field as required, if 'create account' checkbox is ticked
|
||||
div#create_account ~ .form-group.password .field-label:after {
|
||||
content: '*';
|
||||
color: #36b4d2;
|
||||
}
|
||||
|
||||
[name=general_error] ~ .error-msg {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
// Paypal pay-later, fix the 'pay later' button visibility
|
||||
.popup_content[data-payment-module=paypal] .popup-payment-button {
|
||||
display: flex!important;
|
||||
justify-content: center;
|
||||
#payment-confirmation {
|
||||
display: none!important;
|
||||
}
|
||||
#paypal-buttons [paypal-bnpl-button-container] {
|
||||
display: none!important;
|
||||
&:last-child {
|
||||
display: block!important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* GLS PakkeShop & Postnord map styling */
|
||||
.delivery-option > label {
|
||||
max-width: 100%;
|
||||
flex-wrap: wrap;
|
||||
& .shipping_agents, & #map {
|
||||
width: calc(100% + 40px) !important;
|
||||
margin-left: -40px
|
||||
}
|
||||
}
|
||||
|
||||
/* mondialrelay slideDown() sometimes stops at smaller heights, so force it to be auto-height */
|
||||
.row.carrier-extra-content.mondialrelay {
|
||||
height: auto!important;
|
||||
}
|
||||
|
||||
.payment-option label {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Logos on the right side in shipping/payment listing (config option) */
|
||||
body.logos-on-the-right {
|
||||
& .payment-option label {
|
||||
& .payment-call-to-action-and-logo {
|
||||
flex-grow: 1;
|
||||
}
|
||||
& .payment-logo {
|
||||
order: 1;
|
||||
}
|
||||
}
|
||||
|
||||
& .delivery-option-detail {
|
||||
& .name-and-delay {
|
||||
flex-grow: 1;
|
||||
& .delivery-option-price {
|
||||
display: block!important;
|
||||
}
|
||||
}
|
||||
& .delivery-option-logo {
|
||||
order: 1;
|
||||
}
|
||||
& .delivery-option-price {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#checkout .popup-payment-form > .additional-information {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* Payment form displayed when T&C checkbox was ticked, but we need to postpone that until popup */
|
||||
[data-payment-module=ps_checkout] > .js-payment-option-form {
|
||||
display: none!important;
|
||||
}
|
||||
|
||||
/* Warehouse theme, touchspin on quantity input box made inconvenient blink effect */
|
||||
.qty-box > .bootstrap-touchspin {
|
||||
display: none;
|
||||
& ~ a {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
#checkout .popup-payment-form > .przelewy24.additional-information {
|
||||
flex-flow: column;
|
||||
}
|
||||
|
||||
.cart-summary-line.vat-exempt {
|
||||
text-align: center;
|
||||
& > span.label {
|
||||
color: green;
|
||||
}
|
||||
}
|
||||
@@ -82,4 +82,50 @@ div#payment-confirmation .ps-shown-by-js {
|
||||
|
||||
.payment-options.amazon_ongoing_session > div:not(.amazon-visible) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* generic iframe (only single payment method visible) */
|
||||
body.p3i-option-set .payment-options > :not(.p3i-visible-only) {
|
||||
display: none;
|
||||
}
|
||||
body.p3i-option-set
|
||||
:is(section#separate-payment-order-review, header, footer, #conditions-to-approve, h1.step-title),
|
||||
body.p3i-option-set .cart-grid-body ~ *{
|
||||
display: none;
|
||||
}
|
||||
|
||||
body.p3i-option-set
|
||||
:is(.cart-grid-body, #wrapper, .container, #content, .p3i-visible-only),
|
||||
body.p3i-option-set #checkout-payment-step > .content,
|
||||
body.p3i-option-set #content .row{
|
||||
padding: 0!important;
|
||||
margin: 0!important;
|
||||
}
|
||||
|
||||
body.p3i-option-set
|
||||
:is(.container, #content, .cart-grid-body, #checkout-payment-step) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
body.p3i-option-set section#checkout-payment-step {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 5px;
|
||||
margin: 0!important;
|
||||
/*height: 100vh;*/
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* scrollbar begin */
|
||||
body.p3i-option-set::-webkit-scrollbar {
|
||||
width: 0.5em;
|
||||
}
|
||||
|
||||
body.p3i-option-set::-webkit-scrollbar-track {
|
||||
box-shadow: inset 0 0 2px rgb(0 0 0 / 16%);
|
||||
}
|
||||
|
||||
body.p3i-option-set::-webkit-scrollbar-thumb {
|
||||
background-color: #e0e0e0;
|
||||
}
|
||||
/* scrollbar end */
|
||||
@@ -12,58 +12,61 @@
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
& .tc-social-login-btn {
|
||||
margin: 0 2px;
|
||||
cursor: not-allowed;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
border-radius: 4px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
color: #3c4043;
|
||||
border: 1px solid #dadce0;
|
||||
padding: 11px 11px 8px 40px;
|
||||
font-size: 14px;
|
||||
font-family: "Roboto", sans-serif;
|
||||
font-weight: 500;
|
||||
max-width: 100%;
|
||||
width: 240px;
|
||||
display: none;
|
||||
&.enabled {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#tc-social-logins .facebook-logo {
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='266.893px' height='266.895px' viewBox='0 0 266.893 266.895' enable-background='new 0 0 266.893 266.895' xml:space='preserve'%3e%3cpath id='Blue_1_' fill='%233C5A99' d='M248.082,262.307c7.854,0,14.223-6.369,14.223-14.225V18.812 c0-7.857-6.368-14.224-14.223-14.224H18.812c-7.857,0-14.224,6.367-14.224,14.224v229.27c0,7.855,6.366,14.225,14.224,14.225 H248.082z'/%3e%3cpath id='f' fill='%23FFFFFF' d='M182.409,262.307v-99.803h33.499l5.016-38.895h-38.515V98.777c0-11.261,3.127-18.935,19.275-18.935 l20.596-0.009V45.045c-3.562-0.474-15.788-1.533-30.012-1.533c-29.695,0-50.025,18.126-50.025,51.413v28.684h-33.585v38.895h33.585 v99.803H182.409z'/%3e%3c/svg%3e");
|
||||
}
|
||||
& span.social-logo {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
left: 0;
|
||||
padding: 8px 7px 7px 8px;
|
||||
top: 1px;
|
||||
bottom: 1px;
|
||||
text-align: center;
|
||||
& .facebook-logo {
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='266.893px' height='266.895px' viewBox='0 0 266.893 266.895' enable-background='new 0 0 266.893 266.895' xml:space='preserve'%3e%3cpath id='Blue_1_' fill='%233C5A99' d='M248.082,262.307c7.854,0,14.223-6.369,14.223-14.225V18.812 c0-7.857-6.368-14.224-14.223-14.224H18.812c-7.857,0-14.224,6.367-14.224,14.224v229.27c0,7.855,6.366,14.225,14.224,14.225 H248.082z'/%3e%3cpath id='f' fill='%23FFFFFF' d='M182.409,262.307v-99.803h33.499l5.016-38.895h-38.515V98.777c0-11.261,3.127-18.935,19.275-18.935 l20.596-0.009V45.045c-3.562-0.474-15.788-1.533-30.012-1.533c-29.695,0-50.025,18.126-50.025,51.413v28.684h-33.585v38.895h33.585 v99.803H182.409z'/%3e%3c/svg%3e");
|
||||
}
|
||||
|
||||
.tc-social-login-btn .social-logo {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.2);
|
||||
left: 0;
|
||||
padding: 7px 7px 7px 8px;
|
||||
top: 1px;
|
||||
bottom: 1px;
|
||||
text-align: center;
|
||||
}
|
||||
& > span {
|
||||
display: inline-block;
|
||||
width: 21px;
|
||||
height: 21px;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
}
|
||||
}
|
||||
|
||||
#tc-social-logins span.social-logo > span {
|
||||
display: inline-block;
|
||||
width: 21px;
|
||||
height: 21px;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
}
|
||||
|
||||
#tc-social-logins .tc-social-login-btn {
|
||||
margin: 1px 3px 2px;
|
||||
cursor: not-allowed;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
border-radius: 4px;
|
||||
font-size: 15px;
|
||||
width: 250px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
opacity: 0.8;
|
||||
display: none;
|
||||
color: #666;
|
||||
border: 1px solid #ccc;
|
||||
padding: 9px 11px 8px 45px;
|
||||
}
|
||||
|
||||
#tc-social-logins .tc-social-login-btn.enabled {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#tc-facebook-signin:hover {
|
||||
background-color: rgba(66,133,244,.04);
|
||||
&:hover {
|
||||
border-color: #d2e3fc;
|
||||
background-color: #f8faff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,8 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
.checkout-block.main-block {
|
||||
.checkout-block.main-block,
|
||||
#thecheckout-newsletter, #thecheckout-psgdpr, #thecheckout-data-privacy, #thecheckout-confirm, #thecheckout-required-checkbox-1, #thecheckout-required-checkbox-2 {
|
||||
padding: 15px 7px;
|
||||
}
|
||||
|
||||
@@ -192,7 +193,6 @@ span.non-material-icon.delete-from-cart {
|
||||
padding-top: 0;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.payment-options .payment-option {
|
||||
@@ -244,9 +244,20 @@ span.non-material-icon.delete-from-cart {
|
||||
filter: brightness(0);
|
||||
}
|
||||
|
||||
body#checkout span.custom-checkbox {
|
||||
& > label, & span.label {
|
||||
line-height: 1.05em;
|
||||
}
|
||||
}
|
||||
|
||||
div#checkout-step-btn-container {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.country-call-prefix {
|
||||
font-size: 1.2em;
|
||||
width: 49px;
|
||||
height: 47px;
|
||||
}
|
||||
|
||||
/* einvoicing prestalia */
|
||||
@@ -268,6 +279,11 @@ label.col-md-3.form-control-label {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.form-fields .form-group {
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
}
|
||||
|
||||
.col-md-3.form-control-comment {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,13 @@
|
||||
.checkout-block[class*='num-'] .block-header:before {
|
||||
display: none;
|
||||
}
|
||||
.checkout-block.main-block {
|
||||
.checkout-block.main-block,
|
||||
#thecheckout-newsletter,
|
||||
#thecheckout-psgdpr,
|
||||
#thecheckout-data-privacy,
|
||||
#thecheckout-confirm,
|
||||
#thecheckout-required-checkbox-1,
|
||||
#thecheckout-required-checkbox-2 {
|
||||
padding: 15px 7px;
|
||||
}
|
||||
.has-float-label input:placeholder-shown:not(:focus) ~ span.field-label,
|
||||
@@ -153,7 +159,6 @@ div.product-line-actions .qty-box a {
|
||||
padding-top: 0;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
width: 100%;
|
||||
}
|
||||
.payment-options .payment-option {
|
||||
padding: 5px 0;
|
||||
@@ -194,9 +199,17 @@ div.product-line-actions .qty-box a {
|
||||
.page-content .custom-checkbox input[type=checkbox]:checked + span {
|
||||
filter: brightness(0);
|
||||
}
|
||||
body#checkout span.custom-checkbox > label,
|
||||
body#checkout span.custom-checkbox span.label {
|
||||
line-height: 1.05em;
|
||||
}
|
||||
div#checkout-step-btn-container {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.country-call-prefix {
|
||||
font-size: 1.2em;
|
||||
width: 49px;
|
||||
height: 47px;
|
||||
}
|
||||
/* einvoicing prestalia */
|
||||
label.col-md-3.form-control-label {
|
||||
@@ -214,6 +227,10 @@ label.col-md-3.form-control-label {
|
||||
margin: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
.form-fields .form-group {
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
}
|
||||
.col-md-3.form-control-comment {
|
||||
display: none;
|
||||
}
|
||||
@@ -221,4 +238,4 @@ label.col-md-3.form-control-label {
|
||||
.checkout-block.no-header {
|
||||
margin-top: -37px;
|
||||
}
|
||||
/*# sourceMappingURL=data:application/json,%7B%22version%22%3A3%2C%22sources%22%3A%5B%22home%5C%2Fpeter%5C%2Fwww%5C%2Fpresta_178%5C%2Fmodules%5C%2Fthecheckout%5C%2Fviews%5C%2Fcss%5C%2Fstyles%5C%2Fclean.less%22%5D%2C%22names%22%3A%5B%5D%2C%22mappings%22%3A%22AAAA%3BEACE%3B%3BAAGF%2CeAAe%2CWAAY%3BEACzB%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%3BAAAe%3BEACb%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CYAAa%3BEACX%3B%3BAAGF%2CeAAe%2CeAAgB%2CcAAa%3BEAC1C%3B%3BAAGF%2CeAAe%3BEACb%2CiBAAA%3B%3BAAGF%2CgBAAiB%2CMAAK%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BAAAc%2CgBAAiB%2COAAM%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BEACnI%3BEACA%3BEACA%3B%3BAAGF%2CgBAAgB%2CSAAU%2CKAAI%3BAAAc%2CSAAU%2CiBAAiB%2CKAAI%3BAAAc%2CgBAAiB%2CKAAI%3BEAC5G%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CKAAK%3BEACH%3B%3BAAGF%2CaAAc%3BAAAe%2CaAAc%2COAAM%2CoBAAoB%3BEACnE%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%2CMAAK%3BAAAQ%2CgBAAiB%2COAAM%3BEACnD%2CmCAAA%3B%3BAAGF%2CgBAAiB%2CKAAI%2CoBAAoB%2CIAAI%3BEAC3C%3B%3BAAGF%2CaAAc%2CiBAAiB%2COAAM%3BEACnC%2CgBAAgB%2CiYAAhB%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3B%3B%3BAAMF%2CaAAa%3BEACX%3BEACA%3BEACA%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEACE%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CGAAG%2CqBAAsB%2CSAAS%3BEAEhC%3BEACA%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CqBAAsB%2CSAAS%3BEAC7B%3BEACA%2CyBAAA%3B%3BAAMF%2CqBAAsB%3BEAEpB%3B%3BAAGF%2CaAAc%2CmBAAkB%3BEAC9B%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEAEE%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3B%3BAAGF%2CkBAAmB%3BEACjB%3B%3BAAGF%2CkBAAkB%3BEAChB%3B%3BAAGF%2CUAAW%3BEACT%3B%3BAAGF%3BEACE%2C6BAAA%3B%3BAAGF%2CkBAAkB%2CWAAW%3BEAC3B%2C6BAAA%3BEACA%3B%3BAAGF%2CaAAa%3BEACX%2CcAAA%3B%3BAAGF%3BEACE%3B%3B%3B%3BAAMF%2CeAAgB%3BEACd%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%3BEACf%2CcAAA%3BEACA%3B%3BAAGF%3BEACE%3B%3BAAGF%2CeAAgB%2CMAAM%2CKAAI%3BEACxB%3B%3BAAGF%2CeAAgB%3BEACd%3BEACA%3B%3B%3B%3BAAMF%3BEACE%2CsBAAA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%2CsBAAA%3B%3BAAGF%2CoBAAoB%2CSAAS%3BAAAQ%2CoBAAoB%2CSAAS%3BEAChE%2CSAAS%2CEAAT%3BEACA%3BEACA%3BEACA%2CcAAA%3BEACA%3BEACA%2CgCAAA%3B%3B%3B%3BAAOF%2CaAAc%2CiBAAiB%2CMAAK%2CeAAe%2CQAAW%3BEAC5D%2CQAAQ%2CaAAR%3B%3BAAGF%3BEACE%3BEACA%3B%3B%3BAAIF%2CKAAK%2CSAAS%3BEACV%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%3BEACP%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%2CIAAO%3BEACd%3BEACA%3BEACA%3B%3BAAGJ%2CSAAS%3BEACL%3B%3B%3BAAIJ%2CeAAe%3BEACb%22%7D */
|
||||
/*# sourceMappingURL=data:application/json,%7B%22version%22%3A3%2C%22sources%22%3A%5B%22home%5C%2Fpeter%5C%2Fwww%5C%2Fpresta_178%5C%2Fmodules%5C%2Fthecheckout%5C%2Fviews%5C%2Fcss%5C%2Fstyles%5C%2Fclean.less%22%5D%2C%22names%22%3A%5B%5D%2C%22mappings%22%3A%22AAAA%3BEACE%3B%3BAAGF%2CeAAe%2CWAAY%3BEACzB%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%3BAAAe%3BEACb%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CYAAa%3BEACX%3B%3BAAGF%2CeAAe%2CeAAgB%2CcAAa%3BEAC1C%3B%3BAAGF%2CeAAe%3BAACf%3BAAAyB%3BAAAqB%3BAAA2B%3BAAAsB%3BAAAkC%3BEAC%5C%2FH%2CiBAAA%3B%3BAAGF%2CgBAAiB%2CMAAK%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BAAAc%2CgBAAiB%2COAAM%2CkBAAkB%2CIAAI%2CQAAW%2COAAI%3BEACnI%3BEACA%3BEACA%3B%3BAAGF%2CgBAAgB%2CSAAU%2CKAAI%3BAAAc%2CSAAU%2CiBAAiB%2CKAAI%3BAAAc%2CgBAAiB%2CKAAI%3BEAC5G%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%2CKAAK%3BEACH%3B%3BAAGF%2CaAAc%3BAAAe%2CaAAc%2COAAM%2CoBAAoB%3BEACnE%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%2CMAAK%3BAAAQ%2CgBAAiB%2COAAM%3BEACnD%2CmCAAA%3B%3BAAGF%2CgBAAiB%2CKAAI%2CoBAAoB%2CIAAI%3BEAC3C%3B%3BAAGF%2CaAAc%2CiBAAiB%2COAAM%3BEACnC%2CgBAAgB%2CiYAAhB%3BEACA%3B%3BAAGF%3BEACE%3BEACA%3B%3B%3BAAMF%2CaAAa%3BEACX%3BEACA%3BEACA%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEACE%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3BEACA%3BEACA%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CyBAA0B%3BEACxB%3B%3BAAGF%2CGAAG%2CqBAAsB%2CSAAS%3BEAEhC%3BEACA%2CyBAAA%3BEACA%3BEACA%3B%3BAAGF%2CqBAAsB%2CSAAS%3BEAC7B%3BEACA%2CyBAAA%3B%3BAAMF%2CqBAAsB%3BEAEpB%3B%3BAAGF%2CaAAc%2CmBAAkB%3BEAC9B%3B%3BAAGF%2CaAAc%3BEACZ%3B%3BAAGF%3BEAEE%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3B%3BAAGF%2CkBAAmB%3BEACjB%3B%3BAAGF%2CkBAAkB%3BEAChB%3B%3BAAGF%2CUAAW%3BEACT%3B%3BAAGF%3BEACE%2C6BAAA%3B%3BAAGF%2CkBAAkB%2CWAAW%3BEAC3B%2C6BAAA%3BEACA%3B%3BAAGF%2CaAAa%3BEACX%2CcAAA%3B%3BAAGF%3BEACE%3B%3B%3B%3BAAMF%2CeAAgB%3BEACd%3BEACA%3BEACA%3B%3BAAGF%2CgBAAiB%3BEACf%2CcAAA%3BEACA%3B%3BAAGF%3BEACE%3B%3BAAGF%2CeAAgB%2CMAAM%2CKAAI%3BEACxB%3B%3BAAGF%2CeAAgB%3BEACd%3BEACA%3B%3B%3B%3BAAMF%3BEACE%2CsBAAA%3BEACA%3BEACA%3BEACA%3B%3BAAGF%3BEACE%2CsBAAA%3B%3BAAGF%2CoBAAoB%2CSAAS%3BAAAQ%2CoBAAoB%2CSAAS%3BEAChE%2CSAAS%2CEAAT%3BEACA%3BEACA%3BEACA%2CcAAA%3BEACA%3BEACA%2CgCAAA%3B%3B%3B%3BAAOF%2CaAAc%2CiBAAiB%2CMAAK%2CeAAe%2CQAAW%3BEAC5D%2CQAAQ%2CaAAR%3B%3BAAIA%2CIADE%2CSAAU%2CKAAI%2CgBACZ%3BAAAO%2CIADT%2CSAAU%2CKAAI%2CgBACH%2CKAAI%3BEACf%3B%3BAAIJ%2CGAAG%3BEACD%3B%3BAAGF%3BEACE%3BEACA%3BEACA%3B%3B%3BAAIF%2CKAAK%2CSAAS%3BEACV%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%3BEACP%3BEACA%3BEACA%3B%3BAAGJ%2CWAAW%2CIAAO%3BEACd%3BEACA%3BEACA%3B%3BAAGJ%2CYAAa%3BEACX%3BEACA%3B%3BAAGF%2CSAAS%3BEACL%3B%3B%3BAAIJ%2CeAAe%3BEACb%22%7D */
|
||||
@@ -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"}
|
||||
@@ -6,8 +6,8 @@
|
||||
background: white;
|
||||
}
|
||||
|
||||
.input-effects-flash .has-float-label input:focus~.effects-helper::after,
|
||||
.input-effects-flash .has-float-label select:focus~.effects-helper::after {
|
||||
.input-effects-flash .has-float-label input:focus ~ .effects-helper::after,
|
||||
.input-effects-flash .has-float-label select:focus ~ .effects-helper::after {
|
||||
-webkit-animation: none;
|
||||
animation: none;
|
||||
}
|
||||
@@ -24,14 +24,13 @@
|
||||
.mark-required .form-group.tel label.required .field-label::after,
|
||||
.mark-required .form-group.select label.required .field-label::after,
|
||||
.mark-required .form-group.countrySelect label.required .field-label::after {
|
||||
color: #a20401;
|
||||
color: #36b4d2;
|
||||
}
|
||||
|
||||
#wrapper :is(.label, label) {
|
||||
color: #232323;
|
||||
text-align: left;
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
|
||||
.form-group.radio-buttons {
|
||||
@@ -43,10 +42,6 @@
|
||||
//margin-top: 30px;
|
||||
}
|
||||
|
||||
label {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.static-customer-info {
|
||||
border-bottom: 1px solid transparent;
|
||||
}
|
||||
@@ -60,7 +55,7 @@ a.edit-customer-info:hover .static-customer-info:after {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #a20401;
|
||||
background: #2fb5d2;
|
||||
color: white;
|
||||
padding: 2px 6px;
|
||||
font-size: 0.9em;
|
||||
@@ -68,21 +63,21 @@ a.edit-customer-info:hover .static-customer-info:after {
|
||||
}
|
||||
|
||||
a.edit-customer-info:hover .static-customer-info {
|
||||
border-bottom: 1px solid #a20401;
|
||||
border-bottom: 1px solid #2fb5d2;
|
||||
}
|
||||
|
||||
span.carrier-delay {
|
||||
color: #a20401;
|
||||
color: #36b4d2;
|
||||
padding-right: 50px;
|
||||
}
|
||||
|
||||
.delivery-options,
|
||||
.payment-options {
|
||||
.delivery-options, .payment-options {
|
||||
width: 100%;
|
||||
border: 1px solid #ccc;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#thecheckout-shipping .inner-area,
|
||||
#thecheckout-payment .inner-area {
|
||||
#thecheckout-shipping .inner-area, #thecheckout-payment .inner-area {
|
||||
border: 0 solid #e9e9e9;
|
||||
}
|
||||
|
||||
@@ -100,7 +95,7 @@ span.carrier-delay {
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.-error~.error-msg {
|
||||
.-error ~ .error-msg {
|
||||
margin-top: -9px;
|
||||
padding: 15px 5px 7px;
|
||||
}
|
||||
@@ -108,18 +103,18 @@ span.carrier-delay {
|
||||
.using-material-icons .custom-radio {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
background: #fff;
|
||||
margin-right: 10px;
|
||||
margin-top: 7px;
|
||||
margin-right: 1.25rem;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.using-material-icons .custom-radio input[type=radio]+span {
|
||||
.using-material-icons .custom-radio input[type=radio] + span {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@@ -135,8 +130,8 @@ span.carrier-delay {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.using-material-icons .custom-radio input[type=radio]:checked+span {
|
||||
border-color: #a20401;
|
||||
.using-material-icons .custom-radio input[type=radio]:checked + span {
|
||||
border-color: #2fb5d2;
|
||||
background: url(../../img/checkmark.png) center no-repeat;
|
||||
}
|
||||
|
||||
@@ -166,15 +161,16 @@ label.radio-inline {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
flex-grow: 1;
|
||||
flex-basis: 100%;
|
||||
@media (min-width: 768px) {
|
||||
.form-group, .account_creation.shaim_gdpr_checkbox {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
flex-grow: 1;
|
||||
flex-basis: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.has-float-label input.form-control,
|
||||
.has-float-label select.form-control.form-control-select {
|
||||
.has-float-label input.form-control, .has-float-label select.form-control.form-control-select {
|
||||
font-size: 0.95em;
|
||||
margin-bottom: 2px;
|
||||
border-radius: 5px;
|
||||
@@ -186,6 +182,9 @@ label.radio-inline {
|
||||
position: relative;
|
||||
background-color: white;
|
||||
}
|
||||
.has-float-label {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.has-float-label :not(:placeholder-shown):not(:focus) {
|
||||
border-color: #e5e5e5;
|
||||
@@ -202,8 +201,8 @@ label.radio-inline {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.has-float-label input:placeholder-shown:not(:focus)~span.field-label,
|
||||
.has-float-label select:placeholder-shown:not(:focus)~span.field-label {
|
||||
.has-float-label input:placeholder-shown:not(:focus) ~ span.field-label,
|
||||
.has-float-label select:placeholder-shown:not(:focus) ~ span.field-label {
|
||||
font-size: 0.95em;
|
||||
opacity: 0.8;
|
||||
padding-left: 0;
|
||||
@@ -232,8 +231,7 @@ label.radio-inline {
|
||||
margin: 20px auto 30px;
|
||||
}
|
||||
|
||||
.reassurance-section.security:after,
|
||||
.reassurance-section.delivery:after {
|
||||
.reassurance-section.security:after, .reassurance-section.delivery:after {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 80%;
|
||||
@@ -242,25 +240,26 @@ label.radio-inline {
|
||||
border-bottom: 2px solid #85cad9;
|
||||
}
|
||||
|
||||
.has-float-label input:placeholder-shown:not(:focus)~span.field-label,
|
||||
.has-float-label select:placeholder-shown:not(:focus)~span.field-label {
|
||||
.has-float-label input:placeholder-shown:not(:focus) ~ span.field-label, .has-float-label select:placeholder-shown:not(:focus) ~ span.field-label {
|
||||
top: -20px;
|
||||
cursor: text;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.block-header {
|
||||
margin-bottom: 0px;
|
||||
padding: 20px 0px;
|
||||
font-size: 16px;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
section.form-fields {
|
||||
padding-top: 25px;
|
||||
}
|
||||
|
||||
.business-customer,
|
||||
.private-customer {
|
||||
padding: 5px 5px 0px;
|
||||
}
|
||||
|
||||
.second-address {
|
||||
padding-left: 5px;
|
||||
}
|
||||
//.business-customer, .private-customer {
|
||||
// padding: 5px 5px 0px;
|
||||
//}
|
||||
|
||||
/* Cart summary section */
|
||||
|
||||
@@ -295,32 +294,33 @@ section.form-fields {
|
||||
|
||||
.checkout-block[class*='num-'] .block-header:before {
|
||||
font-weight: bold;
|
||||
background: #a20401;
|
||||
color: #FFF;
|
||||
border: 0;
|
||||
border: 2px solid #ccc;
|
||||
color: #2fb5d2;
|
||||
border-radius: 50%;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
line-height: 64px;
|
||||
margin: 0px 0px 12px 0px;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
display: block;
|
||||
font-size: 16px;
|
||||
font-size: 27px;
|
||||
-webkit-box-shadow: 1px 1px 10px 3px rgba(0, 0, 0, 0.08);
|
||||
-moz-box-shadow: 1px 1px 10px 3px rgba(0, 0, 0, 0.08);
|
||||
box-shadow: 1px 1px 10px 3px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
body#checkout .checkout-block .inner-area .offer-login a {
|
||||
background: #a20401;
|
||||
background: #2fb5d2;
|
||||
max-width: 219px;
|
||||
padding: 10px 25px;
|
||||
padding: 15px;
|
||||
border-radius: 40px;
|
||||
color: white;
|
||||
margin: 10px auto;
|
||||
font-size: 14px;
|
||||
|
||||
font-size: 20px;
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: #750200;
|
||||
background: #037d9a;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -364,12 +364,12 @@ img#OffAmazonPaymentsWidgets0 {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.page-content .custom-checkbox input[type=checkbox]+span {
|
||||
.page-content .custom-checkbox input[type=checkbox] + span {
|
||||
border-radius: 3px;
|
||||
border: 2px solid #a20401;
|
||||
border: 2px solid #36b4d2;
|
||||
}
|
||||
|
||||
.custom-checkbox input[type=checkbox]+span {
|
||||
.custom-checkbox input[type=checkbox] + span {
|
||||
min-width: 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
@@ -390,33 +390,31 @@ img#OffAmazonPaymentsWidgets0 {
|
||||
min-height: 16px;
|
||||
}
|
||||
|
||||
.product-line-body .product-line-info span.label,
|
||||
.value {
|
||||
.product-line-body .product-line-info span.label, .value {
|
||||
color: #171717a8;
|
||||
}
|
||||
|
||||
.custom-checkbox input[type=checkbox]+span .checkbox-checked {
|
||||
color: #a20401;
|
||||
.custom-checkbox input[type=checkbox] + span .checkbox-checked {
|
||||
color: #36b4d2;
|
||||
}
|
||||
|
||||
.page-content .custom-checkbox input[type=checkbox]:checked+span {
|
||||
.page-content .custom-checkbox input[type=checkbox]:checked + span {
|
||||
background-color: transparent;
|
||||
border-color: #a20401;
|
||||
border-color: #36b4d2;
|
||||
}
|
||||
|
||||
.page-content .custom-checkbox input[type=checkbox]:checked+span>i {
|
||||
.page-content .custom-checkbox input[type=checkbox]:checked + span > i {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#delivery_message,
|
||||
#gift_message {
|
||||
#delivery_message, #gift_message {
|
||||
min-height: 100px;
|
||||
border-radius: 5px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.mark-required .form-group.checkbox label.required span.label::before {
|
||||
color: #a20401;
|
||||
color: #36b4d2;
|
||||
}
|
||||
|
||||
span.custom-checkbox span.label {
|
||||
@@ -433,14 +431,11 @@ span.custom-checkbox span.label em {
|
||||
}
|
||||
|
||||
.checkout-block {
|
||||
|
||||
.cart-summary-line .label,
|
||||
.cart-summary-line .value {
|
||||
.cart-summary-line .label, .cart-summary-line .value {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
a.cart-line-product-quantity-up,
|
||||
a.cart-line-product-quantity-down {
|
||||
a.cart-line-product-quantity-up, a.cart-line-product-quantity-down {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 1px solid gray;
|
||||
@@ -456,8 +451,7 @@ span.custom-checkbox span.label em {
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="%23777" viewBox="0 0 24 24"><path d="M24 10h-24v4h24z"/></svg>');
|
||||
}
|
||||
|
||||
a.cart-line-product-quantity-up:hover,
|
||||
a.cart-line-product-quantity-down:hover {
|
||||
a.cart-line-product-quantity-up:hover, a.cart-line-product-quantity-down:hover {
|
||||
background-color: inherit;
|
||||
background-size: auto;
|
||||
background-size: 60%;
|
||||
@@ -474,11 +468,11 @@ span.custom-checkbox span.label em {
|
||||
}
|
||||
|
||||
.has-discount .discount {
|
||||
background: #a20401;
|
||||
background: #36b4d2;
|
||||
}
|
||||
|
||||
.product-price {
|
||||
color: #a20401;
|
||||
color: #2fb5d2;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@@ -500,8 +494,7 @@ span.custom-checkbox span.label em {
|
||||
border-color: gray;
|
||||
}
|
||||
|
||||
.product-price-section .product-price,
|
||||
.product-price-section a {
|
||||
.product-price-section .product-price, .product-price-section a {
|
||||
color: white;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
@@ -513,12 +506,6 @@ span.custom-checkbox span.label em {
|
||||
position: relative;
|
||||
left: 124px;
|
||||
}
|
||||
@media (max-width: 991px) {
|
||||
.cart-detailed-totals {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.card-block:first-child {
|
||||
border-bottom: 1px dotted #c6c6c6;
|
||||
@@ -536,17 +523,14 @@ span.custom-checkbox span.label em {
|
||||
border-bottom: 1px solid #c1c1c1;
|
||||
}
|
||||
|
||||
.card.cart-container,
|
||||
.card.cart-summary {
|
||||
.card.cart-container, .card.cart-summary {
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.card.cart-summary {
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
}
|
||||
|
||||
.block-header.shopping-cart-header {
|
||||
border-top: 1px solid #ccc;
|
||||
margin-top: 10px;
|
||||
@@ -554,19 +538,16 @@ span.custom-checkbox span.label em {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.thecheckout-reassurance,
|
||||
.delivery-options,
|
||||
.payment-options {
|
||||
.thecheckout-reassurance, .delivery-options, .payment-options {
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.delivery-options,
|
||||
.payment-options {
|
||||
.delivery-options, .payment-options {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.card-block.block-promo {
|
||||
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
|
||||
@@ -601,8 +582,13 @@ span.custom-checkbox span.label em {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
body#checkout .form-group {
|
||||
padding-left: 0;
|
||||
.delivery-options, .payment-options {
|
||||
padding: 20px 10px;
|
||||
}
|
||||
|
||||
.checkout-block .cart-detailed-totals {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -611,4 +597,4 @@ span.custom-checkbox span.label em {
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"}
|
||||
203
modules/thecheckout/views/css/styles/modern.less.css
Normal 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 */
|
||||
1
modules/thecheckout/views/css/styles/modern.less.css.map
Normal 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"}
|
||||
BIN
modules/thecheckout/views/img/assurance-delivery.webp
Normal file
|
After Width: | Height: | Size: 220 B |
BIN
modules/thecheckout/views/img/assurance-return.webp
Normal file
|
After Width: | Height: | Size: 152 B |
BIN
modules/thecheckout/views/img/assurance-security.webp
Normal file
|
After Width: | Height: | Size: 260 B |
@@ -1,11 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Warstwa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
.st1{fill:#A20401;}
|
||||
</style>
|
||||
<path class="st0" d="M0,0h24v24H0V0z"/>
|
||||
<path class="st1" d="M9,16.2L4.8,12l-1.4,1.4L9,19L21,7l-1.4-1.4L9,16.2z"/>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" fill="#36b4d2"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 541 B After Width: | Height: | Size: 214 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 295 B |
BIN
modules/thecheckout/views/img/checkmark.webp
Normal file
|
After Width: | Height: | Size: 100 B |
0
modules/thecheckout/views/img/ps1D69.tmp
Normal file
0
modules/thecheckout/views/img/ps6756.tmp
Normal file
BIN
modules/thecheckout/views/img/wirepayment.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
@@ -380,6 +380,14 @@ function setForceEmailOverlay(makeInactive) {
|
||||
}
|
||||
}
|
||||
|
||||
function setPaypalExpressCheckoutState(makeInactive) {
|
||||
if (makeInactive) {
|
||||
$('[name=TC_paypal_express_checkout]').closest('.form-group').addClass('inactive');
|
||||
} else {
|
||||
$('[name=TC_paypal_express_checkout]').closest('.form-group').removeClass('inactive');
|
||||
}
|
||||
}
|
||||
|
||||
function setHash(hash) {
|
||||
if ("onhashchange" in window) {
|
||||
window.location.hash = '#' + hash;
|
||||
@@ -403,7 +411,11 @@ function setConfigTabs() {
|
||||
})
|
||||
|
||||
|
||||
$('.page-head:first').append('<div id="tab-handles"></div>')
|
||||
if ($('#content .page-head > .wrapper').length) {
|
||||
$('.page-head:first').append('<div id="tab-handles"></div>');
|
||||
} else {
|
||||
$('.page-head:first').after('<div id="tab-handles"></div>');
|
||||
}
|
||||
$('#module_form > .panel').each(function() {
|
||||
var label = $.trim($(this).find('.panel-heading').text());
|
||||
$('#tab-handles').append('<div data-section-id="'+$(this).attr('id')+'">'+label+'</div>');
|
||||
@@ -571,6 +583,8 @@ $(document).ready(function () {
|
||||
setForceEmailOverlay(isPasswordRequired());
|
||||
});
|
||||
|
||||
setPaypalExpressCheckoutState($('[name=tc_paypal_express_checkout_active]').val() != '1');
|
||||
|
||||
|
||||
// Fix for big header on config page
|
||||
window.onscroll = function () {
|
||||
|
||||
@@ -83,19 +83,14 @@ body.is-virtual-cart #thecheckout-address-invoice
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* // ---------------> Update labels here */
|
||||
/* English and Danish versions, for other languages, add new rules .lang-xx prefix instead of .lang-en */
|
||||
.lang-en .email-verification .field.error-msg.emails-do-not-match:before {
|
||||
content: 'Emails do not match';
|
||||
}
|
||||
.lang-en .form-group.email-verification .field-label:before {
|
||||
content: '(repeat)';
|
||||
}
|
||||
.lang-da .email-verification .field.error-msg.emails-do-not-match:before {
|
||||
content: 'E-mail adresserne er ikke ens';
|
||||
}
|
||||
.lang-da .form-group.email-verification .field-label:before {
|
||||
content: '(en gang til)';
|
||||
}
|
||||
|
||||
2/ Add Custom JS in checkout module settings:
|
||||
|
||||
@@ -107,10 +102,10 @@ document.addEventListener('DOMContentLoaded', function(event) {
|
||||
tc_confirmOrderValidations['email_verification'] = function() {
|
||||
$(email_verif_selector +' .error-msg').remove();
|
||||
if (
|
||||
$(email_verif_selector + ' input[name=email]:visible').length &&
|
||||
$(email_selector + ' input[name=email]').val() != $(email_verif_selector + ' input[name=email]').val()
|
||||
$(email_verif_selector + ' input[name=email-verification]:visible').length &&
|
||||
$(email_selector + ' input[name=email]').val() != $(email_verif_selector + ' input[name=email-verification]').val()
|
||||
) {
|
||||
$(email_verif_selector + ' label').addClass('-error');
|
||||
$(email_verif_selector + ' label input').addClass('-error');
|
||||
$(email_verif_selector + ' label input').after('<div class="field error-msg emails-do-not-match"></div>');
|
||||
scrollToElement($(email_verif_selector));
|
||||
return false;
|
||||
@@ -120,9 +115,175 @@ document.addEventListener('DOMContentLoaded', function(event) {
|
||||
}
|
||||
|
||||
$('.account-fields .form-group.email:visible').clone().addClass('email-verification').insertAfter('.account-fields .form-group.email');
|
||||
$('.email-verification > input').attr('name', 'email-verification');
|
||||
|
||||
// ---------------> Update labels here
|
||||
if (prestashop.language.iso_code == 'en') {
|
||||
$(email_verif_selector + ' .field-label').html('Confirm e-mail ');
|
||||
} else if (prestashop.language.iso_code == 'da') {
|
||||
$(email_verif_selector + ' .field-label').html('Bekræft e-mail ');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ##### Example 5 - checkout steps #####
|
||||
// Validation expression (JS) to check filled in address
|
||||
$('.address-fields, .account-fields').find('input.form-control[required]:visible').filter((k,v) => $(v).val() == '').length == 0
|
||||
|
||||
// Display cart-summary on each step, but have it styled differently in step 1 (full-width), add custom CSS:
|
||||
.checkout-step-1 .checkout-area-4 {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
// ##### Example 6 - pre-tick checkboxes (on page load) #####
|
||||
// Add to custom JS:
|
||||
document.addEventListener('DOMContentLoaded', function(event) {
|
||||
// Pre-tick terms and conditions and psgdpr checkboxes
|
||||
$('[name^=conditions_to_approve], [name=psgdpr]').prop('checked', true);
|
||||
});
|
||||
|
||||
|
||||
// ##### Example 7 - validate phone input (9 numbers) #####
|
||||
tc_confirmOrderValidations['phone_9_numbers'] = function () {
|
||||
var phoneFields = $('.address-fields input[type=tel]:visible');
|
||||
var errorMsg = 'Phone must have 9 digits';
|
||||
phoneFields.removeClass('-error');
|
||||
removeError(phoneFields.siblings('.error-msg'));
|
||||
|
||||
var allPhoneFieldsOK = true;
|
||||
|
||||
phoneFields.each(function() {
|
||||
var phoneVal = $(this).val().trim();
|
||||
if (phoneVal && phoneVal.replace(/[^0-9]/g, '').length !== 9) {
|
||||
allPhoneFieldsOK = false;
|
||||
$(this).addClass('-error');
|
||||
$(this).after('<div class="field error-msg">' + errorMsg + '</div>');
|
||||
}
|
||||
});
|
||||
|
||||
if (!allPhoneFieldsOK) {
|
||||
scrollToError();
|
||||
}
|
||||
return allPhoneFieldsOK;
|
||||
};
|
||||
|
||||
// ##### Example 8 - validate address1 (street) to have 2+ non-numeric characters and 1 number #####
|
||||
tc_confirmOrderValidations['street_non_numeric'] = function () {
|
||||
var addressFields = $('.address-fields input[name=address1]:visible');
|
||||
var errorMsg = 'Street name must be at least 2 characters and number';
|
||||
addressFields.removeClass('-error');
|
||||
removeError(addressFields.siblings('.error-msg'));
|
||||
|
||||
var allAddressFieldsOK = true;
|
||||
|
||||
addressFields.each(function() {
|
||||
var addressVal = $(this).val();
|
||||
if (addressVal !== '' && (addressVal.replace(/[^a-zA-Z]/g, '').length < 2 || addressVal.replace(/[^0-9]/g, '').length < 1)) {
|
||||
allAddressFieldsOK = false;
|
||||
$(this).addClass('-error');
|
||||
$(this).after('<div class="field error-msg">' + errorMsg + '</div>');
|
||||
}
|
||||
});
|
||||
|
||||
if (!allAddressFieldsOK) {
|
||||
scrollToError();
|
||||
}
|
||||
return allAddressFieldsOK;
|
||||
};
|
||||
|
||||
// ##### Example 9 - using craftyclick module (for the UK) + shipping parcel points module #####
|
||||
// Add custom JS
|
||||
document.addEventListener('DOMContentLoaded', function(event) {
|
||||
$('body').off('click.crafty').on('click.crafty', '[id$=_cp_button_id]', function() { setTimeout(function() { $('.address-fields [name=city]:visible').change(); }, 200); })
|
||||
});
|
||||
|
||||
// ##### Example 10 - Add payment logos
|
||||
// 1. Firstly, find and add logos to PS file structure, e.g. to /modules/thecheckout/views/img folder
|
||||
// 2. Add custom CSS, this is example for ps_wirepayment method:
|
||||
|
||||
/* ps_wirepayment logo */
|
||||
[data-payment-module=ps_wirepayment] .payment-logo {
|
||||
background: left / contain no-repeat url('../modules/thecheckout/views/img/wirepayment.png');
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
// ##### Example 10 - limit delivery countries based on invoice country #####
|
||||
document.addEventListener('DOMContentLoaded', function(event) {
|
||||
//jQuery shall be loaded now
|
||||
tc_confirmOrderValidations['restrict_delivery_country'] = function() {
|
||||
const invoiceCountry = $('#thecheckout-address-invoice select[name=id_country]:visible option:selected').data('iso-code');
|
||||
const deliveryCountry = $('#thecheckout-address-delivery select[name=id_country]:visible option:selected').data('iso-code') ?? invoiceCountry;
|
||||
const deliveryBlockVisible = $('#thecheckout-address-delivery').is(':visible');
|
||||
|
||||
if (!deliveryBlockVisible) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var canShip = true;
|
||||
var errorMsg = 'Wrong delivery / invoice country combination';
|
||||
|
||||
if (invoiceCountry == 'CH' && deliveryCountry != 'CH') {
|
||||
canShip = false;
|
||||
errorMsg = 'Invoice address in Switzerland -> cannot ship outside of Switzerland.'
|
||||
}
|
||||
|
||||
if (invoiceCountry != 'PL' && deliveryCountry == 'PL') {
|
||||
canShip = false;
|
||||
errorMsg = 'Delivery in Poland -> invoice must be in Poland.'
|
||||
}
|
||||
|
||||
if (invoiceCountry == 'PL' && deliveryCountry != 'PL') {
|
||||
canShip = false;
|
||||
errorMsg = 'Invoice in Poland -> shipping must be in Poland.'
|
||||
}
|
||||
|
||||
$('#thecheckout-address-delivery [name=id_country]').removeClass('-error');
|
||||
removeError('#thecheckout-address-delivery .error-msg');
|
||||
|
||||
if (!canShip) {
|
||||
$('#thecheckout-address-delivery [name=id_country]').addClass('-error');
|
||||
$('#thecheckout-address-delivery [name=id_country]').after('<div class="field error-msg">' + errorMsg + '</div>');
|
||||
scrollToError();
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceURL=tc-custom.js
|
||||
|
||||
// ##### Example 11 - make one of business/private checkboxes always required #####
|
||||
document.addEventListener('DOMContentLoaded', function(event) {
|
||||
//jQuery shall be loaded now
|
||||
tc_confirmOrderValidations['business_private_required'] = function() {
|
||||
// do this check for both .business-private-checkboxes in #thecheckout-address-delivery and #thecheckout-address-invoice
|
||||
let result = true;
|
||||
['#thecheckout-address-delivery', '#thecheckout-address-invoice'].forEach(function (selector) {
|
||||
const businessPrivateVisible = $(selector + ' .business-private-checkboxes input[type=checkbox]:visible').length > 0;
|
||||
const businessPrivateChecked = $(selector + ' .business-private-checkboxes input[type=checkbox]:checked').length > 0;
|
||||
$(selector + ' .business-private-checkboxes').removeClass('-error');
|
||||
removeError(selector + ' .business-private-checkboxes .error-msg');
|
||||
|
||||
let errorMsg = 'Please select one of the options';
|
||||
switch (prestashop?.language?.iso_code) {
|
||||
case 'it':
|
||||
errorMsg = 'Seleziona una delle opzioni';
|
||||
break;
|
||||
}
|
||||
|
||||
if (businessPrivateVisible && !businessPrivateChecked) {
|
||||
$(selector + ' .business-private-checkboxes').addClass('-error');
|
||||
// Add error in front of checkboxes
|
||||
$(selector + ' .business-private-checkboxes').prepend('<div class="field error-msg">' + errorMsg + '</div>');
|
||||
scrollToError();
|
||||
result = false;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
});
|
||||
//# sourceURL=tc-custom.js
|
||||
@@ -93,7 +93,7 @@ $(document).ready(function () {
|
||||
checkAndHideGlobalError();
|
||||
});
|
||||
|
||||
$('body').on('change', '#js-delivery input', function () {
|
||||
$('body').on('change', '#js-delivery .shipping-radio input', function () {
|
||||
selectDeliveryOption($('#js-delivery')); // delivery form object as parameter
|
||||
});
|
||||
|
||||
@@ -190,6 +190,12 @@ $(document).ready(function () {
|
||||
});
|
||||
|
||||
$('body').on('change', '[data-link-action=x-ship-to-different-address]', function () {
|
||||
// Hook to this:
|
||||
// prestashop.on('thecheckout_changeSecondAddress', function(data) { console.log('second address block toggled!', data); })
|
||||
prestashop.emit('thecheckout_changeSecondAddress', {
|
||||
'addressType': 'delivery',
|
||||
'isCollapsing': $('#thecheckout-address-delivery').is(':visible')
|
||||
});
|
||||
|
||||
if ($('#thecheckout-address-delivery').is(':visible')) {
|
||||
$(this).prop('checked', false);
|
||||
@@ -210,6 +216,11 @@ $(document).ready(function () {
|
||||
});
|
||||
|
||||
$('body').on('change', '[data-link-action=x-bill-to-different-address]', function () {
|
||||
prestashop.emit('thecheckout_changeSecondAddress', {
|
||||
'addressType': 'invoice',
|
||||
'isCollapsing': $('#thecheckout-address-invoice').is(':visible')
|
||||
});
|
||||
|
||||
if ($('#thecheckout-address-invoice').is(':visible')) {
|
||||
$(this).prop('checked', false);
|
||||
$('#thecheckout-address-invoice').hide(10, function () {
|
||||
@@ -256,6 +267,7 @@ $(document).ready(function () {
|
||||
if ($('#dni-placeholder').length && $('#thecheckout-address-invoice .business-field.dni').length) {
|
||||
swapElements($('#dni-placeholder'), $('#thecheckout-address-invoice .business-field.dni'));
|
||||
}
|
||||
removeError('.business-private-checkboxes > .error-msg');
|
||||
|
||||
return false;
|
||||
});
|
||||
@@ -280,6 +292,7 @@ $(document).ready(function () {
|
||||
if ($('#dni-placeholder-delivery').length && $('#thecheckout-address-delivery .business-field.dni').length) {
|
||||
swapElements($('#dni-placeholder-delivery'), $('#thecheckout-address-delivery .business-field.dni'));
|
||||
}
|
||||
removeError('.business-private-checkboxes > .error-msg');
|
||||
|
||||
return false;
|
||||
});
|
||||
@@ -304,6 +317,7 @@ $(document).ready(function () {
|
||||
if ($('#dni-placeholder-private').length && $('#thecheckout-address-invoice .private-field.dni').length) {
|
||||
swapElements($('#dni-placeholder-private'), $('#thecheckout-address-invoice .private-field.dni'));
|
||||
}
|
||||
removeError('.business-private-checkboxes > .error-msg');
|
||||
|
||||
return false;
|
||||
});
|
||||
@@ -328,10 +342,37 @@ $(document).ready(function () {
|
||||
if ($('#dni-placeholder-private-delivery').length && $('#thecheckout-address-delivery .private-field.dni').length) {
|
||||
swapElements($('#dni-placeholder-private-delivery'), $('#thecheckout-address-delivery .private-field.dni'));
|
||||
}
|
||||
removeError('.business-private-checkboxes > .error-msg');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$('body').on('change', '[data-link-action^=x-i-am-private],[data-link-action^=x-i-am-business]', function () {
|
||||
const linkAction = $(this).data('link-action');
|
||||
const isBusiness = linkAction.startsWith('x-i-am-business');
|
||||
const addressType = linkAction.endsWith('delivery') ? 'delivery' : 'invoice';
|
||||
const isChecked = $(this).prop('checked');
|
||||
|
||||
// prestashop.on('thecheckout_businessPrivateChecked', function(data) { console.log('business or private checkbox selected!', data); })
|
||||
prestashop.emit('thecheckout_businessPrivateChecked', {
|
||||
addressType, isBusiness, isChecked
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
if (config_use_other_for_business_private) {
|
||||
prestashop.on('thecheckout_businessPrivateChecked', function (data) {
|
||||
const field = $(`#thecheckout-address-${data.addressType} [name=other]`);
|
||||
const isBusinessMsg = i18_business ?? 'business';
|
||||
const isPrivateMsg = i18_private ?? 'private';
|
||||
let msg = '';
|
||||
if (data.isChecked) {
|
||||
msg = data.isBusiness ? isBusinessMsg : isPrivateMsg;
|
||||
}
|
||||
field.val(msg);
|
||||
});
|
||||
}
|
||||
|
||||
$('body').on('click', '[data-link-action=toggle-password-visibility]', function () {
|
||||
var input = $(this).closest('label').find('input');
|
||||
@@ -367,7 +408,10 @@ $(document).ready(function () {
|
||||
});
|
||||
$('body').on('click', '[data-link-action=x-update-cart-quantity-up]', function () {
|
||||
var inputEl = $(this).parent().find('[data-link-action=x-update-cart-quantity]');
|
||||
inputEl.val(parseInt(inputEl.val()) + 1).data('no-wait', 1); // .trigger('input');
|
||||
const data = inputEl.data();
|
||||
const qtyHave = parseInt(inputEl.val());
|
||||
const qtyChange = data?.step ?? 1;
|
||||
inputEl.val(qtyHave + qtyChange).data('no-wait', 1); // .trigger('input');
|
||||
inputEl.get(0).dispatchEvent(new Event('input', {
|
||||
bubbles: true
|
||||
}))
|
||||
@@ -375,8 +419,11 @@ $(document).ready(function () {
|
||||
});
|
||||
$('body').on('click', '[data-link-action=x-update-cart-quantity-down]', function () {
|
||||
var inputEl = $(this).parent().find('[data-link-action=x-update-cart-quantity]');
|
||||
if (parseInt(inputEl.attr('min')) < parseInt(inputEl.val())) {
|
||||
inputEl.val(parseInt(inputEl.val()) - 1).data('no-wait', 1); // .trigger('input');
|
||||
const data = inputEl.data();
|
||||
const qtyHave = parseInt(inputEl.val());
|
||||
const qtyChange = data?.step ?? 1;
|
||||
if (parseInt(inputEl.attr('min')) <= qtyHave - qtyChange) {
|
||||
inputEl.val(qtyHave - qtyChange).data('no-wait', 1); // .trigger('input');
|
||||
inputEl.get(0).dispatchEvent(new Event('input', {
|
||||
bubbles: true
|
||||
}))
|
||||
@@ -518,6 +565,11 @@ $(document).ready(function () {
|
||||
$('[data-link-action="toggle-password-visibility"]').removeClass('hidden');
|
||||
|
||||
$(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) {
|
||||
if (['abort', 'canceled'].includes(thrownError)) {
|
||||
// console.log('Ajax aborted', ajaxOptions)
|
||||
return;
|
||||
}
|
||||
|
||||
console.info("Ajax error \n\nDetails:\nError thrown: " + thrownError + "\n" +
|
||||
'event: ');
|
||||
console.info(event);
|
||||
@@ -534,6 +586,7 @@ $(document).ready(function () {
|
||||
var modalTriggeredToBeShown = 0;
|
||||
setTimeout( function() {
|
||||
$(".js-terms a").off('click');
|
||||
$(".dm_gdpr_active a.iframe").removeClass('iframe');
|
||||
$("body#checkout").on("click", ".js-terms a", function (t) {
|
||||
modalTriggeredToBeShown++;
|
||||
setTimeout(function() { modalTriggeredToBeShown--; }, 1000);
|
||||
@@ -597,7 +650,7 @@ $(document).ready(function () {
|
||||
}
|
||||
// Attach also loading-remove handler, when (this) ajax is finished
|
||||
jqxhr.always(function() {
|
||||
$(settings.customPropAffectedBlocks).find('.inner-area > .tc-ajax-loading').remove();
|
||||
$(settings.customPropAffectedBlocks).find('.inner-area > .tc-ajax-loading').remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -638,13 +691,14 @@ function initBlocksSelectors() {
|
||||
}
|
||||
|
||||
function handleWindowResize(win) {
|
||||
if (win.width() <= tcMobileViewThreshold && !tcIsMobileView) {
|
||||
const winWidth = window.innerWidth; // win.width()
|
||||
if (winWidth <= tcMobileViewThreshold && !tcIsMobileView) {
|
||||
tcIsMobileView = true;
|
||||
// Take out all checkout blocks from their desktop layout and put into new container for mobile sorting
|
||||
$('.checkout-block').each(function () {
|
||||
$(this).appendTo('#tc-container-mobile');
|
||||
});
|
||||
} else if (win.width() > tcMobileViewThreshold && tcIsMobileView) {
|
||||
} else if (winWidth > tcMobileViewThreshold && tcIsMobileView) {
|
||||
tcIsMobileView = false;
|
||||
// Put .checkout-block containers back to desktop (out of mobile / single column layout)
|
||||
$('.checkout-block').each(function () {
|
||||
@@ -706,6 +760,13 @@ function checkAndHideGlobalError() {
|
||||
function showGlobalError() {
|
||||
$('#tc-payment-confirmation > .error-msg').show();
|
||||
scrollToError();
|
||||
if (typeof grecaptcha !== 'undefined' && typeof grecaptcha.reset === 'function') {
|
||||
try {
|
||||
grecaptcha.reset();
|
||||
} catch (error) {
|
||||
// intentionally empty
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function scrollToError() {
|
||||
@@ -779,6 +840,13 @@ function modifyRadioOption(radioElements) {
|
||||
});
|
||||
}
|
||||
|
||||
function printContextNotices(blockSel, notices) {
|
||||
$.each(notices, function (index, value) {
|
||||
$(blockSel + ' [name=' + index + ']').addClass('-notice');
|
||||
$(blockSel + ' [name=' + index + ']').after('<div class="field notice-msg">' + value + '</div>');
|
||||
});
|
||||
}
|
||||
|
||||
function printContextErrors(blockSel, errors, triggerElement, dontShowGlobal) {
|
||||
|
||||
var highlightOnElements = [];
|
||||
@@ -818,6 +886,13 @@ function printContextErrors(blockSel, errors, triggerElement, dontShowGlobal) {
|
||||
if (switchToStep > 0 && typeof setHash === 'function') {
|
||||
setHash(switchToStep);
|
||||
}
|
||||
|
||||
// For invisible or non-existing fields, let's collect all errors inside 'general_error'
|
||||
if (!$(blockSel + ' [name=' + index + ']').is(':visible')) {
|
||||
value = index + ': ' + value;
|
||||
index = 'general_error';
|
||||
}
|
||||
|
||||
$(blockSel + ' [name=' + index + ']').addClass('-error');
|
||||
if ($(blockSel + ' [name=' + index + ']').is(':checkbox') || $(blockSel + ' [name=' + index + ']').is(':radio')) {
|
||||
$(blockSel + ' [name=' + index + ']').closest('.form-group').append('<div class="field error-msg">' + value + '</div>');
|
||||
@@ -931,7 +1006,7 @@ function addVoucher() {
|
||||
// so we need to fetch this again; only enable if voucher affect shipping cost
|
||||
getShippingAndPaymentBlocks();
|
||||
} else {
|
||||
updateCheckoutBlocks(jsonData, true, false, false);
|
||||
updateCheckoutBlocks(jsonData, true, false, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -960,7 +1035,7 @@ function removeVoucher(data) {
|
||||
if (tcGlobal_fetchAgainAfterVoucher) {
|
||||
getShippingAndPaymentBlocks();
|
||||
} else {
|
||||
updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping);
|
||||
updateCheckoutBlocks(jsonData, true, false, tc_updatePaymentWithShipping, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -979,6 +1054,7 @@ function confirmOrder(confirmButtonEl) {
|
||||
var validationFailed = false;
|
||||
|
||||
// clear shipping error before validations
|
||||
$('#thecheckout-shipping .error-msg').not(':first-child').remove();
|
||||
$('#thecheckout-shipping .error-msg').hide();
|
||||
|
||||
$.each(tc_confirmOrderValidations, function (validationName, validationCallback) {
|
||||
@@ -1113,6 +1189,12 @@ function updateQuantityFromInput(el) {
|
||||
// $('#thecheckout-cart-summary').prepend('<div class="error-msg">' + errMsg + '</div>')
|
||||
// $('#thecheckout-cart-summary > .error-msg').show();
|
||||
// }
|
||||
prestashop.emit('updateCart', { reason: {
|
||||
idProduct: data["idProduct"],
|
||||
idProductAttribute: data["idProductAttribute"],
|
||||
idProductCustomization: data["idCustomization"],
|
||||
action: 'updateQuantity'
|
||||
}, resp: jsonData });
|
||||
|
||||
updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping);
|
||||
}
|
||||
@@ -1213,6 +1295,12 @@ function checkEmail(accountFormSelector, triggerEl, callback) {
|
||||
blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr)';
|
||||
printContextErrors(blockSel, jsonData.errors, undefined, true);
|
||||
} else {
|
||||
blockSelAccount = ':is(#thecheckout-account)';
|
||||
removeError(blockSelAccount + ' .field.notice-msg');
|
||||
if (typeof jsonData.notices !== 'undefined' && jsonData.notices['email']) {
|
||||
printContextNotices(blockSelAccount, jsonData.notices);
|
||||
}
|
||||
|
||||
updateAccountToken(jsonData.newToken);
|
||||
updateStaticToken(jsonData.newStaticToken);
|
||||
// if out of some reason, shipping/payment blocks are still disallowed, maybe entering email
|
||||
@@ -1358,6 +1446,10 @@ function _getExtraAccountParams() {
|
||||
if ($('[name=colissimo_is_mobile_valid]').length) {
|
||||
extraAccountParams += '&colissimo_is_mobile_valid=' + encodeURIComponent($('[name=colissimo_is_mobile_valid]').val());
|
||||
}
|
||||
// lpshipping module (terminal selection)
|
||||
if ($('[name=lpshipping_express_terminal]').length) {
|
||||
extraAccountParams += '&lpshipping_express_terminal=' + encodeURIComponent($('[name=lpshipping_express_terminal]').val());
|
||||
}
|
||||
// djtalbrazilianregister (CPF/CNPJ fields module)
|
||||
if ($('[name=document_type]').length && $('[name=document_number]').length) {
|
||||
$('input[name=document_type]:checked, input[name=document_number], input[name=rg], input[name=ie]').each( (key, item) => {
|
||||
@@ -1368,6 +1460,19 @@ function _getExtraAccountParams() {
|
||||
if ($('#parcel_codigo').length === 1) {
|
||||
extraAccountParams += '&parcel[codigo]=' + encodeURIComponent($('#parcel_codigo').val());
|
||||
}
|
||||
// dpdbaltics
|
||||
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone]').length === 1) {
|
||||
extraAccountParams += '&dpd-phone=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone]').val());
|
||||
}
|
||||
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone-area]').length === 1) {
|
||||
extraAccountParams += '&dpd-phone-area=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-phone-area]').val());
|
||||
}
|
||||
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-city]').length === 1) {
|
||||
extraAccountParams += '&dpd-city=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-city]').val());
|
||||
}
|
||||
if ($('.carrier-extra-content.dpdbaltics:visible [name=dpd-street]').length === 1) {
|
||||
extraAccountParams += '&dpd-street=' + encodeURIComponent($('.carrier-extra-content.dpdbaltics:visible [name=dpd-street]').val());
|
||||
}
|
||||
return extraAccountParams;
|
||||
}
|
||||
|
||||
@@ -1403,8 +1508,8 @@ function modifyAccountAndAddress(triggerElement, callback) {
|
||||
dataType: "json",
|
||||
data: "modifyAccountAndAddress=1&ajax_request=1&action=modifyAccountAndAddress&trigger=" + triggerSection +
|
||||
"&account=" + serializeVisibleFields('form.account-fields') +
|
||||
"&invoice=" + encodeURIComponent($('#thecheckout-address-invoice form :visible').serialize()) +
|
||||
"&delivery=" + encodeURIComponent($('#thecheckout-address-delivery form :visible').serialize()) +
|
||||
"&invoice=" + encodeURIComponent($('#thecheckout-address-invoice form :visible, #thecheckout-address-invoice .use-other-for-business-private input').serialize()) +
|
||||
"&delivery=" + encodeURIComponent($('#thecheckout-address-delivery form :visible, #thecheckout-address-delivery .use-other-for-business-private input').serialize()) +
|
||||
"&passwordVisible=" + $('#thecheckout-account input[name=password]:visible').length +
|
||||
"&passwordRequired=" + $('#thecheckout-account input[name=create-account]:checked').length +
|
||||
"&invoiceVisible=" + $('#thecheckout-address-invoice form:visible').length +
|
||||
@@ -1421,13 +1526,31 @@ function modifyAccountAndAddress(triggerElement, callback) {
|
||||
|
||||
// Go through account, invoice and delivery errors, show them all
|
||||
if ("undefined" !== typeof jsonData.account && null !== jsonData.account) {
|
||||
blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr)';
|
||||
printContextErrors(blockSel, jsonData.account.errors);
|
||||
|
||||
if (typeof tc_steps !== 'undefined') {
|
||||
// When steps are enabled, these checkboxes can be on different 'steps' pages, so we need to call printContextError with correct blockSel-ector
|
||||
var checkboxes = ['data-privacy', 'psgdpr', 'required-checkbox-1', 'required-checkbox-2'];
|
||||
var checkboxErrors = false
|
||||
for (const checkboxName of checkboxes) {
|
||||
if (jsonData.account.errors[checkboxName]?.length) {
|
||||
printContextErrors(`#thecheckout-${checkboxName}`, jsonData.account.errors);
|
||||
checkboxErrors = true
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!checkboxErrors) {
|
||||
blockSel = ':is(#thecheckout-account)';
|
||||
printContextErrors(blockSel, jsonData.account.errors);
|
||||
}
|
||||
} else {
|
||||
blockSel = ':is(#thecheckout-account, #thecheckout-data-privacy, #thecheckout-psgdpr, #thecheckout-required-checkbox-1, #thecheckout-required-checkbox-2)';
|
||||
printContextErrors(blockSel, jsonData.account.errors);
|
||||
}
|
||||
|
||||
if (jsonData.account.hasErrors) {
|
||||
if (debug_js_controller) {
|
||||
var errMsg = formatErrors(jsonData.account.errors, triggerElement);
|
||||
console.info('modifyAccountAndAddress: account has errros');
|
||||
console.info('modifyAccountAndAddress: account has errors');
|
||||
console.info(errMsg);
|
||||
}
|
||||
|
||||
@@ -1515,7 +1638,7 @@ function modifyAccountAndAddress(triggerElement, callback) {
|
||||
hideConfirmButtonLoader($('[data-link-action=x-save-account-overlay]'));
|
||||
|
||||
if ("undefined" !== typeof jsonData.shippingErrors && null !== jsonData.shippingErrors && "undefined" !== typeof jsonData.shippingErrors.errors) {
|
||||
var errorsTxt = jsonData.shippingErrors.errors.join(', ');
|
||||
var errorsTxt = Object.values(jsonData.shippingErrors.errors).join(', ');
|
||||
$('<div class="error-msg shipping-errors">'+errorsTxt+'</div>').prependTo($('#thecheckout-shipping .inner-wrapper')).show();
|
||||
noErrors = false;
|
||||
showGlobalError();
|
||||
@@ -1574,6 +1697,12 @@ function signIn() {
|
||||
signedInUpdateForm();
|
||||
}
|
||||
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
if(jqXHR.status === 500) {
|
||||
console.error("Internal server error occurred: ", errorThrown);
|
||||
}
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1589,7 +1718,7 @@ function deleteFromCart(data, self) {
|
||||
// Avanto an_productfields module support
|
||||
var anGroupId = $(self).attr('href').match('an_group_id.*');
|
||||
additionalData += (anGroupId)?'&'+anGroupId:'';
|
||||
|
||||
|
||||
// url - implicitly using current
|
||||
$.ajax({
|
||||
customPropAffectedBlocks: '#thecheckout-shipping, #thecheckout-payment, #thecheckout-cart-summary',
|
||||
@@ -1605,6 +1734,13 @@ function deleteFromCart(data, self) {
|
||||
"&token=" + static_token + additionalData,
|
||||
success: function (jsonData) {
|
||||
|
||||
prestashop.emit('updateCart', { reason: {
|
||||
idProduct: data["idProduct"],
|
||||
idProductAttribute: data["idProductAttribute"],
|
||||
idProductCustomization: data["idCustomization"],
|
||||
action: 'deleteFromCart'
|
||||
}, resp: jsonData });
|
||||
|
||||
updateCheckoutBlocks(jsonData, true, true, tc_updatePaymentWithShipping);
|
||||
|
||||
}
|
||||
@@ -1852,10 +1988,63 @@ function highlightSelectedPaymentMethod() {
|
||||
}
|
||||
}
|
||||
|
||||
function updateShippingPrices(shippingBlockHtml) {
|
||||
if ('undefined' !== shippingBlockHtml && null !== shippingBlockHtml) {
|
||||
var $parsedShippingBlock = $(shippingBlockHtml);
|
||||
|
||||
$parsedShippingBlock.find('.delivery-option').each(function() {
|
||||
var $parsedDeliveryOption = $(this);
|
||||
var carrierRef = $parsedDeliveryOption.attr('class').match(/carrier-ref-\d+/)[0];
|
||||
// if carrierRef is not found, we cannot update prices, skip this .each() iteration
|
||||
if (!carrierRef) {
|
||||
return;
|
||||
}
|
||||
|
||||
var $actualDeliveryOption = $('.delivery-options-list .delivery-option.' + carrierRef);
|
||||
// if respective carrierRef delivery option is not available, skip this .each() iteration
|
||||
if (!$actualDeliveryOption.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
var priceTypes = ['carrier-price', 'carrier-price-with-tax-formatted', 'carrier-price-without-tax-formatted'];
|
||||
|
||||
priceTypes.forEach(function(priceType) {
|
||||
var $parsedPrice = $parsedDeliveryOption.find('.delivery-option-detail span.' + priceType + ':first');
|
||||
|
||||
$actualDeliveryOption.find('span.' + priceType).each(function() {
|
||||
var $currentActualPrice = $(this);
|
||||
$currentActualPrice.text($parsedPrice.text());
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function updateShippingBlock(shippingModulesList, html, checksum, triggerElementName) {
|
||||
if ('undefined' !== html && null !== html && shippingBlockChecksum != checksum) {
|
||||
html = parseShippingMethods(shippingModulesList, html);
|
||||
|
||||
// save shipping form text input fields and select boxes, so we can restore them after hook update
|
||||
var shipping_fields_values = {};
|
||||
shippingBlockElement.find('input[type=text], select, form input[type=radio]:checked, textarea').not('[name^=delivery_option]').each(function () {
|
||||
if ("undefined" !== typeof $(this).attr('id') && !$(this).is(':radio')) {
|
||||
shipping_fields_values['[id=' + $(this).attr('id') + ']'] = $(this).val();
|
||||
} else if ("undefined" !== typeof $(this).attr('name')) {
|
||||
shipping_fields_values['[name="' + $(this).attr('name') + '"]'] = $(this).val();
|
||||
}
|
||||
});
|
||||
|
||||
updateHtmlBlock(shippingBlockElement, html);
|
||||
|
||||
// restore shipping for input and select fields values
|
||||
$.each(shipping_fields_values, function (index, value) {
|
||||
if ($(index).is(':radio')) {
|
||||
$(index+'[value="'+value+'"]').prop('checked', true);
|
||||
} else {
|
||||
$(index).val(value);
|
||||
}
|
||||
});
|
||||
|
||||
shippingBlockChecksum = checksum;
|
||||
|
||||
afterShippingLoadCallbacks(shippingModulesList, html, triggerElementName);
|
||||
@@ -1882,7 +2071,9 @@ function updateShippingBlock(shippingModulesList, html, checksum, triggerElement
|
||||
// E.g. packzkomaty (sensbitpaczkomatymap) needs to trigger radio button change in order
|
||||
// to display list of pickup points; Chronopost and Mondial relay need it as well
|
||||
// forceRefreshShipping: If ="1", it will always reload shipping methods, so we need to avoid triggering click to avoid endless loop
|
||||
if ($(deliveryOptionSelector).length && !payment.isConfirmationTrigger(triggerElementName) && !forceRefreshShipping) {
|
||||
// To disable carrier initialization and 'blink' effect, add Custom JS code: const tc_initCarrierJs = false;
|
||||
if ((typeof tc_initCarrierJs !== 'undefined' ? tc_initCarrierJs : true) &&
|
||||
$(deliveryOptionSelector).length && !payment.isConfirmationTrigger(triggerElementName) && !forceRefreshShipping) {
|
||||
$(deliveryOptionSelector).prop('checked', false).trigger('click');
|
||||
return true;
|
||||
} else {
|
||||
@@ -1940,7 +2131,7 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
|
||||
// Shall be input[type=hidden] added here? It did not work with add_gopay_new
|
||||
// then, we need an exception: .not('[data-payment-module=add_gopay_new] input[type=hidden]')
|
||||
// Exception for hidden fields: input[name="issuer"] = mollie payments
|
||||
paymentBlockElement.find('input[type=text], select, input[name="issuer"], input[name="transferGateway"], form input[type=radio]:checked, textarea').each(function () {
|
||||
paymentBlockElement.find('input[type=text], select, input[name="issuer"], input[name="transferGateway"], form input[type=radio]:checked, textarea, input[type=date]').each(function () {
|
||||
if ("undefined" !== typeof $(this).attr('id') && !$(this).is(':radio') && $(this).attr('name') !== 'pmethod') {
|
||||
payment_fields_values['[id=' + $(this).attr('id') + ']'] = $(this).val();
|
||||
} else if ("undefined" !== typeof $(this).attr('name')) {
|
||||
@@ -1978,6 +2169,8 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
|
||||
|
||||
afterPaymentLoadCallbacks(paymentModulesList, html, triggerElementName);
|
||||
|
||||
// Hook to this:
|
||||
// prestashop.on('thecheckout_updatePaymentBlock', function() { console.log('payment block updated!'); })
|
||||
prestashop.emit('thecheckout_updatePaymentBlock', {
|
||||
reason: 'update',
|
||||
});
|
||||
@@ -1985,7 +2178,7 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
|
||||
// restore payment for input and select fields values
|
||||
$.each(payment_fields_values, function (index, value) {
|
||||
if ($(index).is(':radio')) {
|
||||
$(index+'[value='+value+']').prop('checked', true);
|
||||
$(index+'[value="'+value+'"]').prop('checked', true);
|
||||
} else {
|
||||
$(index).val(value);
|
||||
}
|
||||
@@ -1993,12 +2186,12 @@ function updatePaymentBlock(paymentModulesList, html, checksum, triggerElementNa
|
||||
|
||||
// Special molliepayments update - where we need to restore not only input/select value, but also special <button> (which replaces dropdown)
|
||||
if ($('#mollie-issuer-dropdown-button').length && $('input[name="issuer"]').length && '' != $('input[name="issuer"]').val()) {
|
||||
var selectedMolliePayment = $('input[name="issuer"]').val();
|
||||
var selectedMolliePayment = $('input[name="issuer"]').val();
|
||||
var aMollieEl = $('a[data-ideal-issuer='+selectedMolliePayment+']');
|
||||
if (aMollieEl.length) {
|
||||
$('#mollie-issuer-dropdown-button').text(aMollieEl.text());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Init PS Checkout render
|
||||
@@ -2105,7 +2298,7 @@ function updateAddressBlock(addressType, html, htmlAddressDropdown) {
|
||||
}
|
||||
}
|
||||
|
||||
// Hook to this:
|
||||
// Hook to this (alternative of prestashop.emit only on thecheckout page):
|
||||
// $(document).on('thecheckout_Address_Modified', function(event, { addressType }) {
|
||||
// console.log('Address modified!', addressType);
|
||||
// });
|
||||
@@ -2116,7 +2309,7 @@ function updateAddressBlock(addressType, html, htmlAddressDropdown) {
|
||||
|
||||
var cartTotalWeight = 0; // will be changed in updateCheckoutBlocks and then used in updateCartSummaryBlock
|
||||
|
||||
function updateCheckoutBlocks(jsonData, updateSummary, updateShipping, updatePayment) {
|
||||
function updateCheckoutBlocks(jsonData, updateSummary, updateShipping, updatePayment, updateShippingPricesOnly = false) {
|
||||
if ("undefined" !== typeof jsonData.emptyCart && jsonData.emptyCart === true) {
|
||||
$('body').addClass('is-empty-cart');
|
||||
// if ("undefined" !== typeof prestashop && "undefined" !== typeof prestashop.urls) {
|
||||
@@ -2135,6 +2328,10 @@ function updateCheckoutBlocks(jsonData, updateSummary, updateShipping, updatePay
|
||||
var shippingBlockUpdated = false;
|
||||
var paymentBlockUpdated = false;
|
||||
|
||||
if ('undefined' !== typeof updateShippingPricesOnly && updateShippingPricesOnly) {
|
||||
updateShippingPrices(jsonData.shippingBlock);
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof updateShipping && updateShipping) {
|
||||
shippingBlockUpdated = updateShippingBlock(jsonData.externalShippingModules, jsonData.shippingBlock, jsonData.shippingBlockChecksum, jsonData.triggerElementName);
|
||||
}
|
||||
@@ -2178,19 +2375,22 @@ function toggleGiftMessage() {
|
||||
$(this).addClass('in show')
|
||||
});
|
||||
}
|
||||
selectDeliveryOption($('#js-delivery'));
|
||||
}
|
||||
|
||||
function selectDeliveryOption(deliveryForm) {
|
||||
|
||||
highlightSelectedShippingMethod();
|
||||
// To support mondial relay v3.0+, allow a bit of time for widget markup appear in extra content
|
||||
setTimeout(function () {
|
||||
var selectedDeliveryOptionExtra = $(deliveryOptionSelector).closest('.delivery-option-row').next('.carrier-extra-content');
|
||||
$('.carrier-extra-content').not(selectedDeliveryOptionExtra).hide();
|
||||
if (selectedDeliveryOptionExtra.height()) {
|
||||
selectedDeliveryOptionExtra.slideDown();
|
||||
}
|
||||
}, 100);
|
||||
if (installedModules['mondialrelay']) {
|
||||
setTimeout(function () {
|
||||
var selectedDeliveryOptionExtra = $(deliveryOptionSelector).closest('.delivery-option-row').next('.carrier-extra-content');
|
||||
$('.carrier-extra-content').not(selectedDeliveryOptionExtra).hide();
|
||||
if (selectedDeliveryOptionExtra.height()) {
|
||||
selectedDeliveryOptionExtra.slideDown();
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
// url - implicitly using current
|
||||
$.ajax({
|
||||
@@ -2225,3 +2425,97 @@ function setDeliveryMessage() {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const tc_ongoingXhrs = {}
|
||||
|
||||
const tc_getTimestamp = () => {
|
||||
const now = new Date();
|
||||
return [
|
||||
now.getTime(),
|
||||
`${now.getSeconds().toString().padStart(2, '0')}:${now.getMilliseconds().toString().padStart(3, '0')}`
|
||||
]
|
||||
}
|
||||
|
||||
const tc_getAction = (data) => {
|
||||
const match = data.match(/action=([-\w]+)/)
|
||||
|
||||
if (!match) {
|
||||
return null
|
||||
}
|
||||
|
||||
// construct 'metaAction', set of actions that we don't want to run in parallel, so that they shall be treated
|
||||
// as synchronous
|
||||
const metaAction = {
|
||||
'modifyAccountAndAddress': 'account-modification',
|
||||
'checkEmail': 'account-modification',
|
||||
}
|
||||
if (typeof metaAction[match[1]] !== 'undefined') {
|
||||
return metaAction[match[1]]
|
||||
} else {
|
||||
return match[1]
|
||||
}
|
||||
}
|
||||
|
||||
const tc_AJAX = {
|
||||
SEND: ' send ',
|
||||
COMPLETE: ' complete '
|
||||
};
|
||||
|
||||
const tc_logAction = (method, action) => {
|
||||
const [timestamp, timestamp_str] = tc_getTimestamp()
|
||||
|
||||
const ongoingXhr = typeof tc_ongoingXhrs[action] !== 'undefined'
|
||||
|
||||
if (method == tc_AJAX.COMPLETE && !ongoingXhr) {
|
||||
return
|
||||
}
|
||||
|
||||
let took = ''
|
||||
if (method == tc_AJAX.SEND) {
|
||||
// wait only 1s, if response is not received, release the lock and let the other (potential) xhr to continue
|
||||
tc_ongoingXhrs[action] = { timestamp, maxWait: 1000 }
|
||||
} else {
|
||||
took = ` (took: ${timestamp - tc_ongoingXhrs[action]?.timestamp}ms)`
|
||||
delete tc_ongoingXhrs[action]
|
||||
}
|
||||
|
||||
if (debug_js_controller) {
|
||||
console.log(`[${method}] '${action}' @ ${timestamp_str}s${took}`)
|
||||
}
|
||||
}
|
||||
|
||||
$( document ).on( "ajaxSend", function(event, jqxhr, settings) {
|
||||
if (typeof settings.data === 'string') {
|
||||
const action = tc_getAction(settings.data)
|
||||
if (action) {
|
||||
tc_logAction(tc_AJAX.SEND, action)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$( document ).on( "ajaxSuccess", function(event, jqxhr, settings) {
|
||||
if (typeof settings.data === 'string') {
|
||||
const action = tc_getAction(settings.data)
|
||||
if (action) {
|
||||
tc_logAction(tc_AJAX.COMPLETE, action)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
Disallow duplicate AJAX requests, but with max timeout (default 1s) to avoid endless waiting
|
||||
*/
|
||||
$.ajaxSetup({
|
||||
beforeSend: function(jqXHR, settings) {
|
||||
if (typeof settings.data === 'string') {
|
||||
const action = tc_getAction(settings.data)
|
||||
if (action && typeof tc_ongoingXhrs[action] !== 'undefined' && tc_ongoingXhrs[action]?.maxWait > 0) {
|
||||
tc_ongoingXhrs[action].maxWait -= 200
|
||||
setTimeout(function() {
|
||||
$.ajax(settings);
|
||||
}, 200);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -31,4 +31,15 @@ if ("undefined" !== typeof amazon_ongoing_session && amazon_ongoing_session) {
|
||||
formEl.addClass('amazon-visible');
|
||||
additionalEl.addClass('amazon-visible');
|
||||
titleEl.addClass('amazon-visible');
|
||||
}
|
||||
|
||||
// Check if there's 'option' parameter in the url, if yes, let's hide everything except single payment method
|
||||
var searchParams = new URLSearchParams(window.location.search);
|
||||
var optionSet = searchParams.get('option');
|
||||
if (optionSet) {
|
||||
$('body').addClass('p3i-option-set');
|
||||
// $('[id='+optionSet+'-container]').parent('div').addClass('p3i-visible-only');
|
||||
$('[id^='+optionSet+'-]').addClass('p3i-visible-only');
|
||||
setTimeout(function() {$('[id='+optionSet+']').trigger('click');}, 200);
|
||||
$('[id^=conditions_to_approve]').prop('checked', false).trigger('click');
|
||||
}
|
||||
@@ -34,6 +34,7 @@ var tc_facebookLogin = (function () {
|
||||
|
||||
function backendSignIn(access_token) {
|
||||
$.ajax({
|
||||
url: prestashop.urls.pages.order,
|
||||
type: 'POST',
|
||||
cache: false,
|
||||
dataType: "json",
|
||||
@@ -45,8 +46,15 @@ var tc_facebookLogin = (function () {
|
||||
// TODO: better error handling
|
||||
console.error(jsonData.errors);
|
||||
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
|
||||
signedInUpdateForm();
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
if(jqXHR.status === 500) {
|
||||
console.error("Internal server error occurred: ", errorThrown);
|
||||
// Add any additional error handling logic here
|
||||
}
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -132,6 +140,13 @@ var tc_googleLogin = (function () {
|
||||
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
if(jqXHR.status === 500) {
|
||||
console.error("Internal server error occurred: ", errorThrown);
|
||||
// Add any additional error handling logic here
|
||||
}
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
55
modules/thecheckout/views/js/parsers/apaczka.js
Normal 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) {
|
||||
}
|
||||
|
||||
}
|
||||
36
modules/thecheckout/views/js/parsers/bongooglepay.js
Normal 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);
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
@@ -18,6 +18,9 @@ checkoutPaymentParser.braintreeofficial = {
|
||||
init_once: function(elements) {
|
||||
// Change original .additional-information block to js-payment-option-form
|
||||
const additionalInfoEl = elements.find('.additional-information');
|
||||
if (additionalInfoEl.length === 0) {
|
||||
return;
|
||||
}
|
||||
const formId = additionalInfoEl.attr('id').replace(/payment-option-(\d+)-.*/, 'pay-with-payment-option-$1-form');
|
||||
additionalInfoEl.attr('id', formId).attr('class', 'js-payment-option-form ps-hidden').hide();
|
||||
additionalInfoEl.find('.row > .col-md-10').removeClass('col-md-10');
|
||||
|
||||
26
modules/thecheckout/views/js/parsers/buckaroo3.js
Normal 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>');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,9 +13,9 @@ checkoutPaymentParser.codpro = {
|
||||
|
||||
},
|
||||
|
||||
container: function (element) {
|
||||
additionalInformation: function (element) {
|
||||
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
|
||||
var feeEl = element.find('label span');
|
||||
var feeEl = element.find('#codpro_fee');
|
||||
if ('undefined' !== typeof feeEl && feeEl) {
|
||||
var fee = parseFloat(feeEl.text().replace(/[^\d,]/g,'').replace(',','.'));
|
||||
element.last().append('<div class="payment-option-fee hidden" id="'+paymentOption+'-fee">'+fee+'</div>');
|
||||
|
||||
@@ -8,7 +8,24 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
// Default props so that widget can load without errors
|
||||
colissimoDeliveryAddress = { 'address': '', 'zipcode': '', 'city': '' }
|
||||
colissimoPreparationTime = 1;
|
||||
|
||||
checkoutShippingParser.colissimo = {
|
||||
extra_content: function (element) {
|
||||
const input = element.html();
|
||||
// parse props and re-export to the window object
|
||||
const colissimo_props = input.matchAll(/const ([^=]+)=([^;]+);/g)
|
||||
|
||||
for (const x of colissimo_props) {
|
||||
[prop, value] = [x[1].trim(), x[2].trim()]
|
||||
// console.log(`prop:${prop}, value:${value}`);
|
||||
window[prop] = (value.indexOf('{') == 0) ?
|
||||
JSON.parse(value.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": ').replace(/'/g,'"'))
|
||||
: eval(value);
|
||||
}
|
||||
},
|
||||
on_ready: function() {
|
||||
setTimeout(function(){
|
||||
if ($('.iti').length == 0 && 'undefined' !== typeof initMobileField) {
|
||||
|
||||
17
modules/thecheckout/views/js/parsers/datatranscw.js
Normal 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')
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
276
modules/thecheckout/views/js/parsers/dhlassistant.js
Normal 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) {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,7 +17,7 @@ checkoutPaymentParser.dm_cashondelivery = {
|
||||
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
|
||||
var feeHtml = element.find('label span').html();
|
||||
var fee = payment.parsePrice(feeHtml);
|
||||
if (!isNaN(fee)) {
|
||||
if (!isNaN(fee) && fee !== 0) {
|
||||
element.last().append('<div class="payment-option-fee hidden" id="'+paymentOption+'-fee">'+fee+'</div>');
|
||||
}
|
||||
},
|
||||
@@ -26,7 +26,7 @@ checkoutPaymentParser.dm_cashondelivery = {
|
||||
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
|
||||
var feeHtml = element.find('section p').html();
|
||||
var fee = payment.parsePrice(feeHtml);
|
||||
if (!isNaN(fee)) {
|
||||
if (!isNaN(fee) && fee !== 0) {
|
||||
element.last().append('<div class="payment-option-fee hidden" id="' + paymentOption + '-fee">' + fee + '</div>');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,10 @@ tc_confirmOrderValidations['dpdpoland'] = function() {
|
||||
|
||||
checkoutShippingParser.dpdpoland = {
|
||||
after_load_callback: function(deliveryOptionIds) {
|
||||
// nothing necessary here; just make an update to dpdpoland/views/templates/hook/pudo.tpl, placing code in <script> in condition:
|
||||
/*
|
||||
nothing necessary here; just make an update to dpdpoland/views/templates/hook/pudo.tpl,
|
||||
placing code in <script> (starting with 'const iframe = document.createElement("iframe");') in condition:
|
||||
*/
|
||||
// if ('undefined' === typeof iframe) { /* original code here */ }
|
||||
},
|
||||
}
|
||||
|
||||
19
modules/thecheckout/views/js/parsers/estimateddelivery.js
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
39
modules/thecheckout/views/js/parsers/floapay.js
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
50
modules/thecheckout/views/js/parsers/fspickupatstore.js
Normal 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) {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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');
|
||||
},
|
||||
|
||||
}
|
||||
36
modules/thecheckout/views/js/parsers/geodisofficiel.js
Normal 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) {
|
||||
}
|
||||
|
||||
}
|
||||
35
modules/thecheckout/views/js/parsers/globkuriermodule.js
Normal 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) {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,10 +9,17 @@
|
||||
*/
|
||||
|
||||
|
||||
/* (!) IMPORTANT (!)
|
||||
It's necessary to comment-out following line in: modules/itellashipping/views/js/front.js, like this:
|
||||
// $master_container.find('#itella-ps17-extra').remove();
|
||||
*/
|
||||
|
||||
tc_confirmOrderValidations['itellashipping'] = function() {
|
||||
if (
|
||||
$('.delivery-option.itellashipping input[name^=delivery_option]').is(':checked') &&
|
||||
!$('#itella_pickup_point_id').val()
|
||||
$('.delivery-option.itellashipping input[name^=delivery_option]:checked').closest('.delivery-option.itellashipping').next('.carrier-extra-content.itellashipping').length > 0 &&
|
||||
$('.delivery-option.itellashipping input[name^=delivery_option]:checked').closest('.delivery-option.itellashipping').next('.carrier-extra-content.itellashipping').find('#itella_pickup_point_id').length > 0 &&
|
||||
$('.delivery-option.itellashipping input[name^=delivery_option]:checked').closest('.delivery-option.itellashipping').next('.carrier-extra-content.itellashipping').find('#itella_pickup_point_id').val() == ''
|
||||
) {
|
||||
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
|
||||
shippingErrorMsg.show();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
23
modules/thecheckout/views/js/parsers/lpshipping.js
Normal 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;
|
||||
}
|
||||
}
|
||||
84
modules/thecheckout/views/js/parsers/mijoravenipak.js
Normal 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);
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
@@ -10,6 +10,33 @@
|
||||
|
||||
checkoutPaymentParser.mollie = {
|
||||
|
||||
container: function (element) {
|
||||
payment.setPopupPaymentType(element);
|
||||
|
||||
// Add CSS rule to hide payment form in payment methods list
|
||||
var cssEl = document.createElement('style'),sheet;
|
||||
document.head.appendChild(cssEl);
|
||||
cssEl.sheet.insertRule(`
|
||||
section#checkout-payment-step [data-payment-module=mollie] > .additional-information > .mollie-iframe-container {
|
||||
display: none!important;
|
||||
}
|
||||
`);
|
||||
cssEl.sheet.insertRule(`
|
||||
button.btn.btn-primary.center-block.disabled {
|
||||
pointer-events: all;
|
||||
opacity: 1;
|
||||
}
|
||||
`);
|
||||
},
|
||||
|
||||
popup_onopen_callback: function () {
|
||||
if ($('.additional-information.mollie > .mollie-iframe-container').length) {
|
||||
var script = document.createElement('script');
|
||||
script.src = tcModuleBaseUrl+'/../mollie/views/js/front/mollie_iframe.js';
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
},
|
||||
|
||||
form: function (element) {
|
||||
var paymentOption = element.attr('id').match(/payment-option-\d+/)[0];
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
/* Last tested on 13.7.2023 with mondialrelay 3.3.7 by ScaleDEV */
|
||||
|
||||
tc_confirmOrderValidations['mondialrelay'] = function() {
|
||||
if (
|
||||
/*$('#mondialrelay_widget').is(':visible')*/
|
||||
@@ -25,6 +27,17 @@ tc_confirmOrderValidations['mondialrelay'] = function() {
|
||||
}
|
||||
|
||||
checkoutShippingParser.mondialrelay = {
|
||||
|
||||
after_load_callback: function(deliveryOptionIds) {
|
||||
// reinit only when widget is already initialized = that means, mondialrelay module won't try to init it again, but we have to.
|
||||
if (typeof mondialrelayWidget !== 'undefined' && mondialrelayWidget.initialized === true) {
|
||||
$.getScript(tcModuleBaseUrl + '/../mondialrelay/views/js/front/checkout/checkout-17.js');
|
||||
if (typeof MONDIALRELAY_ADDRESS_OPC !== 'undefined') {
|
||||
MONDIALRELAY_ADDRESS_OPC = true;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
init_once: function (elements) {
|
||||
if (debug_js_controller) {
|
||||
console.info('[thecheckout-mondialrelay.js] init_once()');
|
||||
@@ -39,7 +52,7 @@ checkoutShippingParser.mondialrelay = {
|
||||
// Uncheck mondialrelay item, so that it can be manually selected
|
||||
//element.after("<script>$('.delivery-option.mondialrelay input[name^=delivery_option]').prop('checked', false)</script>");
|
||||
// Mondial v3.0+ by 202 ecommerce
|
||||
element.append("<script>$(document).ready(setTimeout(function(){$('#js-delivery').find('[name^=\"delivery_option\"]:checked').trigger('change');},500)); prestashop.emit(\"updatedDeliveryForm\",{dataForm:$('#js-delivery').serializeArray(),deliveryOption:$('#js-delivery').find('[name^=\"delivery_option\"]:checked')});</script>");
|
||||
// element.append("<script>$(document).ready(setTimeout(function(){$('#js-delivery').find('[name^=\"delivery_option\"]:checked').trigger('change');},500)); prestashop.emit(\"updatedDeliveryForm\",{dataForm:$('#js-delivery').serializeArray(),deliveryOption:$('#js-delivery').find('[name^=\"delivery_option\"]:checked')});</script>");
|
||||
},
|
||||
|
||||
extra_content: function (element) {
|
||||
|
||||
@@ -23,6 +23,25 @@ tc_confirmOrderValidations['packetery'] = function() {
|
||||
}
|
||||
|
||||
checkoutShippingParser.packetery = {
|
||||
|
||||
after_load_callback: function(deliveryOptionIds) {
|
||||
// if ('undefined' !== typeof initializePacketaWidget && $(".zas-box").length)
|
||||
// initializePacketaWidget();
|
||||
// if ('undefined' !== typeof tools){
|
||||
// tools.fixextracontent(country);
|
||||
// if ('undefined' !== typeof tools && 'undefined' !== typeof tools.readAjaxFields) {
|
||||
// tools.readAjaxFields();
|
||||
// }
|
||||
// var packeteryEl = $('.carrier-extra-content.packetery');
|
||||
// if (packeteryEl.length) {
|
||||
// var extra = packeteryEl.parent();
|
||||
// if ('undefined' !== typeof packetery && 'undefined' !== typeof packetery.widgetGetCities) {
|
||||
// packetery.widgetGetCities(extra);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
},
|
||||
|
||||
init_once: function (elements) {
|
||||
|
||||
},
|
||||
|
||||
@@ -8,7 +8,49 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
/**
|
||||
Modify please /modules/paynow/controllers/front/payment.php, remove lines:
|
||||
if ($id_customer != $this->context->customer->id) {
|
||||
Tools::redirect('index.php?controller=order&step=1');
|
||||
}
|
||||
*/
|
||||
|
||||
tc_confirmOrderValidations['paynow'] = function () {
|
||||
if (
|
||||
$('.paynow-payment-option-container #paynow_blik_code').is(':visible') &&
|
||||
$('.paynow-payment-option-container #paynow_blik_code').val() == ''
|
||||
) {
|
||||
var paymentErrorMsg = $('#thecheckout-payment .dynamic-content > .inner-wrapper > .error-msg');
|
||||
$('.payment-validation-details').remove();
|
||||
paymentErrorMsg.append('<span class="payment-validation-details"> (BLIK kod)</span>')
|
||||
paymentErrorMsg.show();
|
||||
scrollToElement(paymentErrorMsg);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
checkoutPaymentParser.paynow = {
|
||||
|
||||
container: function(element) {
|
||||
const isBlikPaymentOption = element.next('.js-payment-option-form').find('form.paynow-blik-form').length == 1
|
||||
|
||||
if (isBlikPaymentOption) {
|
||||
payment.setPopupPaymentType(element);
|
||||
}
|
||||
|
||||
// Add CSS rule to hide blik form in payment methods list when T&C checkbox is ticked;
|
||||
// but keep it visible in the popup
|
||||
var cssEl = document.createElement('style'),sheet;
|
||||
document.head.appendChild(cssEl);
|
||||
cssEl.sheet.insertRule(`
|
||||
section#checkout-payment-step .paynow-blik-form {
|
||||
display: none;
|
||||
}
|
||||
`);
|
||||
},
|
||||
|
||||
after_load_callback: function() {
|
||||
$.getScript(tcModuleBaseUrl+'/../paynow/views/js/front.js')
|
||||
.done(
|
||||
@@ -16,6 +58,9 @@ checkoutPaymentParser.paynow = {
|
||||
setTimeout(function() {
|
||||
if (typeof enableBlikSupport !== 'undefined') { enableBlikSupport(); }
|
||||
if (typeof enablePblSupport !== 'undefined') { enablePblSupport(); }
|
||||
if (typeof paynow !== 'undefined' && typeof paynow.config !== 'undefined') {
|
||||
paynow.config.validateTerms = false; // because if T&C are disabled in PS settings, BLIK will not confirm
|
||||
}
|
||||
}, 300);
|
||||
});
|
||||
// if ("undefined" !== typeof enableBlikSupport) {
|
||||
@@ -24,15 +69,16 @@ checkoutPaymentParser.paynow = {
|
||||
},
|
||||
|
||||
form: function (element) {
|
||||
var blikPayButtonSelector = "form.paynow-blik-form .paynow-payment-option-container button.btn-primary";
|
||||
if (element.find('.paynow-blik-form').length) {
|
||||
element.find('.payment-form').attr('onsubmit', '$("'+blikPayButtonSelector+'").click(); return false;');
|
||||
}
|
||||
|
||||
// Add CSS rule to hid blickPayButton
|
||||
var element = document.createElement('style'),sheet;
|
||||
document.head.appendChild(element);
|
||||
element.sheet.insertRule(blikPayButtonSelector + '{ display: none; }');
|
||||
// var blikPayButtonSelector = "form.paynow-blik-form .paynow-payment-option-container button.btn-primary";
|
||||
// if (element.find('.paynow-blik-form').length) {
|
||||
// element.find('.payment-form').attr('onsubmit', '$("'+blikPayButtonSelector+'").click(); return false;');
|
||||
// element.find(blikPayButtonSelector).prop('disabled', false);
|
||||
// }
|
||||
//
|
||||
// // Add CSS rule to hide blickPayButton
|
||||
// var element = document.createElement('style'),sheet;
|
||||
// document.head.appendChild(element);
|
||||
// element.sheet.insertRule(blikPayButtonSelector + '{ display: none; }');
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
/*
|
||||
IMPORTANT: In paypal v5.8.0, make sure to disable 'Put the PayPal button at the end of the order page' option!
|
||||
If using Giropay, Sofort, SEPA - also set in Paypal configuration 'Redirection' mode, instead of 'In-Context'
|
||||
*/
|
||||
|
||||
checkoutPaymentParser.paypal = {
|
||||
@@ -37,7 +38,7 @@ checkoutPaymentParser.paypal = {
|
||||
additionalInfoElement = $(containerElement).next('[id$=-additional-information]');
|
||||
// If embedded mode (=data-container-express-checkout button exists), set popup payment type and make it binary
|
||||
|
||||
if (additionalInfoElement.find('[data-container-express-checkout]').length || additionalInfoElement.find('[data-container-bnpl]').length) {
|
||||
if (additionalInfoElement.find('[data-container-express-checkout]').length || additionalInfoElement.find('[data-container-bnpl]').length || additionalInfoElement.find('[paypal-acdc-card-wrapper]').length) {
|
||||
payment.setPopupPaymentType($(containerElement), true);
|
||||
additionalInfoElement.addClass('paypal').addClass('paypal-hide-pp-info-and-button');
|
||||
additionalInfoElement.find('.pp-info').prependTo(additionalInfoElement);
|
||||
@@ -80,6 +81,11 @@ checkoutPaymentParser.paypal = {
|
||||
}
|
||||
|
||||
}
|
||||
// New Paypal (5.7+) card payment (acdc)
|
||||
if ($(paymentContent).find('[paypal-acdc-wrapper]').length) {
|
||||
var acdcRadio = $(paymentContent).find('.payment-option');
|
||||
payment.setPopupPaymentType(acdcRadio);
|
||||
}
|
||||
});
|
||||
|
||||
var express_checkout_make_visible = '<script>\
|
||||
@@ -130,6 +136,14 @@ checkoutPaymentParser.paypal = {
|
||||
element.append(additional_script_tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
popup_onopen_callback: function () {
|
||||
if ($('#bon-google-checkout').length) {
|
||||
var script = document.createElement('script');
|
||||
script.src = tcModuleBaseUrl+'/../bongooglepay/views/js/bongooglepay-front.js';
|
||||
document.head.appendChild(script);
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
34
modules/thecheckout/views/js/parsers/pm_applepay.js
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,11 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
/** Important - change this:
|
||||
* in modules/pm_subscription/models/Dispatcher/MainCase.php, in method includeAssetsOfPaymentModules():
|
||||
$isOrderController = $this->context->controller instanceof OrderController || $this->context->controller instanceof OrderOpcController || $this->context->controller->page_name == "module-thecheckout-order";
|
||||
*/
|
||||
|
||||
checkoutPaymentParser.pm_subscription_popup = {
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
*/
|
||||
|
||||
/* (!)
|
||||
postfinancecheckout v1.2.3 - by Customweb
|
||||
Tested on 4.3.2024, with postfinancecheckout v1.2.34 - by Customweb
|
||||
in modules/postfinancecheckout/views/js/frontend/checkout.js, change (!) on 2 places:
|
||||
|
||||
if (current_method.data("module-name") == "postfinancecheckout") {
|
||||
|
||||
53
modules/thecheckout/views/js/parsers/przelewy24.js
Normal 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) {
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
|
||||
/* Tested with ps_checkout v2.21.0 (12.01.2023) */
|
||||
/* Tested with ps_checkout v8.4.0 - commented out payment form removal (29.04.2024) */
|
||||
window.tc_ps_checkout = {
|
||||
init: false
|
||||
};
|
||||
@@ -80,7 +81,7 @@ checkoutPaymentParser.ps_checkout = {
|
||||
}
|
||||
|
||||
// Disable weird 'click' emitted by _dev\js\front\src\components\1_7\payment-options.component.js in renderPaymentOptionItems() method
|
||||
$('body').off('click.ps_checkout').on('click.ps_checkout', '[data-module-name=ps_checkout-paypal]', (e) => {
|
||||
$('body').off('click.ps_checkout').on('click.ps_checkout', '[data-module-name^=ps_checkout-paypal]', (e) => {
|
||||
let stackTrace = JSON.stringify(Error().stack);
|
||||
if (stackTrace && stackTrace.match('modules/ps_checkout/views/js/front.js')) {
|
||||
console.log('triggered by ps_checkout paypal fundingSource HTMLElement.click(), skip selected payment toggle');
|
||||
@@ -115,12 +116,12 @@ checkoutPaymentParser.ps_checkout = {
|
||||
},
|
||||
|
||||
form: function (element, triggerElementName) {
|
||||
if (!payment.isConfirmationTrigger(triggerElementName)) {
|
||||
if (debug_js_controller) {
|
||||
console.info('[ps_checkout parser] Not confirmation trigger, removing payment form');
|
||||
}
|
||||
element.remove();
|
||||
}
|
||||
// if (!payment.isConfirmationTrigger(triggerElementName)) {
|
||||
// if (debug_js_controller) {
|
||||
// console.info('[ps_checkout parser] Not confirmation trigger, removing payment form');
|
||||
// }
|
||||
// element.remove();
|
||||
// }
|
||||
},
|
||||
|
||||
additionalInformation: function (element) {
|
||||
|
||||
29
modules/thecheckout/views/js/parsers/pshugls.js
Normal 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;
|
||||
}
|
||||
}
|
||||
43
modules/thecheckout/views/js/parsers/redsysinsite.js
Normal 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) {
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,23 @@
|
||||
*/
|
||||
|
||||
/* popup mode last tested on 15.4.2023 with revolutpayment v2.2.4 */
|
||||
/* popup/direct(=embedded)/redirect modes tested on 1.5.2024 with revolutpayment v2.8.6 */
|
||||
/* Update please \revolutpayment\views\js\version17\revolut.payment.js, method initCheckoutUpsellBanner():
|
||||
function initCheckoutUpsellBanner() {
|
||||
let upsellBannerElement = document.getElementById("revolut-upsell-banner");
|
||||
// Thecheckout module update begin
|
||||
if (upsellBannerElement === null) { return; }
|
||||
// Thecheckout module udpate end
|
||||
|
||||
And for revolutpay button, also update stopLoading() method, like so:
|
||||
function stopLoading() {
|
||||
// Thecheckout module update BEGIN
|
||||
if (typeof $.unblockUI === 'function') {
|
||||
$.unblockUI();
|
||||
}
|
||||
// Thecheckout module update END
|
||||
}
|
||||
*/
|
||||
|
||||
checkoutPaymentParser.revolutpayment = {
|
||||
|
||||
@@ -20,6 +37,25 @@ checkoutPaymentParser.revolutpayment = {
|
||||
|
||||
},
|
||||
|
||||
after_load_callback: function() {
|
||||
// Update card logos, by default only VISA is shown
|
||||
if (typeof logo_path === "undefined") {
|
||||
return;
|
||||
}
|
||||
|
||||
let visa_logo = `<img class="visa-logo" src="${logo_path}visa-logo.svg"/>`;
|
||||
let mastercard_logo = `<img class="mastercard-logo" src="${logo_path}master-card-logo.svg">`;
|
||||
let amex_logo = `<img class="amex-logo" style="display:none" src="${logo_path}amex.svg">`;
|
||||
|
||||
$(`img[src="${logo_path}visa-logo.svg"] ~ .tc-rev-logos`).remove();
|
||||
$(`img[src="${logo_path}visa-logo.svg"]`).after(`${visa_logo}<span class="tc-rev-logos">${mastercard_logo}${amex_logo}</span>`).remove();
|
||||
$(`img[src="${revpay_logo}"]`).after(`${visa_logo}${mastercard_logo}${amex_logo}`).css({ width: "30px" });
|
||||
|
||||
if (amex_availability) {
|
||||
$(".amex-logo").show();
|
||||
}
|
||||
},
|
||||
|
||||
initPayment: function() {
|
||||
// revolut_card container present, but fields not yet initiated
|
||||
if ($('#revolut_card').length && !($('#revolut_card.rc-card-field').length)) {
|
||||
@@ -31,12 +67,28 @@ checkoutPaymentParser.revolutpayment = {
|
||||
// Create additional information block, informing user that payment will be processed after confirmation
|
||||
var paymentOptionId = element.attr('id').match(/payment-option-\d+/);
|
||||
|
||||
let isRevolutPay = element.next().find('#revolutPayForm').length === 1;
|
||||
let isRevolutCard = element.next().find('#revolutPay').length === 1; // not used now
|
||||
|
||||
if (isRevolutPay) {
|
||||
element.find('input[name=payment-option]').addClass('binary'); // so that our 'pay' button disappears
|
||||
}
|
||||
|
||||
if (paymentOptionId && 'undefined' !== typeof paymentOptionId[0]) {
|
||||
paymentOptionId = paymentOptionId[0];
|
||||
element.after('<div id="'+paymentOptionId+'-additional-information" class="stripe_official popup-notice js-additional-information definition-list additional-information ps-hidden" style="display: none;"><section><p>'+i18_popupPaymentNotice+'</p></section></div>')
|
||||
element.after('<div id="'+paymentOptionId+'-additional-information" class="revolutpayment popup-notice js-additional-information definition-list additional-information ps-hidden" style="display: none;"><section><p>'+i18_popupPaymentNotice+'</p></section></div>')
|
||||
}
|
||||
|
||||
payment.setPopupPaymentType(element);
|
||||
|
||||
// Add CSS rule
|
||||
var cssEl = document.createElement('style'),sheet;
|
||||
document.head.appendChild(cssEl);
|
||||
cssEl.sheet.insertRule(`
|
||||
[data-payment-module=revolutpayment] .amex-logo ~ .tc-rev-logos {
|
||||
display: none;
|
||||
}
|
||||
`);
|
||||
},
|
||||
|
||||
form: function (element, triggerElementName) {
|
||||
|
||||
@@ -8,6 +8,18 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
/*
|
||||
Tested with sendcloud v2.0.9 (09.05.2024)
|
||||
(!) important, update /modules/sendcloudv2/sendcloudv2.php, method hookDisplayHeader(..), change $allowedControllers to:
|
||||
$allowedControllers = [
|
||||
'HistoryController',
|
||||
'OrderConfirmationController',
|
||||
'OrderController',
|
||||
'OrderOpcController',
|
||||
'TheCheckoutModuleFrontController'
|
||||
];
|
||||
*/
|
||||
|
||||
tc_confirmOrderValidations['sendcloud'] = function() {
|
||||
if (
|
||||
/*$('#mondialrelay_widget').is(':visible')*/
|
||||
|
||||
@@ -11,6 +11,25 @@
|
||||
var shaim_shipping_modules_present = ('undefined' !== typeof exists_opc);
|
||||
|
||||
if (shaim_shipping_modules_present) {
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function(event) {
|
||||
|
||||
if (typeof CheckHardPplparcelshop === 'function') {
|
||||
prestashop.on('thecheckout_updateDeliveryOption', function () {
|
||||
setTimeout(function () {
|
||||
var ppl_parcelshop_iframe = document.getElementById('ppl_parcelshop_iframe');
|
||||
if (typeof ppl_parcelshop_iframe !== 'undefined' && ppl_parcelshop_iframe && typeof iframeListenerPplparcelshop === 'function') {
|
||||
var idoc_ppl_parcelshop = ppl_parcelshop_iframe.contentWindow || ppl_parcelshop_iframe.contentDocument;
|
||||
idoc_ppl_parcelshop.document.addEventListener('ppl-parcelshop-map', function (e) {
|
||||
iframeListenerPplparcelshop(e);
|
||||
});
|
||||
}
|
||||
}, 1500);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
tc_confirmOrderValidations['shaim_shipping_modules'] = function () {
|
||||
|
||||
/* openservis - WEDO - begin */
|
||||
@@ -95,5 +114,3 @@ if (shaim_shipping_modules_present) {
|
||||
/* openservis - Zásilkovna - end */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,10 +8,12 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
/* popup mode last tested on 15.4.2023 with stripe_official v3.0.2 */
|
||||
/* popup mode last tested on 15.03.2024 with stripe_official v3.2.0 */
|
||||
/* (!) Set 'Payment Form Position' to 'With the Prestashop payment methods' in Stripe configuration
|
||||
/* redirect mode last tested on 12.12.2023 with stripe_official v3.1.3 (removed JS redirect, it's supported now natively in stripe_official module through config option) */
|
||||
|
||||
|
||||
checkoutPaymentParser.stripe_official_inline = {
|
||||
checkoutPaymentParser.stripe_official_redirect = {
|
||||
|
||||
all_hooks_content: function (content) {
|
||||
|
||||
@@ -19,76 +21,10 @@ checkoutPaymentParser.stripe_official_inline = {
|
||||
|
||||
container: function (element) {
|
||||
|
||||
//payment.setPopupPaymentType(element);
|
||||
// Add logos to payment method
|
||||
// Img path:
|
||||
var stripe_base_url = '';
|
||||
if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {
|
||||
stripe_base_url = prestashop.urls.base_url;
|
||||
}
|
||||
|
||||
element.find('label').append('<img src="' + stripe_base_url + '/modules/stripe_official/views/img/logo-payment.png">');
|
||||
|
||||
},
|
||||
|
||||
|
||||
form: function (element) {
|
||||
|
||||
// First, set the 'form' action to be our background confirmation button click
|
||||
// On this background confirmation button, stripe action is hooked
|
||||
let form = element.find('form');
|
||||
let onSubmitAction = '$(\'#payment-confirmation button\').click();';
|
||||
form.attr('action', 'javascript:void(0);');
|
||||
form.attr('onsubmit', onSubmitAction);
|
||||
|
||||
// And now, let's put Stripe's form into static container, so that it's not being refreshed
|
||||
var paymentOptionForm = element;
|
||||
var staticContentContainer = $('#thecheckout-payment .static-content');
|
||||
|
||||
// Now create new block with original Id and place it inside of static-content block
|
||||
if (!staticContentContainer.find('.stripe-payment-form').length) {
|
||||
$('<div class="stripe-payment-form"></div>').appendTo(staticContentContainer);
|
||||
paymentOptionForm.clone().appendTo(staticContentContainer.find('.stripe-payment-form'));
|
||||
staticContentContainer.find('.stripe-payment-form script').remove();
|
||||
|
||||
// Formatted version - KEEP it
|
||||
// Init only once - when we're first time moving CC form
|
||||
// let stripe_orig_script_tag = `
|
||||
// <script>
|
||||
// if ($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) {
|
||||
// var stripe_base_url = '';
|
||||
// if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {
|
||||
// stripe_base_url = prestashop.urls.base_url;
|
||||
// }
|
||||
// $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');
|
||||
// }
|
||||
// </script>
|
||||
// `;
|
||||
|
||||
// https://babeljs.io/repl
|
||||
var stripe_orig_script_tag = "\n <script>\n if (($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) || ($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length)) {\n var stripe_base_url = '';\n if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {\n stripe_base_url = prestashop.urls.base_url;\n }\n $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');\n }\n </script>\n ";
|
||||
//
|
||||
|
||||
|
||||
staticContentContainer.find('.stripe-payment-form').append(stripe_orig_script_tag);
|
||||
}
|
||||
|
||||
// Remove stripe payment form from actual .js-payment-option-form container and keep only "dynamic" part,
|
||||
// which is <script> tag with dynamically created variables
|
||||
var scriptTag = paymentOptionForm.find('script');
|
||||
// stripe_official can have multiple payment options, make sure move only card payment to static-container
|
||||
if (paymentOptionForm.find('#stripe-card-payment').length) {
|
||||
paymentOptionForm.find('*').remove();
|
||||
paymentOptionForm.prepend(scriptTag);
|
||||
|
||||
// Update ID of fixed form, so that it's displayed/hidden automatically with payment method selection
|
||||
var origId = paymentOptionForm.attr('id');
|
||||
staticContentContainer.find('.stripe-payment-form .js-payment-option-form').attr('id', origId);
|
||||
|
||||
// Remove tag ID and class from original form
|
||||
paymentOptionForm.attr('id', 'stripe-script-tag-container');
|
||||
paymentOptionForm.removeClass('js-payment-option-form');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -108,12 +44,36 @@ checkoutPaymentParser.stripe_official_popup = {
|
||||
if (($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) ||
|
||||
($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length) ||
|
||||
($('#js-stripe-payment-element').length && !$('#js-stripe-payment-element.StripeElement').length)) {
|
||||
// var stripe_base_url = '';
|
||||
// if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {
|
||||
// stripe_base_url = prestashop.urls.base_url;
|
||||
// }
|
||||
$.getScript(tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js');
|
||||
// $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');
|
||||
// $.getScript(tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js');
|
||||
|
||||
var script = document.createElement('script');
|
||||
script.src = tcModuleBaseUrl+'/../stripe_official/views/js/checkout.js';
|
||||
|
||||
// If we unselect payment option, checkout.js would click it by its own when loaded - it would click 1st option, I guess they
|
||||
// somehow made sure they're always at first position; but, it is necessary only when there are multiple payment methods!
|
||||
if (document.querySelectorAll('input[name="payment-option"]').length > 1) {
|
||||
document.querySelector('input[name="payment-option"]:checked').checked = false;
|
||||
}
|
||||
|
||||
script.addEventListener('load', function() {
|
||||
setTimeout(function() {
|
||||
// If #js-stripe-payment-form is located outside of payment-form (this can be set in Stripe options - 'Payment Form Position'
|
||||
// This is only workaround, if preferably set 'Payment Form Position' to 'With the Prestashop payment methods'
|
||||
const stripeForm = $('.payment-options > #js-stripe-payment-form');
|
||||
if (stripeForm.length) {
|
||||
$('.popup-payment-content[data-payment-module=stripe_official] .js-payment-option-form').append(stripeForm);
|
||||
}
|
||||
},1000);
|
||||
// console.log(' -- checkout.js loaded, now lets dispatch change event to payment option');
|
||||
// var radioButton = document.querySelector('input[name="payment-option"]:checked');
|
||||
// if (radioButton) {
|
||||
// radioButton.dispatchEvent(new Event('change'));
|
||||
// console.log('dispatched change event to payment option', radioButton);
|
||||
// }
|
||||
});
|
||||
|
||||
document.head.appendChild(script);
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
@@ -136,20 +96,27 @@ checkoutPaymentParser.stripe_official_popup = {
|
||||
|
||||
payment.setPopupPaymentType(element);
|
||||
|
||||
var cssEl = document.createElement('style'),sheet;
|
||||
document.head.appendChild(cssEl);
|
||||
cssEl.sheet.insertRule(`
|
||||
.popup-payment-content[data-payment-module=stripe_official] .js-payment-option-form {
|
||||
display: block!important;
|
||||
}
|
||||
`);
|
||||
|
||||
},
|
||||
|
||||
form: function (element, triggerElementName) {
|
||||
|
||||
if (!payment.isConfirmationTrigger(triggerElementName)) {
|
||||
if (debug_js_controller) {
|
||||
console.info('[stripe_official parser] Not confirmation trigger, removing payment form');
|
||||
}
|
||||
element.remove();
|
||||
} else {
|
||||
// var stripe_orig_script_tag = "\n <script>\n if (($('#stripe-card-element').length && !$('#stripe-card-element.StripeElement').length) || ($('#stripe-card-number').length && !$('#stripe-card-number.StripeElement').length)) {\n var stripe_base_url = '';\n if ('undefined' !== typeof prestashop && 'undefined' !== prestashop.urls && 'undefined' !== prestashop.urls.base_url) {\n stripe_base_url = prestashop.urls.base_url;\n }\n $.getScript(stripe_base_url + '/modules/stripe_official/views/js/payments.js');\n }\n </script>\n ";
|
||||
// element.append(stripe_orig_script_tag);
|
||||
// checkoutPaymentParser.stripe_official_popup.initPayment();
|
||||
}
|
||||
// if (!payment.isConfirmationTrigger(triggerElementName)) {
|
||||
// // Integrated payment form
|
||||
// if (debug_js_controller) {
|
||||
// console.info('[stripe_official parser] Not confirmation trigger, removing payment form');
|
||||
// }
|
||||
// element.remove();
|
||||
// } else {
|
||||
// // empty
|
||||
// }
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -157,7 +124,8 @@ checkoutPaymentParser.stripe_official_popup = {
|
||||
}
|
||||
|
||||
// Default Stripe parser
|
||||
//checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_inline;
|
||||
checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_popup;
|
||||
|
||||
|
||||
if (typeof stripe_payment_elements_enabled !== "undefined" && stripe_payment_elements_enabled === "1") {
|
||||
checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_popup;
|
||||
} else {
|
||||
checkoutPaymentParser.stripe_official = checkoutPaymentParser.stripe_official_redirect;
|
||||
}
|
||||
|
||||
@@ -8,52 +8,37 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
checkoutPaymentParser.stripejs_removed = {
|
||||
/* tested with Stripe Payment Pro v4.6.0 - by NTS - on 12.03.2024, when embedded payment is enabled */
|
||||
checkoutPaymentParser.stripejs = {
|
||||
|
||||
initiatePayment: function() {
|
||||
if (typeof StripePubKey !=='undefined') {
|
||||
var stripe = Stripe(StripePubKey,{locale: lang_iso_code});
|
||||
var stripe_pm = document.getElementById('selected_pm').value;
|
||||
var quickPay = ((stripe_pm!=1) ? 1 : 0);
|
||||
// after_load_callback: function() {
|
||||
// if (typeof initiateStripePayment !== 'undefined') {
|
||||
// initiateStripePayment();
|
||||
// }
|
||||
// },
|
||||
|
||||
$('input[name=payment-option]:checked').focus();
|
||||
$('#stripe-ajax-loader,#stripe-payment-form').toggle();
|
||||
$('#payment-confirmation button[type=submit]').prop("disabled", true);
|
||||
var toggle_selector = '#stripe-ajax-loader,#stripe-payment-form';
|
||||
var error_selector = '#card-errors';
|
||||
container: function (element) {
|
||||
payment.setPopupPaymentType(element);
|
||||
|
||||
handlePI('checkout', function(res_status){
|
||||
if(res_status.code==1) {
|
||||
$('#checkout-success').show();
|
||||
stripe.redirectToCheckout({
|
||||
sessionId: res_status.sess_id
|
||||
}).then(function (result) {
|
||||
$('#checkout-success').hide();
|
||||
var err_msg = showStripePayError(toggle_selector, 0, result.error.message, error_selector);
|
||||
alert(result.error.message);
|
||||
});
|
||||
}
|
||||
});
|
||||
// Add CSS rule to hide payment form in payment methods list
|
||||
var cssEl = document.createElement('style'),sheet;
|
||||
document.head.appendChild(cssEl);
|
||||
cssEl.sheet.insertRule(`
|
||||
section#checkout-payment-step [data-payment-module=stripejs] > .additional-information {
|
||||
display: none!important;
|
||||
}
|
||||
`);
|
||||
},
|
||||
|
||||
popup_onopen_callback: function () {
|
||||
if (typeof initiateStripePayment !== 'undefined') {
|
||||
|
||||
// out of some reason stripe_allow_prbutton is always false on initial page load
|
||||
if ($('[data-module-name^=stripePRButton]').length && typeof stripe_allow_prbutton !== 'undefined') {
|
||||
stripe_allow_prbutton = true;
|
||||
}
|
||||
initiateStripePayment();
|
||||
}
|
||||
},
|
||||
|
||||
after_load_callback: function() {
|
||||
// $.getScript(tcModuleBaseUrl + '/../stripejs/views/js/stripe-prestashop.js');
|
||||
|
||||
},
|
||||
|
||||
all_hooks_content: function (content) {
|
||||
|
||||
},
|
||||
|
||||
container: function (element) {
|
||||
|
||||
},
|
||||
|
||||
form: function (element) {
|
||||
let form = element.find('form');
|
||||
let onSubmitAction = 'javascript:checkoutPaymentParser.stripejs.initiatePayment()';
|
||||
form.attr('action', 'javascript:void(0);');
|
||||
form.attr('onsubmit', onSubmitAction);
|
||||
}
|
||||
}
|
||||
39
modules/thecheckout/views/js/parsers/tpay.js
Normal 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
|
||||
},
|
||||
}
|
||||
@@ -8,6 +8,14 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
/*
|
||||
Update file: /modules/upsservice/upsservice.php, change in hookDisplayHeader():
|
||||
from:
|
||||
if (($this->context->controller instanceof OrderController) || ($this->context->controller instanceof OrderOpcController)) {
|
||||
to:
|
||||
if (($this->context->controller instanceof OrderController) || ($this->context->controller instanceof OrderOpcController) || $this->context->controller instanceof TheCheckoutModuleFrontController) {
|
||||
*/
|
||||
|
||||
checkoutShippingParser.upsservice = {
|
||||
|
||||
after_load_callback: function(deliveryOptionIds) {
|
||||
|
||||
@@ -4,20 +4,41 @@
|
||||
* This source file is subject to the Software License Agreement
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
*
|
||||
* @author Peter Sliacky (Zelarg)
|
||||
* @author Veebipoed.ee | Peter Sliacky (Zelarg)
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
tc_confirmOrderValidations['vp_omniva'] = function() {
|
||||
if (
|
||||
$('.vp_omniva select[name=terminals]').is(':visible') &&
|
||||
'0' == $('.vp_omniva select[name=terminals]').val()
|
||||
) {
|
||||
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
|
||||
shippingErrorMsg.show();
|
||||
scrollToElement(shippingErrorMsg);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
tc_confirmOrderValidations['vp_omniva'] = function() {
|
||||
let selectedDeliveryOption = $('.delivery-option-row.selected');
|
||||
if (selectedDeliveryOption && 0 !== selectedDeliveryOption.length) {
|
||||
if (selectedDeliveryOption[0].classList.contains('vp_omniva') ||
|
||||
selectedDeliveryOption[0].classList.contains('vp_omniva_latvia') ||
|
||||
selectedDeliveryOption[0].classList.contains('vp_omniva_lietuva')) {
|
||||
let nextElement = selectedDeliveryOption[0].nextElementSibling;
|
||||
if (nextElement && 0 !== nextElement.children.length) {
|
||||
let selectElements = $(nextElement).find('select');
|
||||
if (2 === selectElements.length) {
|
||||
if (selectElements[1][0].selected) {
|
||||
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
|
||||
shippingErrorMsg.show();
|
||||
scrollToElement(shippingErrorMsg);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (selectElements[0][0].selected) {
|
||||
var shippingErrorMsg = $('#thecheckout-shipping .inner-wrapper > .error-msg');
|
||||
shippingErrorMsg.show();
|
||||
scrollToElement(shippingErrorMsg);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true; // default when validations are not needed
|
||||
}
|
||||
|
||||
@@ -67,9 +67,9 @@ var payment = (function () {
|
||||
if (0 == $(selectedOption).length) {
|
||||
// Only now try to select by default set in checkout options
|
||||
// Changed to 'starts with' selector, e.g. paypal module has data-module-name=paypal_plus
|
||||
selectedOption = '[data-module-name^=' + config_default_payment_method + ']';
|
||||
selectedOption = '[data-module-name^=' + config_default_payment_method + ' i]';
|
||||
}
|
||||
if (0 == $(selectedOption).length) {
|
||||
if (0 == $(selectedOption).length && config_default_payment_method != '') {
|
||||
selectedOption = '.' + config_default_payment_method + ' [name=payment-option]:first';
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ var payment = (function () {
|
||||
var paymentOption = getPaymentOptionSelector(option);
|
||||
$(paymentOption).slideDown();
|
||||
if (!dont_remove_confirmation_button) {
|
||||
// self.confirmationButton.hide();
|
||||
self.confirmationButton.hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ var payment = (function () {
|
||||
loadPaymentPopupLibrary(function() {
|
||||
popupContainer.paymentpopup({
|
||||
onopen: function () {
|
||||
popupCallback(paymentMethodName)
|
||||
popupCallback(paymentMethodName, option)
|
||||
},
|
||||
onclose: function() {
|
||||
popupCloseCallback(paymentMethodName);
|
||||
@@ -282,11 +282,11 @@ var payment = (function () {
|
||||
}
|
||||
}
|
||||
|
||||
function popupCallback(paymentMethodName) {
|
||||
function popupCallback(paymentMethodName, optionId) {
|
||||
if ('undefined' !== typeof checkoutPaymentParser[paymentMethodName]
|
||||
&& 'undefined' !== typeof checkoutPaymentParser[paymentMethodName].popup_onopen_callback) {
|
||||
console.info('popup open callback for ' + paymentMethodName + ' called');
|
||||
checkoutPaymentParser[paymentMethodName].popup_onopen_callback();
|
||||
checkoutPaymentParser[paymentMethodName].popup_onopen_callback(optionId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,12 @@ var tc_facebookLogin = (function () {
|
||||
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
|
||||
signedInUpdateForm();
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
if(jqXHR.status === 500) {
|
||||
console.error("Internal server error occurred: ", errorThrown);
|
||||
}
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -103,7 +109,7 @@ var tc_googleLogin = (function () {
|
||||
// Display the Sign In With Google Button
|
||||
google.accounts.id.renderButton(
|
||||
document.getElementById(customBtnId),
|
||||
{ theme: 'outline', size: 'large' }
|
||||
{ theme: 'outline', size: 'large', width: 240 }
|
||||
);
|
||||
}
|
||||
|
||||
@@ -124,6 +130,12 @@ var tc_googleLogin = (function () {
|
||||
} else if ('undefined' !== typeof jsonData.email && jsonData.email) {
|
||||
signedInUpdateForm();
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
if(jqXHR.status === 500) {
|
||||
console.error("Internal server error occurred: ", errorThrown);
|
||||
}
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
27
modules/thecheckout/views/js/third-party-integration.txt
Normal 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),
|
||||
@@ -63,12 +63,12 @@
|
||||
</fieldset>
|
||||
{elseif "size" === $key} {*intentionally empty*}
|
||||
{else}
|
||||
{if 0 === $key|strpos:'flex-split'}
|
||||
{if 0 === strpos($key,'flex-split')}
|
||||
<fieldset class="checkout-block-container" data-default-size="{$data.size}">
|
||||
<div class="{$key}">
|
||||
{/if}
|
||||
{blockContainer data=$sub_block}
|
||||
{if 0 === $key|strpos:'flex-split'}
|
||||
{if 0 === strpos($key,'flex-split')}
|
||||
</div>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
{if $product.cover}
|
||||
<img src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
|
||||
{else}
|
||||
<img src="{$urls.no_picture_image.bySize.cart_default.url}" />
|
||||
<img src="{$urls.no_picture_image.bySize.cart_default.url|escape:'javascript':'UTF-8'}" />
|
||||
{/if}
|
||||
{/if}
|
||||
</span>
|
||||
@@ -42,95 +42,115 @@
|
||||
<div class="product-line-body">
|
||||
<div class="product-line-desc">
|
||||
<div class="product-line-info product-title">
|
||||
<a class="label" href="{$product.url}" data-id_customization="{$product.id_customization|intval}">{$product.name}</a>
|
||||
<a class="label" href="{$product.url|escape:'javascript':'UTF-8'}"
|
||||
data-id_customization="{$product.id_customization|intval}">{$product.name|escape:'javascript':'UTF-8'}</a>
|
||||
</div>
|
||||
|
||||
<div class="product-line-info product-price h5 {if $product.has_discount}has-discount{/if} 11">
|
||||
{if $product.has_discount}
|
||||
<div class="product-line-info product-price h5 {if $product.has_discount}has-discount{/if}">
|
||||
{if $product.has_discount|escape:'javascript':'UTF-8'}
|
||||
<div class="product-discount">
|
||||
<span class="regular-price">{$product.regular_price}</span>
|
||||
<span class="regular-price">{$product.regular_price|escape:'javascript':'UTF-8'}</span>
|
||||
{if $product.discount_type === 'percentage'}
|
||||
<span class="discount discount-percentage">
|
||||
-{$product.discount_percentage_absolute}
|
||||
-{$product.discount_percentage_absolute|escape:'javascript':'UTF-8'}
|
||||
</span>
|
||||
{else}
|
||||
<span class="discount discount-amount">
|
||||
-{$product.discount_to_display}
|
||||
-{$product.discount_to_display|escape:'javascript':'UTF-8'}
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
<div class="current-price">
|
||||
<span class="price">{$product.price}</span>
|
||||
<span class="price">{$product.price|escape:'javascript':'UTF-8'}</span>
|
||||
{if $product.unit_price_full}
|
||||
<div class="unit-price-cart">{$product.unit_price_full}</div>
|
||||
<div class="unit-price-cart">{$product.unit_price_full|escape:'javascript':'UTF-8'}</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<br/>
|
||||
|
||||
{foreach from=$product.attributes key="attribute" item="value"}
|
||||
<div class="product-line-info product-attribute">
|
||||
<span class="label">{$attribute}:</span>
|
||||
<span class="value">{$value}</span>
|
||||
<span class="label">{$attribute|escape:'htmlall':'UTF-8'}:</span>
|
||||
<span class="value">{$value|escape:'htmlall':'UTF-8'}</span>
|
||||
</div>
|
||||
{/foreach}
|
||||
|
||||
{if $tc_config->show_product_stock_info} {*tc module config*}
|
||||
<div class="product-line-info quantity-info">
|
||||
<span class="{if $product.quantity_available <= 0 && !$product.allow_oosp}qty-label label-warning{else}qty-label label-success{/if}
|
||||
{if $z_tc_config->show_product_stock_info} {*tc module config*}
|
||||
<div class="product-line-info quantity-info">
|
||||
<span class="{if $product.quantity_available <= 0 && !$product.allow_oosp}qty-label label-warning{else}qty-label label-success{/if}
|
||||
{if $product.quantity_available <= 0} label-later{/if}">
|
||||
{if $product.quantity_available <= 0}
|
||||
{if $product.allow_oosp}
|
||||
{if isset($product.available_later) && $product.available_later}
|
||||
{$product.available_later}
|
||||
{if $product.quantity_available <= 0}
|
||||
{if $product.allow_oosp}
|
||||
{if isset($product.available_later) && $product.available_later}
|
||||
{$product.available_later|escape:'htmlall':'UTF-8'}
|
||||
{else}
|
||||
{*{$product.availability_message}*}
|
||||
{l s='In supplier stock' mod='thecheckout'}
|
||||
{/if}
|
||||
{else}
|
||||
{l s='Out of stock' mod='thecheckout'}
|
||||
{/if}
|
||||
{else}
|
||||
{*{$product.availability_message}*}
|
||||
{l s='In supplier stock' mod='thecheckout'}
|
||||
{if isset($product.available_now) && $product.available_now}
|
||||
{$product.available_now|escape:'htmlall':'UTF-8'}
|
||||
{else}
|
||||
{l s='In stock' d='Shop.Theme.Catalog'}
|
||||
{/if}
|
||||
{/if}
|
||||
{else}
|
||||
{l s='Out of stock' mod='thecheckout'}
|
||||
{/if}
|
||||
{else}
|
||||
{if isset($product.available_now) && $product.available_now}
|
||||
{$product.available_now}
|
||||
{else}
|
||||
{l s='In stock' d='Shop.Theme.Catalog'}
|
||||
{/if}
|
||||
{/if}
|
||||
</span>
|
||||
<div class='qty-insufficient-stock{if $product.quantity_available>=$product.quantity || $product.quantity_available<=0} hidden{/if}'>
|
||||
<span class='qty-in-stock-only'>{l s='In stock only' mod='thecheckout'} {$product.quantity_available} {l s='pcs.' mod='thecheckout'}</span>
|
||||
{if $product.allow_oosp}
|
||||
<span class='qty-remaining-on'>{l s='Remaining pcs. in' mod='thecheckout'} {$product.available_later}</span>
|
||||
{else}
|
||||
<span class='qty-remaining-on no-longer-available'>{l s='Please adjust quantity' mod='thecheckout'}</span>
|
||||
{/if}
|
||||
</div>{*hook h="displayProductDeliveryTime" product=$product*}
|
||||
</div>
|
||||
{/if}
|
||||
</span>
|
||||
<div class='qty-insufficient-stock{if $product.quantity_available>=$product.quantity || $product.quantity_available<=0} hidden{/if}'>
|
||||
<span class='qty-in-stock-only'>{l s='In stock only' mod='thecheckout'} {$product.quantity_available|escape:'htmlall':'UTF-8'} {l s='pcs.' mod='thecheckout'}</span>
|
||||
{if $product.allow_oosp}
|
||||
<span class='qty-remaining-on'>{l s='Remaining pcs. in' mod='thecheckout'} {$product.available_later|escape:'htmlall':'UTF-8'}</span>
|
||||
{else}
|
||||
<span class='qty-remaining-on no-longer-available'>{l s='Please adjust quantity' mod='thecheckout'}</span>
|
||||
{/if}
|
||||
</div>{*hook h="displayProductDeliveryTime" product=$product*}</div>
|
||||
{/if}
|
||||
|
||||
{if $product.customizations|count}
|
||||
<br>
|
||||
{block name='cart_detailed_product_line_customization'}
|
||||
{foreach from=$product.customizations item="customization"}
|
||||
{foreach from=$customization.fields item="field"}
|
||||
<div class="product-customization-line row">
|
||||
<div class="col-12">
|
||||
{$field.label}:
|
||||
{if $field.type == 'text'}
|
||||
{if (int)$field.id_module}
|
||||
{$field.text nofilter}
|
||||
{else}
|
||||
{$field.text}
|
||||
{/if}
|
||||
{elseif $field.type == 'image'}
|
||||
<img src="{$field.image.small.url}">
|
||||
{/if}
|
||||
<a href="#" data-toggle="modal"
|
||||
data-target="#product-customizations-modal-{$customization.id_customization|escape:'javascript':'UTF-8'}">{l s='Product customization' d='Shop.Theme.Catalog'}</a>
|
||||
<div class="modal fade customization-modal"
|
||||
id="product-customizations-modal-{$customization.id_customization|escape:'javascript':'UTF-8'}" tabindex="-1" role="dialog"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title">{l s='Product customization' d='Shop.Theme.Catalog'}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
{foreach from=$customization.fields item="field"}
|
||||
<div class="product-customization-line row">
|
||||
<div class="col-sm-3 col-xs-4 label">
|
||||
{$field.label|escape:'htmlall':'UTF-8'}
|
||||
</div>
|
||||
<div class="col-sm-9 col-xs-8 value">
|
||||
{if $field.type == 'text'}
|
||||
{if (int)$field.id_module}
|
||||
{$field.text nofilter}
|
||||
{else}
|
||||
{$field.text|escape:'htmlall':'UTF-8'}
|
||||
{/if}
|
||||
{elseif $field.type == 'image'}
|
||||
<img src="{$field.image.small.url|escape:'javascript':'UTF-8'}">
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
{/foreach}
|
||||
{/block}
|
||||
{/if}
|
||||
@@ -139,32 +159,59 @@
|
||||
<!-- product left body: description -->
|
||||
<div class="product-line-actions">
|
||||
|
||||
<div class="product-line-qty" data-qty-control="{$product.id_product|escape:'javascript':'UTF-8'}-{$product.id_product_attribute|escape:'javascript':'UTF-8'}-{$product.id_customization|escape:'javascript':'UTF-8'}">
|
||||
<div class="product-line-qty"
|
||||
data-qty-control="{$product.id_product|escape:'javascript':'UTF-8'}-{$product.id_product_attribute|escape:'javascript':'UTF-8'}-{$product.id_customization|escape:'javascript':'UTF-8'}">
|
||||
<div class="qty-container">
|
||||
<div class="qty-box">
|
||||
{if isset($product.is_gift) && $product.is_gift}
|
||||
<span class="gift-quantity">{$product.quantity}</span>
|
||||
{else}
|
||||
<input class="cart-line-product-quantity" data-link-action="x-update-cart-quantity" data-update-url="{$product.update_quantity_url}" data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}" data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}" data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}" data-qty-orig="{$product.quantity|escape:'javascript':'UTF-8'}" type="text" value="{$product.quantity}" name="product-quantity-spin" min="{$product.minimal_quantity}" />
|
||||
<a class="cart-line-product-quantity-up" href="{$product.up_quantity_url}" data-link-action="x-update-cart-quantity-up">{*Up*}</a>
|
||||
<a class="cart-line-product-quantity-down" href="{$product.down_quantity_url}" data-link-action="x-update-cart-quantity-down">{*Down*}</a>
|
||||
<input
|
||||
class="cart-line-product-quantity"
|
||||
data-link-action="x-update-cart-quantity"
|
||||
data-update-url="{$product.update_quantity_url}"
|
||||
data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}"
|
||||
data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}"
|
||||
data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}"
|
||||
data-qty-orig="{$product.quantity|escape:'javascript':'UTF-8'}"
|
||||
{* data-step="{$product.minimal_quantity|escape:'javascript':'UTF-8'}"*}
|
||||
type="text"
|
||||
value="{$product.quantity}"
|
||||
name="product-quantity-spin"
|
||||
min="{$product.minimal_quantity}"
|
||||
/>
|
||||
<a class="cart-line-product-quantity-up"
|
||||
href="{$product.up_quantity_url}"
|
||||
data-link-action="x-update-cart-quantity-up">{*Up*}</a>
|
||||
<a class="cart-line-product-quantity-down"
|
||||
href="{$product.down_quantity_url}"
|
||||
data-link-action="x-update-cart-quantity-down">{*Down*}</a>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-line-price">
|
||||
<span class="product-price">
|
||||
<strong>
|
||||
{if isset($product.is_gift) && $product.is_gift}
|
||||
<span class="gift">{l s='Gift' d='Shop.Theme.Checkout'}</span>
|
||||
{else}
|
||||
{$product.total}
|
||||
{/if}
|
||||
</strong>
|
||||
</span>
|
||||
<span class="product-price">
|
||||
<strong>
|
||||
{if isset($product.is_gift) && $product.is_gift}
|
||||
<span class="gift">{l s='Gift' d='Shop.Theme.Checkout'}</span>
|
||||
{else}
|
||||
{$product.total}
|
||||
{/if}
|
||||
</strong>
|
||||
</span>
|
||||
</div>
|
||||
<div class="product-line-delete">
|
||||
<a class="remove-from-cart" rel="nofollow" href="{$product.remove_from_cart_url}" data-link-action="x-delete-from-cart" data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}" data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}" data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}" title="{l s='Delete' d='Shop.Theme.Actions'}">
|
||||
<a
|
||||
class="remove-from-cart"
|
||||
rel="nofollow"
|
||||
href="{$product.remove_from_cart_url}"
|
||||
data-link-action="x-delete-from-cart"
|
||||
data-id-product="{$product.id_product|escape:'javascript':'UTF-8'}"
|
||||
data-id-product-attribute="{$product.id_product_attribute|escape:'javascript':'UTF-8'}"
|
||||
data-id-customization="{$product.id_customization|escape:'javascript':'UTF-8'}"
|
||||
title="{l s='Delete' d='Shop.Theme.Actions'}"
|
||||
>
|
||||
{if !isset($product.is_gift) || !$product.is_gift}
|
||||
<i class="material-icons delete-from-cart float-xs-left">delete</i>
|
||||
<span class="non-material-icon delete-from-cart"></span>
|
||||
@@ -178,4 +225,4 @@
|
||||
{/block}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -31,15 +31,15 @@
|
||||
<div class="card-block">
|
||||
{foreach from=$cart.subtotals item="subtotal"}
|
||||
{if isset($subtotal.value) && $subtotal.value && $subtotal.type !== 'tax'}
|
||||
<div class="cart-summary-line{if $waitForShippingCls && 'products' != $subtotal.type}{$waitForShippingCls}{/if}{if !$subtotal.amount} free{/if}" id="cart-subtotal-{$subtotal.type}">
|
||||
<div class="cart-summary-line{if $waitForShippingCls && 'products' != $subtotal.type}{$waitForShippingCls|escape:'javascript':'UTF-8'}{/if}{if !$subtotal.amount} free{/if}" id="cart-subtotal-{$subtotal.type|escape:'javascript':'UTF-8'}">
|
||||
<span class="label{if 'products' === $subtotal.type} js-subtotal{/if}">
|
||||
{if 'products' == $subtotal.type}
|
||||
{$cart.summary_string}
|
||||
{$cart.summary_string|escape:'htmlall':'UTF-8'}
|
||||
{else}
|
||||
{$subtotal.label}
|
||||
{$subtotal.label|escape:'htmlall':'UTF-8'}
|
||||
{/if}
|
||||
</span>
|
||||
<span class="value">{$subtotal.value}</span>
|
||||
<span class="value">{$subtotal.value|escape:'htmlall':'UTF-8'}</span>
|
||||
{if $subtotal.type === 'shipping'}
|
||||
<div>
|
||||
<small class="value">{hook h='displayCheckoutSubtotalDetails' subtotal=$subtotal}</small>
|
||||
@@ -48,6 +48,7 @@
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{hook h="displayPaymentRuleCartSummary"}
|
||||
</div>
|
||||
|
||||
{block name='cart_voucher'}
|
||||
@@ -59,34 +60,53 @@
|
||||
<div class="card-block">
|
||||
{if (isset($cart.subtotals.tax) && $cart.subtotals.tax.amount > 0) || (!$configuration.display_prices_tax_incl && $configuration.taxes_enabled) }
|
||||
{* tax displayed in cart summary, we show Total (tax excl.), Tax and Total (tax incl.) *}
|
||||
<div class="cart-summary-line cart-total-tax-excluded{$waitForShippingCls}">
|
||||
<span class="label">{$cart.totals.total_excluding_tax.label}</span>
|
||||
<span class="value">{$cart.totals.total_excluding_tax.value}</span>
|
||||
<div class="cart-summary-line cart-total-tax-excluded{$waitForShippingCls|escape:'javascript':'UTF-8'}">
|
||||
<span class="label">{$cart.totals.total_excluding_tax.label|escape:'htmlall':'UTF-8'}</span>
|
||||
<span class="value">{$cart.totals.total_excluding_tax.value|escape:'htmlall':'UTF-8'}</span>
|
||||
</div>
|
||||
{if isset($cart.subtotals.tax)}
|
||||
<div class="cart-summary-line cart-total-tax{$waitForShippingCls}">
|
||||
<span class="label">{$cart.subtotals.tax.label}</span>
|
||||
<span class="value">{$cart.subtotals.tax.value}</span>
|
||||
<div class="cart-summary-line cart-total-tax{$waitForShippingCls|escape:'javascript':'UTF-8'}">
|
||||
|
||||
<div class="label" style="display: inline">{$cart.subtotals.tax.label|escape:'javascript':'UTF-8'}
|
||||
{if $cart.totals.total_excluding_tax.amount > 0}
|
||||
{math equation='(a/b)*100' a=$cart.subtotals.tax.amount b=$cart.totals.total_excluding_tax.amount assign='effective_tax_rate'}
|
||||
{math equation='abs(round(a)-a)' a=$effective_tax_rate assign='rounding_delta'}
|
||||
{if $rounding_delta < 0.09}
|
||||
{math equation='round(a)' a=$effective_tax_rate assign='effective_tax_rate_rounded'}
|
||||
{else}
|
||||
{math equation='a' a=$effective_tax_rate assign='effective_tax_rate_rounded' format="%.1f"}
|
||||
{/if}
|
||||
<span class="effective-tax-rate">({$effective_tax_rate_rounded|escape:'javascript':'UTF-8'}%)</span>
|
||||
{/if}
|
||||
</div>
|
||||
<span class="value">{$cart.subtotals.tax.value|escape:'javascript':'UTF-8'}</span>
|
||||
</div>
|
||||
{/if}
|
||||
{* tax is set and non-zero cart summary, we show Total (tax incl.) *}
|
||||
<div class="cart-summary-line cart-total cart-total-tax-included{$waitForShippingCls}">
|
||||
<span class="label">{$cart.totals.total_including_tax.label}</span>
|
||||
<span class="value">{$cart.totals.total_including_tax.value}</span>
|
||||
<div class="cart-summary-line cart-total cart-total-tax-included{$waitForShippingCls|escape:'javascript':'UTF-8'}">
|
||||
<span class="label">{$cart.totals.total_including_tax.label|escape:'htmlall':'UTF-8'}</span>
|
||||
<span class="value">{$cart.totals.total_including_tax.value|escape:'htmlall':'UTF-8'}</span>
|
||||
</div>
|
||||
{else}
|
||||
{* tax is zero or not used in cart summary, we show Total (tax_label) *}
|
||||
<div class="cart-summary-line cart-total cart-total-auto-tax{$waitForShippingCls}">
|
||||
<span class="label">{$cart.totals.total.label} {if isset($configuration) && $configuration.taxes_enabled}{$cart.labels.tax_short}{/if}</span>
|
||||
<span class="value">{$cart.totals.total.value}</span>
|
||||
<div class="cart-summary-line cart-total cart-total-auto-tax{$waitForShippingCls|escape:'javascript':'UTF-8'}">
|
||||
<span class="label">{$cart.totals.total.label|escape:'htmlall':'UTF-8'}{if isset($configuration) && $configuration.taxes_enabled}<span class="tax-lbl"> {$cart.labels.tax_short|escape:'htmlall':'UTF-8'}</span>{/if}</span>
|
||||
<span class="value">{$cart.totals.total.value|escape:'htmlall':'UTF-8'}</span>
|
||||
</div>
|
||||
{if isset($cart.subtotals.tax)}
|
||||
<div class="cart-summary-line cart-total-tax{$waitForShippingCls}">
|
||||
<span class="label">{$cart.subtotals.tax.label}</span>
|
||||
<span class="value">{$cart.subtotals.tax.value}</span>
|
||||
<div class="cart-summary-line cart-total-tax{$waitForShippingCls|escape:'javascript':'UTF-8'}">
|
||||
<div class="label" style="display: inline">{$cart.subtotals.tax.label|escape:'javascript':'UTF-8'}
|
||||
<span class="effective-tax-rate">(0%)</span>
|
||||
</div>
|
||||
<span class="value">{$cart.subtotals.tax.value|escape:'javascript':'UTF-8'}</span>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $cart.totals.total_excluding_tax.amount == $cart.totals.total.amount && $configuration.taxes_enabled}
|
||||
<div style="display: none;" class="cart-summary-line vat-exempt">
|
||||
<span class="label">{l s='Your order is now 0% VAT' mod='thecheckout'}</span>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
{assign var='ps_freeshipping_price' value=Configuration::get('PS_SHIPPING_FREE_PRICE')}
|
||||
@@ -97,10 +117,10 @@
|
||||
{math equation='a-b' a=$ps_freeshipping_price b=$total_without_shipping assign='remaining_to_spend'}
|
||||
{math equation='(100*a)/b' a=$total_without_shipping b=$ps_freeshipping_price assign='completed_percentage'}
|
||||
{if $remaining_to_spend > 0}
|
||||
<div class="remaining-amount-to-free-shipping-container">
|
||||
<div class="remaining-amount-to-free-shipping-container{if isset($cart.subtotals) && isset($cart.subtotals.shipping) && isset($cart.subtotals.shipping.amount) && $cart.subtotals.shipping.amount == 0} free{/if}">
|
||||
<div class="remaining-amount-msg">{l s='Remaining amount to get free shipping: ' mod='thecheckout'} <span class="remaining-amount">{Tools::displayPrice($remaining_to_spend,$currency)}</span></div>
|
||||
<div class="remaining-amount-progress">
|
||||
<div class="inside-bar" style="width: {$completed_percentage}%"></div>
|
||||
<div class="inside-bar" style="width: {$completed_percentage|escape:'javascript':'UTF-8'}%"></div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||