From 628aef59b343b5c3e646a8779dc26535d6da785d Mon Sep 17 00:00:00 2001 From: WLTBAgent Date: Fri, 13 Feb 2026 20:32:02 +0000 Subject: [PATCH] Fix: Make PageController extend OCP\AppFramework\Controller - Added parent::__construct() call to PageController - Fixes: "must be an instance of OCP\AppFramework\Controller" - Error: Argument 1 passed to Dispatcher was PageController, not Controller - This is the CRITICAL fix for controller DI in Nextcloud - PageController now properly extends OCP\AppFramework\Controller - Maintains simple HTML output for testing The error showed the controller wasn't properly extending the base class. Nextcloud's Dispatcher requires all controllers to extend OCP\AppFramework\Controller. --- analyticshub.zip | Bin 24104 -> 24089 bytes .../lib/Controller/PageController.php | 16 ++++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/analyticshub.zip b/analyticshub.zip index 54c0f3a0dc2fa95356fc7364a2ccb3eb4800b4db..310c9a7327c9484c09c1f431b0c8737541a11cb3 100644 GIT binary patch delta 1073 zcmV-11kU@YyaAcK0kFe84f&%@T!sB3u9^b?0H~ADJvsz7ijQfNfm;)QeN|m=A~zI$ z=U3dNkrE;%1Nmw?5L%Wt-AK)cfPGjgQewAvxJ-$BE{nf;#R%4t>V)>EtR#5-!mxjCRcB50PDUxt!2<7lF=s)!pkxMVA`;tzc z23mQmrQ{a#QkP{sKHUy~`QIsbzEec{#@twBnQQy<5fdIC*WeiXED;Ju+H%GY$bbkr>GV_hi`QT=-b09>yG_*ya#V5v$;9 z=!Rie+amr^-#i>vDkQQhjv5iXYQakVa~f+n?0)+FVKDyo_y@#3k-fvt_v`z@oUn>; z!aV^R6YIFYu74eW-vn3niZn00B}fMRX|2e%upR(Da(FRS7c&6e;6QyigS zN)jQL5d?TNk_T?-JWrbNSqk-XN9ZVjzroBV)JJ@#IefjXH^C9*0>`bGcJRCy!!e5B zyk!<0NXR0X3+Cepu3GDeoe32|3rOm92i|uoirZKZ)l%Dk2!3j{u1@JM8(1*W-s>cS z)0}G;YY>Xn@*w777W)X=CzqXq?Ck8U3WVdUaq`QXUS3jKm3rb*N;%%dH<%FmGP62W z3=!;{Ge)*MonDcj&o4@Hv@f!PC)(ot29_|9x(F`Hf@Cd0t7_A3xaaJ;;hsUt4z+6R z+P(k&{Rj4cO%5*aVwiY^+)z|V?n<%V%G~lRDjZ}Uh`oNw%FUO%A%ZI?&6dCz z$UGn_FmMPb`DJp3Q$b{Y8;(AjM*~x^ck@H)ktZHC-V&Ega^1)@m2wGE6UG@3#nyhB zxuCJyU}6a~A!zxz5GU1J$F{PbOz=%jLo}_7-Dj?Ux-FutSann5m;*MSsjT#Tqcl#N zwVZmnJb`aI1xi#@&5%}^kQ9Yj_t-h$H3UeCu%BYsU^ATPPI)O9Q~>F45^DLZNfm3lwsuYw((;=M_zfDoowOcL<+y$ z4;p77M}mhRcpczRF7Z_A`5r`Asc5+8-i14#frap!@7{auf3wO#Vi^tjqfK0e{UffL z0{{T1lQ~;R0yc`1QBxh0pj#dRyOY0LbONwPlfYXZlley$lWAN)0WFiNTwwv1lMG#4 r0qBzqT^f@tO%ju*Qyh~ITndxBT^a)RPm>K@8I$l`G6q0W00000XzK;s delta 1125 zcmV-r1e*JqyaA}Z0kFe84I-mWTw9h7kf{Rz0L_!oJvx7&h>vNYh>vM?cnbgl1nC0+ z00ij+0050uZEqqs5dO}un4>2JA~p+2E=_^Z=4jJHY7!L4hm#^j#vWKJX1%q&yy%pV z{TKap{Ux0>u#m8vZoeSL^UOT+%y``XHHnf^Ng!9uV8uEkxqEiY1npI$+A5V|Hbt8- zj&R?-e!72-nOZu@?U!`))YY*wS}8Q-m)gvu|I~ZHzf-i1OyTiy369}fOl1rMbWX+- z3tJQ&X6L`%Y44H&r9rW_bq5bOJEpKi46TJeo8UGCd@GfJzQo8Ga|j<qxJCUEf(EAv=k;XKf+<@B zb17WZgvzAkemklf!Y3KB`38y~RJ~kmJ zvBe-lIf+~o8YdU6JlNUUSrLe4UDK@ZCcU`eyvX&$rko>PzpeA>CHwjOQwv6nzf6oy zV?jo7jzX{H zS%U+U9`dH65^3z-zgWRd* z34GNla2EUHQ7V-HN7#%AFyFezp5LW=i?l}jz)Wq;vt;D%aY!{1{{w83&K)is(27Vh zA&OkmqFtyY^@_67%bK-ev+BPLZ~t16ON>rP#`hfCAt4LHT?;`f#A7*04f97^+*bpY zKee7v=zQ#J&{ZrIWa;;+-;Zb63`3=v$e#wLq+1>a4YT2+=PGbIpda6!vC{Jch_Fzb z@W4e5_uiF-%pcO%(*Lu&L1GyVBBM=QTb2%xsRIB2&66ryNCKdUld)7Clf^+24Hy6b z000010002Afy$GxTXX`yN0YHz9+T=v7L!_BKmt5Vld)S9ldoJ&0;Wupv0D?9Ze0eG r7hOUE_e_(qTN9IRU04DIP?ND+6O(RT29qmL43q6$CI(MZ00000g9;s^ diff --git a/analyticshub/lib/Controller/PageController.php b/analyticshub/lib/Controller/PageController.php index cee3604..53bb1f6 100644 --- a/analyticshub/lib/Controller/PageController.php +++ b/analyticshub/lib/Controller/PageController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace OCA\AnalyticsHub\Controller; use OCP\IRequest; +use OCP\AppFramework\Controller; /** * Admin Settings Controller @@ -12,14 +13,13 @@ use OCP\IRequest; * @NoAdminRequired * @NoCSRFRequired */ -class PageController { +class PageController extends Controller { private $appName; - private $request; public function __construct(string $appName, IRequest $request) { + parent::__construct($appName, $request); $this->appName = $appName; - $this->request = $request; } /** @@ -39,19 +39,19 @@ class PageController { echo 'h1 { color: #0082c9; margin-bottom: 20px; }'; echo 'p { line-height: 1.6; color: #333; }'; echo 'strong { color: #0066cc; }'; - echo '.success { color: #28a745; background: #d4edda; padding: 10px; border-radius: 5px; margin: 20px 0; }'; + echo '.success { background: #d4edda; color: #28a745; padding: 15px; border-radius: 5px; margin: 20px 0; }'; echo ''; echo ''; echo ''; echo '

✅ Mini-CMO Analytics Hub

'; echo '
Admin page is working!
'; echo '

App Name: ' . htmlspecialchars($this->appName) . '

'; - echo '

Request Path: ' . htmlspecialchars($this->request->getPathInfo()) . '

'; - echo '

Status: Controller successfully resolved and executed.

'; + echo '

Status: Controller successfully loaded and extending proper Controller base class.

'; echo '
'; - echo '

The app routing is now working correctly. You can now build the full admin UI with TemplateResponse, forms, and all the features.

'; - echo '

Next steps:

'; + echo '

Routing test successful!

'; + echo '

The app is now working correctly. You can:

'; echo '
    '; + echo '
  • Next steps:
  • '; echo '
  • Replace this simple HTML with proper TemplateResponse
  • '; echo '
  • Add configuration forms (Google Analytics, Claude API)
  • '; echo '
  • Add save/load functionality
  • ';