[ 'label' => 'Ticket erstellt (an Kunde)', 'placeholders' => ['ticket_number', 'subject', 'customer_name', 'department_name', 'ticket_url', 'lookup_url', 'site_name'], 'defaultSubject' => 'Ihr Ticket #{ticket_number} wurde erstellt', 'defaultBody' => email_ticket_created_default_body(), ], 'new_reply' => [ 'label' => 'Neue Antwort (an Kunde)', 'placeholders' => ['ticket_number', 'subject', 'customer_name', 'message', 'ticket_url'], 'defaultSubject' => '[#{ticket_number}] {subject}', 'defaultBody' => email_new_reply_default_body(), ], 'new_ticket_department' => [ 'label' => 'Neues Ticket (an Abteilung)', 'placeholders' => ['ticket_number', 'subject', 'customer_name', 'customer_email', 'department_name', 'ticket_url'], 'defaultSubject' => 'Neues Ticket [#{ticket_number}] {subject}', 'defaultBody' => email_new_ticket_department_default_body(), ], 'ticket_overdue' => [ 'label' => 'Ticket überfällig (an Admins)', 'placeholders' => ['ticket_number', 'subject', 'department_name', 'ticket_url'], 'defaultSubject' => 'SLA überschritten: Ticket #{ticket_number}', 'defaultBody' => email_ticket_overdue_default_body(), ], ]; } if ($_SERVER['REQUEST_METHOD'] === 'GET') { $items = []; foreach (api_email_templates_definitions() as $key => $tpl) { $customSubject = get_setting("email_template_{$key}_subject"); $customBody = get_setting("email_template_{$key}_body"); $items[] = [ 'key' => $key, 'label' => $tpl['label'], 'placeholders' => $tpl['placeholders'], 'subject' => $customSubject ?: $tpl['defaultSubject'], 'body' => $customBody ?: $tpl['defaultBody'], 'isCustomized' => $customSubject !== null, ]; } api_json(['items' => $items]); } $body = api_request_body(); $action = $body['action'] ?? ''; $definitions = api_email_templates_definitions(); $key = (string) ($body['key'] ?? ''); if (!isset($definitions[$key])) { api_error(422, 'INVALID_TEMPLATE', 'Unbekannte Vorlage.'); } if ($action === 'save') { $subject = trim((string) ($body['subject'] ?? '')); $bodyText = sanitize_staff_html(trim((string) ($body['body'] ?? ''))); if ($subject === '') api_error(422, 'SUBJECT_REQUIRED', 'Bitte einen Betreff angeben.'); if (trim(strip_tags($bodyText)) === '') api_error(422, 'BODY_REQUIRED', 'Bitte einen Text angeben.'); set_setting("email_template_{$key}_subject", $subject); set_setting("email_template_{$key}_body", $bodyText); audit_log($staff['id'], "E-Mail-Vorlage geändert: {$definitions[$key]['label']} (Mobile App)"); api_json(['ok' => true]); } if ($action === 'reset') { set_setting("email_template_{$key}_subject", null); set_setting("email_template_{$key}_body", null); audit_log($staff['id'], "E-Mail-Vorlage zurückgesetzt: {$definitions[$key]['label']} (Mobile App)"); api_json(['ok' => true]); } api_error(422, 'INVALID_ACTION', 'Unbekannte Aktion.');