Ensure pages scroll to the top on navigation and update content

Implement a global scroll-to-top component for all page navigations and update existing article content via database seeding.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 23852c00-4779-460a-9e0c-d09fee4b6c92
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 200b6518-4814-45b7-85de-b6af1979176c
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/f209e72a-0939-48fa-84fc-57854de71967/23852c00-4779-460a-9e0c-d09fee4b6c92/ee1CXlO
Replit-Helium-Checkpoint-Created: true
This commit is contained in:
sebastjanartic 2026-03-06 14:48:14 +00:00
parent 15189733b9
commit cdfa0ae32d
3 changed files with 42 additions and 23 deletions

View File

@ -1,4 +1,5 @@
import { Switch, Route } from "wouter";
import { Switch, Route, useLocation } from "wouter";
import { useEffect } from "react";
import { queryClient } from "./lib/queryClient";
import { QueryClientProvider } from "@tanstack/react-query";
import { Toaster } from "@/components/ui/toaster";
@ -20,26 +21,37 @@ import KontaktPage from "@/pages/kontakt";
import AdminGalleryPage from "@/pages/admin-gallery";
import CookieConsent from "@/components/cookie-consent";
function ScrollToTop() {
const [location] = useLocation();
useEffect(() => {
window.scrollTo(0, 0);
}, [location]);
return null;
}
function Router() {
return (
<Switch>
<Route path="/" component={Home} />
<Route path="/search" component={SearchPage} />
<Route path="/article/:slug" component={ArticlePage} />
<Route path="/category/:category" component={CategoryPage} />
<Route path="/videos" component={VideosPage} />
<Route path="/gallery" component={GalleryPageWrapper} />
<Route path="/horoskop" component={HoroscopePage} />
<Route path="/horoskop/:sign" component={HoroscopePage} />
<Route path="/rezepte" component={RecipesPage} />
<Route path="/empfang-folx-tv" component={EmpfangPage} />
<Route path="/ueber-uns" component={AboutPage} />
<Route path="/impressum" component={ImpressumPage} />
<Route path="/datenschutz" component={DatenschutzPage} />
<Route path="/kontakt" component={KontaktPage} />
<Route path="/admin/gallery" component={AdminGalleryPage} />
<Route component={NotFound} />
</Switch>
<div>
<ScrollToTop />
<Switch>
<Route path="/" component={Home} />
<Route path="/search" component={SearchPage} />
<Route path="/article/:slug" component={ArticlePage} />
<Route path="/category/:category" component={CategoryPage} />
<Route path="/videos" component={VideosPage} />
<Route path="/gallery" component={GalleryPageWrapper} />
<Route path="/horoskop" component={HoroscopePage} />
<Route path="/horoskop/:sign" component={HoroscopePage} />
<Route path="/rezepte" component={RecipesPage} />
<Route path="/empfang-folx-tv" component={EmpfangPage} />
<Route path="/ueber-uns" component={AboutPage} />
<Route path="/impressum" component={ImpressumPage} />
<Route path="/datenschutz" component={DatenschutzPage} />
<Route path="/kontakt" component={KontaktPage} />
<Route path="/admin/gallery" component={AdminGalleryPage} />
<Route component={NotFound} />
</Switch>
</div>
);
}

View File

@ -165,10 +165,6 @@ export default function ArticlePage() {
};
}, [article, articleUrl, articleImage]);
useEffect(() => {
window.scrollTo(0, 0);
}, [slug]);
useEffect(() => {
if (!article?.content) return;
if (article.content.includes("instagram.com")) {

View File

@ -269,4 +269,15 @@ export async function seedDatabase() {
cover_image = REPLACE(cover_image, '.webp', '.jpg')
WHERE cover_image LIKE '%.webp'
`);
await db.execute(sql`
UPDATE articles SET
title = ${"John Prisco \u2013 Die Geschichte eines Musikers"},
slug = 'john-prisco-die-geschichte-eines-musikers',
excerpt = ${"In der Sendung \u201eDie Geschichte des Liedes\u201c auf FOLX Music Television wird der Musiker John Prisco vorgestellt. In dieser Episode lernen die Zuschauer seinen musikalischen Weg und die Geschichten hinter einigen seiner Lieder kennen."},
content = ${"<p>In der Sendung \u201eDie Geschichte des Liedes\u201c auf FOLX Music Television wird der Musiker <strong>John Prisco</strong> vorgestellt. In dieser Episode lernen die Zuschauer seinen musikalischen Weg und die Geschichten hinter einigen seiner Lieder kennen.</p>\n<p><strong>John Prisco</strong>, mit b\u00fcrgerlichem Namen <strong>Albert Koller</strong>, wurde am <strong>25. Januar 1956</strong> geboren. Schon fr\u00fch spielte Musik eine wichtige Rolle in seinem Leben. Im Laufe der Jahre entwickelte er seinen eigenen Stil und wurde als K\u00fcnstler bekannt, der gef\u00fchlvolle Melodien mit pers\u00f6nlichen Geschichten verbindet. Mit seinen Auftritten bei verschiedenen Veranstaltungen und in Fernsehsendungen erreichte er ein treues Publikum.</p>\n<p>Viele seiner Lieder basieren auf pers\u00f6nlichen Erfahrungen und Momenten aus seinem Leben. Gerade diese N\u00e4he zu echten Geschichten machte seine Musik f\u00fcr viele Zuh\u00f6rer besonders authentisch.</p>\n<div style=\"display:flex;justify-content:center;margin:2rem 0;\"><iframe src=\"https://player.mediadelivery.net/embed/476412/ee136953-2573-4f3b-8632-bf177175aa97\" loading=\"lazy\" style=\"border:none;width:100%;aspect-ratio:16/9;\" allow=\"accelerometer;gyroscope;encrypted-media;picture-in-picture;\" allowfullscreen=\"true\"></iframe></div>\n<p>In der Sendung \u201eDie Geschichte des Liedes\u201c spricht John Prisco \u00fcber seine Inspiration, \u00fcber die Entstehung seiner Songs und dar\u00fcber, welche Bedeutung Musik f\u00fcr ihn hatte. Die Sendung gibt damit einen Einblick in seine musikalische Arbeit und seine Gedanken zur Musik.</p>\n<p>Der Musiker <strong>John Prisco</strong> verstarb am <strong>28. August 2025</strong> im Alter von 69 Jahren. Seine Musik und seine Auftritte bleiben jedoch f\u00fcr viele Fans in Erinnerung.</p>\n<p>Die komplette Ausgabe der Sendung \u201eDie Geschichte des Liedes\u201c mit John Prisco k\u00f6nnen Sie in diesem Artikel ansehen.</p>"},
cover_image = '/uploads/john-prisco.jpg',
published_at = '2026-03-06T12:00:00.000Z'
WHERE slug = 'john-prisco-die-geschichte-des-liedes' OR slug = 'john-prisco-die-geschichte-eines-musikers'
`);
}