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>
55 lines
1.9 KiB
PHP
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'] ?? ''),
|
|
];
|
|
}
|
|
}
|