diff --git a/admin.php b/admin.php index 4e6132c..da97c28 100644 --- a/admin.php +++ b/admin.php @@ -297,6 +297,38 @@ if (isset($_GET['delete_faction'])) { exit; } +// Handle Levels CRUD +if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["action"]) && $_POST["action"] === "upsert_level") { + $id = (int)$_POST["id"]; + $name = $_POST["name"]; + $slug = $_POST["slug"]; + $resource_id = (int)$_POST["resource_id"]; + $required_quantity = (int)$_POST["required_quantity"]; + + if ($required_quantity <= 0) { + header("Location: admin.php?tab=levels&error=invalid_quantity"); + exit; + } + + if ($id > 0) { + $stmt = $db->prepare("UPDATE levels SET name = ?, slug = ?, resource_id = ?, required_quantity = ? WHERE id = ?"); + $stmt->execute([$name, $slug, $resource_id, $required_quantity, $id]); + } else { + $stmt = $db->prepare("INSERT INTO levels (name, slug, resource_id, required_quantity) VALUES (?, ?, ?, ?)"); + $stmt->execute([$name, $slug, $resource_id, $required_quantity]); + } + + header("Location: admin.php?tab=levels&success=1"); + exit; +} + +if (isset($_GET["delete_level"])) { + $id = (int)$_GET["delete_level"]; + $db->prepare("DELETE FROM levels WHERE id = ?")->execute([$id]); + header("Location: admin.php?tab=levels&success=1"); + exit; +} + // Handle Resource CRUD if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'upsert_resource') { $id = (int)$_POST['id']; @@ -437,6 +469,7 @@ $factions_list = []; $resources_list = []; $lootboxes_list = []; $project_logs_list = []; +$levels_list = []; if ($tab === 'users') { $users_list = $db->query("SELECT id, username, email, role FROM users ORDER BY username ASC")->fetchAll(); @@ -467,6 +500,9 @@ if ($tab === 'users') { $f['alliance_ids'] = $stmt->fetchAll(PDO::FETCH_COLUMN); } unset($f); +} elseif ($tab === 'levels') { + $levels_list = $db->query("SELECT l.*, r.name as resource_name FROM levels l JOIN game_resources r ON l.resource_id = r.id ORDER BY l.required_quantity ASC")->fetchAll(); + $resources_list = $db->query("SELECT id, name FROM game_resources ORDER BY name ASC")->fetchAll(); } elseif ($tab === 'resources') { $resources_list = $db->query("SELECT * FROM game_resources ORDER BY name ASC")->fetchAll(); } elseif ($tab === 'project_logs') { @@ -583,6 +619,9 @@ if ($tab === 'users') {
+ +
Erreur : La quantité doit être un nombre strictement positif.
+
Opération effectuée avec succès.
@@ -643,9 +682,70 @@ if ($tab === 'users') {

Gestion des Niveaux

-

À configurer

+

Ajouter / Modifier un Niveau

+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NomSlugRessource requiseQuantité requiseActions
Aucun niveau configuré.
+ + Suppr +

Gestion des Grades

@@ -1402,6 +1502,26 @@ if ($tab === 'users') { document.querySelectorAll('.ms-dropdown').forEach(d => d.style.display = 'none'); } }); + + function editLevel(data) { + document.getElementById("level_id").value = data.id; + document.getElementById("level_name").value = data.name; + document.getElementById("level_slug").value = data.slug; + document.getElementById("level_resource_id").value = data.resource_id; + document.getElementById("level_required_quantity").value = data.required_quantity; + window.scrollTo(0,0); + } + function resetLevelForm() { + document.getElementById("levelForm").reset(); + document.getElementById("level_id").value = 0; + const select = document.getElementById("level_resource_id"); + for (let i = 0; i < select.options.length; i++) { + if (select.options[i].text.toLowerCase().includes("expérience") || select.options[i].text.toLowerCase().includes("experience")) { + select.selectedIndex = i; + break; + } + } + } @@ -1802,6 +1922,26 @@ function editStatus(data) { document.querySelectorAll('.ms-dropdown').forEach(d => d.style.display = 'none'); } }); + + function editLevel(data) { + document.getElementById("level_id").value = data.id; + document.getElementById("level_name").value = data.name; + document.getElementById("level_slug").value = data.slug; + document.getElementById("level_resource_id").value = data.resource_id; + document.getElementById("level_required_quantity").value = data.required_quantity; + window.scrollTo(0,0); + } + function resetLevelForm() { + document.getElementById("levelForm").reset(); + document.getElementById("level_id").value = 0; + const select = document.getElementById("level_resource_id"); + for (let i = 0; i < select.options.length; i++) { + if (select.options[i].text.toLowerCase().includes("expérience") || select.options[i].text.toLowerCase().includes("experience")) { + select.selectedIndex = i; + break; + } + } + } \ No newline at end of file