query('SELECT * FROM departments ORDER BY name')->fetchAll(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { verify_csrf(); $action = $_POST['action'] ?? ''; if ($action === 'create' || $action === 'update') { $title = trim($_POST['title'] ?? ''); $body = sanitize_staff_html(trim($_POST['body'] ?? '')); $deptId = $_POST['department_id'] !== '' ? (int) $_POST['department_id'] : null; if ($title === '') $errors[] = 'Bitte einen Titel angeben.'; if (trim(strip_tags($body)) === '') $errors[] = 'Bitte einen Text angeben.'; if (!$errors) { if ($action === 'create') { $pdo->prepare('INSERT INTO canned_responses (title, body, department_id, created_at) VALUES (?,?,?,?)') ->execute([$title, $body, $deptId, db_now()]); audit_log($admin['id'], "Textbaustein erstellt: {$title}"); flash('success', 'Textbaustein erstellt.'); } else { $id = (int) $_POST['id']; $pdo->prepare('UPDATE canned_responses SET title=?, body=?, department_id=? WHERE id=?') ->execute([$title, $body, $deptId, $id]); audit_log($admin['id'], "Textbaustein aktualisiert: {$title}"); flash('success', 'Textbaustein aktualisiert.'); } redirect('/staff/canned_responses.php'); } } if ($action === 'delete') { $id = (int) $_POST['id']; $pdo->prepare('DELETE FROM canned_responses WHERE id = ?')->execute([$id]); audit_log($admin['id'], "Textbaustein gelöscht: #{$id}"); flash('success', 'Textbaustein gelöscht.'); redirect('/staff/canned_responses.php'); } } $responses = $pdo->query( 'SELECT cr.*, d.name AS department_name FROM canned_responses cr LEFT JOIN departments d ON d.id = cr.department_id ORDER BY cr.title' )->fetchAll(); $editId = $_GET['edit'] ?? null; $editResponse = null; if ($editId) { $stmt = $pdo->prepare('SELECT * FROM canned_responses WHERE id = ?'); $stmt->execute([$editId]); $editResponse = $stmt->fetch(); } $showForm = isset($_GET['new']) || $editResponse; $pageTitle = 'Vorlagen'; $activePage = 'canned'; require __DIR__ . '/_header.php'; ?>
Mitarbeiter können diese Textbausteine beim Beantworten eines Tickets per Klick in die Antwort einfügen.
| Titel | Abteilung | Text (Vorschau) | |
|---|---|---|---|
| = e($r['title']) ?> | = e($r['department_name'] ?? 'Alle') ?> | $0', e($preview)); ?> | Bearbeiten · |