Werbeplaetze reaktiviert: Eigenwerbe-Slots oeffnen das Kontakt-Widget

Die im Spoke-Frontend-Audit entfernten Anzeige-Flaechen (focus-ad,
feed-ad, Inline-Ad) kehren als dezente Eigenwerbung zurueck:

- neue Komponente x-web.ad-slot im frueheren "ANZEIGE"-Stil mit Hinweis
  "Hier koennte Ihre Werbung stehen" (DE/EN)
- eingebaut an den drei frueheren Stellen: Hero-Sidebar der Startseiten,
  Feed nach der dritten Meldung, PM-Detailseite nach der
  Unternehmensbeschreibung (nicht in der privaten Vorschau)
- Klick oeffnet das schwebende Kontakt-Widget mit vorgewaehltem neuen
  Thema "Werbung buchen" (ContactMessageTopic::Advertising); Anfragen
  landen wie gewohnt in der Admin-Queue "Kontakt"

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin Adametz 2026-07-10 16:53:02 +00:00
parent dc2a3443c1
commit 744e87d008
12 changed files with 174 additions and 2 deletions

View file

@ -50,6 +50,39 @@ test('presseecho homepage renders the editorial shell with real data', function
->assertSeeText('Heute im Fokus');
});
test('presseecho homepage shows the ad slot self-promotion in the hero sidebar', function () {
/** @var TestCase $this */
$category = Category::factory()->create([
'portal' => Portal::Presseecho,
]);
$category->translations()->create([
'locale' => 'de',
'name' => 'Energie & Klima',
'slug' => 'energie-klima',
]);
$company = Company::factory()->presseecho()->create();
PressRelease::factory()
->published()
->forPortal(Portal::Presseecho)
->for($category)
->for($company)
->create([
'title' => 'Ad-Slot Hero Meldung',
'slug' => 'ad-slot-hero-meldung',
'published_at' => now()->subHour(),
]);
$this->get('https://presseecho.test/de')
->assertSuccessful()
->assertSeeText('Hier könnte Ihre Werbung stehen')
->assertSeeText('Jetzt Werbeplatz anfragen')
// Klick öffnet das Kontakt-Widget mit vorgewähltem Thema „Werbeanfrage".
->assertSee('open-contact-modal', false)
->assertSee("{ topic: 'advertising' }", false);
});
test('presseecho homepage hides data sections and shows the empty feed state without content', function () {
/** @var TestCase $this */
$this->get('https://presseecho.test/de')