presseportale/app/Http/Controllers/Web/TransparencyPageController.php
Kevin Adametz 375138679d web: Erstquelle-Absatz in der Veröffentlichungsmail, vierte Transparenzseite „kostenlos veröffentlichen" (Anhang 1: 1d, 2.4, E7)
Meldungen, die über die API eingegangen sind, bekommen in der
Veröffentlichungsmail einen Absatz zum Unterschied Erstquelle/Kopie —
technische Tatsache, ohne Preis und Angebot; direkt eingereichte nicht.

/pressemitteilung-kostenlos-veroeffentlichen beantwortet die Suche nach
„kostenlos" ehrlich: kein kostenloser Weg (E7), was kostenlose Portale
leisten, warum Links aus Presseportalen kaum tragen (auch bei uns
sponsored nofollow), warum Annahme ohne Gegenwert und Prüfung sich
ausschließen, wer am Ende zahlt. Die Liste kostenloser Portale ist in
config/transparency.php vorbereitet und bleibt leer, bis geprüfte
Einträge mit Prüfdatum vorliegen.

Unter-Navigation, Hilfe, Sitemaps, llms.txt und die Modelltabelle der
Kostenseite verlinken die neue Seite. Anhang 1 und Protokoll Teil 6.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 14:22:05 +00:00

55 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use App\Services\Web\PricingTransparencyData;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
/**
* Transparenzseiten (Roadmap 2.4): vier Seiten mit unterschiedlicher
* Suchintention, alle mit denselben Zahlen aus PricingTransparencyData.
*/
class TransparencyPageController extends Controller
{
public function cost(Request $request, PricingTransparencyData $data): View
{
return view('web.was-kostet-eine-pressemitteilung', $this->pageData($request, $data));
}
public function noSubscription(Request $request, PricingTransparencyData $data): View
{
return view('web.pressemitteilung-veroeffentlichen-ohne-abo', $this->pageData($request, $data));
}
public function changeOrDelete(Request $request, PricingTransparencyData $data): View
{
return view('web.pressemitteilung-loeschen-oder-aendern-lassen', $this->pageData($request, $data));
}
public function free(Request $request, PricingTransparencyData $data): View
{
return view('web.pressemitteilung-kostenlos-veroeffentlichen', $this->pageData($request, $data));
}
/**
* Markenname aus dem Host (wie /melden) — der Theme-Provider ist in
* Tests noch nicht auf den Request-Host gelaufen.
*
* @return array<string, mixed>
*/
private function pageData(Request $request, PricingTransparencyData $data): array
{
$host = $request->getHost();
$brandKey = str_contains($host, 'pressekonto')
? 'pressekonto'
: (str_contains($host, 'presseecho') ? 'presseecho' : 'businessportal24');
$brand = (array) config('domains.domains.'.$brandKey.'.brand', []);
return [
...$data->build(),
'brandLabel' => ($brand['name'] ?? '').($brand['accent'] ?? ''),
];
}
}