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

@ -150,6 +150,34 @@ test('a widget submission stores topic and page url', function () {
});
});
test('an advertising enquiry from the ad slot stores the advertising topic', function () {
/** @var TestCase $this */
Mail::fake();
$this->post('https://presseecho.test/de/kontakt', [
'name' => 'Willi Werbung',
'email' => 'willi@example.test',
'message' => 'Ich interessiere mich für Werbeplätze auf Ihrem Portal.',
'topic' => 'advertising',
'page_url' => 'https://presseecho.test/de',
])->assertSessionHas('contact-status');
$message = ContactMessage::query()->sole();
expect($message->topic)->toBe(ContactMessageTopic::Advertising)
->and($message->portal)->toBe('presseecho');
Mail::assertSent(ContactRequestSubmitted::class, fn (ContactRequestSubmitted $mail) => $mail->topicLabel === 'Werbeanfrage');
});
test('the spoke pages offer the advertising topic in the contact launcher', function () {
/** @var TestCase $this */
$this->get('https://businessportal24.test/de/faq')
->assertSuccessful()
->assertSee('Werbung buchen')
->assertSee('Werbeplätze und Konditionen anfragen');
});
test('an unknown topic is rejected', function () {
/** @var TestCase $this */
Mail::fake();