mirror of
https://github.com/nextcloud/server.git
synced 2026-04-22 14:50:17 -04:00
Allow to conditionally enable dashboard widgets
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
71493433b8
commit
23171206b4
4 changed files with 51 additions and 0 deletions
|
|
@ -193,6 +193,7 @@ return array(
|
|||
'OCP\\Dashboard\\Exceptions\\DashboardAppNotAvailableException' => $baseDir . '/lib/public/Dashboard/Exceptions/DashboardAppNotAvailableException.php',
|
||||
'OCP\\Dashboard\\IAPIWidget' => $baseDir . '/lib/public/Dashboard/IAPIWidget.php',
|
||||
'OCP\\Dashboard\\IButtonWidget' => $baseDir . '/lib/public/Dashboard/IButtonWidget.php',
|
||||
'OCP\\Dashboard\\IConditionalWidget' => $baseDir . '/lib/public/Dashboard/IConditionalWidget.php',
|
||||
'OCP\\Dashboard\\IDashboardManager' => $baseDir . '/lib/public/Dashboard/IDashboardManager.php',
|
||||
'OCP\\Dashboard\\IDashboardWidget' => $baseDir . '/lib/public/Dashboard/IDashboardWidget.php',
|
||||
'OCP\\Dashboard\\IIconWidget' => $baseDir . '/lib/public/Dashboard/IIconWidget.php',
|
||||
|
|
|
|||
|
|
@ -226,6 +226,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
|
|||
'OCP\\Dashboard\\Exceptions\\DashboardAppNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/Dashboard/Exceptions/DashboardAppNotAvailableException.php',
|
||||
'OCP\\Dashboard\\IAPIWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IAPIWidget.php',
|
||||
'OCP\\Dashboard\\IButtonWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IButtonWidget.php',
|
||||
'OCP\\Dashboard\\IConditionalWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IConditionalWidget.php',
|
||||
'OCP\\Dashboard\\IDashboardManager' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IDashboardManager.php',
|
||||
'OCP\\Dashboard\\IDashboardWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IDashboardWidget.php',
|
||||
'OCP\\Dashboard\\IIconWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IIconWidget.php',
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ namespace OC\Dashboard;
|
|||
|
||||
use InvalidArgumentException;
|
||||
use OCP\App\IAppManager;
|
||||
use OCP\Dashboard\IConditionalWidget;
|
||||
use OCP\Dashboard\IManager;
|
||||
use OCP\Dashboard\IWidget;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
|
|
@ -91,6 +92,10 @@ class Manager implements IManager {
|
|||
* type, so we might get a TypeError here that we should catch.
|
||||
*/
|
||||
try {
|
||||
if ($widget instanceof IConditionalWidget && !$widget->isEnabled()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->registerWidget($widget);
|
||||
} catch (Throwable $e) {
|
||||
/*
|
||||
|
|
|
|||
44
lib/public/Dashboard/IConditionalWidget.php
Normal file
44
lib/public/Dashboard/IConditionalWidget.php
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>
|
||||
*
|
||||
* @author Joas Schilling <coding@schilljs.com>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCP\Dashboard;
|
||||
|
||||
/**
|
||||
* interface IConditionalWidget
|
||||
*
|
||||
* Allows an app to lazy-register a widget and in the lazy part of the code
|
||||
* it can decide if the widget should really be registered.
|
||||
*
|
||||
* @since 26.0.0
|
||||
*/
|
||||
interface IConditionalWidget extends IWidget {
|
||||
|
||||
/**
|
||||
* @return bool Whether the widget is enabled and should be registered
|
||||
* @since 26.0.0
|
||||
*/
|
||||
public function isEnabled(): bool;
|
||||
}
|
||||
Loading…
Reference in a new issue