Quelltext des aktuellen Standes
<?php $this->layout('layouts/admin', [
'page_title' => 'Berechtigungen: ' . $topic['name'],
'current_admin_page' => 'permissions',
'breadcrumbs' => [
['label' => 'Berechtigungen', 'url' => '/admin/permissions'],
['label' => $topic['name']],
],
]); ?>
<?php
$zuweisungen = 0;
foreach ($by_user as $eintrag) { $zuweisungen += count($eintrag['roles']); }
?>
<div class="kpi-row">
<div class="kpi-col">
<div class="small-box bg-info">
<div class="inner">
<h3><?= count($by_user) ?></h3>
<p><?= $this->te('Berechtigte') ?></p>
</div>
<div class="icon"><i class="fas fa-users"></i></div>
</div>
</div>
<div class="kpi-col">
<div class="small-box bg-primary">
<div class="inner">
<h3><?= $zuweisungen ?></h3>
<p><?= $this->te('Zuweisungen') ?></p>
</div>
<div class="icon"><i class="fas fa-key"></i></div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title"><?= $this->te('Benutzer für dieses Themengebiet berechtigen') ?></h3>
</div>
<div class="card-body">
<form method="POST" action="/admin/permissions/grant" class="filter-card-body">
<input type="hidden" name="_csrf" value="<?= $this->csrf() ?>">
<input type="hidden" name="topic_id" value="<?= (int)$topic['id'] ?>">
<input type="hidden" name="return_to" value="/admin/permissions/topic/<?= (int)$topic['id'] ?>">
<div class="form-group">
<label for="pt-user"><?= $this->te('Benutzer') ?> <span class="text-danger">*</span></label>
<select name="user_id" id="pt-user" class="form-control form-control-sm" required>
<option value=""><?= $this->te('Bitte wählen') ?></option>
<?php foreach ($users as $u): ?>
<option value="<?= (int)$u['id'] ?>"><?= $this->e($u['display_name'] ?: $u['email']) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="form-group">
<label for="pt-role"><?= $this->te('Rolle') ?> <span class="text-danger">*</span></label>
<select name="role_id" id="pt-role" class="form-control form-control-sm" required>
<option value=""><?= $this->te('Bitte wählen') ?></option>
<?php foreach ($roles as $r): ?>
<option value="<?= (int)$r['id'] ?>"><?= $this->e($r['name']) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="form-group">
<label> </label>
<button type="submit" class="btn btn-primary btn-sm">
<i class="fas fa-plus"></i> <?= $this->te('Zuweisen') ?>
</button>
</div>
</form>
</div>
</div>
<?php if (!empty($by_user)): ?>
<p class="form-hint">
<?= $this->te('Global vergebene Rollen wirken auch hier und sind mitaufgeführt.') ?>
</p>
<div class="table-wrapper">
<table class="data-table">
<thead>
<tr>
<th scope="col"><?= $this->te('Benutzer') ?></th>
<th scope="col"><?= $this->te('Status') ?></th>
<th scope="col"><?= $this->te('Rollen') ?></th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<?php foreach ($by_user as $eintrag): ?>
<tr>
<td>
<a href="/admin/permissions/user/<?= (int)$eintrag['user']['id'] ?>" class="table-link">
<?= $this->e($eintrag['user']['display_name'] ?: $eintrag['user']['email']) ?>
</a>
<div style="font-size:.76rem;color:var(--gray-500);"><?= $this->e($eintrag['user']['email']) ?></div>
</td>
<td>
<?php if (!empty($eintrag['user']['is_active'])): ?>
<span class="status-pill status-pill--success">
<span class="status-dot status-dot--success"></span> <?= $this->te('aktiv') ?>
</span>
<?php else: ?>
<span class="status-pill status-pill--neutral"><?= $this->te('deaktiviert') ?></span>
<?php endif; ?>
</td>
<td>
<?php foreach ($eintrag['roles'] as $rolle): ?>
<span class="badge badge-info" title="<?= $this->e($rolle['description'] ?? '') ?>">
<?= $this->e($rolle['name']) ?>
</span>
<?php if (($rolle['scope_type'] ?? '') === 'global'): ?>
<span class="badge badge-warning" title="<?= $this->te('Gilt für alle Themengebiete') ?>">
<i class="fas fa-globe"></i> <?= $this->te('Global') ?>
</span>
<?php endif; ?>
<?php endforeach; ?>
</td>
<td style="text-align:right;white-space:nowrap;">
<?php foreach ($eintrag['roles'] as $rolle): ?>
<form method="POST" action="/admin/permissions/revoke" style="display:inline;"
onsubmit="return confirm('<?= $this->te('Diese Zuweisung wirklich entziehen?') ?>');">
<input type="hidden" name="_csrf" value="<?= $this->csrf() ?>">
<input type="hidden" name="assignment_id" value="<?= (int)$rolle['assignment_id'] ?>">
<input type="hidden" name="return_to" value="/admin/permissions/topic/<?= (int)$topic['id'] ?>">
<button type="submit" class="btn btn-danger btn-sm"
title="<?= $this->te('Rolle {rolle} entziehen', ['rolle' => $this->e($rolle['name'])]) ?>">
<i class="fas fa-trash"></i>
</button>
</form>
<?php endforeach; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php else: ?>
<div class="empty-state">
<i class="fas fa-key"></i>
<p><?= $this->te('Für dieses Themengebiet ist noch niemand berechtigt.') ?></p>
</div>
<?php endif; ?>