diff options
author | Joas Schilling <coding@schilljs.com> | 2024-07-11 13:24:10 +0200 |
---|---|---|
committer | nextcloud-command <nextcloud-command@users.noreply.github.com> | 2024-07-11 13:14:03 +0000 |
commit | 37d331233c2edd80bb4621942f94259ee82ad768 (patch) | |
tree | 5760ab7974dbc166c2ad04bee5c8eed30d30fab7 | |
parent | 5368b935393c1bd7e192c35498eda9d76ad99ee8 (diff) | |
download | nextcloud-server-37d331233c2edd80bb4621942f94259ee82ad768.tar.gz nextcloud-server-37d331233c2edd80bb4621942f94259ee82ad768.zip |
fix(dashboard): Document expected icon behaviour
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
-rw-r--r-- | lib/private/Dashboard/Manager.php | 11 | ||||
-rw-r--r-- | lib/public/Dashboard/IIconWidget.php | 4 | ||||
-rw-r--r-- | lib/public/Dashboard/IWidget.php | 14 |
3 files changed, 24 insertions, 5 deletions
diff --git a/lib/private/Dashboard/Manager.php b/lib/private/Dashboard/Manager.php index 45038b87f90..d4a9eb189ff 100644 --- a/lib/private/Dashboard/Manager.php +++ b/lib/private/Dashboard/Manager.php @@ -25,11 +25,12 @@ class Manager implements IManager { /** @var array<string, IWidget> */ private array $widgets = []; - private ContainerInterface $serverContainer; private ?IAppManager $appManager = null; - public function __construct(ContainerInterface $serverContainer) { - $this->serverContainer = $serverContainer; + public function __construct( + private ContainerInterface $serverContainer, + private LoggerInterface $logger, + ) { } private function registerWidget(IWidget $widget): void { @@ -37,6 +38,10 @@ class Manager implements IManager { throw new InvalidArgumentException('Dashboard widget with this id has already been registered'); } + if (!preg_match('/^[a-z][a-z0-9\-_]*$/', $widget->getId())) { + $this->logger->debug('Deprecated dashboard widget ID provided: "' . $widget->getId() . '" [ ' . get_class($widget) . ' ]. Please use a-z, 0-9, - and _ only, starting with a-z'); + } + $this->widgets[$widget->getId()] = $widget; } diff --git a/lib/public/Dashboard/IIconWidget.php b/lib/public/Dashboard/IIconWidget.php index c6cfd03e0ff..203a89279b0 100644 --- a/lib/public/Dashboard/IIconWidget.php +++ b/lib/public/Dashboard/IIconWidget.php @@ -14,7 +14,9 @@ namespace OCP\Dashboard; */ interface IIconWidget extends IWidget { /** - * Get the absolute url for the widget icon + * Get the absolute url for the widget icon (should be colored black or not have a color) + * + * The icon will be inverted automatically in mobile clients and when using dark mode * * @return string * @since 25.0.0 diff --git a/lib/public/Dashboard/IWidget.php b/lib/public/Dashboard/IWidget.php index 134758f02c6..c6bac98cae2 100644 --- a/lib/public/Dashboard/IWidget.php +++ b/lib/public/Dashboard/IWidget.php @@ -15,7 +15,12 @@ namespace OCP\Dashboard; */ interface IWidget { /** - * @return string Unique id that identifies the widget, e.g. the app id + * Get a unique identifier for the widget + * + * To ensure uniqueness, it is recommended to user the app id or start with the + * app id followed by a dash. + * + * @return string Unique id that identifies the widget, e.g. the app id. Only use alphanumeric characters, dash and underscore * @since 20.0.0 */ public function getId(): string; @@ -33,6 +38,13 @@ interface IWidget { public function getOrder(): int; /** + * CSS class that shows the widget icon (should be colored black or not have a color) + * + * The icon will be inverted automatically in mobile clients and when using dark mode. + * Therefore, it is NOT recommended to use a css class that sets the background with: + * `var(--icon-…)` as those will adapt to dark/bright mode in the web and still be inverted + * resulting in a dark icon on dark background. + * * @return string css class that displays an icon next to the widget title * @since 20.0.0 */ |