Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2022-09-28 05:35:51 +0300
committerChristopher Ng <chrng8@gmail.com>2022-10-05 09:19:08 +0300
commite962d3fba4430f3a13cda70db9009784fc24112a (patch)
treeb5fb729a2b0863ecefee40357dd379634226fe10
parent89635e894986fd63d6acab37e78af80ced79505e (diff)
Use color preset of shipped background as primary color
Signed-off-by: Christopher Ng <chrng8@gmail.com>
-rw-r--r--apps/theming/css/default.css20
-rw-r--r--apps/theming/lib/Themes/DefaultTheme.php12
-rw-r--r--apps/theming/lib/ThemingDefaults.php83
-rw-r--r--apps/theming/tests/Service/ThemesServiceTest.php10
-rw-r--r--apps/theming/tests/Settings/PersonalTest.php8
-rw-r--r--apps/theming/tests/Themes/DefaultThemeTest.php3
-rw-r--r--apps/theming/tests/Themes/DyslexiaFontTest.php6
-rw-r--r--apps/theming/tests/ThemingDefaultsTest.php11
-rw-r--r--lib/private/Server.php1
9 files changed, 91 insertions, 63 deletions
diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css
index e7403ee69cc..56c2e41781f 100644
--- a/apps/theming/css/default.css
+++ b/apps/theming/css/default.css
@@ -53,19 +53,19 @@
--background-invert-if-dark: no;
--background-invert-if-bright: invert(100%);
--image-main-background: url('/core/img/app-background.jpg');
- --color-primary: #0082c9;
+ --color-primary: #00639a;
--color-primary-text: #ffffff;
- --color-primary-hover: #329bd3;
- --color-primary-light: #e5f2f9;
- --color-primary-light-text: #003450;
- --color-primary-light-hover: #dbe7ee;
+ --color-primary-hover: #3282ae;
+ --color-primary-light: #e5eff4;
+ --color-primary-light-text: #00273d;
+ --color-primary-light-hover: #dbe4e9;
--color-primary-text-dark: #ededed;
- --color-primary-element: #0082c9;
+ --color-primary-element: #00639a;
--color-primary-element-text: #ffffff;
- --color-primary-element-hover: #329bd3;
- --color-primary-element-light: #e5f2f9;
- --color-primary-element-light-text: #003450;
- --color-primary-element-light-hover: #dbe7ee;
+ --color-primary-element-hover: #3282ae;
+ --color-primary-element-light: #e5eff4;
+ --color-primary-element-light-text: #00273d;
+ --color-primary-element-light-hover: #dbe4e9;
--color-primary-element-text-dark: #ededed;
--gradient-primary-background: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-hover) 100%);
}
diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php
index 203e03757c8..d338c40ac5e 100644
--- a/apps/theming/lib/Themes/DefaultTheme.php
+++ b/apps/theming/lib/Themes/DefaultTheme.php
@@ -27,6 +27,7 @@ namespace OCA\Theming\Themes;
use OCA\Theming\AppInfo\Application;
use OCA\Theming\ImageManager;
use OCA\Theming\ITheme;
+use OCA\Theming\Service\BackgroundService;
use OCA\Theming\ThemingDefaults;
use OCA\Theming\Util;
use OCP\App\IAppManager;
@@ -41,6 +42,7 @@ class DefaultTheme implements ITheme {
public Util $util;
public ThemingDefaults $themingDefaults;
+ public IUserSession $userSession;
public IURLGenerator $urlGenerator;
public ImageManager $imageManager;
public IConfig $config;
@@ -50,12 +52,14 @@ class DefaultTheme implements ITheme {
public function __construct(Util $util,
ThemingDefaults $themingDefaults,
+ IUserSession $userSession,
IURLGenerator $urlGenerator,
ImageManager $imageManager,
IConfig $config,
IL10N $l) {
$this->util = $util;
$this->themingDefaults = $themingDefaults;
+ $this->userSession = $userSession;
$this->urlGenerator = $urlGenerator;
$this->imageManager = $imageManager;
$this->config = $config;
@@ -221,19 +225,15 @@ class DefaultTheme implements ITheme {
}
$appManager = Server::get(IAppManager::class);
- $userSession = Server::get(IUserSession::class);
- $user = $userSession->getUser();
+ $user = $this->userSession->getUser();
if ($appManager->isEnabledForUser(Application::APP_ID) && $user !== null) {
$themingBackground = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'background', 'default');
if ($themingBackground === 'custom') {
- // Custom
$variables['--image-main-background'] = "url('" . $this->urlGenerator->linkToRouteAbsolute('theming.userTheme.getBackground') . "')";
- } elseif ($themingBackground !== 'default' && substr($themingBackground, 0, 1) !== '#') {
- // Shipped background
+ } elseif (isset(BackgroundService::SHIPPED_BACKGROUNDS[$themingBackground])) {
$variables['--image-main-background'] = "url('" . $this->urlGenerator->linkTo(Application::APP_ID, "/img/background/$themingBackground") . "')";
} elseif (substr($themingBackground, 0, 1) === '#') {
- // Color
unset($variables['--image-main-background']);
$variables['--color-main-background-plain'] = $this->primaryColor;
}
diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php
index 3d7aaee2064..61001770302 100644
--- a/apps/theming/lib/ThemingDefaults.php
+++ b/apps/theming/lib/ThemingDefaults.php
@@ -40,6 +40,8 @@
*/
namespace OCA\Theming;
+use OCA\Theming\AppInfo\Application;
+use OCA\Theming\Service\BackgroundService;
use OCP\App\AppPathNotFoundException;
use OCP\App\IAppManager;
use OCP\Files\NotFoundException;
@@ -49,47 +51,31 @@ use OCP\IConfig;
use OCP\IL10N;
use OCP\INavigationManager;
use OCP\IURLGenerator;
+use OCP\IUserSession;
class ThemingDefaults extends \OC_Defaults {
- /** @var IConfig */
- private $config;
- /** @var IL10N */
- private $l;
- /** @var ImageManager */
- private $imageManager;
- /** @var IURLGenerator */
- private $urlGenerator;
- /** @var ICacheFactory */
- private $cacheFactory;
- /** @var Util */
- private $util;
- /** @var IAppManager */
- private $appManager;
- /** @var INavigationManager */
- private $navigationManager;
-
- /** @var string */
- private $name;
- /** @var string */
- private $title;
- /** @var string */
- private $entity;
- /** @var string */
- private $productName;
- /** @var string */
- private $url;
- /** @var string */
- private $color;
-
- /** @var string */
- private $iTunesAppId;
- /** @var string */
- private $iOSClientUrl;
- /** @var string */
- private $AndroidClientUrl;
- /** @var string */
- private $FDroidClientUrl;
+ private IConfig $config;
+ private IL10N $l;
+ private ImageManager $imageManager;
+ private IUserSession $userSession;
+ private IURLGenerator $urlGenerator;
+ private ICacheFactory $cacheFactory;
+ private Util $util;
+ private IAppManager $appManager;
+ private INavigationManager $navigationManager;
+
+ private string $name;
+ private string $title;
+ private string $entity;
+ private string $productName;
+ private string $url;
+ private string $color;
+
+ private string $iTunesAppId;
+ private string $iOSClientUrl;
+ private string $AndroidClientUrl;
+ private string $FDroidClientUrl;
/**
* ThemingDefaults constructor.
@@ -97,6 +83,7 @@ class ThemingDefaults extends \OC_Defaults {
* @param IConfig $config
* @param IL10N $l
* @param ImageManager $imageManager
+ * @param IUserSession $userSession
* @param IURLGenerator $urlGenerator
* @param ICacheFactory $cacheFactory
* @param Util $util
@@ -104,6 +91,7 @@ class ThemingDefaults extends \OC_Defaults {
*/
public function __construct(IConfig $config,
IL10N $l,
+ IUserSession $userSession,
IURLGenerator $urlGenerator,
ICacheFactory $cacheFactory,
Util $util,
@@ -115,6 +103,7 @@ class ThemingDefaults extends \OC_Defaults {
$this->config = $config;
$this->l = $l;
$this->imageManager = $imageManager;
+ $this->userSession = $userSession;
$this->urlGenerator = $urlGenerator;
$this->cacheFactory = $cacheFactory;
$this->util = $util;
@@ -229,10 +218,24 @@ class ThemingDefaults extends \OC_Defaults {
* @return string
*/
public function getColorPrimary() {
- $color = $this->config->getAppValue('theming', 'color', $this->color);
+ $user = $this->userSession->getUser();
+ $color = $this->config->getAppValue(Application::APP_ID, 'color', '');
+
+ if ($color === '' && !empty($user)) {
+ $themingBackground = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'background', 'default');
+ if (isset(BackgroundService::SHIPPED_BACKGROUNDS[$themingBackground]['primary_color'])) {
+ $this->increaseCacheBuster();
+ return BackgroundService::SHIPPED_BACKGROUNDS[$themingBackground]['primary_color'];
+ } else if ($themingBackground === 'default') {
+ $this->increaseCacheBuster();
+ return BackgroundService::SHIPPED_BACKGROUNDS['kamil-porembinski-clouds.jpg']['primary_color'];
+ }
+ }
+
if (!preg_match('/^\#([0-9a-f]{3}|[0-9a-f]{6})$/i', $color)) {
- $color = '#0082c9';
+ return BackgroundService::SHIPPED_BACKGROUNDS['kamil-porembinski-clouds.jpg']['primary_color'];
}
+
return $color;
}
diff --git a/apps/theming/tests/Service/ThemesServiceTest.php b/apps/theming/tests/Service/ThemesServiceTest.php
index 3be8881669a..5a2907ec073 100644
--- a/apps/theming/tests/Service/ThemesServiceTest.php
+++ b/apps/theming/tests/Service/ThemesServiceTest.php
@@ -156,7 +156,7 @@ class ThemesServiceTest extends TestCase {
->method('getUserValue')
->with('user', Application::APP_ID, 'enabled-themes', '[]')
->willReturn(json_encode($enabledThemes));
-
+
$this->assertEquals($expectedEnabled, $this->themesService->disableTheme($this->themes[$toDisable]));
}
@@ -190,7 +190,7 @@ class ThemesServiceTest extends TestCase {
->method('getUserValue')
->with('user', Application::APP_ID, 'enabled-themes', '[]')
->willReturn(json_encode($enabledThemes));
-
+
$this->assertEquals($expected, $this->themesService->isEnabled($this->themes[$themeId]));
}
@@ -281,6 +281,7 @@ class ThemesServiceTest extends TestCase {
'default' => new DefaultTheme(
$util,
$this->themingDefaults,
+ $this->userSession,
$urlGenerator,
$imageManager,
$this->config,
@@ -289,6 +290,7 @@ class ThemesServiceTest extends TestCase {
'light' => new LightTheme(
$util,
$this->themingDefaults,
+ $this->userSession,
$urlGenerator,
$imageManager,
$this->config,
@@ -297,6 +299,7 @@ class ThemesServiceTest extends TestCase {
'dark' => new DarkTheme(
$util,
$this->themingDefaults,
+ $this->userSession,
$urlGenerator,
$imageManager,
$this->config,
@@ -305,6 +308,7 @@ class ThemesServiceTest extends TestCase {
'light-highcontrast' => new HighContrastTheme(
$util,
$this->themingDefaults,
+ $this->userSession,
$urlGenerator,
$imageManager,
$this->config,
@@ -313,6 +317,7 @@ class ThemesServiceTest extends TestCase {
'dark-highcontrast' => new DarkHighContrastTheme(
$util,
$this->themingDefaults,
+ $this->userSession,
$urlGenerator,
$imageManager,
$this->config,
@@ -321,6 +326,7 @@ class ThemesServiceTest extends TestCase {
'opendyslexic' => new DyslexiaFont(
$util,
$this->themingDefaults,
+ $this->userSession,
$urlGenerator,
$imageManager,
$this->config,
diff --git a/apps/theming/tests/Settings/PersonalTest.php b/apps/theming/tests/Settings/PersonalTest.php
index 8e121c0a057..0cb289cb86a 100644
--- a/apps/theming/tests/Settings/PersonalTest.php
+++ b/apps/theming/tests/Settings/PersonalTest.php
@@ -45,6 +45,7 @@ use OCP\AppFramework\Services\IInitialState;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
+use OCP\IUserSession;
use Test\TestCase;
class PersonalTest extends TestCase {
@@ -128,6 +129,7 @@ class PersonalTest extends TestCase {
private function initThemes() {
$util = $this->createMock(Util::class);
$themingDefaults = $this->createMock(ThemingDefaults::class);
+ $userSession = $this->createMock(IUserSession::class);
$urlGenerator = $this->createMock(IURLGenerator::class);
$imageManager = $this->createMock(ImageManager::class);
$config = $this->createMock(IConfig::class);
@@ -141,6 +143,7 @@ class PersonalTest extends TestCase {
'default' => new DefaultTheme(
$util,
$themingDefaults,
+ $userSession,
$urlGenerator,
$imageManager,
$config,
@@ -149,6 +152,7 @@ class PersonalTest extends TestCase {
'light' => new LightTheme(
$util,
$themingDefaults,
+ $userSession,
$urlGenerator,
$imageManager,
$config,
@@ -157,6 +161,7 @@ class PersonalTest extends TestCase {
'dark' => new DarkTheme(
$util,
$themingDefaults,
+ $userSession,
$urlGenerator,
$imageManager,
$config,
@@ -165,6 +170,7 @@ class PersonalTest extends TestCase {
'light-highcontrast' => new HighContrastTheme(
$util,
$themingDefaults,
+ $userSession,
$urlGenerator,
$imageManager,
$config,
@@ -173,6 +179,7 @@ class PersonalTest extends TestCase {
'dark-highcontrast' => new DarkHighContrastTheme(
$util,
$themingDefaults,
+ $userSession,
$urlGenerator,
$imageManager,
$config,
@@ -181,6 +188,7 @@ class PersonalTest extends TestCase {
'opendyslexic' => new DyslexiaFont(
$util,
$themingDefaults,
+ $userSession,
$urlGenerator,
$imageManager,
$config,
diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php
index 84430360897..c1de2810396 100644
--- a/apps/theming/tests/Themes/DefaultThemeTest.php
+++ b/apps/theming/tests/Themes/DefaultThemeTest.php
@@ -32,6 +32,7 @@ use OCP\Files\IAppData;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
+use OCP\IUserSession;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@@ -52,6 +53,7 @@ class DefaultThemeTest extends TestCase {
protected function setUp(): void {
$this->themingDefaults = $this->createMock(ThemingDefaults::class);
+ $this->userSession = $this->createMock(IUserSession::class);
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->imageManager = $this->createMock(ImageManager::class);
$this->config = $this->createMock(IConfig::class);
@@ -85,6 +87,7 @@ class DefaultThemeTest extends TestCase {
$this->defaultTheme = new DefaultTheme(
$util,
$this->themingDefaults,
+ $this->userSession,
$this->urlGenerator,
$this->imageManager,
$this->config,
diff --git a/apps/theming/tests/Themes/DyslexiaFontTest.php b/apps/theming/tests/Themes/DyslexiaFontTest.php
index 30472aeb6f2..77eb77a2818 100644
--- a/apps/theming/tests/Themes/DyslexiaFontTest.php
+++ b/apps/theming/tests/Themes/DyslexiaFontTest.php
@@ -56,6 +56,7 @@ class DyslexiaFontTest extends TestCase {
protected function setUp(): void {
$this->themingDefaults = $this->createMock(ThemingDefaults::class);
+ $this->userSession = $this->createMock(IUserSession::class);
$this->imageManager = $this->createMock(ImageManager::class);
$this->config = $this->createMock(IConfig::class);
$this->l10n = $this->createMock(IL10N::class);
@@ -93,6 +94,7 @@ class DyslexiaFontTest extends TestCase {
$this->dyslexiaFont = new DyslexiaFont(
$util,
$this->themingDefaults,
+ $this->userSession,
$this->urlGenerator,
$this->imageManager,
$this->config,
@@ -142,7 +144,7 @@ class DyslexiaFontTest extends TestCase {
/**
* @dataProvider dataTestGetCustomCss
- *
+ *
* Ensure the fonts are always loaded from the web root
* despite having url rewriting enabled or not
*
@@ -155,7 +157,7 @@ class DyslexiaFontTest extends TestCase {
->method('getSystemValue')
->with('htaccess.IgnoreFrontController', false)
->willReturn($prettyUrlsEnabled);
-
+
$this->assertStringContainsString("'$webRoot/apps/theming/fonts/OpenDyslexic-Regular.woff'", $this->dyslexiaFont->getCustomCss());
$this->assertStringNotContainsString('index.php', $this->dyslexiaFont->getCustomCss());
}
diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php
index 20c153f1e96..5aa36211053 100644
--- a/apps/theming/tests/ThemingDefaultsTest.php
+++ b/apps/theming/tests/ThemingDefaultsTest.php
@@ -46,6 +46,7 @@ use OCP\IConfig;
use OCP\IL10N;
use OCP\INavigationManager;
use OCP\IURLGenerator;
+use OCP\IUserSession;
use Test\TestCase;
class ThemingDefaultsTest extends TestCase {
@@ -53,6 +54,8 @@ class ThemingDefaultsTest extends TestCase {
private $config;
/** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
private $l10n;
+ /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
+ private $userSession;
/** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
private $urlGenerator;
/** @var \OC_Defaults|\PHPUnit\Framework\MockObject\MockObject */
@@ -78,6 +81,7 @@ class ThemingDefaultsTest extends TestCase {
parent::setUp();
$this->config = $this->createMock(IConfig::class);
$this->l10n = $this->createMock(IL10N::class);
+ $this->userSession = $this->createMock(IUserSession::class);
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->cacheFactory = $this->createMock(ICacheFactory::class);
$this->cache = $this->createMock(ICache::class);
@@ -93,6 +97,7 @@ class ThemingDefaultsTest extends TestCase {
$this->template = new ThemingDefaults(
$this->config,
$this->l10n,
+ $this->userSession,
$this->urlGenerator,
$this->cacheFactory,
$this->util,
@@ -419,7 +424,7 @@ class ThemingDefaultsTest extends TestCase {
$this->config
->expects($this->once())
->method('getAppValue')
- ->with('theming', 'color', $this->defaults->getColorPrimary())
+ ->with('theming', 'color', null)
->willReturn($this->defaults->getColorPrimary());
$this->assertEquals($this->defaults->getColorPrimary(), $this->template->getColorPrimary());
@@ -429,7 +434,7 @@ class ThemingDefaultsTest extends TestCase {
$this->config
->expects($this->once())
->method('getAppValue')
- ->with('theming', 'color', $this->defaults->getColorPrimary())
+ ->with('theming', 'color', null)
->willReturn('#fff');
$this->assertEquals('#fff', $this->template->getColorPrimary());
@@ -542,7 +547,7 @@ class ThemingDefaultsTest extends TestCase {
->method('getAppValue')
->withConsecutive(
['theming', 'cachebuster', '0'],
- ['theming', 'color', $this->defaults->getColorPrimary()],
+ ['theming', 'color', null],
)->willReturnOnConsecutiveCalls(
'15',
$this->defaults->getColorPrimary(),
diff --git a/lib/private/Server.php b/lib/private/Server.php
index e7f4019e00b..a94e0d568b0 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -1222,6 +1222,7 @@ class Server extends ServerContainer implements IServerContainer {
return new ThemingDefaults(
$c->get(\OCP\IConfig::class),
$c->getL10N('theming'),
+ $c->get(IUserSession::class),
$c->get(IURLGenerator::class),
$c->get(ICacheFactory::class),
new Util($c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming')),