addRoute('GET', '/lang/{locale}', function ($locale) { if (in_array($locale, SUPPORTED_LOCALES)) { $_SESSION['locale'] = $locale; } // Redirect back to the page the user came from, or home $referer = $_SERVER['HTTP_REFERER'] ?? '/'; header("Location: " . $referer); exit; }); // --- Web Routes (Full Page/Initial Load) --- $router->addRoute('GET', '/', [ItemController::class, 'overview']); $router->addRoute('GET', '/categories', [CategoryController::class, 'index']); $router->addRoute('GET', '/parts', [ItemController::class, 'addForm']); $router->addRoute('GET', '/print/{id:\d+}', [ItemController::class, 'printQR']); // --- API Routes (AJAX Content) --- // These routes return only the Twig block content, not the full layout. $router->addRoute('GET', '/api/items', [ItemController::class, 'listItems']); $router->addRoute('GET', '/api/items/{id:\d+}', [ItemController::class, 'getItem']); $router->addRoute('GET', '/api/categories', [CategoryController::class, 'listCategories']); $router->addRoute('GET', '/api/categories/list', [CategoryController::class, 'listCategoriesJson']); $router->addRoute('GET', '/api/categories/{id}', [CategoryController::class, 'getCategory']); $router->addRoute('GET', '/api/parts', [ItemController::class, 'renderAddForm']); // --- API CRUD Routes --- // Items $router->addRoute('POST', '/api/items', [ItemController::class, 'create']); $router->addRoute('PUT', '/api/items/{id:\d+}', [ItemController::class, 'update']); $router->addRoute('DELETE', '/api/items/{id:\d+}', [ItemController::class, 'delete']); // Categories $router->addRoute('POST', '/api/categories', [CategoryController::class, 'create']); $router->addRoute('PUT', '/api/categories/{id:\d+}', [CategoryController::class, 'update']); $router->addRoute('DELETE', '/api/categories/{id:\d+}', [CategoryController::class, 'delete']); $router->dispatch();