From 07816dce19f6bbebebb83421056b099b052802fd Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Fri, 9 Oct 2026 13:29:34 +0000 Subject: [PATCH] Kontaktdaten: Telefon +49 521 986 20 100, E-Mail interior@b2in.eu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lang-Dateien (Kontaktformular, Impressum, Datenschutz, de/en), Support-Link im Partnerportal, WhatsApp-Schreibweise und Platzhalter im Admin. ContactDetailsSeeder ersetzt die alten Werte in den gespeicherten CMS-Einträgen (beide Sprachen), Marken und Magazin; Display-Folien und Info-Tablet (CABINET-Showroom) bleiben unberührt. Co-Authored-By: Claude Opus 5.5 --- database/seeders/ContactDetailsSeeder.php | 48 +++++++++++++++++++ database/seeders/InteriorReleaseSeeder.php | 1 + database/seeders/WhatsappNumberSeeder.php | 4 +- dev/entwicklung.md | 2 +- resources/lang/de/b2in.php | 4 +- resources/lang/de/b2in_legal.php | 14 +++--- resources/lang/en/b2in.php | 4 +- resources/lang/en/b2in_legal.php | 14 +++--- .../admin/cms/cabinet-info-tablet.blade.php | 2 +- .../cms/display-version-editor.blade.php | 2 +- .../partner/invitation-expired.blade.php | 2 +- tests/Feature/ContactDetailsTest.php | 48 +++++++++++++++++++ tests/Feature/LegalTextUpdateTest.php | 6 +-- tests/Feature/WhatsappNumberSeederTest.php | 16 +++---- 14 files changed, 132 insertions(+), 35 deletions(-) create mode 100644 database/seeders/ContactDetailsSeeder.php create mode 100644 tests/Feature/ContactDetailsTest.php diff --git a/database/seeders/ContactDetailsSeeder.php b/database/seeders/ContactDetailsSeeder.php new file mode 100644 index 00000000..974372a1 --- /dev/null +++ b/database/seeders/ContactDetailsSeeder.php @@ -0,0 +1,48 @@ + self::PHONE, + 'info@b2in.eu' => self::EMAIL, + 'info@b2in.de' => self::EMAIL, + ]; + + /** Werte, die vollständig übereinstimmen müssen – die WhatsApp-Nummer in alter Schreibweise. */ + public const EXACT = [ + '+49 521 98620100' => self::PHONE, + '0521 98620100' => self::PHONE, + '0521-98620100' => self::PHONE, + ]; + + public function run(): void + { + $count = $this->replaceCmsTexts(self::REPLACEMENTS, self::EXACT); + + $this->command?->info($count === 0 + ? 'Kontaktdaten: bereits aktuell.' + : "Kontaktdaten: {$count} Stellen auf ".self::PHONE.' / '.self::EMAIL.' umgestellt.'); + } +} diff --git a/database/seeders/InteriorReleaseSeeder.php b/database/seeders/InteriorReleaseSeeder.php index e215d87e..38f65f8d 100644 --- a/database/seeders/InteriorReleaseSeeder.php +++ b/database/seeders/InteriorReleaseSeeder.php @@ -59,6 +59,7 @@ class InteriorReleaseSeeder extends Seeder ContentCorrections20261008Seeder::class, FaqCategoriesSeeder::class, BrandTranslationsSeeder::class, + ContactDetailsSeeder::class, // Zuletzt: fehlende Felder ergänzen, verwendete Bilder in die Mediathek. CmsSectionFieldsSeeder::class, AssetMediaImportSeeder::class, diff --git a/database/seeders/WhatsappNumberSeeder.php b/database/seeders/WhatsappNumberSeeder.php index 4426c432..c28305ec 100644 --- a/database/seeders/WhatsappNumberSeeder.php +++ b/database/seeders/WhatsappNumberSeeder.php @@ -19,8 +19,8 @@ use Illuminate\Database\Seeder; */ class WhatsappNumberSeeder extends Seeder { - /** Business-Nummer laut Marcel (0521-98620100, korrigiert am 24.09.), international geschrieben. */ - public const NUMBER = '+49 521 98620100'; + /** Business-Nummer laut Marcel (0521-98620100, korrigiert am 24.09.), international geschrieben (Schreibweise seit 09.10.). */ + public const NUMBER = '+49 521 986 20 100'; /** * Werte, die der Seeder ersetzt: der Platzhalter aus der ersten Einrichtung und die am 23.09. diff --git a/dev/entwicklung.md b/dev/entwicklung.md index 138c9102..244b685e 100644 --- a/dev/entwicklung.md +++ b/dev/entwicklung.md @@ -74,7 +74,7 @@ Stillgelegte Seiten leiten dauerhaft um: `/netzwerk`, `/interior`, `/partner` un - **Hero-Slideshow:** elf Bilder, im CMS pflegbar. Je Bild Marke und Motiv in der Infokarte. Überblendung alle 7 Sekunden (einstellbar 3–30), Pause bei Hover und Fokus, Steuerung per Pfeiltasten. Eine Fortschrittslinie im Bild zeigt die verbleibende Zeit. Auf dem Handy steht die Karte unter dem Bild. - **Gemeinsamer Hero-Stil** auf Start, Marken, Über uns und Kontakt: Goldverlauf als Rahmen, Zeile über der Überschrift, Vertrauenspunkte. -- **Termin-Widget:** WhatsApp zuerst (0521-98620100), darunter das Formular. +- **Termin-Widget:** WhatsApp zuerst (+49 521 986 20 100, zugleich Telefonnummer; E-Mail interior@b2in.eu), darunter das Formular. - **Live-Display:** Die Startseite zeigt, was im Showroom läuft, vergrößerbar und im Vollbild. - **Sprache:** Deutsch und Englisch, Umschaltung über die Sitzung (`SetLocale`). diff --git a/resources/lang/de/b2in.php b/resources/lang/de/b2in.php index 395e9c9f..de3527c1 100644 --- a/resources/lang/de/b2in.php +++ b/resources/lang/de/b2in.php @@ -704,14 +704,14 @@ return [ [ 'title' => 'Unsere E-Mail-Adresse', 'info' => [ - 'info@b2in.eu', + 'interior@b2in.eu', ], 'icon' => 'mail', ], [ 'title' => 'Unsere Telefonnummer', 'info' => [ - '+49 (0) 5221 9255055', + '+49 521 986 20 100', ], 'icon' => 'phone', ], diff --git a/resources/lang/de/b2in_legal.php b/resources/lang/de/b2in_legal.php index 5e5a325b..5f1ca8a2 100644 --- a/resources/lang/de/b2in_legal.php +++ b/resources/lang/de/b2in_legal.php @@ -24,8 +24,8 @@ return [

Kontakt

- E-Mail: info@b2in.eu
- Telefon: +49 (0) 5221 9255055 + E-Mail: interior@b2in.eu
+ Telefon: +49 521 986 20 100

@@ -190,8 +190,8 @@ return [ B2in GmbH
Feldstraße 59
32120 Hiddenhausen
- Telefon: +49 (0) 5221 9255055
- E-Mail: info@b2in.eu + Telefon: +49 521 986 20 100
+ E-Mail: interior@b2in.eu

@@ -302,7 +302,7 @@ return [
  • gemäß Art. 21 DSGVO Widerspruch gegen die Verarbeitung einzulegen, sofern Ihre Daten auf Grundlage von berechtigten Interessen verarbeitet werden.
  • - Möchten Sie von Ihren Rechten Gebrauch machen, genügt eine E-Mail an: info@b2in.eu. + Möchten Sie von Ihren Rechten Gebrauch machen, genügt eine E-Mail an: interior@b2in.eu.

    Sie haben zudem das Recht, sich bei einer Datenschutz-Aufsichtsbehörde zu beschweren (Art. 77 DSGVO). @@ -326,8 +326,8 @@ return [ B2in GmbH
    Feldstraße 59
    32120 Hiddenhausen
    - Telefon: +49 (0) 5221 9255055
    - E-Mail: info@b2in.eu + Telefon: +49 521 986 20 100
    + E-Mail: interior@b2in.eu

    diff --git a/resources/lang/en/b2in.php b/resources/lang/en/b2in.php index 2987def0..d6d2ae64 100644 --- a/resources/lang/en/b2in.php +++ b/resources/lang/en/b2in.php @@ -687,14 +687,14 @@ return [ [ 'title' => 'Our Email Address', 'info' => [ - 'info@b2in.eu', + 'interior@b2in.eu', ], 'icon' => 'mail', ], [ 'title' => 'Our Phone Number', 'info' => [ - '+49 (0) 5221 9255055', + '+49 521 986 20 100', ], 'icon' => 'phone', ], diff --git a/resources/lang/en/b2in_legal.php b/resources/lang/en/b2in_legal.php index 7fc9cab7..08c8183f 100644 --- a/resources/lang/en/b2in_legal.php +++ b/resources/lang/en/b2in_legal.php @@ -24,8 +24,8 @@ return [

    Contact

    - Email: info@b2in.eu
    - Phone: +49 (0) 5221 9255055 + Email: interior@b2in.eu
    + Phone: +49 521 986 20 100

    @@ -190,8 +190,8 @@ return [ B2in GmbH
    Feldstraße 59
    32120 Hiddenhausen, Germany
    - Phone: +49 (0) 5221 9255055
    - Email: info@b2in.eu + Phone: +49 521 986 20 100
    + Email: interior@b2in.eu

    @@ -295,7 +295,7 @@ return [
  • pursuant to Art. 21 GDPR, to object to the processing, insofar as your data is processed on the basis of legitimate interests.
  • - To exercise your rights, simply send an email to: info@b2in.eu. + To exercise your rights, simply send an email to: interior@b2in.eu.

    You also have the right to lodge a complaint with a data protection supervisory authority (Art. 77 GDPR). @@ -319,8 +319,8 @@ return [ B2in GmbH
    Feldstraße 59
    32120 Hiddenhausen, Germany
    - Phone: +49 (0) 5221 9255055
    - Email: info@b2in.eu + Phone: +49 521 986 20 100
    + Email: interior@b2in.eu

    diff --git a/resources/views/livewire/admin/cms/cabinet-info-tablet.blade.php b/resources/views/livewire/admin/cms/cabinet-info-tablet.blade.php index 41e89afa..7f885a2f 100644 --- a/resources/views/livewire/admin/cms/cabinet-info-tablet.blade.php +++ b/resources/views/livewire/admin/cms/cabinet-info-tablet.blade.php @@ -172,7 +172,7 @@ {{ __('Kontakt') }}
    - + @error('contactPhone') {{ $message }} @enderror diff --git a/resources/views/livewire/admin/cms/display-version-editor.blade.php b/resources/views/livewire/admin/cms/display-version-editor.blade.php index 79c5bb45..ef32e6d1 100644 --- a/resources/views/livewire/admin/cms/display-version-editor.blade.php +++ b/resources/views/livewire/admin/cms/display-version-editor.blade.php @@ -320,7 +320,7 @@ @endif @if($slideShowContact) - + @endif
    diff --git a/resources/views/partner/invitation-expired.blade.php b/resources/views/partner/invitation-expired.blade.php index e7fc8c61..e5968b9a 100644 --- a/resources/views/partner/invitation-expired.blade.php +++ b/resources/views/partner/invitation-expired.blade.php @@ -30,7 +30,7 @@ {{ __('Bitte kontaktieren Sie Ihren Ansprechpartner, um eine neue Einladung zu erhalten.') }}

    - + {{ __('Support kontaktieren') }} diff --git a/tests/Feature/ContactDetailsTest.php b/tests/Feature/ContactDetailsTest.php new file mode 100644 index 00000000..4b2c7937 --- /dev/null +++ b/tests/Feature/ContactDetailsTest.php @@ -0,0 +1,48 @@ + 'legal', 'key' => 'impressum', 'type' => 'json', 'order' => 0, 'value' => [ + 'de' => ['content' => 'E-Mail: info@b2in.eu
    Telefon: +49 (0) 5221 9255055'], + 'en' => ['content' => 'Email: info@b2in.de, Phone: +49 (0) 5221 9255055'], + ]]); + $contact = CmsContent::create(['group' => 'global', 'key' => 'contact', 'type' => 'json', 'order' => 0, 'value' => [ + 'de' => ['whatsapp' => '+49 521 98620100', 'note' => 'Rufen Sie 0521 98620100 an'], + ]]); + + $this->seed(ContactDetailsSeeder::class); + $first = [$legal->refresh()->getTranslations('value'), $contact->refresh()->getTranslations('value')]; + $this->seed(ContactDetailsSeeder::class); + + expect([$legal->refresh()->getTranslations('value'), $contact->refresh()->getTranslations('value')])->toBe($first) + ->and($first[0]['de']['content'])->toBe('E-Mail: interior@b2in.eu
    Telefon: +49 521 986 20 100') + ->and($first[0]['en']['content'])->toBe('Email: interior@b2in.eu, Phone: +49 521 986 20 100') + ->and($first[1]['de']['whatsapp'])->toBe('+49 521 986 20 100') + // Fließtext mit der Nummer bleibt – ersetzt wird nur der vollständige Wert. + ->and($first[1]['de']['note'])->toBe('Rufen Sie 0521 98620100 an'); + + expect(whatsapp_link())->toBe('https://wa.me/4952198620100'); +}); + +it('shows the new contact details on the contact page and in the legal texts', function () { + $this->get('/contact')->assertSuccessful() + ->assertSee('interior@b2in.eu')->assertSee('+49 521 986 20 100') + ->assertDontSee('5221 9255055')->assertDontSee('info@b2in.eu'); + + $this->get('/impressum')->assertSuccessful()->assertSee('interior@b2in.eu')->assertSee('+49 521 986 20 100'); + $this->get('/privacy')->assertSuccessful()->assertDontSee('info@b2in.eu'); +}); + +it('leaves no old contact details in the default texts', function () { + foreach (['de', 'en'] as $locale) { + foreach (['b2in.php', 'b2in_legal.php'] as $file) { + $text = file_get_contents(lang_path("{$locale}/{$file}")); + expect($text)->not->toContain('5221 9255055')->not->toContain('info@b2in.'); + } + } +}); diff --git a/tests/Feature/LegalTextUpdateTest.php b/tests/Feature/LegalTextUpdateTest.php index 1048afe7..45bf2210 100644 --- a/tests/Feature/LegalTextUpdateTest.php +++ b/tests/Feature/LegalTextUpdateTest.php @@ -26,7 +26,7 @@ it('ships current legal references on every legal page', function (string $path, ->not->toContain('Lissabon') ->not->toContain('info@b2in.de'); })->with([ - 'impressum' => ['/impressum', ['§ 5 DDG', '§ 18 Abs. 2 MStV', 'Amtsgericht Bad Oeynhausen', 'Verbraucherstreitbeilegung', 'info@b2in.eu']], + 'impressum' => ['/impressum', ['§ 5 DDG', '§ 18 Abs. 2 MStV', 'Amtsgericht Bad Oeynhausen', 'Verbraucherstreitbeilegung', 'interior@b2in.eu', '+49 521 986 20 100']], 'terms' => ['/terms', ['Stand: 06.10.2026', 'Unter B2in Interior bieten wir']], 'privacy' => ['/privacy', ['§ 25 Abs. 2 Nr. 2 TDDDG', 'Google Analytics 4', '2. Hosting', 'Hetzner Online GmbH', 'Falkenstein (Sachsen)', 'höchstens 14 Tage gespeichert', 'united-domains GmbH', '9. Ihre Rechte als betroffene Person']], 'cookies' => ['/cookie-policy', ['§ 25 Abs. 1 TDDDG', 'Stand: 06.10.2026']], @@ -71,8 +71,8 @@ it('adds hosting and mail provider to a stored privacy policy only once', functi ->and(substr_count($content, 'toBe(substr_count($content, '')); }); -it('points the partner portal support link to info@b2in.eu', function () { +it('points the partner portal support link to interior@b2in.eu', function () { $view = file_get_contents(resource_path('views/partner/invitation-expired.blade.php')); - expect($view)->toContain('mailto:info@b2in.eu')->not->toContain('@b2in.de'); + expect($view)->toContain('mailto:interior@b2in.eu')->not->toContain('@b2in.de'); }); diff --git a/tests/Feature/WhatsappNumberSeederTest.php b/tests/Feature/WhatsappNumberSeederTest.php index 1cdb2a93..72b4c590 100644 --- a/tests/Feature/WhatsappNumberSeederTest.php +++ b/tests/Feature/WhatsappNumberSeederTest.php @@ -18,8 +18,8 @@ function contactWhatsapp(string $locale = 'de'): string it('creates the contact entry with the business number when it is missing', function () { $this->seed(WhatsappNumberSeeder::class); - expect(contactWhatsapp('de'))->toBe('+49 521 98620100') - ->and(contactWhatsapp('en'))->toBe('+49 521 98620100') + expect(contactWhatsapp('de'))->toBe('+49 521 986 20 100') + ->and(contactWhatsapp('en'))->toBe('+49 521 986 20 100') ->and(whatsapp_link())->toBe('https://wa.me/4952198620100'); }); @@ -34,8 +34,8 @@ it('replaces the placeholder number from the first setup', function () { $this->seed(WhatsappNumberSeeder::class); - expect(contactWhatsapp('de'))->toBe('+49 521 98620100') - ->and(contactWhatsapp('en'))->toBe('+49 521 98620100'); + expect(contactWhatsapp('de'))->toBe('+49 521 986 20 100') + ->and(contactWhatsapp('en'))->toBe('+49 521 986 20 100'); }); it('corrects the wrong number that was seeded on 23.09.', function () { @@ -49,8 +49,8 @@ it('corrects the wrong number that was seeded on 23.09.', function () { $this->seed(WhatsappNumberSeeder::class); - expect(contactWhatsapp('de'))->toBe('+49 521 98620100') - ->and(contactWhatsapp('en'))->toBe('+49 521 98620100'); + expect(contactWhatsapp('de'))->toBe('+49 521 986 20 100') + ->and(contactWhatsapp('en'))->toBe('+49 521 986 20 100'); }); it('keeps a number that was maintained in the admin', function () { @@ -68,7 +68,7 @@ it('keeps a number that was maintained in the admin', function () { expect(contactWhatsapp('de'))->toBe('+49 170 1234567') ->and($row->getTranslation('value', 'de')['phone'])->toBe('0521 1') - ->and(contactWhatsapp('en'))->toBe('+49 521 98620100'); + ->and(contactWhatsapp('en'))->toBe('+49 521 986 20 100'); }); it('is idempotent', function () { @@ -76,7 +76,7 @@ it('is idempotent', function () { $this->seed(WhatsappNumberSeeder::class); expect(CmsContent::query()->where('group', 'global')->where('key', 'contact')->count())->toBe(1) - ->and(contactWhatsapp('de'))->toBe('+49 521 98620100'); + ->and(contactWhatsapp('de'))->toBe('+49 521 986 20 100'); }); it('shows the business number on the site after seeding', function () {