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
*
* @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;

View File

@ -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() {

View File

@ -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()]);
}

View File

@ -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()));
}
}

View File

@ -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);
}
/**