This commit is contained in:
ninortbrgr
2025-10-10 13:45:59 +02:00
parent edde9f07fc
commit fa830f892e
16 changed files with 748 additions and 0 deletions

130
admin.php Normal file
View File

@@ -0,0 +1,130 @@
<?php
session_start();
if (!isset($_SESSION["loggedIn"])) {
header("Location: login.html");
exit;
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Admin Dashboard</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container-dashboard">
<div class="header-with-image">
<h2>Admin Dashboard</h2>
<img src="img/csg.png" width="100" />
</div>
<a href="backend/logout.php" class="logout-btn">Logout</a>
<div class="dashboard">
<!-- Linke Ticket-Übersicht -->
<div id="ticket-list" class="ticket-list">
<h3>Tickets Übersicht</h3>
<ul id="tickets-ul"></ul>
</div>
<!-- Rechte Ticket-Details -->
<div id="ticket-details" class="ticket-details">
<p>Wähle ein Ticket aus der Liste links aus.</p>
</div>
</div>
</div>
<script>
let tickets = [];
async function ladeTickets() {
try {
const response = await fetch('backend/tickets.json?ts=' + Date.now(), {cache:"no-store"});
tickets = await response.json();
const ul = document.getElementById('tickets-ul');
ul.innerHTML = '';
if (!Array.isArray(tickets) || tickets.length === 0) {
ul.innerHTML = '<li>Keine Tickets vorhanden</li>';
return;
}
tickets.forEach((ticket, index) => {
const li = document.createElement('li');
li.textContent = ticket.title ?? "Kein Titel";
li.className = 'ticket-item';
li.addEventListener('click', () => showTicketDetails(index));
ul.appendChild(li);
});
} catch (error) {
console.error(error);
document.getElementById('ticket-details').innerHTML = 'Fehler beim Laden der Tickets.';
}
}
function showTicketDetails(index) {
const ticket = tickets[index];
const details = document.getElementById('ticket-details');
details.innerHTML = `
<h3>${ticket.title ?? "Kein Titel"}</h3>
<p><strong>Kategorie:</strong> ${ticket.category ?? "-"}</p>
<p><strong>Raum:</strong> ${ticket.room ?? "-"}</p>
<p><strong>Name:</strong> ${ticket.name ?? "-"}</p>
<p>${ticket.description ?? "-"}</p>
<p><em>${ticket.date ?? "-"}</em></p>
<label>Status ändern:</label>
<select id="status-select">
<option value="To-Do" ${ticket.status==="To-Do"?"selected":""}>To-Do</option>
<option value="InProgress" ${ticket.status==="InProgress"?"selected":""}>InProgress</option>
<option value="Done" ${ticket.status==="Done"?"selected":""}>Done</option>
</select>
<button id="save-status">Speichern</button>
<button id="delete-ticket" class="delete-btn">Löschen</button>
`;
document.getElementById('save-status').addEventListener('click', async () => {
const newStatus = document.getElementById('status-select').value;
ticket.status = newStatus;
const res = await fetch('backend/update_ticket.php', {
method:'POST',
headers:{'Content-Type':'application/json'},
body:JSON.stringify({index, ticket})
});
const data = await res.json();
if(data.success){
alert("Status aktualisiert!");
ladeTickets();
} else {
alert("Fehler beim Aktualisieren!");
}
});
document.getElementById('delete-ticket').addEventListener('click', async () => {
if(!confirm("Ticket wirklich löschen?")) return;
const res = await fetch('backend/delete_ticket.php', {
method:'POST',
headers:{'Content-Type':'application/json'},
body:JSON.stringify({index})
});
const data = await res.json();
if(data.success){
alert("Ticket gelöscht!");
details.innerHTML = "<p>Wähle ein Ticket aus der Liste links aus.</p>";
ladeTickets();
} else {
alert("Fehler beim Löschen!");
}
});
}
ladeTickets();
</script>
</body>
</html>