diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css index bf7ad0f89ccf9..fb541b7aca97f 100644 --- a/apps/theming/css/default.css +++ b/apps/theming/css/default.css @@ -59,10 +59,4 @@ --primary-invert-if-bright: no; --background-invert-if-dark: no; --background-invert-if-bright: invert(100%); - --image-logo: url('/core/img/logo/logo.png?v=0'); - --image-logoheader: url('/core/img/logo/logo.png?v=0'); - --image-favicon: url('/core/img/logo/logo.png?v=0'); - --image-background-size: cover; - --image-background: url('/core/img/background.png?v=0'); - --image-login-background: url('/core/img/background.png?v=0'); } diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php index d327b7db6d4b9..d141a5d324129 100644 --- a/apps/theming/lib/Themes/DefaultTheme.php +++ b/apps/theming/lib/Themes/DefaultTheme.php @@ -91,6 +91,7 @@ public function getCSSVariables(): array { $colorPrimaryLight = $this->util->mix($this->primaryColor, $colorMainBackground, -80); $hasCustomLogoHeader = $this->imageManager->hasImage('logo') || $this->imageManager->hasImage('logoheader'); + $hasCustomPrimaryColour = !empty($this->config->getAppValue('theming', 'color')); $variables = [ '--color-main-background' => $colorMainBackground, @@ -192,17 +193,25 @@ public function getCSSVariables(): array { ]; $backgroundDeleted = $this->config->getAppValue('theming', 'backgroundMime', '') === 'backgroundColor'; + // If primary as background has been request or if we have a custom primary colour + // let's not define the background image + if ($backgroundDeleted || $hasCustomPrimaryColour) { + $variables["--image-background-plain"] = 'true'; + } + + // Register image variables only if custom-defined foreach(['logo', 'logoheader', 'favicon', 'background'] as $image) { - // If primary as background has been request, let's not define the background image - if ($image === 'background' && $backgroundDeleted) { - $variables["--image-background-plain"] = 'true'; - continue; - } else if ($image === 'background') { - $variables['--image-background-size'] = 'cover'; + if ($this->imageManager->hasImage($image)) { + if ($image === 'background') { + // If background deleted is set, ignoring variable + if ($backgroundDeleted) { + continue; + } + $variables['--image-background-size'] = 'cover'; + } + $variables["--image-$image"] = "url('".$this->imageManager->getImageUrl($image)."')"; } - $variables["--image-$image"] = "url('".$this->imageManager->getImageUrl($image)."')"; } - $variables["--image-login-background"] = $variables["--image-background"]; if ($hasCustomLogoHeader) { $variables["--image-logoheader-custom"] = 'true'; diff --git a/apps/theming/tests/ImageManagerTest.php b/apps/theming/tests/ImageManagerTest.php index 0f22a774a3966..ead9ca113e6f9 100644 --- a/apps/theming/tests/ImageManagerTest.php +++ b/apps/theming/tests/ImageManagerTest.php @@ -307,7 +307,7 @@ public function testCleanup() { foreach ($folders as $index => $folder) { $folder->expects($this->any()) ->method('getName') - ->willReturn((string)$index); + ->willReturn("$index"); } $folders[0]->expects($this->once())->method('delete'); $folders[1]->expects($this->once())->method('delete'); diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php index 5086c5da8ee48..160efdba1426e 100644 --- a/apps/theming/tests/Themes/DefaultThemeTest.php +++ b/apps/theming/tests/Themes/DefaultThemeTest.php @@ -20,7 +20,7 @@ * along with this program. If not, see . * */ -namespace OCA\Theming\Tests; +namespace OCA\Theming\Tests\Service; use OC\App\AppManager; use OCA\Theming\ImageManager; @@ -68,23 +68,6 @@ protected function setUp(): void { ->method('getColorPrimary') ->willReturn('#0082c9'); - $this->imageManager->expects($this->any()) - ->method('getImageUrl') - ->willReturnCallback(function (string $name): string { - switch ($name) { - case 'logo': - case 'logoheader': - case 'favicon': - return '/core/img/logo/logo.png?v=0'; - case 'background': - case 'login-background': - return '/core/img/background.png?v=0'; - default: - return ''; - } - }); - - $this->l10n ->expects($this->any()) ->method('t')