Skip to content

Commit

Permalink
Fix l10n for SettingsManager by injecting the l10n factory
Browse files Browse the repository at this point in the history
Fixes nextcloud#10832

Signed-off-by: Morris Jobke <[email protected]>
  • Loading branch information
MorrisJobke authored and nachoparker committed Jun 28, 2019
1 parent 13aae14 commit e2a2152
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lib/private/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -1093,7 +1093,7 @@ public function __construct($webRoot, \OC\Config $config) {
$this->registerService('SettingsManager', function (Server $c) {
$manager = new \OC\Settings\Manager(
$c->getLogger(),
$c->getL10N('lib'),
$c->getL10NFactory(),
$c->getURLGenerator(),
$c
);
Expand Down
16 changes: 14 additions & 2 deletions lib/private/Settings/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
use OCP\ILogger;
use OCP\IServerContainer;
use OCP\IURLGenerator;
use OCP\L10N\IFactory;
use OCP\Settings\ISettings;
use OCP\Settings\IManager;
use OCP\Settings\ISection;
Expand All @@ -46,6 +47,9 @@ class Manager implements IManager {
/** @var IL10N */
private $l;

/** @var IFactory */
private $l10nFactory;

/** @var IURLGenerator */
private $url;

Expand All @@ -54,12 +58,12 @@ class Manager implements IManager {

public function __construct(
ILogger $log,
IL10N $l10n,
IFactory $l10nFactory,
IURLGenerator $url,
IServerContainer $container
) {
$this->log = $log;
$this->l = $l10n;
$this->l10nFactory = $l10nFactory;
$this->url = $url;
$this->container = $container;
}
Expand Down Expand Up @@ -190,6 +194,10 @@ protected function getSettings(string $type, string $section): array {
* @inheritdoc
*/
public function getAdminSections(): array {
if ($this->l === null) {
$this->l = $this->l10nFactory->get('lib');
}

// built-in sections
$sections = [
0 => [new Section('overview', $this->l->t('Overview'), 0, $this->url->imagePath('settings', 'admin.svg'))],
Expand Down Expand Up @@ -301,6 +309,10 @@ public function getAdminSettings($section): array {
* @inheritdoc
*/
public function getPersonalSections(): array {
if ($this->l === null) {
$this->l = $this->l10nFactory->get('lib');
}

$sections = [
0 => [new Section('personal-info', $this->l->t('Personal info'), 0, $this->url->imagePath('core', 'actions/info.svg'))],
5 => [new Section('security', $this->l->t('Security'), 0, $this->url->imagePath('settings', 'password.svg'))],
Expand Down
31 changes: 30 additions & 1 deletion tests/lib/Settings/ManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
use OCP\ILogger;
use OCP\IServerContainer;
use OCP\IURLGenerator;
use OCP\L10N\IFactory;
use Test\TestCase;

class ManagerTest extends TestCase {
Expand All @@ -43,6 +44,8 @@ class ManagerTest extends TestCase {
private $logger;
/** @var IDBConnection|\PHPUnit_Framework_MockObject_MockObject */
private $l10n;
/** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */
private $l10nFactory;
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
private $url;
/** @var IServerContainer|\PHPUnit_Framework_MockObject_MockObject */
Expand All @@ -53,18 +56,24 @@ public function setUp() {

$this->logger = $this->createMock(ILogger::class);
$this->l10n = $this->createMock(IL10N::class);
$this->l10nFactory = $this->createMock(IFactory::class);
$this->url = $this->createMock(IURLGenerator::class);
$this->container = $this->createMock(IServerContainer::class);

$this->manager = new Manager(
$this->logger,
$this->l10n,
$this->l10nFactory,
$this->url,
$this->container
);
}

public function testGetAdminSections() {
$this->l10nFactory
->expects($this->once())
->method('get')
->with('lib')
->willReturn($this->l10n);
$this->l10n
->expects($this->any())
->method('t')
Expand Down Expand Up @@ -95,6 +104,11 @@ public function testGetAdminSections() {
}

public function testGetPersonalSections() {
$this->l10nFactory
->expects($this->once())
->method('get')
->with('lib')
->willReturn($this->l10n);
$this->l10n
->expects($this->any())
->method('t')
Expand All @@ -119,6 +133,11 @@ public function testGetPersonalSections() {
}

public function testGetAdminSectionsEmptySection() {
$this->l10nFactory
->expects($this->once())
->method('get')
->with('lib')
->willReturn($this->l10n);
$this->l10n
->expects($this->any())
->method('t')
Expand Down Expand Up @@ -146,6 +165,11 @@ public function testGetAdminSectionsEmptySection() {
}

public function testGetPersonalSectionsEmptySection() {
$this->l10nFactory
->expects($this->once())
->method('get')
->with('lib')
->willReturn($this->l10n);
$this->l10n
->expects($this->any())
->method('t')
Expand Down Expand Up @@ -201,6 +225,11 @@ public function testGetPersonalSettings() {
}

public function testSameSectionAsPersonalAndAdmin() {
$this->l10nFactory
->expects($this->once())
->method('get')
->with('lib')
->willReturn($this->l10n);
$this->l10n
->expects($this->any())
->method('t')
Expand Down

0 comments on commit e2a2152

Please sign in to comment.