From 3632b936e9cce50f5370482717fe1c3603769ce6 Mon Sep 17 00:00:00 2001 From: paul Date: Tue, 15 Jul 2025 22:41:05 +0200 Subject: [PATCH] fix: improve URL slug generation for special characters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace all non-alphanumeric characters with single dash - Collapse multiple consecutive dashes into single dash - Remove leading and trailing dashes - Fixes issue where "Petra & Peter" became "petra---peter" - Now generates cleaner URLs like "petra-peter" instead 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- backend/src/routes/adminEvents.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/src/routes/adminEvents.js b/backend/src/routes/adminEvents.js index dfc4b83..f23ee58 100644 --- a/backend/src/routes/adminEvents.js +++ b/backend/src/routes/adminEvents.js @@ -66,7 +66,12 @@ router.post('/', adminAuth, [ } // Generate unique slug - const baseSlug = `${event_type}-${event_name.toLowerCase().replace(/[^a-z0-9]/g, '-')}-${event_date}`; + const processedEventName = event_name + .toLowerCase() + .replace(/[^a-z0-9]/g, '-') // Replace non-alphanumeric with dash + .replace(/-+/g, '-') // Replace multiple dashes with single dash + .replace(/^-|-$/g, ''); // Remove leading/trailing dashes + const baseSlug = `${event_type}-${processedEventName}-${event_date}`; let slug = baseSlug; let counter = 1;