Signed-off-by: Julius Härtl <jus@bitgrid.net>tags/v20.0.0beta1
@@ -28,7 +28,7 @@ use OCP\AppFramework\Controller; | |||
use OCP\AppFramework\Http\TemplateResponse; | |||
use OCP\Dashboard\IManager; | |||
use OCP\Dashboard\IPanel; | |||
use OCP\Dashboard\IRegisterPanelEvent; | |||
use OCP\Dashboard\RegisterPanelEvent; | |||
use OCP\EventDispatcher\IEventDispatcher; | |||
use OCP\IInitialStateService; | |||
use OCP\IRequest; | |||
@@ -42,7 +42,13 @@ class DashboardController extends Controller { | |||
/** @var IManager */ | |||
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); | |||
$this->inititalStateService = $initialStateService; | |||
@@ -56,7 +62,7 @@ class DashboardController extends Controller { | |||
* @return TemplateResponse | |||
*/ | |||
public function index(): TemplateResponse { | |||
$this->eventDispatcher->dispatchTyped(new IRegisterPanelEvent($this->dashboardManager)); | |||
$this->eventDispatcher->dispatchTyped(new RegisterPanelEvent($this->dashboardManager)); | |||
$dashboardManager = $this->dashboardManager; | |||
$panels = array_map(function (IPanel $panel) { |
@@ -26,6 +26,7 @@ namespace OC\Dashboard; | |||
use OCP\AppFramework\QueryException; | |||
use OCP\Dashboard\IManager; | |||
use OCP\Dashboard\IPanel; | |||
use OCP\ILogger; | |||
use OCP\IServerContainer; | |||
class Manager implements IManager { | |||
@@ -43,10 +44,7 @@ class Manager implements IManager { | |||
$this->serverContainer = $serverContainer; | |||
} | |||
/** | |||
* @inheritDoc | |||
*/ | |||
public function registerPanel(IPanel $panel): void { | |||
private function registerPanel(IPanel $panel): void { | |||
if (array_key_exists($panel->getId(), $this->panels)) { | |||
throw new \InvalidArgumentException('Dashboard panel with this id has already been registered'); | |||
} | |||
@@ -86,7 +84,7 @@ class Manager implements IManager { | |||
* we can not inject it. Thus the static call. | |||
*/ | |||
\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, | |||
]); | |||
} |
@@ -31,12 +31,6 @@ namespace OCP\Dashboard; | |||
*/ | |||
interface IManager { | |||
/** | |||
* @param IPanel $panel | |||
* @since 20.0.0 | |||
*/ | |||
public function registerPanel(IPanel $panel): void; | |||
/** | |||
* @param string $panelClass | |||
* @since 20.0.0 |
@@ -55,12 +55,6 @@ interface IPanel { | |||
*/ | |||
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 | |||
* @since 20.0.0 |
@@ -26,7 +26,7 @@ namespace OCP\Dashboard; | |||
use OCP\EventDispatcher\Event; | |||
/** | |||
* Class IRegisterPanelEvent | |||
* Class RegisterPanelEvent | |||
* | |||
* This event is dispatched to allow apps supporting older Nextcloud versions to | |||
* still register their dashboard panels so that they are only constructed when | |||
@@ -37,7 +37,7 @@ use OCP\EventDispatcher\Event; | |||
* @since 20.0.0 | |||
* @deprecated 20.0.0 | |||
*/ | |||
class IRegisterPanelEvent extends Event { | |||
class RegisterPanelEvent extends Event { | |||
private $manager; | |||
public function __construct(IManager $manager) { | |||
@@ -47,10 +47,10 @@ class IRegisterPanelEvent extends Event { | |||
} | |||
/** | |||
* @param IPanel $panel | |||
* @param string $panelClass | |||
* @since 20.0.0 | |||
*/ | |||
public function registerPanel(IPanel $panel) { | |||
$this->manager->registerPanel($panel); | |||
public function registerPanel(string $panelClass) { | |||
$this->manager->lazyRegisterPanel($panelClass); | |||
} | |||
} |