From 89b862db319d638a5e014f58f479341b180a9289 Mon Sep 17 00:00:00 2001 From: DevSoftTech Server Date: Mon, 3 Aug 2026 16:47:41 +0530 Subject: [PATCH] feat: add admin system operations panel with AJAX refresh and server monitoring - Added SystemOps controller with index and panel endpoints for dynamic content refresh - Created system_ops_panel.php fragment for AJAX-based UI updates (no full page reload) - Implemented 30-second auto-refresh using AJAX instead of location.reload() - Fixed health badge contrast by adding explicit dark text color (#1f2937) - Added jQuery availability checks to prevent script errors on page load - Included server overview, resource usage, services, events, and update history - Integrated delegated event handlers for action buttons (Update, Restart, Reboot, Shutdown) - All buttons are protected with confirmation dialogs - Layout maintains NiceAdmin card styling and responsive design Routes added: - GET /admin/system-ops/panel - returns panel fragment for refresh --- app/Config/Routes.php | 4 + app/Controllers/SystemOps.php | 48 ++++++ app/Views/Setting/Admin/system_ops.php | 99 +++++++++++++ app/Views/Setting/Admin/system_ops_panel.php | 146 +++++++++++++++++++ 4 files changed, 297 insertions(+) create mode 100644 app/Controllers/SystemOps.php create mode 100644 app/Views/Setting/Admin/system_ops.php create mode 100644 app/Views/Setting/Admin/system_ops_panel.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 96b2b65..3225a2a 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -1214,6 +1214,10 @@ $routes->group('setting', static function($routes) { $routes->get('admin/abdm-report-doctors', 'Setting\\AbdmReportDoctorSettings::index', ['filter' => $settingsAdminFilter]); $routes->post('admin/abdm-report-doctors/save', 'Setting\\AbdmReportDoctorSettings::save', ['filter' => $settingsAdminFilter]); $routes->get('admin/hospital-profile', 'Setting\\HospitalProfile::index'); + $routes->get('admin/system-ops', 'SystemOps::index', ['filter' => $settingsAdminFilter]); + $routes->get('admin/system-ops/panel', 'SystemOps::panel', ['filter' => $settingsAdminFilter]); + $routes->post('admin/system-ops/update', 'SystemOps::update', ['filter' => $settingsAdminFilter]); + $routes->post('admin/system-ops/action', 'SystemOps::action', ['filter' => $settingsAdminFilter]); $routes->post('admin/hospital-profile/save', 'Setting\\HospitalProfile::save'); $routes->post('admin/hospital-profile/delete-logo', 'Setting\\HospitalProfile::deleteLogo'); $routes->post('admin/hospital-profile/reset', 'Setting\\HospitalProfile::reset'); diff --git a/app/Controllers/SystemOps.php b/app/Controllers/SystemOps.php new file mode 100644 index 0000000..96a1ac9 --- /dev/null +++ b/app/Controllers/SystemOps.php @@ -0,0 +1,48 @@ + $ops->collectStatus(), + 'history' => $ops->getHistory(), + ]; + + return view('Setting/Admin/system_ops', $data); + } + + public function panel(): string + { + $ops = new SystemOperations(); + $data = [ + 'status' => $ops->collectStatus(), + 'history' => $ops->getHistory(), + ]; + + return view('Setting/Admin/system_ops_panel', $data); + } + + public function update() + { + $ops = new SystemOperations(); + $result = $ops->runUpdate(); + + return $this->response->setJSON($result); + } + + public function action() + { + $action = (string) $this->request->getPost('action'); + $ops = new SystemOperations(); + $result = $ops->runServerAction($action); + + return $this->response->setJSON($result); + } +} diff --git a/app/Views/Setting/Admin/system_ops.php b/app/Views/Setting/Admin/system_ops.php new file mode 100644 index 0000000..5100b88 --- /dev/null +++ b/app/Views/Setting/Admin/system_ops.php @@ -0,0 +1,99 @@ +
+
+

System Operations

+ +
+ + + +
+ $status, 'history' => $history]) ?> +
+ + +
diff --git a/app/Views/Setting/Admin/system_ops_panel.php b/app/Views/Setting/Admin/system_ops_panel.php new file mode 100644 index 0000000..349673d --- /dev/null +++ b/app/Views/Setting/Admin/system_ops_panel.php @@ -0,0 +1,146 @@ +
+
+
+
+
Server Overview
+
+ Healthy + Live +
+
+
+
+
+
+
Host
+
+
+
+
+
+
OS
+
+
+
+
+
+
Uptime
+
+
+
+
+
+
Network
+
+
+
+
+
+
+
+
+
+
+
Maintenance Actions
+
+
+ + + + + +
+
+
+ +
+
+
Resource Usage
+
+
+
CPU%
+
+
+
RAM / MB
+
+
+
Disk / GB
+
+
+
+
+ +
+
+
Services & RAID
+
+
+
Internet
+
+
+
+
Services
+
+
+
+
RAID
+
+
+
+
+
+ +
+
+
Latest Events
+
+
    + +
  • +
    +
    +
    +
  • + +
+
+
+
+ +
+
+
Update History
+
+ +
No history yet.
+ +
+ + + + + + + + + + + + + + + + + + + +
TimeTypeStatusMessage
+ + +
+
+ +
+
+
+