aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2024-07-11 13:24:10 +0200
committernextcloud-command <nextcloud-command@users.noreply.github.com>2024-07-11 13:14:03 +0000
commit37d331233c2edd80bb4621942f94259ee82ad768 (patch)
tree5760ab7974dbc166c2ad04bee5c8eed30d30fab7
parent5368b935393c1bd7e192c35498eda9d76ad99ee8 (diff)
downloadnextcloud-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.php11
-rw-r--r--lib/public/Dashboard/IIconWidget.php4
-rw-r--r--lib/public/Dashboard/IWidget.php14
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
*/