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>
This commit is contained in:
Lukas Reschke 2017-05-08 14:51:55 +02:00
parent 6acae94a02
commit 099234cf12
No known key found for this signature in database
GPG Key ID: B9F6980CF6E759B1
5 changed files with 33 additions and 15 deletions

View File

@ -129,9 +129,10 @@ class ThemingDefaults extends \OC_Defaults {
/** /**
* Themed logo url * Themed logo url
* *
* @param bool $useSvg Whether to point to the SVG image or a fallback
* @return string * @return string
*/ */
public function getLogo() { public function getLogo($useSvg = true) {
$logo = $this->config->getAppValue('theming', 'logoMime', false); $logo = $this->config->getAppValue('theming', 'logoMime', false);
$logoExists = true; $logoExists = true;
@ -144,7 +145,12 @@ class ThemingDefaults extends \OC_Defaults {
$cacheBusterCounter = $this->config->getAppValue('theming', 'cachebuster', '0'); $cacheBusterCounter = $this->config->getAppValue('theming', 'cachebuster', '0');
if(!$logo || !$logoExists) { 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; return $this->urlGenerator->linkToRoute('theming.Theming.getLogo') . '?v=' . $cacheBusterCounter;

View File

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

View File

@ -357,7 +357,7 @@ EOF;
} }
$this->headerAdded = true; $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()]); $this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl, $this->themingDefaults->getName()]);
} }

View File

@ -47,9 +47,8 @@ class OC_Defaults {
private $defaultSlogan; private $defaultSlogan;
private $defaultLogoClaim; private $defaultLogoClaim;
private $defaultColorPrimary; private $defaultColorPrimary;
private $defaultLogoUrl;
function __construct() { public function __construct() {
$this->l = \OC::$server->getL10N('lib'); $this->l = \OC::$server->getL10N('lib');
$this->defaultEntity = 'Nextcloud'; /* e.g. company name, used for footers and copyright notices */ $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->defaultSlogan = $this->l->t('a safe home for all your data');
$this->defaultLogoClaim = ''; $this->defaultLogoClaim = '';
$this->defaultColorPrimary = '#0082c9'; $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'; $themePath = OC::$SERVERROOT . '/themes/' . OC_Util::getTheme() . '/defaults.php';
if (file_exists($themePath)) { if (file_exists($themePath)) {
@ -307,13 +304,19 @@ class OC_Defaults {
/** /**
* Themed logo url * Themed logo url
* *
* @param bool $useSvg Whether to point to the SVG image or a fallback
* @return string * @return string
*/ */
public function getLogo() { public function getLogo($useSvg = true) {
if ($this->themeExist('getLogo')) { 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()));
} }
} }

View File

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