aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2017-10-11 13:09:26 +0200
committerGeorg Ehrke <developer@georgehrke.com>2017-10-16 13:49:08 +0200
commit7828cf454e0df86a330380dc0674db780a7abd56 (patch)
tree285834f853a145985d4fc6efe7c94d3f51be435d /apps/dav
parent61077df79a91f8ef785eb2ef1874cf7244f5366d (diff)
downloadnextcloud-server-7828cf454e0df86a330380dc0674db780a7abd56.tar.gz
nextcloud-server-7828cf454e0df86a330380dc0674db780a7abd56.zip
add admin settings panel for dav app
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
Diffstat (limited to 'apps/dav')
-rw-r--r--apps/dav/appinfo/info.xml6
-rw-r--r--apps/dav/js/settings-admin-caldav.js28
-rw-r--r--apps/dav/lib/Settings/CalDAVSettings.php68
-rw-r--r--apps/dav/templates/settings-admin-caldav.php40
-rw-r--r--apps/dav/tests/unit/Settings/CalDAVSettingsTest.php58
5 files changed, 199 insertions, 1 deletions
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index 9b500c9f300..0f97289ba37 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>WebDAV endpoint</description>
<licence>AGPL</licence>
<author>owncloud.org</author>
- <version>1.4.4</version>
+ <version>1.4.5</version>
<default_enable/>
<types>
<filesystem/>
@@ -52,4 +52,8 @@
<provider>OCA\DAV\CalDAV\Activity\Provider\Todo</provider>
</providers>
</activity>
+
+ <settings>
+ <admin>OCA\DAV\Settings\CalDAVSettings</admin>
+ </settings>
</info>
diff --git a/apps/dav/js/settings-admin-caldav.js b/apps/dav/js/settings-admin-caldav.js
new file mode 100644
index 00000000000..10eb89ab61d
--- /dev/null
+++ b/apps/dav/js/settings-admin-caldav.js
@@ -0,0 +1,28 @@
+/**
+ * @copyright 2017, Georg Ehrke <oc.list@georgehrke.com>
+ *
+ * @author Georg Ehrke <oc.list@georgehrke.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/>.
+ *
+ */
+"use strict";
+
+$('#caldavSendInvitations').change(function() {
+ var val = $(this)[0].checked;
+
+ OCP.AppConfig.setValue('dav', 'sendInvitations', val ? 'yes' : 'no');
+});
diff --git a/apps/dav/lib/Settings/CalDAVSettings.php b/apps/dav/lib/Settings/CalDAVSettings.php
new file mode 100644
index 00000000000..1c85d19432c
--- /dev/null
+++ b/apps/dav/lib/Settings/CalDAVSettings.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * @copyright 2017, Georg Ehrke <oc.list@georgehrke.com>
+ *
+ * @author Georg Ehrke <oc.list@georgehrke.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\DAV\Settings;
+
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\IConfig;
+use OCP\Settings\ISettings;
+
+class CalDAVSettings implements ISettings {
+
+ /** @var IConfig */
+ private $config;
+
+ /**
+ * CalDAVSettings constructor.
+ *
+ * @param IConfig $config
+ */
+ public function __construct(IConfig $config) {
+ $this->config = $config;
+ }
+
+ /**
+ * @return TemplateResponse
+ */
+ public function getForm() {
+ $parameters = [
+ 'send_invitations' => $this->config->getAppValue('dav', 'sendInvitations', 'yes'),
+ ];
+
+ return new TemplateResponse('dav', 'settings-admin-caldav', $parameters);
+ }
+
+ /**
+ * @return string
+ */
+ public function getSection() {
+ return 'additional';
+ }
+
+ /**
+ * @return int
+ */
+ public function getPriority() {
+ return 20;
+ }
+}
diff --git a/apps/dav/templates/settings-admin-caldav.php b/apps/dav/templates/settings-admin-caldav.php
new file mode 100644
index 00000000000..34d3517e8d9
--- /dev/null
+++ b/apps/dav/templates/settings-admin-caldav.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * @copyright 2017, Georg Ehrke <oc.list@georgehrke.com>
+ *
+ * @author Georg Ehrke <oc.list@georgehrke.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/>.
+ *
+ */
+
+script('dav', [
+ 'settings-admin-caldav'
+]);
+
+/** @var \OCP\IL10N $l */
+/** @var array $_ */
+?>
+<form id="CalDAV" class="section">
+ <h2><?php p($l->t('CalDAV server')); ?></h2>
+ <p>
+ <input type="checkbox" name="caldav_send_invitations" id="caldavSendInvitations" class="checkbox"
+ <?php ($_['send_invitations'] === 'yes') ? print_unescaped('checked="checked"') : null ?>/>
+ <label for="caldavSendInvitations"><?php p($l->t('Send invitations to attendees')); ?></label>
+ <br>
+ <em><?php p($l->t('Please make sure to properly setup the email settings above.')); ?></em>
+ </p>
+</form>
diff --git a/apps/dav/tests/unit/Settings/CalDAVSettingsTest.php b/apps/dav/tests/unit/Settings/CalDAVSettingsTest.php
new file mode 100644
index 00000000000..8ee58107487
--- /dev/null
+++ b/apps/dav/tests/unit/Settings/CalDAVSettingsTest.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * @copyright 2017, Georg Ehrke <oc.list@georgehrke.com>
+ *
+ * @author Georg Ehrke <oc.list@georgehrke.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\DAV\Tests\Unit\DAV\Settings;
+
+use OCA\DAV\Settings\CalDAVSettings;
+use OCP\IConfig;
+use Test\TestCase;
+
+class CalDAVSettingsTest extends TestCase {
+
+ /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
+ private $config;
+
+ /** @var CalDAVSettings */
+ private $settings;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->config = $this->createMock(IConfig::class);
+ $this->settings = new CalDAVSettings($this->config);
+ }
+
+ public function testGetForm() {
+ $result = $this->settings->getForm();
+
+ $this->assertInstanceOf('OCP\AppFramework\Http\TemplateResponse', $result);
+ }
+
+ public function testGetSection() {
+ $this->assertEquals('additional', $this->settings->getSection());
+ }
+
+ public function testGetPriority() {
+ $this->assertEquals(20, $this->settings->getPriority());
+ }
+}