I’m trying to maintain the dashboard app. Integrated in the app is an API, which provides a method, where other app can register their widgets to the dashboard.
But this api uses classes from the dashboard app. This leads to the problem, when the dashboard app is not installed, the apps which try to register a widget, fails.
This could possibly be solved by checking first, if the dashboard app is installed. But I thing, this is not a proper wa to this.
I currently see some posssibilities, how this can be done - but I don’t see how to do this in Nextcloud:
The dashboard app scans every installed app and looks, if there is a special class or function which returns the widgets.
The dashboard app sends out a signal to all apps, and every app which is listening to this signal registers its widget in the dashboard app.
can you point me to an example, how this is done in the server? And would you prefer an hook or an event?
At which point should I emit the event or hook?
I’m still struggling with the position where I emit the events.
I need at least two events, one before the dashboard is shown and one, on the config page where the user can select, which should be displayed on the dashboard.
I tried ti dispatch one event on the index method og the main template $dispatcher = \OC::$server->getEventDispatcher(); $dispatcher->dispatch('Dashboard::addWidget', $data);
But
the application immediately hangs on that position
and there it might be too late anyway
As there in no documentation regarding events, I might have done it completely wrong…
Sorry for not replying so long, I was busy finishing my Nextcloud10 stuff and then was on vacation.
Do you have your branch on github, so I can check it out for testing? Basically the dispatch looks good, so I guess something might be wrong with your $data.
Btw for the event name it is recommended to use a namespace like name, so OCA\Dashboard\....