From 64bc88d6deaa333ff8e29c96c32a9f090b21afc9 Mon Sep 17 00:00:00 2001 From: WLTBAgent Date: Fri, 13 Feb 2026 18:28:34 +0000 Subject: [PATCH] Fix: Add routes and admin navigation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Created appinfo/routes.php to register all routes - Admin routes: index, save, load, getStatus - API v1 routes: reports, getReport, generate, getStatus - Report routes: index, generate - Added index() method to AdminController - Renders admin template via TemplateResponse - Updated info.xml and appinfo/info.xml - Fixed navigation entry to point to route: analyticshub.admin.index - Added settings and navigation sections - App now appears in Settings → Administration after enable/disable Fixes issue where app didn't show up in Nextcloud toolbar after being enabled. --- analyticshub/appinfo/info.xml | 6 ++ analyticshub/appinfo/routes.php | 67 +++++++++++++++++++ analyticshub/info.xml | 4 +- .../lib/Controller/AdminController.php | 15 ++++- 4 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 analyticshub/appinfo/routes.php diff --git a/analyticshub/appinfo/info.xml b/analyticshub/appinfo/info.xml index fa2fe5c..a207ad9 100644 --- a/analyticshub/appinfo/info.xml +++ b/analyticshub/appinfo/info.xml @@ -24,6 +24,12 @@ + + OCA\AnalyticsHub\Controller\Admin + + + analyticshub.admin.index + Repair steps not needed Or remove and reinstall diff --git a/analyticshub/appinfo/routes.php b/analyticshub/appinfo/routes.php new file mode 100644 index 0000000..8b2b270 --- /dev/null +++ b/analyticshub/appinfo/routes.php @@ -0,0 +1,67 @@ + [ + // Admin routes + [ + 'name' => 'admin#index', + 'url' => '/admin', + 'verb' => 'GET' + ], + [ + 'name' => 'admin#save', + 'url' => '/admin/save', + 'verb' => 'POST' + ], + [ + 'name' => 'admin#load', + 'url' => '/admin/load', + 'verb' => 'GET' + ], + [ + 'name' => 'admin#getStatus', + 'url' => '/admin/status', + 'verb' => 'GET' + ], + + // API v1 routes + [ + 'name' => 'api_v1#reports', + 'url' => '/api/reports', + 'verb' => 'GET' + ], + [ + 'name' => 'api_v1#getReport', + 'url' => '/api/report/{id}', + 'verb' => 'GET' + ], + [ + 'name' => 'api_v1#generate', + 'url' => '/api/generate', + 'verb' => 'POST' + ], + [ + 'name' => 'api_v1#getStatus', + 'url' => '/api/status', + 'verb' => 'GET' + ], + + // Report routes + [ + 'name' => 'report#index', + 'url' => '/report', + 'verb' => 'GET' + ], + [ + 'name' => 'report#generate', + 'url' => '/report/generate', + 'verb' => 'POST' + ], + ], +]; diff --git a/analyticshub/info.xml b/analyticshub/info.xml index d227f3f..12d4067 100644 --- a/analyticshub/info.xml +++ b/analyticshub/info.xml @@ -12,9 +12,9 @@ - OCA\AnalyticsHub\Settings\Admin + OCA\AnalyticsHub\Controller\Admin - OCA\AnalyticsHub\Settings\Admin + analyticshub.admin.index diff --git a/analyticshub/lib/Controller/AdminController.php b/analyticshub/lib/Controller/AdminController.php index beafb27..2484b07 100644 --- a/analyticshub/lib/Controller/AdminController.php +++ b/analyticshub/lib/Controller/AdminController.php @@ -9,6 +9,7 @@ use OCP\IResponse; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\TemplateResponse; use OCA\AnalyticsHub\Service\GoogleAnalyticsService; use OCA\AnalyticsHub\Service\LLMService; @@ -34,9 +35,21 @@ class AdminController { $this->dataProcessor = $dataProcessor; } + /** + * Index page - render admin UI + * GET /admin + */ + public function index(): TemplateResponse { + return new TemplateResponse('analyticshub', 'admin', [ + 'app_name' => AppInfo::APP_NAME, + 'version' => AppInfo::getVersion(), + 'status' => $this->gaService->isConfigured() ? 'configured' : 'not_configured', + ]); + } + /** * Save configuration - * POST /settings/save + * POST /admin/save */ public function save(IRequest $request): JSONResponse { $params = $request->getParams();