/* Add custom JS code below */ // ═══════════════════════════════════════════════════════════ // القسم 6: شريطي الإعلانات الثابتين في أعلى الصفحة // ═══════════════════════════════════════════════════════════ (function initPromoBanners() { function createPromoBanners() { try { if (document.querySelector('.top-promo-bars-wrapper')) return; const header = document.querySelector(".store-header") || document.querySelector("header"); if (!header) { console.warn("Header not found for promo banner"); return; } // تحميل Swiper CSS const swiperCSS = document.createElement("link"); swiperCSS.rel = "stylesheet"; swiperCSS.href = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"; document.head.appendChild(swiperCSS); const promoBars = document.createElement("div"); promoBars.className = "top-promo-bars-wrapper"; promoBars.innerHTML = `
${Array(20).fill( '
🌏 توصيل لجميع مناطق السعودية ودول الخليج
' ).join('')}
`; document.body.insertBefore( promoBars, document.body.firstChild ); // تحميل Swiper JS const swiperJS = document.createElement("script"); swiperJS.src = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"; swiperJS.onload = function () { try { if (typeof Swiper !== 'undefined') { new Swiper(".promo-slider-container", { direction: "horizontal", loop: true, loopedSlides: 20, speed: 7000, autoplay: { delay: 0, disableOnInteraction: false, pauseOnMouseEnter: false }, slidesPerView: "auto", spaceBetween: 0, allowTouchMove: false }); } } catch (error) { console.warn( "Promo slider initialization error:", error ); } }; swiperJS.onerror = function () { console.warn( "Failed to load Swiper for promo banner" ); }; document.head.appendChild(swiperJS); } catch (error) { console.warn( "Promo banner creation error:", error ); } } if (document.readyState === "loading") { document.addEventListener( "DOMContentLoaded", createPromoBanners ); } else { createPromoBanners(); } })(); // ═══════════════════════════════════════════════════════════ // نهايه قسم شريطي الإعلانات الثابتين في أعلى الصفحة // ═══════════════════════════════════════════════════════════ (function() { function moveAddToCartButtons() { document.querySelectorAll('.s-product-card-entry').forEach(function(card) { if (card.querySelector('.add-to-cart-bottom')) return; // اتنقل فعلاً var content = card.querySelector('.s-product-card-content'); var addBtn = card.querySelector('salla-add-product-button'); if (!content || !addBtn) return; var wrapper = document.createElement('div'); wrapper.className = 'add-to-cart-bottom'; wrapper.appendChild(addBtn); content.appendChild(wrapper); }); } moveAddToCartButtons(); var observer = new MutationObserver(function() { moveAddToCartButtons(); }); observer.observe(document.body, { childList: true, subtree: true }); // محاولات احتياطية لمدة أطول (30 ثانية) عشان سلايدرات الرئيسية البطيئة var retries = 0; var interval = setInterval(function() { moveAddToCartButtons(); retries++; if (retries > 60) clearInterval(interval); }, 500); })(); // ───────────────────────────────────────────────────────────── // Homemark - Google Reviews Slider (الهوم بيج فقط) // ───────────────────────────────────────────────────────────── (function initGoogleReviews() { const isHomePage = document.body.classList.contains('index'); if (!isHomePage) return; const reviews = [ { name: "N", rating: 5, text: "هوم مارك صراحة محل مميز وبضاعتهم راااائعة جدآ وكمان البنات ماشاءالله متعاونات ويساعدونكم في التنسيق اذا حابين .. الموظفة رهام عسسسل الله يسعدها ويوفقها اسلوب وذرابة 😍😍تنسيقها خيااااال", date: "منذ 6 أشهر", avatar: "https://ui-avatars.com/api/?name=N&background=cab09b&color=fff&size=80" }, { name: "mun", rating: 5, text: "I had a great experience at this store, and I would especially like to thank Mr. Mahdi Hassan for his excellent service. He was very helpful, professional, and kind.", date: "منذ شهرين", avatar: "https://ui-avatars.com/api/?name=Mun&background=b89a80&color=fff&size=80" }, { name: "عفاف أحمد", rating: 5, text: "محل هوم مارك مرا رائع اشتريت منهم اغراض قبل أسبوع يوفر جميع الأذواق وأسعارهم حلوة الله لا يغير عليهم 😅 وألف شكر للموظفة شيماء على ذوقها وتعاملها الراقي تعبتها معايا في حساب الاغراض وكانت مرا متعاونه وخلوقة جداً", date: "منذ 5 أشهر", avatar: "https://ui-avatars.com/api/?name=عفاف+أحمد&background=a68a6e&color=fff&size=80" }, { name: "Rq", rating: 5, text: "المحل جدا جميل واسعاره حلوه", date: "منذ 9 أشهر", avatar: "https://ui-avatars.com/api/?name=Rq&background=9c8268&color=fff&size=80" }, { name: "nona ha", rating: 5, text: "يعطيكم العافيه على التعامل الراقي واخص بالشكر لشيماء", date: "منذ شهر", avatar: "https://ui-avatars.com/api/?name=Nona+Ha&background=cab09b&color=fff&size=80" }, { name: "ابو فاطمة فطووم", rating: 5, text: "ريهام وشيماء وعمرررررران صراحة تعامل طيب وذوق وفنانين", date: "منذ شهر", avatar: "https://ui-avatars.com/api/?name=ابو+فاطمة&background=b89a80&color=fff&size=80" }, { name: "ضحى", rating: 5, text: "اشكر الموظفه دعا على الاخلاق الحلوة", date: "منذ شهرين", avatar: "https://ui-avatars.com/api/?name=ضحى&background=a68a6e&color=fff&size=80" }, { name: "Asma Alkere", rating: 5, text: "منسقة دعاء رائعة قمة الاخلاق والابدااع محظوظين فيها صراحة", date: "منذ 3 أشهر", avatar: "https://ui-avatars.com/api/?name=Asma+Alkere&background=9c8268&color=fff&size=80" }, { name: "Alotibi Abdullah", rating: 5, text: "بضاعه مميزه وجوده عاليه وأسعار تنافسيه", date: "منذ 4 أشهر", avatar: "https://ui-avatars.com/api/?name=Alotibi+Abdullah&background=cab09b&color=fff&size=80" } ]; const businessInfo = { name: "Homemark", rating: 5, totalReviews: reviews.length, avatar: "https://cdn.files.salla.network/theme/157889033/152f52c8-5ab3-4293-9ab5-1f26f5f9a7b3_260x260.png", reviewUrl: "https://maps.app.goo.gl/KcPXtcpByLtbRcYE7" }; function loadSwiperAssets() { return new Promise((resolve) => { try { if (!document.querySelector('link[href*="swiper"]')) { const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css'; document.head.appendChild(link); } if (typeof Swiper === 'undefined') { const script = document.createElement('script'); script.src = 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js'; script.onload = () => resolve(); script.onerror = () => { console.warn('Failed to load Swiper library'); resolve(); }; document.head.appendChild(script); } else { resolve(); } } catch (error) { console.warn('Swiper assets loading error:', error); resolve(); } }); } function createStars(rating) { let starsHTML = ''; for (let i = 1; i <= 5; i++) { const starClass = i <= rating ? 'f' : 'e'; starsHTML += `star`; } return starsHTML; } function createReviewCard(review) { const textLength = review.text.length; const needsReadMore = textLength > 150; const displayText = needsReadMore ? review.text.substring(0, 150) + '...' : review.text; return `
Google
${review.name}
${review.name}
${review.date}
${createStars(review.rating)}
${displayText}
${needsReadMore ? '
اقرأ المزيد
' : ''}
`; } window.toggleReviewText = function (element) { try { const textElement = element.previousElementSibling; if (!textElement) return; const fullText = textElement.getAttribute('data-full'); const isExpanded = textElement.classList.contains('expanded'); if (isExpanded) { textElement.textContent = fullText.substring(0, 150) + '...'; textElement.classList.remove('expanded'); element.textContent = 'اقرأ المزيد'; } else { textElement.textContent = fullText; textElement.classList.add('expanded'); element.textContent = 'إخفاء'; } } catch (error) { console.warn('Toggle review text error:', error); } }; function addStyles() { if (document.getElementById('homemark-reviews-styles')) return; const style = document.createElement('style'); style.id = 'homemark-reviews-styles'; style.textContent = ` .ti-widget{padding:60px 20px;background:transparent;direction:rtl;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif} .ti-widget-container{max-width:1400px;margin:0 auto} .ti-footer{background:white;border-radius:12px;padding:30px;margin-bottom:30px;box-shadow:0 2px 8px rgba(202,176,155,0.25)} .ti-profile-section{display:flex;align-items:center;flex-direction:column;text-align:center;gap:20px} .ti-profile-img img{width:80px;height:80px;border-radius:50%;object-fit:cover;border:3px solid #cab09b} .ti-profile-details{flex:1} .ti-business-name{font-size:24px;font-weight:700;color:#a68a6e;margin-bottom:8px} .ti-stars{display:flex;gap:2px;justify-content:center;margin-bottom:5px} .ti-star{width:17px;height:17px} .ti-rating-text{font-size:14px;color:#5f6368;margin-bottom:12px} .ti-write-review-btn{display:inline-block;background:#cab09b;color:white;padding:10px 24px;border-radius:4px;text-decoration:none;font-size:14px;font-weight:500;transition:background 0.3s} .ti-write-review-btn:hover{background:#a68a6e} .ti-reviews-container{position:relative;padding-bottom:60px} .reviewsSwiper{width:100%;padding:0 0 20px 0} .swiper-slide{height:auto} .ti-review-item{background:white;border-radius:12px;padding:20px;box-shadow:0 2px 8px rgba(202,176,155,0.2);transition:all 0.3s;cursor:pointer;height:100%;display:flex;flex-direction:column;border:2px solid transparent} .ti-review-item:hover{transform:translateY(-4px);box-shadow:0 4px 16px rgba(202,176,155,0.35);border-color:#cab09b} .ti-inner{display:flex;flex-direction:column;gap:12px;flex:1} .ti-review-header{display:flex;align-items:flex-start;gap:12px;position:relative} .ti-platform-icon{position:absolute;top:0;left:0} .ti-platform-icon img{width:20px;height:20px} .ti-review-header .ti-profile-img{margin-right:25px} .ti-review-header .ti-profile-img img{width:40px;height:40px;border-radius:50%;object-fit:cover} .ti-review-header .ti-profile-details{flex:1} .ti-name{font-size:14px;font-weight:500;color:#202124;margin-bottom:4px} .ti-date{font-size:12px;color:#5f6368} .ti-review-text{font-size:14px;line-height:1.6;color:#3c4043;max-height:120px;overflow:hidden;transition:max-height 0.3s} .ti-review-text.expanded{max-height:none} .ti-read-more{color:#a68a6e;font-size:13px;cursor:pointer;font-weight:500;user-select:none;margin-top:auto} .ti-read-more:hover{text-decoration:underline} .swiper-button-next,.swiper-button-prev{background:white;width:45px;height:45px;border-radius:50%;box-shadow:0 2px 8px rgba(202,176,155,0.3);transition:all 0.3s} .swiper-button-next:after,.swiper-button-prev:after{font-size:18px;font-weight:bold;color:#a68a6e} .swiper-button-next:hover,.swiper-button-prev:hover{background:#cab09b;transform:scale(1.1)} .swiper-button-next:hover:after,.swiper-button-prev:hover:after{color:white} .swiper-rtl .swiper-button-prev{right:10px;left:auto} .swiper-rtl .swiper-button-next{left:10px;right:auto} .swiper-pagination{bottom:0!important} .swiper-pagination-bullet{width:10px;height:10px;background:#cab09b;opacity:0.3;transition:all 0.3s} .swiper-pagination-bullet-active{background:#a68a6e;opacity:1;width:30px;border-radius:5px} @media (max-width:768px){ .ti-widget{padding:40px 15px} .ti-profile-section{flex-direction:column;text-align:center} .swiper-button-next,.swiper-button-prev{width:35px;height:35px} .swiper-button-next:after,.swiper-button-prev:after{font-size:14px} } `; document.head.appendChild(style); } function createSection() { const section = document.createElement('section'); section.className = 'ti-widget'; section.id = 'google-reviews-section'; section.innerHTML = `
${reviews.map(review => createReviewCard(review)).join('')}
`; return section; } function initSwiper() { try { if (typeof Swiper === 'undefined') { console.warn('Swiper library not loaded'); return; } new Swiper('.reviewsSwiper', { slidesPerView: 1, spaceBetween: 20, breakpoints: { 480: { slidesPerView: 1, spaceBetween: 15 }, 768: { slidesPerView: 2, spaceBetween: 20 }, 1024: { slidesPerView: 3, spaceBetween: 20 }, 1280: { slidesPerView: 4, spaceBetween: 20 } }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }, pagination: { el: '.swiper-pagination', clickable: true, dynamicBullets: true }, autoplay: { delay: 5000, disableOnInteraction: false, pauseOnMouseEnter: true }, loop: true, speed: 600, grabCursor: true, a11y: { enabled: true } }); } catch (error) { console.warn('Swiper initialization error:', error); } } function insertSection() { try { if (document.getElementById('google-reviews-section')) return; const section = createSection(); // TODO: عدّل السلكتور ده لو عايز السكشن يتحط بعد عنصر معيّن في هوم مارك // مثال: const targetImageSrc = 'PART_OF_IMAGE_URL'; ثم دور جوه a.banner-entry زي الكود الأصلي const fallback = document.querySelector('main') || document.querySelector('body.index'); if (fallback) fallback.appendChild(section); } catch (error) { console.warn('Section insertion error:', error); } } function waitForTarget() { return new Promise((resolve) => { if (document.querySelector('main')) { resolve(); return; } const observer = new MutationObserver(() => { if (document.querySelector('main')) { observer.disconnect(); resolve(); } }); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(() => { observer.disconnect(); resolve(); }, 10000); }); } async function init() { try { await loadSwiperAssets(); addStyles(); await waitForTarget(); insertSection(); setTimeout(initSwiper, 200); } catch (error) { console.warn('Google Reviews init error:', error); } } const runWhenIdle = () => { if ('requestIdleCallback' in window) { requestIdleCallback(init); } else { setTimeout(init, 1000); } }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runWhenIdle); } else { runWhenIdle(); } })(); (function () { function changeGiftTitle() { const title = document.querySelector(".s-list-tile-item-title h3"); if (title && title.textContent.trim() !== "أرسل كهدية") { title.textContent = "أرسل كهدية"; } } changeGiftTitle(); let timer; const observer = new MutationObserver(function () { clearTimeout(timer); timer = setTimeout(changeGiftTitle, 100); }); observer.observe(document.body, { childList: true, subtree: true }); })();