Refactored file system

Changed the file system to a more ordered state and updated links in
files accordingly. Also the reffering to files is now uniform
This commit is contained in:
sraffauf
2026-01-21 17:58:15 +01:00
parent a3b261e9ae
commit 77fd4e836b
15 changed files with 99 additions and 52 deletions

130
php/admin.php Normal file
View File

@@ -0,0 +1,130 @@
<?php
session_start();
if (!isset($_SESSION["loggedIn"])) {
header("Location: ../pages/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="../php/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('../data/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('./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>