OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

topic.php

6 KB
<?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>&nbsp;</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; ?>