From 0ce8ce3626446feaf0b35eeed50ccbefc6d92cf8 Mon Sep 17 00:00:00 2001 From: sebseb7 Date: Wed, 25 Mar 2026 07:04:50 +0100 Subject: [PATCH] feat: Add new virtual categories 'bald' and 'neu', update category handling in renderApp, and enhance translations across multiple locales --- prerender.cjs | 23 +++++++---- prerender/data-fetching.cjs | 5 ++- src/components/AddToCartButton.js | 8 ++++ src/components/Content.js | 15 +++++++ src/components/header/CategoryList.js | 57 +++++++++++++++++++++++++++ src/i18n/locales/ar/navigation.js | 2 + src/i18n/locales/bg/navigation.js | 2 + src/i18n/locales/cs/navigation.js | 2 + src/i18n/locales/de/navigation.js | 2 + src/i18n/locales/el/navigation.js | 2 + src/i18n/locales/en/navigation.js | 2 + src/i18n/locales/es/navigation.js | 2 + src/i18n/locales/fr/navigation.js | 2 + src/i18n/locales/hr/navigation.js | 2 + src/i18n/locales/hu/navigation.js | 2 + src/i18n/locales/it/navigation.js | 2 + src/i18n/locales/pl/navigation.js | 2 + src/i18n/locales/ro/navigation.js | 2 + src/i18n/locales/ru/navigation.js | 2 + src/i18n/locales/sk/navigation.js | 2 + src/i18n/locales/sl/navigation.js | 2 + src/i18n/locales/sq/navigation.js | 2 + src/i18n/locales/sr/navigation.js | 2 + src/i18n/locales/sv/navigation.js | 2 + src/i18n/locales/tr/navigation.js | 2 + src/i18n/locales/uk/navigation.js | 2 + src/i18n/locales/zh/navigation.js | 2 + 27 files changed, 144 insertions(+), 8 deletions(-) diff --git a/prerender.cjs b/prerender.cjs index e31751c..c7f32fa 100644 --- a/prerender.cjs +++ b/prerender.cjs @@ -542,14 +542,23 @@ const renderApp = async (categoryData, socket) => { let categoryPagesRendered = 0; let categoriesWithProducts = 0; - const allCategoriesPlusNeu = [...allCategories, { - id: "neu", - name: "Neuheiten", - seoName: "neu", - parentId: 209 - }]; + const allCategoriesWithVirtual = [ + ...allCategories, + { + id: "neu", + name: "Neuheiten", + seoName: "neu", + parentId: 209, + }, + { + id: "bald", + name: "Demnächst", + seoName: "bald", + parentId: 209, + }, + ]; - for (const category of allCategoriesPlusNeu) { + for (const category of allCategoriesWithVirtual) { // Skip categories without seoName if (!category.seoName) { console.log( diff --git a/prerender/data-fetching.cjs b/prerender/data-fetching.cjs index 5c5aadb..0b1b6d0 100644 --- a/prerender/data-fetching.cjs +++ b/prerender/data-fetching.cjs @@ -42,7 +42,10 @@ const fetchCategoryProducts = (socket, categoryId) => { "getCategoryProducts", { full: true, - categoryId: categoryId === "neu" ? "neu" : parseInt(categoryId), + categoryId: + categoryId === "neu" || categoryId === "bald" + ? categoryId + : parseInt(categoryId), language: 'de', requestTranslation: false }, diff --git a/src/components/AddToCartButton.js b/src/components/AddToCartButton.js index ac113a7..0210278 100644 --- a/src/components/AddToCartButton.js +++ b/src/components/AddToCartButton.js @@ -10,6 +10,7 @@ import AddIcon from "@mui/icons-material/Add"; import RemoveIcon from "@mui/icons-material/Remove"; import ShoppingCartIcon from "@mui/icons-material/ShoppingCart"; import DeleteIcon from "@mui/icons-material/Delete"; +import NotificationsIcon from "@mui/icons-material/Notifications"; import { withI18n } from "../i18n/withTranslation.js"; if (!Array.isArray(window.cart)) window.cart = []; @@ -144,11 +145,18 @@ class AddToCartButton extends Component { fullWidth variant="contained" size={size || "medium"} + startIcon={} sx={{ borderRadius: 2, fontWeight: "bold", backgroundColor: "#ffeb3b", color: "#000000", + whiteSpace: "nowrap", + flexWrap: "nowrap", + "& .MuiButton-label": { + whiteSpace: "nowrap", + flexWrap: "nowrap", + }, "&:hover": { backgroundColor: "#fdd835", }, diff --git a/src/components/Content.js b/src/components/Content.js index ec78c90..6d38d8d 100644 --- a/src/components/Content.js +++ b/src/components/Content.js @@ -341,6 +341,9 @@ class Content extends Component { fetchCategoryData(categoryId) { + if (categoryId === 'bald') { + sessionStorage.setItem('filter_availability', '1'); + } const currentLanguage = this.props.languageContext?.currentLanguage || this.props.i18n?.language || 'de'; const cachedData = getCachedCategoryData(categoryId, currentLanguage); if (cachedData) { @@ -431,6 +434,18 @@ class Content extends Component { } catch (err) { console.error('Error finding category name in tree:', err); } + + if (!enhancedResponse.categoryName && !enhancedResponse.name) { + if (categoryId === 'neu') { + enhancedResponse.categoryName = this.props.t + ? this.props.t('navigation.new') + : 'Neuheiten'; + } else if (categoryId === 'bald') { + enhancedResponse.categoryName = this.props.t + ? this.props.t('navigation.soon') + : 'Demnächst'; + } + } } this.processData(enhancedResponse); diff --git a/src/components/header/CategoryList.js b/src/components/header/CategoryList.js index 6a4c2ff..04df62e 100644 --- a/src/components/header/CategoryList.js +++ b/src/components/header/CategoryList.js @@ -7,6 +7,7 @@ import Collapse from "@mui/material/Collapse"; import { Link } from "react-router-dom"; import HomeIcon from "@mui/icons-material/Home"; import FiberNewIcon from '@mui/icons-material/FiberNew'; +import LocalShippingIcon from "@mui/icons-material/LocalShipping"; import SettingsIcon from "@mui/icons-material/Settings"; import MenuIcon from "@mui/icons-material/Menu"; import CloseIcon from "@mui/icons-material/Close"; @@ -309,6 +310,62 @@ class CategoryList extends Component { )} + + {categories.length > 0 ? ( <> diff --git a/src/i18n/locales/ar/navigation.js b/src/i18n/locales/ar/navigation.js index a8630cb..c1c5b98 100644 --- a/src/i18n/locales/ar/navigation.js +++ b/src/i18n/locales/ar/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "جديد", + "soon": "قريباً", "home": "الرئيسية", "aktionen": "العروض", "filiale": "الفرع", diff --git a/src/i18n/locales/bg/navigation.js b/src/i18n/locales/bg/navigation.js index 50a1d3a..e62b4be 100644 --- a/src/i18n/locales/bg/navigation.js +++ b/src/i18n/locales/bg/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Нови", + "soon": "Очаквайте скоро", "home": "Начало", "aktionen": "Промоции", "filiale": "Клон", diff --git a/src/i18n/locales/cs/navigation.js b/src/i18n/locales/cs/navigation.js index ed1e679..d9dc647 100644 --- a/src/i18n/locales/cs/navigation.js +++ b/src/i18n/locales/cs/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Novinky", + "soon": "Již brzy", "home": "Domů", "aktionen": "Akce", "filiale": "Pobočka", diff --git a/src/i18n/locales/de/navigation.js b/src/i18n/locales/de/navigation.js index 60f017d..71d87d4 100644 --- a/src/i18n/locales/de/navigation.js +++ b/src/i18n/locales/de/navigation.js @@ -1,5 +1,7 @@ export default { "home": "Startseite", + "new": "Neuheiten", + "soon": "Demnächst", "aktionen": "Aktionen", "filiale": "Filiale", "categories": "Kategorien", diff --git a/src/i18n/locales/el/navigation.js b/src/i18n/locales/el/navigation.js index 900f79c..e0fe720 100644 --- a/src/i18n/locales/el/navigation.js +++ b/src/i18n/locales/el/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Νέα", + "soon": "Σύντομα", "home": "Αρχική", "aktionen": "Προσφορές", "filiale": "Κατάστημα", diff --git a/src/i18n/locales/en/navigation.js b/src/i18n/locales/en/navigation.js index 9c9b5a2..87d186e 100644 --- a/src/i18n/locales/en/navigation.js +++ b/src/i18n/locales/en/navigation.js @@ -1,5 +1,7 @@ export default { "home": "Home", // Startseite + "new": "New arrivals", // Neuheiten + "soon": "Coming soon", // Demnächst "aktionen": "Promotions", // Aktionen "filiale": "Branch", // Filiale "categories": "Categories", // Kategorien diff --git a/src/i18n/locales/es/navigation.js b/src/i18n/locales/es/navigation.js index 421d170..af396ab 100644 --- a/src/i18n/locales/es/navigation.js +++ b/src/i18n/locales/es/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Novedades", + "soon": "Próximamente", "home": "Inicio", "aktionen": "Promociones", "filiale": "Sucursal", diff --git a/src/i18n/locales/fr/navigation.js b/src/i18n/locales/fr/navigation.js index 6d28cc5..20b4b09 100644 --- a/src/i18n/locales/fr/navigation.js +++ b/src/i18n/locales/fr/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Nouveautés", + "soon": "Bientôt", "home": "Accueil", "aktionen": "Promotions", "filiale": "Agence", diff --git a/src/i18n/locales/hr/navigation.js b/src/i18n/locales/hr/navigation.js index 6bcb579..afce974 100644 --- a/src/i18n/locales/hr/navigation.js +++ b/src/i18n/locales/hr/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Novi", + "soon": "Uskoro", "home": "Početna", "aktionen": "Promocije", "filiale": "Podružnica", diff --git a/src/i18n/locales/hu/navigation.js b/src/i18n/locales/hu/navigation.js index 35c8de1..33ff7e7 100644 --- a/src/i18n/locales/hu/navigation.js +++ b/src/i18n/locales/hu/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Újdonságok", + "soon": "Hamarosan", "home": "Kezdőlap", "aktionen": "Akciók", "filiale": "Fiók", diff --git a/src/i18n/locales/it/navigation.js b/src/i18n/locales/it/navigation.js index 6b6189f..a993443 100644 --- a/src/i18n/locales/it/navigation.js +++ b/src/i18n/locales/it/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Novità", + "soon": "In arrivo", "home": "Home", "aktionen": "Promozioni", "filiale": "Filiale", diff --git a/src/i18n/locales/pl/navigation.js b/src/i18n/locales/pl/navigation.js index e00c001..7518af0 100644 --- a/src/i18n/locales/pl/navigation.js +++ b/src/i18n/locales/pl/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Nowości", + "soon": "Wkrótce", "home": "Strona główna", "aktionen": "Promocje", "filiale": "Oddział", diff --git a/src/i18n/locales/ro/navigation.js b/src/i18n/locales/ro/navigation.js index f7e6cc8..0517d44 100644 --- a/src/i18n/locales/ro/navigation.js +++ b/src/i18n/locales/ro/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Noutăți", + "soon": "În curând", "home": "Acasă", "aktionen": "Promoții", "filiale": "Sucursală", diff --git a/src/i18n/locales/ru/navigation.js b/src/i18n/locales/ru/navigation.js index 2346e2c..eed67f4 100644 --- a/src/i18n/locales/ru/navigation.js +++ b/src/i18n/locales/ru/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Новинки", + "soon": "Скоро", "home": "Главная", "aktionen": "Акции", "filiale": "Филиал", diff --git a/src/i18n/locales/sk/navigation.js b/src/i18n/locales/sk/navigation.js index df242fb..a26f91b 100644 --- a/src/i18n/locales/sk/navigation.js +++ b/src/i18n/locales/sk/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Novinky", + "soon": "Čoskoro", "home": "Domov", "aktionen": "Akcie", "filiale": "Pobočka", diff --git a/src/i18n/locales/sl/navigation.js b/src/i18n/locales/sl/navigation.js index 29e2313..f37dd22 100644 --- a/src/i18n/locales/sl/navigation.js +++ b/src/i18n/locales/sl/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Novosti", + "soon": "Kmalu", "home": "Domov", "aktionen": "Promocije", "filiale": "Poslovalnica", diff --git a/src/i18n/locales/sq/navigation.js b/src/i18n/locales/sq/navigation.js index 1358b1a..c901360 100644 --- a/src/i18n/locales/sq/navigation.js +++ b/src/i18n/locales/sq/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Të reja", + "soon": "Së shpejti", "home": "Kreu", "aktionen": "Promocione", "filiale": "Degë", diff --git a/src/i18n/locales/sr/navigation.js b/src/i18n/locales/sr/navigation.js index 6cc5bdd..4fb4d49 100644 --- a/src/i18n/locales/sr/navigation.js +++ b/src/i18n/locales/sr/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Нови", + "soon": "Ускоро", "home": "Početna", "aktionen": "Promocije", "filiale": "Filijala", diff --git a/src/i18n/locales/sv/navigation.js b/src/i18n/locales/sv/navigation.js index a05e650..4288464 100644 --- a/src/i18n/locales/sv/navigation.js +++ b/src/i18n/locales/sv/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Nyheter", + "soon": "Snart", "home": "Hem", "aktionen": "Kampanjer", "filiale": "Filial", diff --git a/src/i18n/locales/tr/navigation.js b/src/i18n/locales/tr/navigation.js index 0eda5bd..cf7af96 100644 --- a/src/i18n/locales/tr/navigation.js +++ b/src/i18n/locales/tr/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Yeniler", + "soon": "Yakında", "home": "Ana Sayfa", "aktionen": "Promosyonlar", "filiale": "Şube", diff --git a/src/i18n/locales/uk/navigation.js b/src/i18n/locales/uk/navigation.js index fceb9f8..f6154cc 100644 --- a/src/i18n/locales/uk/navigation.js +++ b/src/i18n/locales/uk/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "Новинки", + "soon": "Незабаром", "home": "Головна", "aktionen": "Акції", "filiale": "Філія", diff --git a/src/i18n/locales/zh/navigation.js b/src/i18n/locales/zh/navigation.js index c17221d..2011526 100644 --- a/src/i18n/locales/zh/navigation.js +++ b/src/i18n/locales/zh/navigation.js @@ -1,4 +1,6 @@ export default { + "new": "新品", + "soon": "即将上架", "home": "首页", "aktionen": "促销活动", "filiale": "分店",