main • app/views/repos/collaborators.php
<?php require __DIR__ . '/../layout/header.php'; ?>
<div class="d-flex justify-content-between align-items-center mb-3">
<h4 class="m-0"><?= e($repo['owner_username']) ?>/<?= e($repo['name']) ?> • Collaborators</h4>
<a class="btn btn-outline-dark btn-sm" href="/r/<?= (int)$repo['id'] ?>">Back</a>
</div>
<div class="card p-3 mb-3">
<h5 class="mb-3">Add collaborator</h5>
<form method="post" action="/r/<?= (int)$repo['id'] ?>/collaborators">
<input type="hidden" name="_csrf" value="<?= e(csrf_token()) ?>">
<div class="row g-2 align-items-end">
<div class="col-md-6">
<label class="form-label">Username</label>
<input class="form-control" name="username" placeholder="someone" required>
</div>
<div class="col-md-3">
<label class="form-label">Role</label>
<select class="form-select" name="role">
<option value="read">Read</option>
<option value="write">Write</option>
</select>
</div>
<div class="col-md-3">
<button class="btn btn-dark w-100">Save</button>
</div>
</div>
</form>
</div>
<div class="card p-2">
<div class="list-group list-group-flush">
<?php if (!$collabs): ?>
<div class="p-3 text-muted">No collaborators yet.</div>
<?php endif; ?>
<?php foreach ($collabs as $c): ?>
<div class="list-group-item d-flex justify-content-between align-items-center">
<div>
<div class="fw-bold"><?= e($c['username']) ?></div>
<div class="small text-muted"><?= e($c['email']) ?></div>
</div>
<div class="d-flex gap-2 align-items-center">
<span class="badge bg-secondary"><?= e($c['role']) ?></span>
<form method="post" action="/r/<?= (int)$repo['id'] ?>/collaborators/<?= (int)$c['id'] ?>/delete" onsubmit="return confirm('Remove collaborator?');">
<input type="hidden" name="_csrf" value="<?= e(csrf_token()) ?>">
<button class="btn btn-outline-danger btn-sm">Remove</button>
</form>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
<?php require __DIR__ . '/../layout/footer.php'; ?>