parent
1c8779dc6e
commit
575b3f9ff8
@ -0,0 +1,83 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> |
||||
* |
||||
* @author Arthur Schiwon <blizzz@arthur-schiwon.de> |
||||
* @author Joas Schilling <coding@schilljs.com> |
||||
* |
||||
* @license GNU AGPL version 3 or any later version |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 of the |
||||
* License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
namespace OCA\Theming\Settings; |
||||
|
||||
use OCP\IL10N; |
||||
use OCP\IURLGenerator; |
||||
use OCP\Settings\IIconSection; |
||||
|
||||
class Section implements IIconSection { |
||||
/** @var IL10N */ |
||||
private $l; |
||||
/** @var IURLGenerator */ |
||||
private $url; |
||||
|
||||
/** |
||||
* @param IURLGenerator $url |
||||
* @param IL10N $l |
||||
*/ |
||||
public function __construct(IURLGenerator $url, IL10N $l) { |
||||
$this->url = $url; |
||||
$this->l = $l; |
||||
} |
||||
|
||||
/** |
||||
* returns the ID of the section. It is supposed to be a lower case string, |
||||
* e.g. 'ldap' |
||||
* |
||||
* @returns string |
||||
*/ |
||||
public function getID() { |
||||
return 'theming'; |
||||
} |
||||
|
||||
/** |
||||
* returns the translated name as it should be displayed, e.g. 'LDAP / AD |
||||
* integration'. Use the L10N service to translate it. |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getName() { |
||||
return $this->l->t('Theming'); |
||||
} |
||||
|
||||
/** |
||||
* @return int whether the form should be rather on the top or bottom of |
||||
* the settings navigation. The sections are arranged in ascending order of |
||||
* the priority values. It is required to return a value between 0 and 99. |
||||
* |
||||
* E.g.: 70 |
||||
*/ |
||||
public function getPriority() { |
||||
return 30; |
||||
} |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function getIcon() { |
||||
return $this->url->imagePath('theming', 'app-dark.svg'); |
||||
} |
||||
} |
||||
@ -0,0 +1,77 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> |
||||
* |
||||
* @author Joas Schilling <coding@schilljs.com> |
||||
* @author Lukas Reschke <lukas@statuscode.ch> |
||||
* |
||||
* @license GNU AGPL version 3 or any later version |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 of the |
||||
* License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
namespace OCA\Theming\Tests\Settings; |
||||
|
||||
use OCA\Theming\Settings\Section; |
||||
use OCP\IL10N; |
||||
use OCP\IURLGenerator; |
||||
use Test\TestCase; |
||||
|
||||
class SectionTest extends TestCase { |
||||
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ |
||||
private $url; |
||||
/** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ |
||||
private $l; |
||||
/** @var Section */ |
||||
private $section; |
||||
|
||||
public function setUp() { |
||||
parent::setUp(); |
||||
$this->url = $this->createMock(IURLGenerator::class); |
||||
$this->l = $this->createMock(IL10N::class); |
||||
|
||||
$this->section = new Section( |
||||
$this->url, |
||||
$this->l |
||||
); |
||||
} |
||||
|
||||
public function testGetID() { |
||||
$this->assertSame('theming', $this->section->getID()); |
||||
} |
||||
|
||||
public function testGetName() { |
||||
$this->l |
||||
->expects($this->once()) |
||||
->method('t') |
||||
->with('Theming') |
||||
->willReturn('Theming'); |
||||
|
||||
$this->assertSame('Theming', $this->section->getName()); |
||||
} |
||||
|
||||
public function testGetPriority() { |
||||
$this->assertSame(30, $this->section->getPriority()); |
||||
} |
||||
|
||||
public function testGetIcon() { |
||||
$this->url->expects($this->once()) |
||||
->method('imagePath') |
||||
->with('theming', 'app-dark.svg') |
||||
->willReturn('icon'); |
||||
|
||||
$this->assertSame('icon', $this->section->getIcon()); |
||||
} |
||||
} |
||||
@ -1,121 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @author Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @license GNU AGPL version 3 or any later version |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 of the |
||||
* License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
|
||||
namespace OC\Settings\Theming; |
||||
|
||||
use OCP\AppFramework\Http\TemplateResponse; |
||||
use OCP\IConfig; |
||||
use OCP\IGroupManager; |
||||
use OCP\IUser; |
||||
use OCP\Settings\ISettings; |
||||
|
||||
/** |
||||
* This class describes the server info settings. |
||||
*/ |
||||
class ServerInfo implements ISettings { |
||||
|
||||
const SETTING_LOCATION = 'serverinfo.location'; |
||||
const SETTING_PROVIDER = 'serverinfo.provider'; |
||||
const SETTING_PROVIDER_WEBSITE = 'serverinfo.provider.website'; |
||||
const SETTING_PROVIDER_PRIVACY_LINK = 'serverinfo.provider.privacylink'; |
||||
const SETTING_PROVIDER_ADMIN_CONTACT = 'serverinfo.admincontact'; |
||||
|
||||
/** |
||||
* @var IConfig |
||||
*/ |
||||
private $config; |
||||
|
||||
/** |
||||
* @var IGroupManager |
||||
*/ |
||||
private $groupManager; |
||||
|
||||
/** |
||||
* ServerInfo constructor. |
||||
* |
||||
* @param IConfig $config |
||||
* @param IGroupManager $groupManager |
||||
*/ |
||||
public function __construct(IConfig $config, IGroupManager $groupManager) { |
||||
$this->config = $config; |
||||
$this->groupManager = $groupManager; |
||||
} |
||||
|
||||
/** |
||||
* @return TemplateResponse |
||||
*/ |
||||
public function getForm(): TemplateResponse { |
||||
$parameters = [ |
||||
'location' => $this->config->getSystemValue(self::SETTING_LOCATION), |
||||
'provider' => $this->config->getSystemValue(self::SETTING_PROVIDER), |
||||
'providerWebsite' => $this->config->getSystemValue(self::SETTING_PROVIDER_WEBSITE), |
||||
'providerPrivacyLink' => $this->config->getSystemValue(self::SETTING_PROVIDER_PRIVACY_LINK), |
||||
'adminUsers' => $this->getAdminListValues(), |
||||
'adminContact' => $this->config->getSystemValue(self::SETTING_PROVIDER_ADMIN_CONTACT), |
||||
]; |
||||
return new TemplateResponse('settings', 'settings/admin/server-info', $parameters, ''); |
||||
} |
||||
|
||||
/** |
||||
* Returns the admin list values. |
||||
* |
||||
* @return array[] An array or arrays with the keys 'id' and 'displayName' |
||||
*/ |
||||
private function getAdminListValues(): array { |
||||
$adminGroup = $this->groupManager->get('admin'); |
||||
$users = $adminGroup->getUsers(); |
||||
|
||||
$users = array_map(function(IUser $user) { |
||||
return [ |
||||
'id' => $user->getUID(), |
||||
'displayName' => $user->getDisplayName() |
||||
]; |
||||
}, $users); |
||||
|
||||
usort($your_data, function(array $a, array $b) { |
||||
return strcmp($a['displayName'], $b['displayName']); |
||||
}); |
||||
|
||||
return $users; |
||||
} |
||||
|
||||
/** |
||||
* Returns the server info section id. |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getSection(): string { |
||||
return 'theming'; |
||||
} |
||||
|
||||
/** |
||||
* Returns the server info settings priority. |
||||
* |
||||
* @return int whether the form should be rather on the top or bottom of |
||||
* the admin section. The forms are arranged in ascending order of the |
||||
* priority values. It is required to return a value between 0 and 100. |
||||
*/ |
||||
public function getPriority(): int { |
||||
return 10; |
||||
} |
||||
|
||||
} |
||||
@ -1,67 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @author Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @license GNU AGPL version 3 or any later version |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 of the |
||||
* License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
|
||||
namespace OC\Settings\Controller; |
||||
|
||||
use OC\Settings\Theming\ServerInfo; |
||||
use OCP\AppFramework\Controller; |
||||
use OCP\IConfig; |
||||
use OCP\IRequest; |
||||
|
||||
/** |
||||
* This controller handles server info settings requests. |
||||
*/ |
||||
class ServerInfoSettingsController extends Controller { |
||||
|
||||
/** |
||||
* @var IConfig |
||||
*/ |
||||
private $config; |
||||
|
||||
/** |
||||
* ServerInfoSettingsController constructor. |
||||
* |
||||
* @param IConfig $config |
||||
*/ |
||||
public function __construct($appName, IRequest $request, IConfig $config) { |
||||
parent::__construct($appName, $request); |
||||
$this->config = $config; |
||||
} |
||||
|
||||
public function storeServerInfo( |
||||
string $location, |
||||
string $provider, |
||||
string $providerWebsite, |
||||
string $providerPrivacyLink, |
||||
string $adminContact |
||||
): void { |
||||
$configs = [ |
||||
ServerInfo::SETTING_LOCATION => $location, |
||||
ServerInfo::SETTING_PROVIDER => $provider, |
||||
ServerInfo::SETTING_PROVIDER_WEBSITE => $providerWebsite, |
||||
ServerInfo::SETTING_PROVIDER_PRIVACY_LINK => $providerPrivacyLink, |
||||
ServerInfo::SETTING_PROVIDER_ADMIN_CONTACT => $adminContact |
||||
]; |
||||
$this->config->setSystemValues($configs); |
||||
} |
||||
|
||||
} |
||||
@ -1,99 +0,0 @@ |
||||
/* Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu |
||||
This file is licensed under the Affero General Public License version 3 or later. |
||||
See the COPYING-README file. */ |
||||
|
||||
.server-info-settings { |
||||
.label { |
||||
display: block; |
||||
} |
||||
|
||||
.form-input { |
||||
margin-bottom: 10px; |
||||
width: 100%; |
||||
} |
||||
|
||||
.margin-bottom { |
||||
margin-bottom: 15px; |
||||
} |
||||
|
||||
.form-actions { |
||||
text-align: right; |
||||
|
||||
.button { |
||||
align-items: center; |
||||
display: inline-flex; |
||||
margin: 0; |
||||
transition: background-color 500ms linear; |
||||
|
||||
.default-label, |
||||
.working-label, |
||||
.success-label, |
||||
.error-label { |
||||
align-items: center; |
||||
gap: 4px; |
||||
} |
||||
|
||||
.working-label, |
||||
.success-label, |
||||
.error-label { |
||||
display: none; |
||||
} |
||||
} |
||||
|
||||
.button-working, |
||||
.button-success, |
||||
.button-error { |
||||
background-color: $color-background-dark; |
||||
color: $color-text-lighter; |
||||
opacity: 1; |
||||
|
||||
.default-label { |
||||
display: none; |
||||
} |
||||
} |
||||
|
||||
.button-working { |
||||
.working-label { |
||||
display: inline-flex; |
||||
} |
||||
} |
||||
|
||||
.button-success { |
||||
background-color: $color-success; |
||||
border-color: darken($color-success, 10%); |
||||
color: $color-primary-text-dark; |
||||
|
||||
.success-label { |
||||
display: inline-flex; |
||||
} |
||||
} |
||||
|
||||
.button-error { |
||||
background-color: $color-error; |
||||
border-color: darken($color-error, 10%); |
||||
color: $color-primary-text-dark; |
||||
|
||||
.error-label { |
||||
display: inline-flex; |
||||
} |
||||
} |
||||
} |
||||
|
||||
@media (min-width: 1000px) { |
||||
.label { |
||||
display: inline-block; |
||||
text-align: right; |
||||
width: 175px; |
||||
} |
||||
|
||||
.form-input { |
||||
margin-left: 5px; |
||||
width: 225px; |
||||
} |
||||
|
||||
.form-actions { |
||||
margin-left: 180px; |
||||
width: 225px; |
||||
} |
||||
} |
||||
} |
||||
@ -1,10 +0,0 @@ |
||||
/* Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu |
||||
This file is licensed under the Affero General Public License version 3 or later. |
||||
See the COPYING-README file. */ |
||||
|
||||
.where-is-your-data { |
||||
// @todo replace by common link style as soon as available |
||||
a:not(.icon-info) { |
||||
border-bottom: 1px dotted; |
||||
} |
||||
} |
||||
|
Before Width: | Height: | Size: 611 B |
@ -1,114 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @author Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @license GNU AGPL version 3 or any later version |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 of the |
||||
* License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
|
||||
/** |
||||
* This file contains the server info settings template. |
||||
*/ |
||||
|
||||
/** @var array $_ */ |
||||
|
||||
?> |
||||
|
||||
<div class="section server-info-settings"> |
||||
<h2><?php p($l->t('Server info')); ?></h2>
|
||||
<p class="settings-hint"> |
||||
<?php p($l->t('Enter common info about your Nextcloud instance here. These info are visible to all users.')) ?> |
||||
</p> |
||||
<form id="server-info-form" name="server-info-form"> |
||||
<div class="margin-bottom"> |
||||
<label class="label" for="location"><?php p($l->t('Server location')); ?></label>
|
||||
<input |
||||
class="form-input" |
||||
id="location" |
||||
name="location" |
||||
type="text" |
||||
maxlength="100" |
||||
value="<?php p($_['location']); ?>"
|
||||
placeholder="<?php p($l->t('country')); ?>">
|
||||
</div> |
||||
<div> |
||||
<label class="label" for="provider"><?php p($l->t('Service provider')); ?></label>
|
||||
<input |
||||
class="form-input" |
||||
id="provider" |
||||
name="provider" |
||||
type="text" |
||||
maxlength="100" |
||||
value="<?php p($_['provider']); ?>"
|
||||
placeholder="<?php p($l->t('company or person')); ?>">
|
||||
</div> |
||||
<div> |
||||
<label class="label" for="providerWebsite"><?php p($l->t('Provider website')); ?></label>
|
||||
<input |
||||
class="form-input" |
||||
id="providerWebsite" |
||||
name="providerWebsite" |
||||
type="url" |
||||
maxlength="200" |
||||
value="<?php p($_['providerWebsite']); ?>"
|
||||
placeholder="<?php p($l->t('link to website')); ?>">
|
||||
</div> |
||||
<div class="margin-bottom"> |
||||
<label class="label" for="providerPrivacyLink"><?php p($l->t('Link to privacy policy')); ?></label>
|
||||
<input |
||||
class="form-input" |
||||
id="providerPrivacyLink" |
||||
name="providerPrivacyLink" |
||||
type="url" |
||||
maxlength="200" |
||||
value="<?php p($_['providerPrivacyLink']); ?>"
|
||||
placeholder="<?php p($l->t('link to privacy policy')); ?>">
|
||||
</div> |
||||
<div class="margin-bottom"> |
||||
<label class="label" for="adminContact"><?php p($l->t('Admin contact')); ?></label>
|
||||
<select class="form-input" name="adminContact" id="adminContact"> |
||||
<option value=""><?php p($l->t('choose admin contact')); ?></option>
|
||||
<?php foreach($_['adminUsers'] as $adminUser): ?> |
||||
<option |
||||
value="<?php p($adminUser['id']); ?>"
|
||||
<?php if ($adminUser['id'] === $_['adminContact']): ?>selected="selected"<?php endif; ?>>
|
||||
<?php p($adminUser['displayName']); ?> |
||||
</option> |
||||
<?php endforeach; ?> |
||||
</select> |
||||
</div> |
||||
<div class="form-actions"> |
||||
<button id="server-info-submit-button" class="button"> |
||||
<span class="default-label"> |
||||
<?php p($l->t('save')); ?> |
||||
</span> |
||||
<span class="working-label"> |
||||
<span class="icon-loading-small-dark"></span> |
||||
<?php p($l->t('saving')); ?> |
||||
</span> |
||||
<span class="success-label"> |
||||
<span class="icon-checkmark-white"></span> |
||||
<?php p($l->t('saved')); ?> |
||||
</span> |
||||
<span class="error-label"> |
||||
<span class="icon-error-white"></span> |
||||
<?php p($l->t('error saving settings')); ?> |
||||
</span> |
||||
</button> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
@ -1,76 +0,0 @@ |
||||
<div class="personal-settings-setting-box personal-settings-group-box section where-is-your-data"> |
||||
<h3> |
||||
<?php p($l->t('Where is your data?')); ?> |
||||
<a |
||||
target="_blank" |
||||
rel="noreferrer noopener" |
||||
class="icon-info" |
||||
title="" |
||||
href="https://nextcloud.com/yourdata/" |
||||
data-original-title="Open documentation"></a> |
||||
</h3> |
||||
<?php if (empty($_['dataLocation']) === false): ?> |
||||
<div class="personal-info icon-address"> |
||||
<p> |
||||
<?php echo $l->t('Your data is located in <b>%s</b>.', [$_['dataLocation']]); ?> |
||||
</p> |
||||
</div> |
||||
<?php endif; ?> |
||||
|
||||
<?php if (empty($_['provider']) === false): ?> |
||||
<div class="personal-info icon-home"> |
||||
<p> |
||||
<?php |
||||
if (empty($_['providerLink']) === false) { |
||||
echo $l->t('Your provider is %s%s%s.', [ |
||||
'<a href="' . $_['providerLink'] . '" target="_blank" title="" rel="noreferrer noopener">', |
||||
$_['provider'], |
||||
'</a>' |
||||
]); |
||||
} else { |
||||
echo $l->t('Your provider is %s.', [$_['provider']]); |
||||
} |
||||
?> |
||||
<?php |
||||
if (empty($_['providerPrivacyLink']) === false) { |
||||
echo $l->t('Read the %sprivacy policy%s now.', [ |
||||
'<a href="' . $_['providerPrivacyLink'] . '" target="_blank" title="" rel="noreferrer noopener">', |
||||
'</a>' |
||||
]); |
||||
} |
||||
?> |
||||
</p> |
||||
</div> |
||||
<?php endif; ?> |
||||
|
||||
<?php if ($_['encryptionEnabled'] === true): ?> |
||||
<div class="personal-info icon-password"> |
||||
<p> |
||||
<?php echo $l->t( |
||||
'Your files are encrypted with %sserver side encryption%s.', |
||||
[ |
||||
'<a href="https://nextcloud.com/blog/encryption-in-nextcloud/" target="_blank" title="" rel="noreferrer noopener">', |
||||
'</a>' |
||||
] |
||||
); ?> |
||||
</p> |
||||
</div> |
||||
<?php endif; ?> |
||||
|
||||
<?php if (empty($_['adminName']) === false): ?> |
||||
<div class="personal-info icon-user-admin"> |
||||
<p> |
||||
<?php echo $l->t( |
||||
'%s%s%s is your admin. If you have any issues, %scontact them%s.', |
||||
[ |
||||
'<a href="mailto:' . $_['adminMail'] . '" target="_blank" title="" rel="noreferrer noopener">', |
||||
$_['adminName'], |
||||
'</a>', |
||||
'<a href="mailto:' . $_['adminMail'] . '" target="_blank" title="" rel="noreferrer noopener">', |
||||
'</a>' |
||||
] |
||||
); ?> |
||||
</p> |
||||
</div> |
||||
<?php endif; ?> |
||||
</div> |
||||
@ -1,94 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @author Michael Weimann <mail@michael-weimann.eu> |
||||
* |
||||
* @license GNU AGPL version 3 or any later version |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 of the |
||||
* License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
|
||||
namespace Settings\Controller; |
||||
|
||||
use OC\Settings\Theming\ServerInfo; |
||||
use OC\Settings\Controller\ServerInfoSettingsController; |
||||
use OCP\IConfig; |
||||
use OCP\IRequest; |
||||
use PHPUnit\Framework\MockObject\MockObject; |
||||
use Test\TestCase; |
||||
|
||||
/** |
||||
* This class provides tests for the server info settings controller. |
||||
*/ |
||||
class ServerInfoSettingsControllerTest extends TestCase { |
||||
|
||||
/** |
||||
* @var IConfig|MockObject |
||||
*/ |
||||
private $config; |
||||
|
||||
/** |
||||
* @var ServerInfoSettingsController |
||||
*/ |
||||
private $controller; |
||||
|
||||
/** |
||||
* Does the test setup. |
||||
*/ |
||||
protected function setUp() { |
||||
parent::setUp(); |
||||
|
||||
$request = $this->getMockBuilder(IRequest::class)->getMock(); |
||||
/* @var IRequest|MockObject $request */ |
||||
$this->config = $this->getMockBuilder(IConfig::class)->getMock(); |
||||
$this->controller = new ServerInfoSettingsController( |
||||
'settings', |
||||
$request, |
||||
$this->config |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* Tests that the handler passes the params to the config. |
||||
*/ |
||||
public function testStoreServerInfo() { |
||||
|
||||
$location = 'test-location'; |
||||
$provider = 'test-provider'; |
||||
$providerWebsite = 'https://example.com/'; |
||||
$providerPrivacyLink = 'https://example.com/privacy'; |
||||
$adminContact = 'testuser'; |
||||
|
||||
$this->config->expects($this->once()) |
||||
->method('setSystemValues') |
||||
->with([ |
||||
ServerInfo::SETTING_LOCATION => $location, |
||||
ServerInfo::SETTING_PROVIDER => $provider, |
||||
ServerInfo::SETTING_PROVIDER_WEBSITE => $providerWebsite, |
||||
ServerInfo::SETTING_PROVIDER_PRIVACY_LINK => $providerPrivacyLink, |
||||
ServerInfo::SETTING_PROVIDER_ADMIN_CONTACT => $adminContact, |
||||
]); |
||||
|
||||
$this->controller->storeServerInfo( |
||||
$location, |
||||
$provider, |
||||
$providerWebsite, |
||||
$providerPrivacyLink, |
||||
$adminContact |
||||
); |
||||
|
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue