This commit is contained in:
2025-11-19 23:03:54 +01:00
13 changed files with 13317 additions and 4757 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -447,6 +447,11 @@ class ProductControllerCore extends ProductPresentingFrontControllerCore
$this->setQuickViewMode();
}
$id_product = (int)$product['id_product'];
$id_product_attribute = (int)$product['id_product_attribute'];
$quantity = StockAvailable::getQuantityAvailableByProduct($id_product, $id_product_attribute);
ob_end_clean();
header('Content-Type: application/json');
$this->ajaxRender(Tools::jsonEncode([
@@ -486,6 +491,12 @@ class ProductControllerCore extends ProductPresentingFrontControllerCore
$this->getTemplateVarPage()['meta'] ?? []
),
'is_quick_view' => $isQuickView,
'product_delivery_time' => $this->render('catalog/_partials/product-delivery-time',
[
'quantity' => $quantity,
'product' => $product,
]
),
]));
}

View File

@@ -1,17 +1,37 @@
<?php
// https://pacyga.pl/wp-content/uploads/woo-feed/custom/xml/komplet-produktow-3.xml
// Include PrestaShop configuration
$config['update_price'] = false;
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');
// Load XML file
$xml = simplexml_load_file('komplet-produktow-3.xml') or die("Error: Cannot create object");
$context = Context::getContext();
// Sprawdzenie trybu działania na podstawie parametrów URL
$modeAdd = (Tools::getValue('add') === 'true');
$modeUpdate = (Tools::getValue('update') === 'true');
if (!$modeAdd && !$modeUpdate) {
die('Brak akcji. Dodaj do adresu ?add=true lub ?update=true');
}
// Plik logu aktualizacji cen
$logFile = __DIR__ . '/update_price_log.csv';
// Wczytanie XML
$xmlUrl = 'https://pacyga.pl/wp-content/uploads/woo-feed/custom/xml/komplet-produktow-3.xml';
$xml = simplexml_load_file($xmlUrl) or die("Error: Cannot create object");
// === FUNKCJE POMOCNICZE ===
// Function to find attribute group by name
function findAttributeGroupByName($name) {
$id_lang = Context::getContext()->language->id;
$result = Db::getInstance()->getRow('SELECT `id_attribute_group` FROM `'._DB_PREFIX_.'attribute_group_lang` WHERE `name` = \''.pSQL($name).'\' AND `id_lang` = '.(int)$id_lang);
$sql = 'SELECT `id_attribute_group`
FROM `'._DB_PREFIX_.'attribute_group_lang`
WHERE `name` = \''.pSQL($name).'\'
AND `id_lang` = '.(int)$id_lang;
$result = Db::getInstance()->getRow($sql);
return $result ? new AttributeGroup($result['id_attribute_group']) : false;
}
@@ -20,8 +40,11 @@ function findAttributeByName($id_attribute_group, $name) {
$id_lang = Context::getContext()->language->id;
$sql = 'SELECT a.`id_attribute`
FROM `'._DB_PREFIX_.'attribute` a
JOIN `'._DB_PREFIX_.'attribute_lang` al ON a.`id_attribute` = al.`id_attribute`
WHERE al.`name` = \''.pSQL($name).'\' AND al.`id_lang` = '.(int)$id_lang.' AND a.`id_attribute_group` = '.(int)$id_attribute_group;
JOIN `'._DB_PREFIX_.'attribute_lang` al
ON a.`id_attribute` = al.`id_attribute`
WHERE al.`name` = \''.pSQL($name).'\'
AND al.`id_lang` = '.(int)$id_lang.'
AND a.`id_attribute_group` = '.(int)$id_attribute_group;
$result = Db::getInstance()->getRow($sql);
return $result ? new Attribute($result['id_attribute']) : false;
}
@@ -55,7 +78,7 @@ function createMultiLangField($field) {
$languages = Language::getLanguages(false);
$res = [];
foreach ($languages as $lang) {
$res[$lang['id_lang']] = $field;
$res[(int)$lang['id_lang']] = $field;
}
return $res;
}
@@ -66,16 +89,16 @@ function createLinkRewrite($field) {
$res = [];
$linkRewrite = Tools::link_rewrite($field); // PrestaShop's function to create valid link_rewrite
foreach ($languages as $lang) {
$res[$lang['id_lang']] = $linkRewrite;
$res[(int)$lang['id_lang']] = $linkRewrite;
}
return $res;
}
// Function to get category ID from name
// Function to get category ID from name (nieużywana, ale poprawiona)
function getCategoryId($categoryName) {
$category = Category::searchByName(1, $categoryName); // 1 for default language id
if (!empty($category)) {
return $category['id_category'];
$result = Category::searchByName(1, $categoryName); // 1 for default language id
if (!empty($result) && isset($result[0]['id_category'])) {
return (int)$result[0]['id_category'];
} else {
// Create category if not exists
$category = new Category();
@@ -83,7 +106,7 @@ function getCategoryId($categoryName) {
$category->link_rewrite = createLinkRewrite($categoryName);
$category->id_parent = 2; // Default parent category
$category->add();
return $category->id;
return (int)$category->id;
}
}
@@ -91,7 +114,7 @@ function getCategoryId($categoryName) {
function addProductImage($productId, $imageUrl)
{
$image = new Image();
$image->id_product = $productId;
$image->id_product = (int)$productId;
$image->position = Image::getHighestPosition($productId) + 1;
$image->cover = true; // Set the first image as cover
$image->add();
@@ -105,7 +128,12 @@ function addProductImage($productId, $imageUrl)
$imageTypes = ImageType::getImagesTypes('products');
foreach ($imageTypes as $imageType) {
ImageManager::resize($imagePath . '.jpg', $imagePath . '-' . stripslashes($imageType['name']) . '.jpg', $imageType['width'], $imageType['height']);
ImageManager::resize(
$imagePath . '.jpg',
$imagePath . '-' . stripslashes($imageType['name']) . '.jpg',
(int)$imageType['width'],
(int)$imageType['height']
);
}
return true;
@@ -113,24 +141,38 @@ function addProductImage($productId, $imageUrl)
// Function to find product by reference
function findProductByReference($reference) {
$result = Db::getInstance()->getRow('SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE `reference` = \''.pSQL($reference).'\'');
return $result ? new Product($result['id_product']) : false;
$sql = 'SELECT `id_product`
FROM `'._DB_PREFIX_.'product`
WHERE `reference` = \''.pSQL($reference).'\'';
$result = Db::getInstance()->getRow($sql);
return $result ? new Product((int)$result['id_product']) : false;
}
// Function to find combination by product ID and attribute IDs
function findCombinationByAttributes($id_product, $attributeIds) {
if (empty($attributeIds)) {
return false;
}
sort($attributeIds);
$conditions = [];
foreach ($attributeIds as $id_attr) {
$conditions[] = 'pac.`id_attribute` = '.(int)$id_attr;
}
$sql = 'SELECT c.`id_product_attribute`
FROM `'._DB_PREFIX_.'product_attribute` c
JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON c.`id_product_attribute` = pac.`id_product_attribute`
JOIN `'._DB_PREFIX_.'product_attribute_combination` pac
ON c.`id_product_attribute` = pac.`id_product_attribute`
WHERE c.`id_product` = '.(int)$id_product.'
GROUP BY c.`id_product_attribute`
HAVING SUM(pac.`id_attribute` = '.implode(' OR pac.`id_attribute` = ', array_map('intval', $attributeIds)).') = '.count($attributeIds);
HAVING SUM('.implode(' OR ', $conditions).') = '.count($attributeIds);
$result = Db::getInstance()->getRow($sql);
return $result ? new Combination($result['id_product_attribute']) : false;
return $result ? new Combination((int)$result['id_product_attribute']) : false;
}
// Parse XML and group products by Symbol
// === GRUPOWANIE PRODUKTÓW PO SYMBOLU ===
$productsBySymbol = [];
foreach ($xml->product as $productData) {
$symbol = (string)$productData->item_group_id;
@@ -140,7 +182,117 @@ foreach ($xml->product as $productData) {
$productsBySymbol[$symbol][] = $productData;
}
// Create or update products with combinations based on grouped data
// =======================================
// =========== TRYB AKTUALIZACJI =========
// =======================================
if ($modeUpdate) {
$today = date('Y-m-d');
$updatedToday = [];
// Wczytanie logu aktualizacji
if (file_exists($logFile)) {
$lines = file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
$parts = explode(';', $line);
if (count($parts) >= 3) {
$logDate = trim($parts[0]);
$logType = trim($parts[1]); // np. 'product'
$logRef = trim($parts[2]);
if ($logDate === $today) {
$updatedToday[$logType.'_'.$logRef] = true;
}
}
}
}
$updatedSomething = false;
foreach ($productsBySymbol as $symbol => $products) {
if (empty($products)) {
continue;
}
// Główny produkt referencja z pierwszego elementu grupy
$mainProductData = $products[0];
$reference = (string)$mainProductData->sku;
$key = 'product_'.$reference;
// Jeśli już zaktualizowany dzisiaj pomijamy
if (isset($updatedToday[$key])) {
continue;
}
$product = findProductByReference($reference);
if (!$product) {
// produkt nie istnieje w Presta - pomijamy w trybie update
continue;
}
// Nowa cena z XML
$newPrice = floatval(str_replace(',', '', (string)$mainProductData->price));
if ($newPrice <= 0) {
// brak sensownej ceny pomiń
continue;
}
// Aktualizacja ceny produktu
$product->price = $newPrice;
// Sprawdź kategorię domyślną jeśli "Strona główna", zamień na "Meble" (ID 107)
$id_lang = (int)$context->language->id;
$defaultCategory = new Category($product->id_category_default, $id_lang);
if (Validate::isLoadedObject($defaultCategory) && $defaultCategory->name == 'Strona główna') {
$newCategoryId = 107; // Meble
// Ustaw nową kategorię domyślną
$product->id_category_default = (int)$newCategoryId;
// Podmień kategorie produktu (zachowując ewentualne inne)
$categories = $product->getCategories();
// Usuń starą kategorię domyślną, jeśli istnieje w tablicy
$categories = array_diff($categories, [(int)$defaultCategory->id]);
$categories[] = (int)$newCategoryId;
$categories = array_unique(array_map('intval', $categories));
$product->updateCategories($categories);
}
// Zapis produktu
if ($product->update()) {
// Zapis do logu że ten produkt został dziś zaktualizowany
$logLine = $today.';product;'.$reference.';'.$product->id.PHP_EOL;
file_put_contents($logFile, $logLine, FILE_APPEND);
echo '<p>Zaktualizowano produkt: '.htmlspecialchars((string)$mainProductData->title).' ('.$reference.')</p>';
echo '<p>Nowa cena: '.$newPrice.'</p>';
$updatedSomething = true;
}
// Aktualizujemy tylko jeden produkt na jedno wywołanie
break;
}
if ($updatedSomething) {
// Odśwież stronę, żeby przy kolejnym wywołaniu zaktualizować następny produkt
echo '<script>setTimeout(function(){ location.reload(); }, 250);</script>';
} else {
echo '<p>Brak produktów do aktualizacji na dzisiaj (wszystkie z XML zostały już zaktualizowane).</p>';
}
exit;
}
// =======================================
// =========== TRYB DODAWANIA ============
// =======================================
$productAdded = false;
$combinationAdded = false;
// Tworzenie lub aktualizacja produktów z kombinacjami (dodawanie)
foreach ($productsBySymbol as $symbol => $products) {
if (empty($products)) {
continue;
@@ -150,23 +302,24 @@ foreach ($productsBySymbol as $symbol => $products) {
$mainProductData = $products[0];
$mainProduct = findProductByReference((string)$mainProductData->sku);
$productAdded = false;
if (!$mainProduct) {
// Create a new product if it doesn't exist
$mainProduct = new Product();
$mainProduct->name = createMultiLangField((string)$mainProductData->title);
$description = (string)$mainProductData->description;
$description = str_replace("\n", "<br>", $description);
$mainProduct->description = createMultiLangField($description);
$mainProduct->price = floatval(str_replace(',','',$mainProductData->price));
$mainProduct->price = floatval(str_replace(',', '', (string)$mainProductData->price));
$mainProduct->reference = (string)$mainProductData->sku;
$mainProduct->id_category_default = 2;
$mainProduct->id_category_default = 2; // np. Strona główna
$mainProduct->link_rewrite = createLinkRewrite((string)$mainProductData->title);
$mainProduct->add();
// Add images to the product
if (!empty($mainProductData->image)) {
addProductImage($mainProduct->id, $mainProductData->image);
addProductImage($mainProduct->id, (string)$mainProductData->image);
}
for ($i = 1; $i <= 10; $i++) {
@@ -177,15 +330,6 @@ foreach ($productsBySymbol as $symbol => $products) {
}
$productAdded = true;
} else {
// Update existing product price and description
if ( $config['update_price'] == true ) {
$mainProduct->price = floatval(str_replace(',','',$mainProductData->price));
$description = (string)$mainProductData->description;
$description = str_replace("\n", "<br>", $description);
$mainProduct->description = createMultiLangField($description);
$mainProduct->update();
}
}
// Ensure the product is saved before adding combinations
@@ -198,14 +342,13 @@ foreach ($productsBySymbol as $symbol => $products) {
$addedCombinations = [];
// Add or update combinations for each product in the group
$combinationAdded = false;
foreach ($products as $productData) {
$attributes = [
'Kolor' => (string)$productData->Kolor,
'Dlugosc' => (string)$productData->Dlugosc,
'Kolor' => (string)$productData->Kolor,
'Dlugosc' => (string)$productData->Dlugosc,
'Szerokosc' => (string)$productData->Szerokosc,
'Glebokosc' => (string)$productData->Glebokosc,
'Wysokosc' => (string)$productData->Wysokosc,
'Wysokosc' => (string)$productData->Wysokosc,
];
$attributeIds = [];
@@ -214,7 +357,7 @@ foreach ($productsBySymbol as $symbol => $products) {
$attributeGroupId = createAttribute($name, [$value]);
$attribute = findAttributeByName($attributeGroupId, $value);
if ($attribute) {
$attributeIds[] = $attribute->id;
$attributeIds[] = (int)$attribute->id;
}
}
}
@@ -224,12 +367,12 @@ foreach ($productsBySymbol as $symbol => $products) {
$key = implode('-', $attributeIds);
// Add or update combination if it is unique
if (!empty($attributeIds)) {
if (!empty($attributeIds) && !isset($addedCombinations[$key])) {
$combination = findCombinationByAttributes($mainProduct->id, $attributeIds);
if (!$combination) {
// Create new combination
$combination = new Combination();
$combination->id_product = $mainProduct->id;
$combination->id_product = (int)$mainProduct->id;
$combination->quantity = 100; // Default quantity, you can adjust this
$combination->reference = (string)$productData->sku;
$combination->add();
@@ -256,18 +399,19 @@ foreach ($productsBySymbol as $symbol => $products) {
Product::updateDefaultAttribute($mainProduct->id);
if ($productAdded || $combinationAdded) {
if ($productAdded) {
echo "<p>Dodałem produkt: " . (string)$mainProductData->title . "</p>";
}
if ($combinationAdded) {
echo "<p>Dodałem kombinację: " . (string)$mainProductData->title . "</p>";
}
break; // Break if a new product or combination was added
if ($productAdded) {
echo "<p>Dodałem produkt: " . htmlspecialchars((string)$mainProductData->title) . "</p>";
}
if ($combinationAdded) {
echo "<p>Dodałem kombinację: " . htmlspecialchars((string)$mainProductData->title) . "</p>";
}
break; // Break if a new product or combination was added
}
}
// reload page after 1s if product or combination was added
// reload page after 250ms if product or combination was added (dla trybu add)
if ($productAdded || $combinationAdded) {
echo "<script>setTimeout(function(){location.reload();}, 250);</script>";
}
?>

View File

@@ -18,9 +18,7 @@
*}
<div class="blockreassurance_product" t="1">
{if $product.delivery_in_stock}
{* {if $product.delivery_in_stock}
<div class="item-999 item-custom">
<span class="item-product">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" data-img-url="/modules/blockreassurance/views/img/img_perso/Package.svg" class="svg replaced-svg">
@@ -41,8 +39,9 @@
<span class="block-title" style="color:#000000;">Darmowa wysyłka w:</span>
<p class="block-description" style="color:#000000;">{$product.delivery_in_stock}</p>
<p class="block-description" style="color:#000000; display:none;">{$product.delivery_out_stock}</p>
</div>
{/if}
{/if} *}
{foreach from=$blocks item=$block key=$key}

View File

@@ -461,9 +461,15 @@ class ProductLazyArray extends AbstractLazyArray
if ($show_price && $this->product['reduction']) {
if ($this->product['discount_type'] === 'percentage') {
$discountLabel = $this->product['discount_percentage'];
$num = floatval(str_replace(',', '.', preg_replace('/[^0-9,.-]/', '', $discountLabel)));
$rounded = round($num);
$discountLabel = sprintf('-%d%%', abs($rounded));
$flags['discount'] = [
'type' => 'discount',
'label' => $this->product['discount_percentage'],
// 'label' => $this->product['discount_percentage'],
'label' => $discountLabel,
];
} elseif ($this->product['discount_type'] === 'amount') {
$flags['discount'] = [

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -447,3 +447,50 @@ if (isEditing()) return;
window.addEventListener('popstate', onNav);
})();
})();
$(document).ready(function () {
function toggleChatWidget(isOpen) {
var $widget = $('div[data-testid="widgetButtonFrame"]');
var $scrollBox = $('.scroll-brn-box')
if ($widget.length) {
if (isOpen) {
$widget.hide();
$scrollBox.hide();
} else {
$widget.show();
$scrollBox.show();
}
}
}
function checkCartState() {
var $cart = $('.elementor-cart__container');
var isOpen = $cart.hasClass('elementor-cart--shown');
toggleChatWidget(isOpen);
}
$('a[href*="koszyk"][class*="elementor-button"]').on('click', function () {
setTimeout(checkCartState, 300);
});
$(document).on('click', '.elementor-cart__close-button', function () {
setTimeout(checkCartState, 300);
});
$(document).on('click', '.elementor-cart__container.elementor-lightbox.elementor-cart--shown', function (e) {
if (e.target === this) {
setTimeout(checkCartState, 300);
}
});
const cartContainer = document.querySelector('.elementor-cart__container');
if (cartContainer) {
const observer = new MutationObserver(() => checkCartState());
observer.observe(cartContainer, { attributes: true, attributeFilter: ['class'] });
}
checkCartState();
});

View File

@@ -88,4 +88,25 @@
{$HOOK_HEADER nofilter}
{/block}
{block name='hook_extra'}{/block}
{block name='hook_extra'}{/block}
{literal}
<script type="text/javascript">
var _smartsupp = _smartsupp || {};
_smartsupp.key = '0d334d3fee8a20124724fb0e40e42cb00d98a537';
_smartsupp.color = '#e78c32';
_smartsupp.offsetX = 40; // move along the X axis by 100 pixels
_smartsupp.offsetY = 38;
window.smartsupp||(function(d) {
var s,c,o=smartsupp=function(){ o._.push(arguments) };
o._=[];
s=d.getElementsByTagName('script')[0];
c=d.createElement('script');
c.type='text/javascript';
c.charset='utf-8';
c.async=true;
c.src='https://www.smartsuppchat.com/loader.js?';
s.parentNode.insertBefore(c,s);
})(document);
</script>
{/literal}

View File

@@ -0,0 +1,25 @@
<div class="product-delivery-tile">
<span class="item-product">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" data-img-url="/modules/blockreassurance/views/img/img_perso/Package.svg" class="svg replaced-svg">
<g clip-path="url(#clip0_6241_8999)">
<path d="M12 12.1016V21.7466" stroke="#462D26" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="fill: rgb(241, 157, 118);"></path>
<path d="M3.06641 7.21094L12.0008 12.1009L20.9352 7.21094" stroke="#462D26" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="fill: rgb(241, 157, 118);"></path>
<path d="M20.61 17.1415L12.36 21.6584C12.2496 21.7188 12.1258 21.7504 12 21.7504C11.8742 21.7504 11.7504 21.7188 11.64 21.6584L3.39 17.1415C3.2722 17.077 3.17386 16.9821 3.10526 16.8667C3.03666 16.7513 3.0003 16.6195 3 16.4853V7.51713C3.0003 7.38284 3.03666 7.25111 3.10526 7.13567C3.17386 7.02023 3.2722 6.92533 3.39 6.86088L11.64 2.344C11.7504 2.28361 11.8742 2.25195 12 2.25195C12.1258 2.25195 12.2496 2.28361 12.36 2.344L20.61 6.86088C20.7278 6.92533 20.8261 7.02023 20.8947 7.13567C20.9633 7.25111 20.9997 7.38284 21 7.51713V16.4834C21 16.618 20.9638 16.7501 20.8952 16.8659C20.8266 16.9817 20.7281 17.0769 20.61 17.1415Z" stroke="#462D26" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="fill: rgb(241, 157, 118);"></path>
<path d="M7.64648 4.5293L16.5002 9.37523V14.2502" stroke="#462D26" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="fill: rgb(241, 157, 118);"></path>
</g>
<defs>
<clipPath id="clip0_6241_8999">
<rect width="24" height="24" fill="white"></rect>
</clipPath>
</defs>
</svg>
&nbsp;
</span>
<span class="block-title" style="color:#000000;">Darmowa wysyłka w:</span>
{if $quantity > 0}
<p class="block-description" style="color:#000000;">{$product.delivery_in_stock}</p>
{else}
<p class="block-description" style="color:#000000;">{$product.delivery_out_stock}</p>
{/if}
</div>

View File

@@ -16,10 +16,39 @@
{if $is_free}
<p>{l s='No payment needed for this order' d='Shop.Theme.Checkout'}</p>
{/if}
<div class="payment-options {if $is_free}hidden-xs-up{/if}">
{* MARK: Własne ustawienia opcje płatności *}
{assign var='customPaymentOptions' value=[
'paynow' => [
'img' => '/modules/paynow/views/img/logo-paynow.png',
'label' => 'BLIK, karty, szybkie przelewy'
],
'ps_wirepayment' => [
'label' => 'Przelew bankowy'
],
'caraty' => [
'label' => 'Raty CA'
],
'santandercredit' => [
'label' => 'Raty Santander'
],
'payment-option-4' => [
'img' => '/modules/raty/alior.gif',
'label' => 'Raty Alior'
],
'ps_cashondelivery' => [
'label' => 'Płatność przy odbiorze'
]
]}
<div class="payment-options payment-options-custom {if $is_free}hidden-xs-up{/if}">
<p class="payment-option-title payment-option-title-1">Szybkie płatności</p>
<p class="payment-option-title payment-option-title-2">Metody finansowania</p>
<p class="payment-option-title payment-option-title-3">Płatność tradycyjna</p>
{foreach from=$payment_options item="module_options"}
{foreach from=$module_options item="option"}
<div>
<div class="payment-item" option-name="{if $option.module_name}{$option.module_name}{else}{$option.id}{/if}">
<div id="{$option.id}-container" class="payment-option clearfix">
{* This is the way an option should be selected when Javascript is enabled *}
<span class="custom-radio float-xs-left">
@@ -44,13 +73,32 @@
</button>
{/if}
</form>
{assign var='key' value=$option.module_name|default:$option.id}
<label for="{$option.id}">
{if isset($customPaymentOptions[$key])}
<label for="{$option.id}" class="custom-payment-label">
{if $customPaymentOptions[$key].img}
<img src="{$customPaymentOptions[$key].img}" alt="{$customPaymentOptions[$key].label}" class="custom-payment-icon">
{/if}
<span>{$customPaymentOptions[$key].label}</span>
</label>
{else}
<label for="{$option.id}">
<span>{$option.call_to_action_text}</span>
{if $option.logo}
<img src="{$option.logo}" loading="lazy">
{/if}
</label>
{/if}
{* <label for="{$option.id}">
<span>{$option.call_to_action_text}</span>
{if $option.logo}
<img src="{$option.logo}" loading="lazy">
{/if}
</label>
</label> *}
</div>
</div>
@@ -67,7 +115,7 @@
<div
id="pay-with-{$option.id}-form"
class="js-payment-option-form {if $option.id != $selected_payment_option} ps-hidden {/if}"
>
>
{if $option.form}
{$option.form nofilter}
{else}

File diff suppressed because one or more lines are too long