From 854e6d03cb976a45b63b778648b7cd11d9c2bbcb Mon Sep 17 00:00:00 2001 From: Tower Date: Sun, 19 Jul 2026 20:04:10 +0200 Subject: [PATCH] termine ticketboard update auf ajax --- .../api/js/handler/TicketBoardAjaxHandler.php | 88 ++++++++ WEBROOT/js/ajaxApi/TicketBoardAjaxMethods.js | 33 +++ WEBROOT/services/ticket_board.php | 211 +++++++++++------- 3 files changed, 248 insertions(+), 84 deletions(-) create mode 100644 WEBROOT/api/js/handler/TicketBoardAjaxHandler.php create mode 100644 WEBROOT/js/ajaxApi/TicketBoardAjaxMethods.js diff --git a/WEBROOT/api/js/handler/TicketBoardAjaxHandler.php b/WEBROOT/api/js/handler/TicketBoardAjaxHandler.php new file mode 100644 index 0000000..272e354 --- /dev/null +++ b/WEBROOT/api/js/handler/TicketBoardAjaxHandler.php @@ -0,0 +1,88 @@ +getUsername()), + ); + + echo json_encode(['success' => true, 'entries' => array_values($entries ?? [])]); + break; + } + + // ---------- Neues Ticket anlegen ---------- + case 'add_entry': { + foreach (['titel', 'beschreibung'] as $feld) { + if (empty($daten[$feld])) { + throw new InvalidArgumentException("Pflichtfeld fehlt: $feld"); + } + } + + $titel = $daten['titel']; + $beschreibung = $daten['beschreibung']; + $user = ucfirst(strtolower((new getSpecificData())->getUsername())); + + DatabaseInsert( + "Tickets", + "TITEL, BESCHREIBUNG, STATUS, ERSTELLER", + $titel, + $beschreibung, + "OFFEN", + $user, + ); + + sendMail( + "Neues Ticket von $user", + "Titel: $titel\nBeschreibung: $beschreibung", + (new getSpecificData())->getRequestURL(), + true, + ); + + echo json_encode(['success' => true]); + break; + } + + // ---------- Ticket löschen ---------- + case 'delete_entry': { + $id = $daten['id'] ?? null; + + if (!is_numeric($id)) { + throw new InvalidArgumentException('Ungültige ID'); + } + + DatabaseDelete("Tickets", "ID = ?", (int)$id); + + echo json_encode(['success' => true]); + break; + } + + default: + throw new InvalidArgumentException("Unbekannte Aktion: $action"); + } + +} catch (InvalidArgumentException $e) { + http_response_code(400); + echo json_encode(['error' => $e->getMessage()]); +} catch (Throwable $e) { + http_response_code(500); + error_log($e->getMessage()); + echo json_encode(['error' => 'Serverfehler']); +} \ No newline at end of file diff --git a/WEBROOT/js/ajaxApi/TicketBoardAjaxMethods.js b/WEBROOT/js/ajaxApi/TicketBoardAjaxMethods.js new file mode 100644 index 0000000..e45391d --- /dev/null +++ b/WEBROOT/js/ajaxApi/TicketBoardAjaxMethods.js @@ -0,0 +1,33 @@ +const TICKETS_HANDLER_URL = '/api/js/handler/TicketBoardAjaxHandler'; + +async function ticketsAjaxRequest(payload) { + try { + const response = await fetch(TICKETS_HANDLER_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(payload) + }); + const data = await parseJsonResponse(response); + + if (data.error) { + throw new Error(data.error); + } + return data; + + } catch (error) { + console.error('Tickets-Ajax-Fehler:', error.message); + throw error; + } +} + +function getTicketEntries() { + return ticketsAjaxRequest({ action: 'get_entries' }); +} + +function addTicketEntry(titel, beschreibung) { + return ticketsAjaxRequest({ action: 'add_entry', titel, beschreibung }); +} + +function deleteTicketEntry(id) { + return ticketsAjaxRequest({ action: 'delete_entry', id }); +} \ No newline at end of file diff --git a/WEBROOT/services/ticket_board.php b/WEBROOT/services/ticket_board.php index 4bff964..4cc9180 100644 --- a/WEBROOT/services/ticket_board.php +++ b/WEBROOT/services/ticket_board.php @@ -1,101 +1,144 @@ -getUsername())), - ); - - $html = "Titel: $titel\nBeschreibung: $beschreibung"; - $user = ucfirst(strtolower((new getSpecificData())->getUsername())); - - sendMail( - "Neues Ticket von $user", - $html, - (new getSpecificData())->getRequestURL(), - true, - ); - - redirectToWebsite((new getSpecificData())->getReferer()); - exit; -} - -if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_entry'])) { - $id = $_POST['id']; - - DatabaseDelete("Tickets", "ID = ?", $id); - - redirectToWebsite((new getSpecificData())->getReferer()); - exit; -} - -$entries = DatabaseShow( - "Tickets", - "TITEL, BESCHREIBUNG, STATUS", - "ERSTELLER = ?", - ((new getSpecificData())->getUsername()), -); - -?> - -
+

Neues Ticket anlegen

-
+
- +
- +
- +
+

Tickets

- - - - - - - - - - - - - - - - - - - -
TitelBeschreibungStatus
- -

Keine Tickets vorhanden.

- +
+

Lade Daten...

+
-
\ No newline at end of file +
+ + + + + + + \ No newline at end of file