Browse Source

Cleanup public api methods

Signed-off-by: Julius Härtl <jus@bitgrid.net>
tags/v20.0.0beta1
Julius Härtl 4 years ago
parent
commit
b71de68f43
No account linked to committer's email address

+ 9
- 3
apps/dashboard/lib/Controller/DashboardController.php View File

use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Http\TemplateResponse;
use OCP\Dashboard\IManager; use OCP\Dashboard\IManager;
use OCP\Dashboard\IPanel; use OCP\Dashboard\IPanel;
use OCP\Dashboard\IRegisterPanelEvent;
use OCP\Dashboard\RegisterPanelEvent;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\IInitialStateService; use OCP\IInitialStateService;
use OCP\IRequest; use OCP\IRequest;
/** @var IManager */ /** @var IManager */
private $dashboardManager; private $dashboardManager;


public function __construct($appName, IRequest $request, IInitialStateService $initialStateService, IEventDispatcher $eventDispatcher, IManager $dashboardManager) {
public function __construct(
$appName,
IRequest $request,
IInitialStateService $initialStateService,
IEventDispatcher $eventDispatcher,
IManager $dashboardManager
) {
parent::__construct($appName, $request); parent::__construct($appName, $request);


$this->inititalStateService = $initialStateService; $this->inititalStateService = $initialStateService;
* @return TemplateResponse * @return TemplateResponse
*/ */
public function index(): TemplateResponse { public function index(): TemplateResponse {
$this->eventDispatcher->dispatchTyped(new IRegisterPanelEvent($this->dashboardManager));
$this->eventDispatcher->dispatchTyped(new RegisterPanelEvent($this->dashboardManager));


$dashboardManager = $this->dashboardManager; $dashboardManager = $this->dashboardManager;
$panels = array_map(function (IPanel $panel) { $panels = array_map(function (IPanel $panel) {

+ 3
- 5
lib/private/Dashboard/Manager.php View File

use OCP\AppFramework\QueryException; use OCP\AppFramework\QueryException;
use OCP\Dashboard\IManager; use OCP\Dashboard\IManager;
use OCP\Dashboard\IPanel; use OCP\Dashboard\IPanel;
use OCP\ILogger;
use OCP\IServerContainer; use OCP\IServerContainer;


class Manager implements IManager { class Manager implements IManager {
$this->serverContainer = $serverContainer; $this->serverContainer = $serverContainer;
} }


/**
* @inheritDoc
*/
public function registerPanel(IPanel $panel): void {
private function registerPanel(IPanel $panel): void {
if (array_key_exists($panel->getId(), $this->panels)) { if (array_key_exists($panel->getId(), $this->panels)) {
throw new \InvalidArgumentException('Dashboard panel with this id has already been registered'); throw new \InvalidArgumentException('Dashboard panel with this id has already been registered');
} }
* we can not inject it. Thus the static call. * we can not inject it. Thus the static call.
*/ */
\OC::$server->getLogger()->logException($e, [ \OC::$server->getLogger()->logException($e, [
'message' => 'Could not register lazy crash reporter: ' . $e->getMessage(),
'message' => 'Could not register lazy dashboard panel: ' . $e->getMessage(),
'level' => ILogger::FATAL, 'level' => ILogger::FATAL,
]); ]);
} }

+ 0
- 6
lib/public/Dashboard/IManager.php View File

*/ */
interface IManager { interface IManager {


/**
* @param IPanel $panel
* @since 20.0.0
*/
public function registerPanel(IPanel $panel): void;

/** /**
* @param string $panelClass * @param string $panelClass
* @since 20.0.0 * @since 20.0.0

+ 0
- 6
lib/public/Dashboard/IPanel.php View File

*/ */
public function getIconClass(): string; public function getIconClass(): string;


/**
* @return string The absolute path to an icon in SVG
* @since 20.0.0
*/
public function getIconUrl(): string;

/** /**
* @return string The absolute url to the apps own view * @return string The absolute url to the apps own view
* @since 20.0.0 * @since 20.0.0

lib/public/Dashboard/IRegisterPanelEvent.php → lib/public/Dashboard/RegisterPanelEvent.php View File

use OCP\EventDispatcher\Event; use OCP\EventDispatcher\Event;


/** /**
* Class IRegisterPanelEvent
* Class RegisterPanelEvent
* *
* This event is dispatched to allow apps supporting older Nextcloud versions to * This event is dispatched to allow apps supporting older Nextcloud versions to
* still register their dashboard panels so that they are only constructed when * still register their dashboard panels so that they are only constructed when
* @since 20.0.0 * @since 20.0.0
* @deprecated 20.0.0 * @deprecated 20.0.0
*/ */
class IRegisterPanelEvent extends Event {
class RegisterPanelEvent extends Event {
private $manager; private $manager;


public function __construct(IManager $manager) { public function __construct(IManager $manager) {
} }


/** /**
* @param IPanel $panel
* @param string $panelClass
* @since 20.0.0 * @since 20.0.0
*/ */
public function registerPanel(IPanel $panel) {
$this->manager->registerPanel($panel);
public function registerPanel(string $panelClass) {
$this->manager->lazyRegisterPanel($panelClass);
} }
} }

Loading…
Cancel
Save