From 02fb682f6364c75b62a6186d010c5e4a2eac63a6 Mon Sep 17 00:00:00 2001 From: mstfyldz Date: Tue, 7 Jul 2026 12:00:32 +0300 Subject: [PATCH] google --- app/[locale]/MenuClient.tsx | 75 +++++++++++++++++++ app/[locale]/page.tsx | 1 + .../(dashboard)/settings/SettingsForm.tsx | 17 +++++ app/admin/(dashboard)/settings/actions.ts | 6 ++ app/admin/(dashboard)/settings/page.tsx | 2 + 5 files changed, 101 insertions(+) diff --git a/app/[locale]/MenuClient.tsx b/app/[locale]/MenuClient.tsx index bb21000..8030c34 100644 --- a/app/[locale]/MenuClient.tsx +++ b/app/[locale]/MenuClient.tsx @@ -35,6 +35,7 @@ type SiteSettings = { logoUrl: string location: string restaurantName: string + googleReviewUrl?: string } export default function MenuClient({ initialCategories, siteSettings }: { initialCategories: MenuCategory[], siteSettings: SiteSettings }) { @@ -42,6 +43,7 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia initialCategories[0]?.id || "" ); const [selectedItem, setSelectedItem] = useState(null); + const [showReviewModal, setShowReviewModal] = useState(false); const sectionRefs = useRef<(HTMLElement | null)[]>([]); const t = useTranslations("Menu"); const locale = useLocale(); @@ -61,6 +63,19 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia return () => observer.disconnect(); }, []); + useEffect(() => { + if (siteSettings.googleReviewUrl) { + const hasSeenModal = sessionStorage.getItem('hasSeenReviewModal'); + if (!hasSeenModal) { + const timer = setTimeout(() => { + setShowReviewModal(true); + sessionStorage.setItem('hasSeenReviewModal', 'true'); + }, 1500); + return () => clearTimeout(timer); + } + } + }, [siteSettings.googleReviewUrl]); + useEffect(() => { if (selectedItem) { document.body.style.overflow = "hidden"; @@ -301,6 +316,66 @@ export default function MenuClient({ initialCategories, siteSettings }: { initia )} + + {/* Google Review Modal */} + {showReviewModal && siteSettings.googleReviewUrl && ( + setShowReviewModal(false)} + > + e.stopPropagation()} + > + + +
+ + + + + + + +
+ +

+ Bizi Değerlendirin +

+

+ Deneyiminizi önemsiyoruz! Bize Google üzerinde yorum yaparak destek olabilirsiniz. +

+ + setShowReviewModal(false)} + className="block w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-xl transition-colors font-sans" + > + Google'da Yorum Yap + + + +
+
+ )} ); diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx index a7dab4a..7371c7c 100644 --- a/app/[locale]/page.tsx +++ b/app/[locale]/page.tsx @@ -42,6 +42,7 @@ async function getSiteSettings() { logoUrl: settings['logo_url'] || '/logo.png', location: settings['location'] || 'Akyaka · Muğla', restaurantName: settings['restaurant_name'] || 'Moy Beach', + googleReviewUrl: settings['google_review_url'] || '', } } diff --git a/app/admin/(dashboard)/settings/SettingsForm.tsx b/app/admin/(dashboard)/settings/SettingsForm.tsx index ccff787..7b8b44f 100644 --- a/app/admin/(dashboard)/settings/SettingsForm.tsx +++ b/app/admin/(dashboard)/settings/SettingsForm.tsx @@ -9,10 +9,12 @@ export default function SettingsForm({ defaultRestaurantName, defaultLocation, defaultLogoUrl, + defaultGoogleReviewUrl, }: { defaultRestaurantName: string defaultLocation: string defaultLogoUrl: string + defaultGoogleReviewUrl?: string }) { const [state, action, isPending] = useActionState(saveSettings, undefined) const [logoUrl, setLogoUrl] = useState(defaultLogoUrl) @@ -146,6 +148,21 @@ export default function SettingsForm({ /> + {/* Google Review Url */} +
+ + +

Eğer buraya link eklerseniz site açılışında ziyaretçilere yorum yapmaları için popup gösterilir.

+
+