Quellcode durchsuchen

Add function to request SVG or regular fallback image

Fixes https://github.com/nextcloud/server/issues/4647

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
tags/v12.0.0beta2
Lukas Reschke vor 7 Jahren
Ursprung
Commit
099234cf12
Es ist kein Account mit der E-Mail-Adresse des Committers verbunden

+ 8
- 2
apps/theming/lib/ThemingDefaults.php Datei anzeigen

@@ -129,9 +129,10 @@ class ThemingDefaults extends \OC_Defaults {
/**
* Themed logo url
*
* @param bool $useSvg Whether to point to the SVG image or a fallback
* @return string
*/
public function getLogo() {
public function getLogo($useSvg = true) {
$logo = $this->config->getAppValue('theming', 'logoMime', false);

$logoExists = true;
@@ -144,7 +145,12 @@ class ThemingDefaults extends \OC_Defaults {
$cacheBusterCounter = $this->config->getAppValue('theming', 'cachebuster', '0');

if(!$logo || !$logoExists) {
return $this->urlGenerator->imagePath('core','logo.svg') . '?v=' . $cacheBusterCounter;
if($useSvg) {
$logo = $this->urlGenerator->imagePath('core', 'logo.svg');
} else {
$logo = $this->urlGenerator->imagePath('core', 'logo.png');
}
return $logo . '?v=' . $cacheBusterCounter;
}

return $this->urlGenerator->linkToRoute('theming.Theming.getLogo') . '?v=' . $cacheBusterCounter;

+ 11
- 3
apps/theming/tests/ThemingDefaultsTest.php Datei anzeigen

@@ -431,7 +431,7 @@ class ThemingDefaultsTest extends TestCase {
$this->assertEquals('custom-background?v=0', $this->template->getBackground());
}

public function testGetLogoDefault() {
private function getLogoHelper($withName, $useSvg) {
$this->appData->expects($this->once())
->method('getFolder')
->willThrowException(new NotFoundException());
@@ -452,9 +452,17 @@ class ThemingDefaultsTest extends TestCase {
->willThrowException(new \Exception());
$this->urlGenerator->expects($this->once())
->method('imagePath')
->with('core', 'logo.svg')
->with('core', $withName)
->willReturn('core-logo');
$this->assertEquals('core-logo?v=0', $this->template->getLogo());
$this->assertEquals('core-logo?v=0', $this->template->getLogo($useSvg));
}

public function testGetLogoDefaultWithSvg() {
$this->getLogoHelper('logo.svg', true);
}

public function testGetLogoDefaultWithoutSvg() {
$this->getLogoHelper('logo.png', false);
}

public function testGetLogoCustom() {

+ 1
- 1
lib/private/Mail/EMailTemplate.php Datei anzeigen

@@ -357,7 +357,7 @@ EOF;
}
$this->headerAdded = true;

$logoUrl = $this->urlGenerator->getAbsoluteURL($this->themingDefaults->getLogo());
$logoUrl = $this->urlGenerator->getAbsoluteURL($this->themingDefaults->getLogo(false));
$this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl, $this->themingDefaults->getName()]);
}


+ 10
- 7
lib/private/legacy/defaults.php Datei anzeigen

@@ -47,9 +47,8 @@ class OC_Defaults {
private $defaultSlogan;
private $defaultLogoClaim;
private $defaultColorPrimary;
private $defaultLogoUrl;

function __construct() {
public function __construct() {
$this->l = \OC::$server->getL10N('lib');

$this->defaultEntity = 'Nextcloud'; /* e.g. company name, used for footers and copyright notices */
@@ -65,8 +64,6 @@ class OC_Defaults {
$this->defaultSlogan = $this->l->t('a safe home for all your data');
$this->defaultLogoClaim = '';
$this->defaultColorPrimary = '#0082c9';
$this->defaultLogoUrl = \OC::$server->getURLGenerator()->imagePath('core','logo.svg');
$this->defaultLogoUrl .= '?v=' . hash('sha1', implode('.', \OCP\Util::getVersion()));

$themePath = OC::$SERVERROOT . '/themes/' . OC_Util::getTheme() . '/defaults.php';
if (file_exists($themePath)) {
@@ -307,13 +304,19 @@ class OC_Defaults {
/**
* Themed logo url
*
* @param bool $useSvg Whether to point to the SVG image or a fallback
* @return string
*/
public function getLogo() {
public function getLogo($useSvg = true) {
if ($this->themeExist('getLogo')) {
return $this->theme->getLogo();
return $this->theme->getLogo($useSvg);
}

return $this->defaultLogoUrl;
if($useSvg) {
$logo = \OC::$server->getURLGenerator()->imagePath('core', 'logo.svg');
} else {
$logo = \OC::$server->getURLGenerator()->imagePath('core', 'logo.png');
}
return $logo . '?v=' . hash('sha1', implode('.', \OCP\Util::getVersion()));
}
}

+ 3
- 2
lib/public/Defaults.php Datei anzeigen

@@ -178,11 +178,12 @@ class Defaults {
/**
* Themed logo url
*
* @param bool $useSvg Whether to point to the SVG image or a fallback
* @return string
* @since 12.0.0
*/
public function getLogo() {
return $this->defaults->getLogo();
public function getLogo($useSvg = true) {
return $this->defaults->getLogo($useSvg);
}

/**

Laden…
Abbrechen
Speichern