aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/Settings/CalDAVSettings.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/lib/Settings/CalDAVSettings.php')
-rw-r--r--apps/dav/lib/Settings/CalDAVSettings.php89
1 files changed, 45 insertions, 44 deletions
diff --git a/apps/dav/lib/Settings/CalDAVSettings.php b/apps/dav/lib/Settings/CalDAVSettings.php
index f7bad2e2e2c..5e19539a899 100644
--- a/apps/dav/lib/Settings/CalDAVSettings.php
+++ b/apps/dav/lib/Settings/CalDAVSettings.php
@@ -1,66 +1,57 @@
<?php
+
/**
- * @copyright 2017, Georg Ehrke <oc.list@georgehrke.com>
- *
- * @author Georg Ehrke <oc.list@georgehrke.com>
- * @author Julius Härtl <jus@bitgrid.net>
- * @author Thomas Citharel <nextcloud@tcit.fr>
- *
- * @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/>.
- *
+ * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\DAV\Settings;
+use OCA\DAV\AppInfo\Application;
+use OCP\App\IAppManager;
use OCP\AppFramework\Http\TemplateResponse;
+use OCP\AppFramework\Services\IInitialState;
use OCP\IConfig;
-use OCP\Settings\ISettings;
+use OCP\IURLGenerator;
+use OCP\Settings\IDelegatedSettings;
-class CalDAVSettings implements ISettings {
+class CalDAVSettings implements IDelegatedSettings {
- /** @var IConfig */
- private $config;
+ private const defaults = [
+ 'sendInvitations' => 'yes',
+ 'generateBirthdayCalendar' => 'yes',
+ 'sendEventReminders' => 'yes',
+ 'sendEventRemindersToSharedUsers' => 'yes',
+ 'sendEventRemindersPush' => 'yes',
+ ];
/**
* CalDAVSettings constructor.
*
* @param IConfig $config
+ * @param IInitialState $initialState
*/
- public function __construct(IConfig $config) {
- $this->config = $config;
+ public function __construct(
+ private IConfig $config,
+ private IInitialState $initialState,
+ private IURLGenerator $urlGenerator,
+ private IAppManager $appManager,
+ ) {
}
- /**
- * @return TemplateResponse
- */
- public function getForm() {
- $parameters = [
- 'send_invitations' => $this->config->getAppValue('dav', 'sendInvitations', 'yes'),
- 'generate_birthday_calendar' => $this->config->getAppValue('dav', 'generateBirthdayCalendar', 'yes'),
- 'send_reminders_notifications' => $this->config->getAppValue('dav', 'sendEventReminders', 'yes'),
- 'send_reminders_notifications_push' => $this->config->getAppValue('dav', 'sendEventRemindersPush', 'no'),
- ];
-
- return new TemplateResponse('dav', 'settings-admin-caldav', $parameters);
+ public function getForm(): TemplateResponse {
+ $this->initialState->provideInitialState('userSyncCalendarsDocUrl', $this->urlGenerator->linkToDocs('user-sync-calendars'));
+ foreach (self::defaults as $key => $default) {
+ $value = $this->config->getAppValue(Application::APP_ID, $key, $default);
+ $this->initialState->provideInitialState($key, $value === 'yes');
+ }
+ return new TemplateResponse(Application::APP_ID, 'settings-admin-caldav');
}
- /**
- * @return string
- */
- public function getSection() {
+ public function getSection(): ?string {
+ if (!$this->appManager->isBackendRequired(IAppManager::BACKEND_CALDAV)) {
+ return null;
+ }
+
return 'groupware';
}
@@ -70,4 +61,14 @@ class CalDAVSettings implements ISettings {
public function getPriority() {
return 10;
}
+
+ public function getName(): ?string {
+ return null; // Only setting in this section
+ }
+
+ public function getAuthorizedAppConfig(): array {
+ return [
+ 'dav' => ['/(' . implode('|', array_keys(self::defaults)) . ')/']
+ ];
+ }
}