Interior-Feinschliff: Hero-Slideshow, Lektorat, Rechtstexte, Aufräumen und Korrekturen 08.10.
Startseite und Heroes - Hero-Slideshow (11 Motive inkl. Febrü) mit Infokarte, Laufzeit-Linie, größeren Klickflächen, Goldrahmen und mobiler Karte unter dem Bild; Zeile über der Überschrift, neue Vertrauenspunkte - Hero-Stil auf Marken, Über uns und Kontakt übertragen, Breadcrumb entfernt - Gründer-Leiste, Vision-Box auf Ocker, Showroom-Display in Box mit „Größer ansehen“/Vollbild - Akzentfarbe #a8741f, größere Serif-Überschriften in der Interior-Welt - Marken: Bildpause mit Zitat; Vereine aktualisiert und verlinkt Inhalte - Lektorat aller angezeigten Texte, /about-Korrekturen, Rechtstexte (DDG, TDDDG, Hosting Hetzner) - Ablauf Maßanfertigung überall einheitlich, Magazin-Beitrag neu, alte Beiträge offline, deutsches Datum/Lesezeit, FAQ Projektausstattung, Otterpohl - Referenzen-Seite per CMS-Schalter ausblendbar CMS und Technik - Tote Sektionen, Felder, Seiten und Komponenten entfernt und archiviert (dev/2026-08-28/archiv-*) - Entwurf /entwurf, Farb-Schalter und /welcome entfernt; Test-Routen nur noch lokal - Seitenbaum-Beschreibungen geprüft, fehlende CMS-Felder ergänzt, Markenliste aus „Kernmarken“ - Admin-Bildvorschauen repariert, verwendete Bilder in die Mediathek übernommen - Seeder für das Deployment siehe dev/2026-08-28/entwicklungsplan.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4b07bbdcae
commit
fcb10be120
406 changed files with 22549 additions and 3798 deletions
78
tests/Feature/LegalTextUpdateTest.php
Normal file
78
tests/Feature/LegalTextUpdateTest.php
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Database\Seeders\LegalTextUpdateSeeder;
|
||||
use FluxCms\Core\Models\CmsContent;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
|
||||
uses(RefreshDatabase::class);
|
||||
|
||||
/**
|
||||
* Rechtstexte auf aktuellem Stand (06.10.2026): DDG, MStV, TDDDG, GA4, Leistungsbeschreibung.
|
||||
*/
|
||||
it('ships current legal references on every legal page', function (string $path, array $expected) {
|
||||
$html = $this->get($path)->assertSuccessful()->getContent();
|
||||
|
||||
foreach ($expected as $text) {
|
||||
expect($html)->toContain($text);
|
||||
}
|
||||
|
||||
expect($html)->not->toContain('TMG')
|
||||
->not->toContain('RStV')
|
||||
->not->toContain('TTDSG')
|
||||
->not->toContain('IP-Anonymisierung')
|
||||
->not->toContain('(WICHTIG!)')
|
||||
->not->toContain('Lissabon')
|
||||
->not->toContain('info@b2in.de');
|
||||
})->with([
|
||||
'impressum' => ['/impressum', ['§ 5 DDG', '§ 18 Abs. 2 MStV', 'Amtsgericht Bad Oeynhausen', 'Verbraucherstreitbeilegung', 'info@b2in.eu']],
|
||||
'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']],
|
||||
]);
|
||||
|
||||
it('updates legal texts stored in the CMS and keeps the rest', function () {
|
||||
$row = CmsContent::create(['group' => 'legal', 'key' => 'impressum', 'type' => 'json', 'order' => 0, 'value' => [
|
||||
'de' => ['title' => 'Impressum', 'subtitle' => 'Angaben gemäß § 5 TMG', 'content' => '<p>Eigener Absatz. Registergericht: Amtsg. Bad Oeynhausen</p>'],
|
||||
]]);
|
||||
|
||||
$this->seed(LegalTextUpdateSeeder::class);
|
||||
$this->seed(LegalTextUpdateSeeder::class);
|
||||
|
||||
expect($row->refresh()->getTranslation('value', 'de'))->toBe([
|
||||
'title' => 'Impressum',
|
||||
'subtitle' => 'Angaben gemäß § 5 DDG',
|
||||
'content' => '<p>Eigener Absatz. Registergericht: Amtsgericht Bad Oeynhausen</p>',
|
||||
]);
|
||||
});
|
||||
|
||||
it('adds hosting and mail provider to a stored privacy policy only once', function () {
|
||||
$row = CmsContent::create(['group' => 'legal', 'key' => 'privacy', 'type' => 'json', 'order' => 0, 'value' => [
|
||||
'de' => ['content' => '<div>
|
||||
<h2 class="text-lg font-semibold text-foreground mb-2">2. Datenerfassung auf unserer Website (Server-Log-Dateien)</h2>
|
||||
<p>Logs.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="text-lg font-semibold text-foreground mb-2">3. Kontaktformular und E-Mail-Kontakt</h2>
|
||||
<p>Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.</p>
|
||||
</div>'],
|
||||
]]);
|
||||
|
||||
$this->seed(LegalTextUpdateSeeder::class);
|
||||
$this->seed(LegalTextUpdateSeeder::class);
|
||||
|
||||
$content = $row->refresh()->getTranslation('value', 'de')['content'];
|
||||
|
||||
expect(substr_count($content, '2. Hosting'))->toBe(1)
|
||||
->and(substr_count($content, 'united-domains GmbH'))->toBe(1)
|
||||
->and(substr_count($content, 'Falkenstein'))->toBe(1)
|
||||
->and($content)->toContain('3. Datenerfassung')->toContain('4. Kontaktformular')
|
||||
->and(substr_count($content, '<div'))->toBe(substr_count($content, '</div>'));
|
||||
});
|
||||
|
||||
it('points the partner portal support link to info@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');
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue