{{ __('users.title') }}

{{ __('users.subtitle') }}

{{ $used }} / {{ $limit }}

{{ __('users.seats_used') }}

{{ __('users.seats_note') }}

{{-- Anlegen. Ausdruecklich NICHT einladen: hier entsteht nur die Zeile, die Einladung verschickt der Knopf in der Tabelle. Ein Inhaber soll sein Team vorbereiten koennen, ohne dass jemand eine Mail bekommt. --}}
@error('inviteEmail')

{{ $message }}

@enderror
{{-- Der ehrliche Satz zu „Nur Lesen": die Rolle nimmt den eigenen Speicherplatz weg, hebt aber eine Freigabe nicht auf. --}}

{{ __('users.role_readonly_means') }}

{{ __('users.add') }}
{{-- Seats --}}
@foreach ($seats as $seat) {{-- Was der Inhaber WILL (`status`) und was in der Nextcloud WIRKLICH ist (`nc_state`) stehen in einer Zelle, und der wahre Zustand geht vor: solange der Auftrag laeuft oder gescheitert ist, waere „Eingeladen" eine Behauptung ueber etwas, das die Warteschlange noch gar nicht erledigt hat. Ohne diese Spalte drueckt der Inhaber wieder und wieder, weil nichts sichtbar geschieht. --}} @endforeach
{{ __('users.col_person') }} {{ __('users.role') }} {{ __('users.col_status') }} {{ __('users.col_actions') }}

{{ $seat->name ?: $seat->email }}

@if ($seat->name)

{{ $seat->email }}

@endif
@if ($seat->role === 'owner') {{ __('users.role_owner') }} @else @endif @if ($seat->status === 'revoked') {{-- Entzogen geht allem anderen vor und ist endgueltig. Ein „wird eingerichtet …" oder ein „Nochmal versuchen" an dieser Zeile las sich wie ein Weg zurueck — den es nicht gibt und nicht geben soll. --}} {{ __('users.status_revoked') }}

{{ __('users.revoked_is_final') }}

@elseif ($seat->nc_state === \App\Models\Seat::STATE_NONE) {{ __('users.state_none') }} @elseif ($seat->nc_state === \App\Models\Seat::STATE_PENDING) {{ __('users.state_pending') }} @elseif ($seat->nc_state === \App\Models\Seat::STATE_FAILED) {{ __('users.state_failed') }} {{-- Der Grund im Klartext, nicht der Code: 'guest_failed' sagt einem Inhaber nichts, und ein Fehlschlag ohne Grund ist eine Sackgasse. --}}

{{ __('users.error_'.($seat->nc_error ?: 'unexpected')) }}

@else @php $sb = ['active' => 'active', 'invited' => 'provisioning', 'revoked' => 'suspended'][$seat->status] ?? 'info'; @endphp {{ __('users.status_'.$seat->status) }} @endif
@if ($seat->status === 'revoked') {{-- Kein Knopf. Kein Wiedereinsetzen: der richtige Weg zurueck ist ein NEUER Sitz, und der geht durch die Platzpruefung. Gesagt statt leer gelassen, wie bei der Inhaber-Zeile — eine leere Zelle liesse jemanden nach einem Knopf suchen, der absichtlich fehlt. --}} {{ __('users.revoked_final') }} @else {{-- Einladen ist der zweite Vorgang und hat deshalb seinen eigenen Knopf. Er steht nur an einer Zeile, die noch nichts in der Nextcloud hat; ist der Auftrag unterwegs, gibt es nichts zu druecken, und bei einem Fehlschlag steht „Nochmal versuchen" schon in der Zustandsspalte. Nie an der Inhaber-Zeile: dieses Konto legt die Bereitstellung an, nicht das Panel. --}} @if ($seat->role !== 'owner' && $seat->nc_state === \App\Models\Seat::STATE_NONE) @elseif ($seat->role !== 'owner' && $seat->nc_state === \App\Models\Seat::STATE_SYNCED && $seat->status === 'invited') @endif {{-- Rename is offered on every row, the owner included: a row you can do nothing to reads as a broken table, not as a protected one. It opens a modal, never the row itself — see R20. --}} @if ($seat->role === 'owner') {{-- Said, not hidden. The owner keeps their own access; an empty cell would leave somebody hunting for a button that is deliberately absent. --}} {{ __('users.owner_protected') }} @else {{-- Pause first, remove second. Somebody leaving needs their access stopped today; deleting the seat also throws away who held it, which is the half an audit asks about. --}} @endif @endif