web: Newsroom-Seite mit eigenem Kasten für den Verwaltungszugang
Statt einer grauen Textzeile in der Profilbox derselbe Kasten wie unter jeder Meldung (maskierte Adresse, Knopf „Anmeldelink anfordern“), jetzt als gemeinsame Komponente. Mobil direkt unter dem Profil, am Desktop oben in der Seitenleiste; der doppelte Kasten „Eigenen Newsroom starten“ entfällt. Roadmap 6.17: 7 Firmen öffneten die Verwaltungsseite, eine forderte an. Changelog: Verbessert Public: Auf jeder Newsroom-Seite führt ein eigener Kasten zum kostenlosen Verwaltungszugang – mit der Adresse, an die der Anmeldelink geht. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
a157d7a2a1
commit
2c332052ce
6 changed files with 109 additions and 58 deletions
|
|
@ -161,6 +161,54 @@ class Company extends Model
|
|||
return $this->gone_at !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Öffentliche Newsroom-Seiten dieser Firma, je Portal — nur dort, wo sie
|
||||
* schon erscheint: Der Newsroom ist öffentlich ab der ersten sichtbaren
|
||||
* Meldung in dieser Sprache (Roadmap 1b.1). Deutsch hat Vorrang, sonst
|
||||
* Englisch. Für die Verknüpfung „Firma ↔ Newsroom“ im Kunden- und
|
||||
* Adminbereich.
|
||||
*
|
||||
* @return list<array{portal: Portal, label: string, url: string}>
|
||||
*/
|
||||
public function publicNewsroomLinks(): array
|
||||
{
|
||||
if (! $this->slug || ! $this->is_active || $this->isGone()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$portals = $this->portal === Portal::Both ? [Portal::Presseecho, Portal::Businessportal24] : [$this->portal];
|
||||
$links = [];
|
||||
|
||||
foreach ($portals as $portal) {
|
||||
$languages = PressRelease::query()
|
||||
->withoutGlobalScope(PortalScope::class)
|
||||
->where('company_id', $this->getKey())
|
||||
->whereIn('portal', [$portal->value, Portal::Both->value])
|
||||
->visibleInArchive()
|
||||
->whereIn('language', ['de', 'en'])
|
||||
->distinct()
|
||||
->pluck('language')
|
||||
->all();
|
||||
|
||||
if ($languages === []) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$links[] = [
|
||||
'portal' => $portal,
|
||||
'label' => $portal->label(),
|
||||
'url' => sprintf(
|
||||
'%s/%s/newsroom/%s',
|
||||
rtrim((string) ($portal === Portal::Presseecho ? config('domains.domain_presseecho_url') : config('domains.domain_businessportal_url')), '/'),
|
||||
in_array('de', $languages, true) ? 'de' : 'en',
|
||||
$this->slug,
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
return $links;
|
||||
}
|
||||
|
||||
/**
|
||||
* Trägt eine fremde, lebende Firma auf einem ANDEREN Portal diesen Slug?
|
||||
* Dann darf diese Firma nicht `both` werden: Die öffentliche Auflösung
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue