Upload via GUI (273 Dateien)
This commit is contained in:
@@ -303,6 +303,10 @@ Nach der Installation müsst ihr nichts tun, Option A läuft von selbst.
|
||||
|
||||
Jeder Mitarbeiter stellt seinen Status ein (Verfügbar, Beschäftigt, Pause, Offline), im Browser unter **Verfügbarkeit & Schichten** und in der App unter Verwaltung → Mein Status. **Wer 30 Minuten lang nichts tut, geht automatisch auf Offline** und bekommt seinen vorherigen Status zurück, sobald er wieder aktiv ist. Als aktiv zählen echte Bedienung (Seitenaufrufe, Klicks und Tipps, Aktionen und Berührungen in der App); Abfragen im Hintergrund halten niemanden online. Ein von Hand gesetzter Status wird nicht von selbst zurückgesetzt. Die Zeit stellt ein Admin unter Verfügbarkeit & Schichten ein (0 = aus). Admins können dort (und in der App durch Antippen eines Teammitglieds) den Status jedes Mitarbeiters ändern; das steht im Aktivitätsprotokoll. Der Live-Chat auf der Kundenseite zeigt automatisch Offline-Mitarbeiter nicht mehr als erreichbar.
|
||||
|
||||
## Ticket-Sperre
|
||||
|
||||
Wer ein Ticket öffnet, sperrt es für andere (5 Minuten, bei Inaktivität läuft die Sperre ab), damit nicht zwei Personen gleichzeitig daran arbeiten. Normale Mitarbeiter bekommen bei einem gesperrten Ticket einen Hinweis mit dem Namen des Bearbeiters. **Administratoren** können ein gesperrtes Ticket trotzdem **lesen und bearbeiten** (Antworten, Notizen, Status) und sehen oben den Hinweis „wird gerade von … bearbeitet“ mit dem Knopf **„Sperre aufheben und übernehmen“**. Das gibt es im Browser, im Windows-Programm und in der Android-App; das Aufheben steht im Ticket-Verlauf. Jeder darf seine eigene Sperre freigeben. Ein Live-Chat sperrt Administratoren nie aus.
|
||||
|
||||
## SLA-Pläne
|
||||
|
||||
Ein SLA-Plan legt fest, wie schnell reagiert und gelöst werden soll. Unter Adminportal → **SLA-Pläne** legt ihr Pläne mit Reaktions- und Lösungszeit an und weist sie Abteilungen oder Hilfethemen zu.
|
||||
|
||||
@@ -296,7 +296,7 @@ function api_add_ticket_message(PDO $pdo, array $staff, array $ticket, string $t
|
||||
// einen Chat, der gerade frisch von einem anderen Mitarbeiter (egal ob Web oder
|
||||
// App) "besessen" wird, wird abgelehnt – interne Notizen bleiben immer erlaubt,
|
||||
// die sind ja ohnehin nur für Mitarbeiter sichtbar und kein Konflikt für den Kunden.
|
||||
if (!$isNote && $ticket['source'] === 'chat') {
|
||||
if (!$isNote && $ticket['source'] === 'chat' && $staff['role'] !== 'admin') {
|
||||
$lockedByOtherName = live_chat_locked_by_other($ticket, (int) $staff['id'], $pdo);
|
||||
if ($lockedByOtherName) {
|
||||
api_error(409, 'CHAT_LOCKED', "Dieser Chat wird gerade von \"$lockedByOtherName\" bearbeitet. Sie können nur zuschauen.");
|
||||
@@ -307,7 +307,8 @@ function api_add_ticket_message(PDO $pdo, array $staff, array $ticket, string $t
|
||||
// Anfrage erfolgreich gemacht hat, besitzt die Sperre bereits; das hier fängt nur
|
||||
// den seltenen Fall ab, dass sie zwischen Laden und Absenden abgelaufen ist bzw. ein
|
||||
// anderer Mitarbeiter sie in der Zwischenzeit übernommen hat).
|
||||
if ($ticket['source'] !== 'chat') {
|
||||
// (Administratoren dürfen auch bei fremder Sperre antworten.)
|
||||
if ($ticket['source'] !== 'chat' && $staff['role'] !== 'admin') {
|
||||
$lockedByOtherName = ticket_locked_by_other($ticket, (int) $staff['id'], $pdo);
|
||||
if ($lockedByOtherName) {
|
||||
api_error(409, 'TICKET_LOCKED', "Dieses Ticket wird gerade von \"$lockedByOtherName\" bearbeitet.");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
if (defined('DESKHUB_VERSION')) return;
|
||||
|
||||
define('DESKHUB_VERSION', '1.0.10');
|
||||
define('DESKHUB_VERSION', '1.0.12');
|
||||
define('DESKHUB_RELEASE_URL', 'https://git.viper.ipv64.net/M_Viper/deskhub/releases');
|
||||
|
||||
// Kein eingebautes Zugangstoken: Das Update liest die öffentlichen Releases. Ist das Repository privat, kann ein Token
|
||||
|
||||
Reference in New Issue
Block a user