diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2023-01-30 09:56:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-30 09:56:36 +0100 |
commit | de415fbb15d6c5cceca7b05261947d573a7a512c (patch) | |
tree | 8c436e6e9e269cd45c312f211f285026063666e2 | |
parent | 97e6fe4b4682f0dfe0d96851494a792ec1934d89 (diff) | |
parent | 959e2aaa173440d090af95994f81389169806a41 (diff) | |
download | nextcloud-server-de415fbb15d6c5cceca7b05261947d573a7a512c.tar.gz nextcloud-server-de415fbb15d6c5cceca7b05261947d573a7a512c.zip |
Merge pull request #36348 from nextcloud/bugfix/noid/fix-primary-color-usage-in-emails-and-federation
Fix primary color usage in emails and federation
-rw-r--r-- | apps/federatedfilesharing/lib/Settings/Personal.php | 36 | ||||
-rw-r--r-- | apps/theming/lib/ThemingDefaults.php | 9 | ||||
-rw-r--r-- | lib/private/Mail/EMailTemplate.php | 6 | ||||
-rw-r--r-- | lib/public/Defaults.php | 24 | ||||
-rw-r--r-- | tests/lib/Mail/EMailTemplateTest.php | 8 |
5 files changed, 53 insertions, 30 deletions
diff --git a/apps/federatedfilesharing/lib/Settings/Personal.php b/apps/federatedfilesharing/lib/Settings/Personal.php index bd44e3d970b..18189f4cde7 100644 --- a/apps/federatedfilesharing/lib/Settings/Personal.php +++ b/apps/federatedfilesharing/lib/Settings/Personal.php @@ -1,4 +1,7 @@ <?php + +declare(strict_types=1); + /** * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> * @@ -29,7 +32,7 @@ namespace OCA\FederatedFileSharing\Settings; use OCA\FederatedFileSharing\FederatedShareProvider; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; -use OCP\IL10N; +use OCP\Defaults; use OCP\IUserSession; use OCP\IURLGenerator; use OCP\Settings\ISettings; @@ -37,22 +40,19 @@ use OCP\Settings\ISettings; class Personal implements ISettings { private FederatedShareProvider $federatedShareProvider; private IUserSession $userSession; - private IL10N $l; - private \OC_Defaults $defaults; + private Defaults $defaults; private IInitialState $initialState; private IURLGenerator $urlGenerator; public function __construct( - FederatedShareProvider $federatedShareProvider, # + FederatedShareProvider $federatedShareProvider, IUserSession $userSession, - IL10N $l, - \OC_Defaults $defaults, + Defaults $defaults, IInitialState $initialState, IURLGenerator $urlGenerator ) { $this->federatedShareProvider = $federatedShareProvider; $this->userSession = $userSession; - $this->l = $l; $this->defaults = $defaults; $this->initialState = $initialState; $this->urlGenerator = $urlGenerator; @@ -62,35 +62,25 @@ class Personal implements ISettings { * @return TemplateResponse returns the instance with all parameters set, ready to be rendered * @since 9.1 */ - public function getForm() { + public function getForm(): TemplateResponse { $cloudID = $this->userSession->getUser()->getCloudId(); $url = 'https://nextcloud.com/sharing#' . $cloudID; - $parameters = [ - 'message_with_URL' => $this->l->t('Share with me through my #Nextcloud Federated Cloud ID, see %s', [$url]), - 'message_without_URL' => $this->l->t('Share with me through my #Nextcloud Federated Cloud ID', [$cloudID]), - 'logoPath' => $this->defaults->getLogo(), - 'reference' => $url, - 'cloudId' => $cloudID, - 'color' => $this->defaults->getColorPrimary(), - 'textColor' => "#ffffff", - ]; - - $this->initialState->provideInitialState('color', $this->defaults->getColorPrimary()); - $this->initialState->provideInitialState('textColor', '#fffff'); + $this->initialState->provideInitialState('color', $this->defaults->getDefaultColorPrimary()); + $this->initialState->provideInitialState('textColor', $this->defaults->getDefaultTextColorPrimary()); $this->initialState->provideInitialState('logoPath', $this->defaults->getLogo()); $this->initialState->provideInitialState('reference', $url); $this->initialState->provideInitialState('cloudId', $cloudID); $this->initialState->provideInitialState('docUrlFederated', $this->urlGenerator->linkToDocs('user-sharing-federated')); - return new TemplateResponse('federatedfilesharing', 'settings-personal', $parameters, ''); + return new TemplateResponse('federatedfilesharing', 'settings-personal', [], TemplateResponse::RENDER_AS_BLANK); } /** * @return string the section ID, e.g. 'sharing' * @since 9.1 */ - public function getSection() { + public function getSection(): ?string { if ($this->federatedShareProvider->isIncomingServer2serverShareEnabled() || $this->federatedShareProvider->isIncomingServer2serverGroupShareEnabled()) { return 'sharing'; @@ -106,7 +96,7 @@ class Personal implements ISettings { * E.g.: 70 * @since 9.1 */ - public function getPriority() { + public function getPriority(): int { return 40; } } diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index afec58dc3a3..6cb204d1b1b 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -497,6 +497,15 @@ class ThemingDefaults extends \OC_Defaults { } /** + * Color of text in the header and primary buttons + * + * @return string + */ + public function getDefaultTextColorPrimary() { + return $this->util->invertTextColor($this->getDefaultColorPrimary()) ? '#000000' : '#ffffff'; + } + + /** * Has the admin disabled user customization */ public function isUserThemingDisabled(): bool { diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php index 7ec2b46bad3..40738623c19 100644 --- a/lib/private/Mail/EMailTemplate.php +++ b/lib/private/Mail/EMailTemplate.php @@ -380,7 +380,7 @@ EOF; $this->headerAdded = true; $logoUrl = $this->urlGenerator->getAbsoluteURL($this->themingDefaults->getLogo(false)); - $this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl, $this->themingDefaults->getName()]); + $this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getDefaultColorPrimary(), $logoUrl, $this->themingDefaults->getName()]); } /** @@ -555,7 +555,7 @@ EOF; $this->ensureBodyIsOpened(); $this->ensureBodyListClosed(); - $color = $this->themingDefaults->getColorPrimary(); + $color = $this->themingDefaults->getDefaultColorPrimary(); $textColor = $this->themingDefaults->getTextColorPrimary(); $this->htmlBody .= vsprintf($this->buttonGroup, [$color, $color, $urlLeft, $color, $textColor, $textColor, $textLeft, $urlRight, $textRight]); @@ -586,7 +586,7 @@ EOF; $text = htmlspecialchars($text); } - $color = $this->themingDefaults->getColorPrimary(); + $color = $this->themingDefaults->getDefaultColorPrimary(); $textColor = $this->themingDefaults->getTextColorPrimary(); $this->htmlBody .= vsprintf($this->button, [$color, $color, $url, $color, $textColor, $textColor, $text]); diff --git a/lib/public/Defaults.php b/lib/public/Defaults.php index cb04d62df0d..a295db120ad 100644 --- a/lib/public/Defaults.php +++ b/lib/public/Defaults.php @@ -206,6 +206,18 @@ class Defaults { } /** + * Return the default color primary + * @return string + * @since 25.0.4 + */ + public function getDefaultColorPrimary(): string { + if (method_exists($this->defaults, 'getDefaultColorPrimary')) { + return $this->defaults->getDefaultColorPrimary(); + } + return $this->defaults->getColorPrimary(); + } + + /** * @param string $key * @return string URL to doc with key * @since 12.0.0 @@ -231,4 +243,16 @@ class Defaults { public function getTextColorPrimary(): string { return $this->defaults->getTextColorPrimary(); } + + /** + * Returns primary color + * @return string + * @since 25.0.4 + */ + public function getDefaultTextColorPrimary(): string { + if (method_exists($this->defaults, 'getDefaultTextColorPrimary')) { + return $this->defaults->getDefaultTextColorPrimary(); + } + return $this->defaults->getTextColorPrimary(); + } } diff --git a/tests/lib/Mail/EMailTemplateTest.php b/tests/lib/Mail/EMailTemplateTest.php index 74f44051988..284c53e73b8 100644 --- a/tests/lib/Mail/EMailTemplateTest.php +++ b/tests/lib/Mail/EMailTemplateTest.php @@ -63,7 +63,7 @@ class EMailTemplateTest extends TestCase { public function testEMailTemplateCustomFooter() { $this->defaults ->expects($this->any()) - ->method('getColorPrimary') + ->method('getDefaultColorPrimary') ->willReturn('#0082c9'); $this->defaults ->expects($this->any()) @@ -104,7 +104,7 @@ class EMailTemplateTest extends TestCase { public function testEMailTemplateDefaultFooter() { $this->defaults ->expects($this->any()) - ->method('getColorPrimary') + ->method('getDefaultColorPrimary') ->willReturn('#0082c9'); $this->defaults ->expects($this->any()) @@ -147,7 +147,7 @@ class EMailTemplateTest extends TestCase { public function testEMailTemplateSingleButton() { $this->defaults ->expects($this->any()) - ->method('getColorPrimary') + ->method('getDefaultColorPrimary') ->willReturn('#0082c9'); $this->defaults ->expects($this->any()) @@ -192,7 +192,7 @@ class EMailTemplateTest extends TestCase { public function testEMailTemplateAlternativePlainTexts() { $this->defaults ->expects($this->any()) - ->method('getColorPrimary') + ->method('getDefaultColorPrimary') ->willReturn('#0082c9'); $this->defaults ->expects($this->any()) |