diff --git a/resources/views/livewire/admin/press-releases/show.blade.php b/resources/views/livewire/admin/press-releases/show.blade.php index acbaeeb6..b01554be 100644 --- a/resources/views/livewire/admin/press-releases/show.blade.php +++ b/resources/views/livewire/admin/press-releases/show.blade.php @@ -73,7 +73,8 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends { $pr = PressRelease::withoutGlobalScopes() ->with([ - 'company:id,name,email,phone,slug', + 'company:id,name,email,phone,website,address,country_code,slug', + 'company.users:users.id,users.name,users.email', 'category.translations', 'user:id,name,email', 'images', @@ -161,13 +162,27 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends @endif

{{ __('Firma') }}: - {{ $pr->company?->name ?? '–' }} + @if ($pr->company) + + {{ $pr->company->name }} + + @else + – + @endif · {{ __('Kategorie') }}: {{ $categoryName }} · {{ __('Autor') }}: - {{ $pr->user?->name ?? '–' }} + @if ($pr->user) + + {{ $pr->user->name }} + + @else + – + @endif

@@ -321,17 +336,52 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
- {{ __('Zugeordnete Pressekontakte') }} + {{ __('Firma & Pressekontakte') }} @if ($pr->company) - {{ __('Firma') }} + {{ __('Firma öffnen') }} @endif
-

- {{ __('Kontakte, die dieser Pressemitteilung zugeordnet sind.') }} -

+ @if ($pr->company) +
+ + @if ($pr->company->address || $pr->company->country_code) +
{{ trim($pr->company->address.' '.$pr->company->country_code) }}
+ @endif +
+ @if ($pr->company->email) + + {{ $pr->company->email }} + + @endif + @if ($pr->company->phone) + {{ $pr->company->phone }} + @endif + @if ($pr->company->website) + + {{ $pr->company->website }} + + @endif +
+
+ @else +
+ {{ __('Dieser Pressemitteilung ist keine Firma zugeordnet.') }} +
+ @endif + +
+ {{ __('Zugeordnete Pressekontakte') }} +
@forelse ($contacts as $contact)
@@ -372,7 +422,14 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
{{ __('Autor') }}
- {{ $pr->user?->name ?? '–' }} + @if ($pr->user) + + {{ $pr->user->name }} + + @else + – + @endif
@@ -411,6 +468,32 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends @endif
+ @php + // Neben dem Autor können weitere User (Firmen-Mitglieder, z. B. + // per Magic-Link eingeladen) auf die PM zugreifen. + $companyUsers = $pr->company?->users ?? collect(); + @endphp + @if ($companyUsers->isNotEmpty()) +
+
+ {{ __('Benutzer mit Zugriff (über Firma)') }} +
+
+ @foreach ($companyUsers as $companyUser) + + + {{ $companyUser->name }} + + + {{ $companyUser->pivot->role === 'owner' ? __('Owner') : __('Member') }}@if ($companyUser->id === $pr->user_id) · {{ __('Autor') }}@endif + + + @endforeach +
+
+ @endif + @if ($pr->no_export)
diff --git a/tests/Feature/Admin/AdminPressReleaseShowTest.php b/tests/Feature/Admin/AdminPressReleaseShowTest.php index 1817a384..8bb8ad95 100644 --- a/tests/Feature/Admin/AdminPressReleaseShowTest.php +++ b/tests/Feature/Admin/AdminPressReleaseShowTest.php @@ -51,7 +51,12 @@ test('admin show zeigt zugeordnete Pressekontakte', function () { $admin = makeAdminForShow(); $this->actingAs($admin); - $company = Company::factory()->presseecho()->create(); + $company = Company::factory()->presseecho()->create([ + 'name' => 'Muster GmbH', + 'email' => 'firma@example.test', + 'phone' => '+49 30 1234567', + 'website' => 'https://muster.example.test', + ]); $contact = Contact::factory()->for($company)->create([ 'first_name' => 'Max', 'last_name' => 'Mustermann', @@ -64,6 +69,11 @@ test('admin show zeigt zugeordnete Pressekontakte', function () { $pr->contacts()->sync([$contact->id]); LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) + ->assertSee('Firma & Pressekontakte') + ->assertSee('Muster GmbH') + ->assertSee('firma@example.test') + ->assertSee('+49 30 1234567') + ->assertSee('https://muster.example.test') ->assertSee('Zugeordnete Pressekontakte') ->assertSee('Max Mustermann') ->assertSee('Pressesprecher') @@ -112,6 +122,30 @@ test('admin show zeigt Embargo-Info im Published-Workflow', function () { ->assertSee('Sperrfrist bis'); }); +test('admin show verlinkt Firma, Autor und Firmen-Benutzer', function () { + /** @var TestCase $this */ + $admin = makeAdminForShow(); + $this->actingAs($admin); + + $company = Company::factory()->presseecho()->create(['name' => 'Muster GmbH']); + $author = User::factory()->create(['name' => 'Anna Autorin']); + $coEditor = User::factory()->create(['name' => 'Carl Co-Editor']); + $company->users()->attach($author->id, ['role' => 'owner']); + $company->users()->attach($coEditor->id, ['role' => 'member']); + + $pr = PressRelease::factory()->create([ + 'company_id' => $company->id, + 'user_id' => $author->id, + ]); + + LivewireVolt::test('admin.press-releases.show', ['id' => $pr->id]) + ->assertSee('Benutzer mit Zugriff') + ->assertSee('Carl Co-Editor') + ->assertSeeHtml(route('admin.companies.show', $company->id)) + ->assertSeeHtml(route('admin.users.show', $author->id)) + ->assertSeeHtml(route('admin.users.show', $coEditor->id)); +}); + test('admin show zeigt Autor im Status-Verlauf-Grid', function () { /** @var TestCase $this */ $admin = makeAdminForShow();