This repository has been archived on 2026-06-01. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

106 lines
4.0 KiB
JavaScript

( () => {
const header = document.querySelector("#header");
const basketInfo = document.querySelector("#basketinfo");
const basketContent = document.querySelector(".vc-basketinfoextended-content");
const itemCountBasket = parseInt(document.querySelector(".vc-basketinfoextended-numberofitems")?.textContent) || 0;
if (basketInfo && basketContent && basketContent.children.length === 0 && itemCountBasket > 0) {
const headerLink = basketInfo.querySelector('.vc-basketinfoextended-header');
if (headerLink) {
headerLink.dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
headerLink.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true }));
}
}
const logoEl = header.querySelector(".vc-headerlogo img");
const logo = {
src: logoEl ? logoEl.getAttribute("src") : '',
alt: logoEl ? logoEl.getAttribute("alt") : '',
};
const customContentBlock = header.querySelector(".custom-content-block.custom-content-header-1 > .content");
const customContentHeader = customContentBlock ? customContentBlock.innerHTML : '';
function extractMenuTree(ulElement) {
if (!ulElement) return [];
const listItems = Array.from(ulElement.children).filter(el => el.tagName === 'LI');
return listItems.map(li => {
const link = li.querySelector(":scope > a");
const itemData = {
text: link ? link.textContent.trim() : '',
href: link ? link.getAttribute("href") : ''
};
const subMenu = li.querySelector(":scope > ul[role='menu']");
if (subMenu) {
itemData.sublinks = extractMenuTree(subMenu);
}
return itemData;
});
}
const rootMenu = header.querySelector("#menu #menucategories nav ul[role='menu']");
const menuData = extractMenuTree(rootMenu);
const menuTop = header.querySelector("#menutop ul[role='menu']");
const menuTopData = menuTop ? Array.from(menuTop.querySelectorAll("li > a")).map(link => ({
text: link.textContent.trim(),
href: link.getAttribute("href")
})) : [];
const searchForm = header.querySelector("#frm-searchbox");
const searchAction = searchForm ? searchForm.getAttribute("action") : "/hledani";
const userMenuNodes = header.querySelectorAll("#menuuser .content ul li a");
const userMenu = Array.from(userMenuNodes).map(a => ({
text: a.textContent.trim(),
href: a.getAttribute("href")
}));
const basketPrice = header.querySelector("#basketinfo .vc-basketinfoextended-price")?.textContent.trim() || '';
const basketLink = header.querySelector("#basketinfo .vc-basketinfoextended-header")?.getAttribute("href") || '/kosik';
// Extract the newly populated items
const basketItemsNodes = header.querySelectorAll(".vc-basketinfoextended-item");
const basketItems = Array.from(basketItemsNodes).map(item => {
const img = item.querySelector("img");
const link = item.querySelector(".vc-basketinfoextended-item-namewrapper p a");
const qty = item.querySelector(".quantity");
const price = item.querySelector(".vc-basketinfoextended-item-price");
const remove = item.querySelector(".removeBasketItemLink");
return {
imgSrc: img ? (img.getAttribute("data-src") || img.getAttribute("src")) : "",
imgAlt: img ? img.getAttribute("alt") : "",
name: link ? link.textContent.trim() : "",
href: link ? link.getAttribute("href") : "",
qty: qty ? qty.textContent.trim() : "",
price: price ? price.textContent.trim() : "",
removeLink: remove ? remove.getAttribute("href") : ""
};
});
const freeDeliveryNode = header.querySelector(".ndBasketFreeDelivery_basketpopup p");
const freeDeliveryText = freeDeliveryNode ? freeDeliveryNode.textContent.trim() : "";
const finalData = {
logo,
customContentHeader,
searchAction,
userMenu,
menu: {
top: menuTopData,
main: menuData
},
basket: {
itemCount: itemCountBasket,
price: basketPrice,
link: basketLink,
items: basketItems,
freeDelivery: freeDeliveryText
}
};
return finalData;
})();