Theming: Add logo and background to ThemingDefaults

This commit is contained in:
Julius Haertl 2016-08-23 22:02:28 +02:00
parent 3ed102497e
commit 80fe499707
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
3 changed files with 90 additions and 8 deletions

View File

@ -28,6 +28,7 @@ namespace OCA\Theming;
use OCP\IConfig; use OCP\IConfig;
use OCP\IL10N; use OCP\IL10N;
use OCP\IURLGenerator; use OCP\IURLGenerator;
use OCP\Files\IRootFolder;
class ThemingDefaults extends \OC_Defaults { class ThemingDefaults extends \OC_Defaults {
@ -38,6 +39,8 @@ class ThemingDefaults extends \OC_Defaults {
private $l; private $l;
/** @var IURLGenerator */ /** @var IURLGenerator */
private $urlGenerator; private $urlGenerator;
/** @var IRootFolder */
private $rootFolder;
/** @var string */ /** @var string */
private $name; private $name;
/** @var string */ /** @var string */
@ -58,12 +61,14 @@ class ThemingDefaults extends \OC_Defaults {
public function __construct(IConfig $config, public function __construct(IConfig $config,
IL10N $l, IL10N $l,
IURLGenerator $urlGenerator, IURLGenerator $urlGenerator,
\OC_Defaults $defaults \OC_Defaults $defaults,
IRootFolder $rootFolder
) { ) {
parent::__construct(); parent::__construct();
$this->config = $config; $this->config = $config;
$this->l = $l; $this->l = $l;
$this->urlGenerator = $urlGenerator; $this->urlGenerator = $urlGenerator;
$this->rootFolder = $rootFolder;
$this->name = $defaults->getName(); $this->name = $defaults->getName();
$this->url = $defaults->getBaseUrl(); $this->url = $defaults->getBaseUrl();
@ -113,6 +118,34 @@ class ThemingDefaults extends \OC_Defaults {
return $this->config->getAppValue('theming', 'color', $this->color); 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 * Increases the cache buster key
*/ */

View File

@ -27,6 +27,7 @@ use OCA\Theming\ThemingDefaults;
use OCP\IConfig; use OCP\IConfig;
use OCP\IL10N; use OCP\IL10N;
use OCP\IURLGenerator; use OCP\IURLGenerator;
use OCP\Files\IRootFolder;
use Test\TestCase; use Test\TestCase;
class ThemingDefaultsTest extends TestCase { class ThemingDefaultsTest extends TestCase {
@ -40,11 +41,17 @@ class ThemingDefaultsTest extends TestCase {
private $defaults; private $defaults;
/** @var ThemingDefaults */ /** @var ThemingDefaults */
private $template; private $template;
/** @var IRootFolder */
private $rootFolder;
public function setUp() { public function setUp() {
parent::setUp();
$this->config = $this->getMock('\\OCP\\IConfig'); $this->config = $this->getMock('\\OCP\\IConfig');
$this->l10n = $this->getMock('\\OCP\\IL10N'); $this->l10n = $this->getMock('\\OCP\\IL10N');
$this->urlGenerator = $this->getMock('\\OCP\\IURLGenerator'); $this->urlGenerator = $this->getMock('\\OCP\\IURLGenerator');
$this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')
->disableOriginalConstructor()
->getMock();
$this->defaults = $this->getMockBuilder('\\OC_Defaults') $this->defaults = $this->getMockBuilder('\\OC_Defaults')
->disableOriginalConstructor() ->disableOriginalConstructor()
->getMock(); ->getMock();
@ -68,10 +75,11 @@ class ThemingDefaultsTest extends TestCase {
$this->config, $this->config,
$this->l10n, $this->l10n,
$this->urlGenerator, $this->urlGenerator,
$this->defaults $this->defaults,
$this->rootFolder
); );
return parent::setUp(); //return parent::setUp();
} }
public function testGetNameWithDefault() { public function testGetNameWithDefault() {
@ -368,4 +376,44 @@ class ThemingDefaultsTest extends TestCase {
$this->assertSame('', $this->template->undo('defaultitem')); $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());
}
} }

View File

@ -650,12 +650,13 @@ class Server extends ServerContainer implements IServerContainer {
$classExists = false; $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( return new ThemingDefaults(
$this->getConfig(), $c->getConfig(),
$this->getL10N('theming'), $c->getL10N('theming'),
$this->getURLGenerator(), $c->getURLGenerator(),
new \OC_Defaults() new \OC_Defaults(),
$c->getRootFolder()
); );
} }
return new \OC_Defaults(); return new \OC_Defaults();