@@ -28,6 +28,7 @@ namespace OCA\Theming; | |||
use OCP\IConfig; | |||
use OCP\IL10N; | |||
use OCP\IURLGenerator; | |||
use OCP\Files\IRootFolder; | |||
class ThemingDefaults extends \OC_Defaults { | |||
@@ -38,6 +39,8 @@ class ThemingDefaults extends \OC_Defaults { | |||
private $l; | |||
/** @var IURLGenerator */ | |||
private $urlGenerator; | |||
/** @var IRootFolder */ | |||
private $rootFolder; | |||
/** @var string */ | |||
private $name; | |||
/** @var string */ | |||
@@ -58,12 +61,14 @@ class ThemingDefaults extends \OC_Defaults { | |||
public function __construct(IConfig $config, | |||
IL10N $l, | |||
IURLGenerator $urlGenerator, | |||
\OC_Defaults $defaults | |||
\OC_Defaults $defaults, | |||
IRootFolder $rootFolder | |||
) { | |||
parent::__construct(); | |||
$this->config = $config; | |||
$this->l = $l; | |||
$this->urlGenerator = $urlGenerator; | |||
$this->rootFolder = $rootFolder; | |||
$this->name = $defaults->getName(); | |||
$this->url = $defaults->getBaseUrl(); | |||
@@ -113,6 +118,34 @@ class ThemingDefaults extends \OC_Defaults { | |||
return $this->config->getAppValue('theming', 'color', $this->color); | |||
} | |||
/** | |||
* Themed logo url | |||
* | |||
* @return string | |||
*/ | |||
public function getLogo() { | |||
$logo = $this->config->getAppValue('theming', 'logoMime'); | |||
if(!$logo || !$this->rootFolder->nodeExists('/themedinstancelogo')) { | |||
return $this->urlGenerator->imagePath('core','logo.svg'); | |||
} else { | |||
return $this->urlGenerator->linkToRoute('theming.Theming.getLogo'); | |||
} | |||
} | |||
/** | |||
* Themed background image url | |||
* | |||
* @return string | |||
*/ | |||
public function getBackground() { | |||
$backgroundLogo = $this->config->getAppValue('theming', 'backgroundMime'); | |||
if(!$backgroundLogo || !$this->rootFolder->nodeExists('/themedbackgroundlogo')) { | |||
return $this->urlGenerator->imagePath('core','background.jpg'); | |||
} else { | |||
return $this->urlGenerator->linkToRoute('theming.Theming.getLoginBackground'); | |||
} | |||
} | |||
/** | |||
* Increases the cache buster key | |||
*/ |
@@ -27,6 +27,7 @@ use OCA\Theming\ThemingDefaults; | |||
use OCP\IConfig; | |||
use OCP\IL10N; | |||
use OCP\IURLGenerator; | |||
use OCP\Files\IRootFolder; | |||
use Test\TestCase; | |||
class ThemingDefaultsTest extends TestCase { | |||
@@ -40,11 +41,17 @@ class ThemingDefaultsTest extends TestCase { | |||
private $defaults; | |||
/** @var ThemingDefaults */ | |||
private $template; | |||
/** @var IRootFolder */ | |||
private $rootFolder; | |||
public function setUp() { | |||
parent::setUp(); | |||
$this->config = $this->getMock('\\OCP\\IConfig'); | |||
$this->l10n = $this->getMock('\\OCP\\IL10N'); | |||
$this->urlGenerator = $this->getMock('\\OCP\\IURLGenerator'); | |||
$this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder') | |||
->disableOriginalConstructor() | |||
->getMock(); | |||
$this->defaults = $this->getMockBuilder('\\OC_Defaults') | |||
->disableOriginalConstructor() | |||
->getMock(); | |||
@@ -68,10 +75,11 @@ class ThemingDefaultsTest extends TestCase { | |||
$this->config, | |||
$this->l10n, | |||
$this->urlGenerator, | |||
$this->defaults | |||
$this->defaults, | |||
$this->rootFolder | |||
); | |||
return parent::setUp(); | |||
//return parent::setUp(); | |||
} | |||
public function testGetNameWithDefault() { | |||
@@ -368,4 +376,44 @@ class ThemingDefaultsTest extends TestCase { | |||
$this->assertSame('', $this->template->undo('defaultitem')); | |||
} | |||
public function testGetBackgroundDefault() { | |||
$this->config | |||
->expects($this->once()) | |||
->method('getAppValue') | |||
->with('theming', 'backgroundMime') | |||
->willReturn(''); | |||
$expected = $this->urlGenerator->imagePath('core','background.jpg'); | |||
$this->assertEquals($expected, $this->template->getBackground()); | |||
} | |||
public function testGetBackgroundCustom() { | |||
$this->config | |||
->expects($this->once()) | |||
->method('getAppValue') | |||
->with('theming', 'backgroundMime') | |||
->willReturn('image/svg+xml'); | |||
$expected = $this->urlGenerator->linkToRoute('theming.Theming.getLoginBackground'); | |||
$this->assertEquals($expected, $this->template->getBackground()); | |||
} | |||
public function testGetLogoDefault() { | |||
$this->config | |||
->expects($this->once()) | |||
->method('getAppValue') | |||
->with('theming', 'logoMime') | |||
->willReturn(''); | |||
$expected = $this->urlGenerator->imagePath('core','logo.svg'); | |||
$this->assertEquals($expected, $this->template->getLogo()); | |||
} | |||
public function testGetLogoCustom() { | |||
$this->config | |||
->expects($this->once()) | |||
->method('getAppValue') | |||
->with('theming', 'logoMime') | |||
->willReturn('image/svg+xml'); | |||
$expected = $this->urlGenerator->linkToRoute('theming.Theming.getLogo'); | |||
$this->assertEquals($expected, $this->template->getLogo()); | |||
} | |||
} |
@@ -650,12 +650,13 @@ class Server extends ServerContainer implements IServerContainer { | |||
$classExists = false; | |||
} | |||
if ($classExists && $this->getConfig()->getSystemValue('installed', false) && $this->getAppManager()->isInstalled('theming')) { | |||
if ($classExists && $c->getConfig()->getSystemValue('installed', false) && $c->getAppManager()->isInstalled('theming')) { | |||
return new ThemingDefaults( | |||
$this->getConfig(), | |||
$this->getL10N('theming'), | |||
$this->getURLGenerator(), | |||
new \OC_Defaults() | |||
$c->getConfig(), | |||
$c->getL10N('theming'), | |||
$c->getURLGenerator(), | |||
new \OC_Defaults(), | |||
$c->getRootFolder() | |||
); | |||
} | |||
return new \OC_Defaults(); |