Upload via GUI (273 Dateien)

This commit is contained in:
2026-10-22 18:59:42 +00:00
parent 7617fe519a
commit 958f149e5e
+17 -1
View File
@@ -52,9 +52,14 @@ if (!empty($ticket['merged_into'])) {
// TICKET_LOCK_TIMEOUT_MINUTES nicht mehr aufgefrischt wurde (z.B. weil der Tab einfach
// geschlossen wurde).
$lockedByOther = null;
$adminLockedBy = null;
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$lockedByName = ticket_locked_by_other($ticket, (int) $staff['id'], $pdo);
if ($lockedByName) {
if ($lockedByName && $staff['role'] === 'admin') {
// Administratoren dürfen auch ein von anderen bearbeitetes Ticket lesen und bearbeiten; die Sperre des anderen bleibt bestehen
// (siehe Hinweis oben auf der Seite, dort lässt sie sich aufheben)
$adminLockedBy = $lockedByName;
} elseif ($lockedByName) {
flash('error', "Dieses Ticket wird gerade von \"{$lockedByName}\" bearbeitet und kann nicht gleichzeitig geöffnet werden. Bitte warten Sie, bis die Bearbeitung abgeschlossen ist, oder bitten Sie {$lockedByName}, das Ticket freizugeben.");
flash_locked_ticket($number, $lockedByName);
redirect('/staff/tickets.php');
@@ -714,6 +719,17 @@ $sourceLabel = $sourceLabels[$ticket['source']] ?? $ticket['source'];
<?php /* Dieser Block bleibt als Fallback für POST-Requests, wird aber bei GET nicht mehr erreicht */ ?>
<?php endif; ?>
<?php if ($adminLockedBy): ?>
<div class="flash warning" style="display:flex;align-items:center;gap:10px;flex-wrap:wrap">
🔒 Dieses Ticket wird gerade von <strong>&bdquo;<?= e($adminLockedBy) ?>&ldquo;</strong> bearbeitet. Als Administrator kannst du es trotzdem lesen und bearbeiten.
<form method="post" style="margin:0">
<?= csrf_field() ?>
<input type="hidden" name="action" value="admin_force_unlock">
<input type="hidden" name="locked_by_name" value="<?= e($adminLockedBy) ?>">
<button type="submit" class="btn btn-sm" style="padding:4px 10px;font-size:.78rem">Sperre aufheben und übernehmen</button>
</form>
</div>
<?php endif; ?>
<?php if ($mergedIntoBanner): ?>
<div style="background:#fef3c7;border:1px solid #f59e0b;border-radius:8px;padding:12px 16px;margin-bottom:16px;display:flex;align-items:center;gap:10px">
<span style="font-size:1.1rem">⚠️</span>