Upload via GUI (273 Dateien)

This commit is contained in:
2026-10-22 18:59:49 +00:00
parent d6f6636be2
commit bf64951f39
2 changed files with 43 additions and 2 deletions
+11 -2
View File
@@ -15,12 +15,19 @@ $ticket = api_find_ticket($pdo, $staff, $number);
// in includes/functions.php): wird von einem anderen Mitarbeiter (Web oder App) gerade
// frisch bearbeitet, wird das Ticket hier – anders als beim milderen Live-Chat-Lock
// weiter unten – gar nicht erst geladen, genau wie im Web-Backend (ticket_view.php).
// Administratoren dürfen ein von anderen bearbeitetes Ticket trotzdem lesen und bearbeiten; die Sperre des anderen bleibt dabei
// bestehen, bis sie aufgehoben wird (api/staff/v1/ticket_unlock.php). Alle anderen bekommen wie bisher einen Hinweis.
$ticketLockedBy = null;
if ($ticket['source'] !== 'chat') {
$lockedByName = ticket_locked_by_other($ticket, (int) $staff['id'], $pdo);
if ($lockedByName) {
api_error(409, 'TICKET_LOCKED', "Dieses Ticket wird gerade von \"$lockedByName\" bearbeitet und kann nicht gleichzeitig geöffnet werden.");
if ($staff['role'] !== 'admin') {
api_error(409, 'TICKET_LOCKED', "Dieses Ticket wird gerade von \"$lockedByName\" bearbeitet und kann nicht gleichzeitig geöffnet werden.");
}
$ticketLockedBy = $lockedByName;
} else {
ticket_acquire_lock((int) $ticket['id'], (int) $staff['id'], $pdo);
}
ticket_acquire_lock((int) $ticket['id'], (int) $staff['id'], $pdo);
}
$threadStmt = $pdo->prepare(
@@ -84,6 +91,8 @@ $summary['source'] = $ticket['source'];
$summary['firstResponseDueAt'] = $ticket['first_response_due_at'];
$summary['resolutionDueAt'] = $ticket['resolution_due_at'];
$summary['lockedByOtherName'] = $lockedByOtherName;
$summary['lockedBy'] = $ticketLockedBy; // Name, wenn ein Administrator ein fremd gesperrtes Ticket geöffnet hat
$summary['canUnlock'] = $staff['role'] === 'admin'; // darf die Sperre eines anderen aufheben
$summary['threads'] = $threads;
// Rechte für GENAU dieses Ticket: gelten pro Abteilung (Rolle des Mitarbeiters in der Abteilung des Tickets)
$summary['permissions'] = [];