From 84cab831bfa219c3db9c22de945ede883709a81d Mon Sep 17 00:00:00 2001 From: Divarion-D Date: Sat, 11 Apr 2026 22:46:06 +0300 Subject: [PATCH] feat(modules): enhance module upload UI with drag-and-drop support and AJAX handling --- .../Controllers/Admin/ModulesController.php | 8 + src/public/Views/admin/modules.php | 156 ++++++++++++++---- 2 files changed, 128 insertions(+), 36 deletions(-) diff --git a/src/public/Controllers/Admin/ModulesController.php b/src/public/Controllers/Admin/ModulesController.php index 82e9a781..3214dc24 100644 --- a/src/public/Controllers/Admin/ModulesController.php +++ b/src/public/Controllers/Admin/ModulesController.php @@ -13,6 +13,9 @@ class ModulesController extends BaseAdminController { $flash = null; if (strtoupper($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') { + $isAjax = !empty($_SERVER['HTTP_X_REQUESTED_WITH']) + && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; + try { $action = (string) $this->input('module_action', ''); $name = (string) $this->input('module_name', ''); @@ -64,6 +67,11 @@ class ModulesController extends BaseAdminController { } catch (Throwable $e) { $flash = ['type' => 'danger', 'message' => $e->getMessage()]; } + + if ($isAjax) { + header('Content-Type: application/json'); + exit(json_encode($flash ?: ['type' => 'info', 'message' => 'No action taken'])); + } } $modules = $manager->listModules(); diff --git a/src/public/Views/admin/modules.php b/src/public/Views/admin/modules.php index fee7dd70..ec553e2a 100644 --- a/src/public/Views/admin/modules.php +++ b/src/public/Views/admin/modules.php @@ -45,20 +45,24 @@
-
Upload Module ZIP
-

Upload a module ZIP package and install it immediately.

+
Upload Module ZIP
-
-
- -
-
- +
+ +

Drag & drop a .zip module here or click to browse

+
+ +
+ Only .zip packages are accepted +
+
+
-
@@ -84,44 +88,36 @@ @@ -138,9 +134,97 @@ + + - - + + \ No newline at end of file
- - Enabled - - Disabled - + + +
- +
- +
- -
- - - -
- -
- - - -
- + -
+ - +