Compare commits

..

No commits in common. "f69d990349e4d0a6fef637c08703a2ce6a683ca0" and "4489e705b8b1044cee941a0cfce627eb6b8d3eda" have entirely different histories.

8 changed files with 20 additions and 48 deletions

View file

@ -10,8 +10,7 @@
"Bash(grep:*)", "Bash(grep:*)",
"Bash(npm run build:*)", "Bash(npm run build:*)",
"Bash(php test-shopify.php:*)", "Bash(php test-shopify.php:*)",
"WebFetch(domain:getkirby.com)", "WebFetch(domain:getkirby.com)"
"WebFetch(domain:forum.getkirby.com)"
] ]
} }
} }

View file

@ -76,10 +76,6 @@
&:hover { &:hover {
opacity: 0.7; opacity: 0.7;
} }
svg {
stroke: #000;
}
} }
&__content { &__content {

View file

@ -83,7 +83,6 @@
} }
.header-cart-btn { .header-cart-btn {
font-family: var(--font);
background: none; background: none;
border: none; border: none;
cursor: pointer; cursor: pointer;
@ -110,11 +109,11 @@
} }
&:not(:empty)::before { &:not(:empty)::before {
content: "("; content: '(';
} }
&:not(:empty)::after { &:not(:empty)::after {
content: ")"; content: ')';
} }
} }
} }

View file

@ -559,7 +559,6 @@ main {
color: var(--color-txt); color: var(--color-txt);
} }
#site-header .header-cart-btn { #site-header .header-cart-btn {
font-family: var(--font);
background: none; background: none;
border: none; border: none;
cursor: pointer; cursor: pointer;
@ -1432,9 +1431,6 @@ body.is-fullscreen {
.cart-drawer__close:hover { .cart-drawer__close:hover {
opacity: 0.7; opacity: 0.7;
} }
.cart-drawer__close svg {
stroke: #000;
}
.cart-drawer__content { .cart-drawer__content {
flex: 1; flex: 1;
overflow-y: auto; overflow-y: auto;

File diff suppressed because one or more lines are too long

View file

@ -10,13 +10,6 @@
return; return;
} }
const buttonTextDiv = addToCartBtn.querySelector('.txt[data-button-text]');
if (!buttonTextDiv) {
console.error('Button text div not found');
return;
}
const texts = { const texts = {
add: addToCartBtn.dataset.textAdd || 'Add to cart', add: addToCartBtn.dataset.textAdd || 'Add to cart',
adding: addToCartBtn.dataset.textAdding || 'Adding...', adding: addToCartBtn.dataset.textAdding || 'Adding...',
@ -35,13 +28,13 @@
} }
addToCartBtn.disabled = true; addToCartBtn.disabled = true;
const originalText = buttonTextDiv.textContent; const originalText = addToCartBtn.textContent;
buttonTextDiv.textContent = texts.adding; addToCartBtn.textContent = texts.adding;
try { try {
const cartResult = await cart.addToCart(variantId, 1); const cartResult = await cart.addToCart(variantId, 1);
buttonTextDiv.textContent = texts.added; addToCartBtn.textContent = texts.added;
addToCartBtn.classList.add('success'); addToCartBtn.classList.add('success');
document.dispatchEvent(new CustomEvent('cart:updated', { document.dispatchEvent(new CustomEvent('cart:updated', {
@ -50,19 +43,19 @@
setTimeout(() => { setTimeout(() => {
addToCartBtn.disabled = false; addToCartBtn.disabled = false;
buttonTextDiv.textContent = originalText; addToCartBtn.textContent = originalText;
addToCartBtn.classList.remove('success'); addToCartBtn.classList.remove('success');
}, 1500); }, 1500);
} catch (error) { } catch (error) {
console.error('Error adding to cart:', error); console.error('Error adding to cart:', error);
buttonTextDiv.textContent = texts.error; addToCartBtn.textContent = texts.error;
addToCartBtn.classList.add('error'); addToCartBtn.classList.add('error');
setTimeout(() => { setTimeout(() => {
addToCartBtn.disabled = false; addToCartBtn.disabled = false;
buttonTextDiv.textContent = originalText; addToCartBtn.textContent = originalText;
addToCartBtn.classList.remove('error'); addToCartBtn.classList.remove('error');
}, 2000); }, 2000);
} }

View file

@ -14,10 +14,11 @@ return [
], ],
'routes' => [ 'routes' => [
// French products (default) // French product pages (default)
[ [
'pattern' => '(:any)', 'pattern' => '(:any)',
'action' => function($slug) { 'action' => function($slug) {
// Skip known pages
if (in_array($slug, ['home', 'error', 'thanks'])) { if (in_array($slug, ['home', 'error', 'thanks'])) {
return null; return null;
} }
@ -26,28 +27,28 @@ return [
foreach ($products as $product) { foreach ($products as $product) {
if ($product['handle'] === $slug) { if ($product['handle'] === $slug) {
$page = Page::factory([ return Page::factory([
'slug' => $product['handle'], 'slug' => $product['handle'],
'template' => 'product', 'template' => 'product',
'parent' => site()->homePage(),
'content' => [ 'content' => [
'title' => $product['title'], 'title' => $product['title'],
'shopifyHandle' => $product['handle'], 'shopifyHandle' => $product['handle'],
'uuid' => $product['id'] 'uuid' => $product['id']
] ]
]); ]);
site()->visit($page, 'fr');
return $page;
} }
} }
// Not a product, let Kirby handle normally
return null; return null;
} }
], ],
// English products // English product pages
[ [
'pattern' => 'en/(:any)', 'pattern' => 'en/(:any)',
'action' => function($slug) { 'action' => function($slug) {
// Skip known pages
if (in_array($slug, ['home', 'error', 'thanks'])) { if (in_array($slug, ['home', 'error', 'thanks'])) {
return null; return null;
} }
@ -56,21 +57,20 @@ return [
foreach ($products as $product) { foreach ($products as $product) {
if ($product['handle'] === $slug) { if ($product['handle'] === $slug) {
$page = Page::factory([ return Page::factory([
'slug' => $product['handle'], 'slug' => $product['handle'],
'template' => 'product', 'template' => 'product',
'parent' => site()->homePage(),
'content' => [ 'content' => [
'title' => $product['title'], 'title' => $product['title'],
'shopifyHandle' => $product['handle'], 'shopifyHandle' => $product['handle'],
'uuid' => $product['id'] 'uuid' => $product['id']
] ]
]); ]);
site()->visit($page, 'en');
return $page;
} }
} }
// Not a product, let Kirby handle normally
return null; return null;
} }
] ]

View file

@ -1,11 +0,0 @@
<?php
return function ($page, $kirby) {
$shopifyHandle = $page->shopifyHandle()->or($page->slug())->value();
$language = $kirby->language()->code();
return [
'shopifyHandle' => $shopifyHandle,
'language' => $language
];
};