aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/src/views
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/src/views')
-rw-r--r--apps/dav/src/views/Availability.vue40
-rw-r--r--apps/dav/src/views/CalDavSettings.spec.js130
-rw-r--r--apps/dav/src/views/CalDavSettings.vue165
-rw-r--r--apps/dav/src/views/ExampleContentSettingsSection.vue38
-rw-r--r--apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap434
-rw-r--r--apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license2
6 files changed, 809 insertions, 0 deletions
diff --git a/apps/dav/src/views/Availability.vue b/apps/dav/src/views/Availability.vue
new file mode 100644
index 00000000000..1922f5b706e
--- /dev/null
+++ b/apps/dav/src/views/Availability.vue
@@ -0,0 +1,40 @@
+<!--
+ - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+<template>
+ <div>
+ <NcSettingsSection id="availability"
+ :name="$t('dav', 'Availability')"
+ :description="$t('dav', 'If you configure your working hours, other people will see when you are out of office when they book a meeting.')">
+ <AvailabilityForm />
+ </NcSettingsSection>
+ <NcSettingsSection v-if="!hideAbsenceSettings"
+ id="absence"
+ :name="$t('dav', 'Absence')"
+ :description="$t('dav', 'Configure your next absence period.')">
+ <AbsenceForm />
+ </NcSettingsSection>
+ </div>
+</template>
+
+<script>
+import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection'
+import AbsenceForm from '../components/AbsenceForm.vue'
+import AvailabilityForm from '../components/AvailabilityForm.vue'
+import { loadState } from '@nextcloud/initial-state'
+
+export default {
+ name: 'Availability',
+ components: {
+ NcSettingsSection,
+ AbsenceForm,
+ AvailabilityForm,
+ },
+ data() {
+ return {
+ hideAbsenceSettings: loadState('dav', 'hide_absence_settings', true),
+ }
+ },
+}
+</script>
diff --git a/apps/dav/src/views/CalDavSettings.spec.js b/apps/dav/src/views/CalDavSettings.spec.js
new file mode 100644
index 00000000000..7a4345b3ddf
--- /dev/null
+++ b/apps/dav/src/views/CalDavSettings.spec.js
@@ -0,0 +1,130 @@
+/**
+ * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import { render } from '@testing-library/vue'
+import { beforeEach, describe, expect, test, vi } from 'vitest'
+
+import CalDavSettings from './CalDavSettings.vue'
+
+vi.mock('@nextcloud/axios')
+vi.mock('@nextcloud/router', () => {
+ return {
+ generateUrl(url) {
+ return url
+ },
+ }
+})
+vi.mock('@nextcloud/initial-state', () => {
+ return {
+ loadState: vi.fn(() => 'https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars'),
+ }
+})
+
+describe('CalDavSettings', () => {
+ beforeEach(() => {
+ window.OC = { requestToken: 'secret' }
+ window.OCP = {
+ AppConfig: {
+ setValue: vi.fn(),
+ },
+ }
+ })
+
+ test('interactions', async () => {
+ const TLUtils = render(
+ CalDavSettings,
+ {
+ data() {
+ return {
+ sendInvitations: true,
+ generateBirthdayCalendar: true,
+ sendEventReminders: true,
+ sendEventRemindersToSharedUsers: true,
+ sendEventRemindersPush: true,
+ }
+ },
+ },
+ Vue => {
+ Vue.prototype.$t = vi.fn((app, text) => text)
+ },
+ )
+ expect(TLUtils.container).toMatchSnapshot()
+ const sendInvitations = TLUtils.getByLabelText(
+ 'Send invitations to attendees',
+ )
+ expect(sendInvitations).toBeChecked()
+ const generateBirthdayCalendar = TLUtils.getByLabelText(
+ 'Automatically generate a birthday calendar',
+ )
+ expect(generateBirthdayCalendar).toBeChecked()
+ const sendEventReminders = TLUtils.getByLabelText(
+ 'Send notifications for events',
+ )
+ expect(sendEventReminders).toBeChecked()
+ const sendEventRemindersToSharedUsers = TLUtils.getByLabelText(
+ 'Send reminder notifications to calendar sharees as well',
+ )
+ expect(sendEventRemindersToSharedUsers).toBeChecked()
+ const sendEventRemindersPush = TLUtils.getByLabelText(
+ 'Enable notifications for events via push',
+ )
+ expect(sendEventRemindersPush).toBeChecked()
+
+ /*
+ FIXME userEvent.click is broken with nextcloud-vue/Button
+
+ await userEvent.click(sendInvitations)
+ expect(sendInvitations).not.toBeChecked()
+ expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
+ 'dav',
+ 'sendInvitations',
+ 'no'
+ )
+ OCP.AppConfig.setValue.mockClear()
+ await userEvent.click(sendInvitations)
+ expect(sendInvitations).toBeChecked()
+ expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
+ 'dav',
+ 'sendInvitations',
+ 'yes'
+ )
+
+ axios.post.mockImplementationOnce((uri) => {
+ expect(uri).toBe('/apps/dav/disableBirthdayCalendar')
+ return Promise.resolve()
+ })
+ await userEvent.click(generateBirthdayCalendar)
+ axios.post.mockImplementationOnce((uri) => {
+ expect(uri).toBe('/apps/dav/enableBirthdayCalendar')
+ return Promise.resolve()
+ })
+ await userEvent.click(generateBirthdayCalendar)
+ expect(generateBirthdayCalendar).toBeEnabled()
+
+ OCP.AppConfig.setValue.mockClear()
+ await userEvent.click(sendEventReminders)
+ expect(sendEventReminders).not.toBeChecked()
+ expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
+ 'dav',
+ 'sendEventReminders',
+ 'no'
+ )
+
+ expect(sendEventRemindersToSharedUsers).toBeDisabled()
+ expect(sendEventRemindersPush).toBeDisabled()
+
+ OCP.AppConfig.setValue.mockClear()
+ await userEvent.click(sendEventReminders)
+ expect(sendEventReminders).toBeChecked()
+ expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
+ 'dav',
+ 'sendEventReminders',
+ 'yes'
+ )
+
+ expect(sendEventRemindersToSharedUsers).toBeEnabled()
+ expect(sendEventRemindersPush).toBeEnabled()
+ */
+ })
+})
diff --git a/apps/dav/src/views/CalDavSettings.vue b/apps/dav/src/views/CalDavSettings.vue
new file mode 100644
index 00000000000..6be67cf93ff
--- /dev/null
+++ b/apps/dav/src/views/CalDavSettings.vue
@@ -0,0 +1,165 @@
+<!--
+ - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+<template>
+ <NcSettingsSection :name="$t('dav', 'Calendar server')"
+ :doc-url="userSyncCalendarsDocUrl">
+ <!-- Can use v-html as:
+ - $t passes the translated string through DOMPurify.sanitize,
+ - replacement strings are not user-controlled. -->
+ <!-- eslint-disable-next-line vue/no-v-html -->
+ <p class="settings-hint" v-html="hint" />
+ <p>
+ <NcCheckboxRadioSwitch id="caldavSendInvitations"
+ :checked.sync="sendInvitations"
+ type="switch">
+ {{ $t('dav', 'Send invitations to attendees') }}
+ </NcCheckboxRadioSwitch>
+ <!-- Can use v-html as:
+ - $t passes the translated string through DOMPurify.sanitize,
+ - replacement strings are not user-controlled. -->
+ <!-- eslint-disable-next-line vue/no-v-html -->
+ <em v-html="sendInvitationsHelpText" />
+ </p>
+ <p>
+ <NcCheckboxRadioSwitch id="caldavGenerateBirthdayCalendar"
+ :checked.sync="generateBirthdayCalendar"
+ type="switch"
+ class="checkbox">
+ {{ $t('dav', 'Automatically generate a birthday calendar') }}
+ </NcCheckboxRadioSwitch>
+ <em>
+ {{ $t('dav', 'Birthday calendars will be generated by a background job.') }}
+ </em>
+ <br>
+ <em>
+ {{ $t('dav', 'Hence they will not be available immediately after enabling but will show up after some time.') }}
+ </em>
+ </p>
+ <p>
+ <NcCheckboxRadioSwitch id="caldavSendEventReminders"
+ :checked.sync="sendEventReminders"
+ type="switch">
+ {{ $t('dav', 'Send notifications for events') }}
+ </NcCheckboxRadioSwitch>
+ <!-- Can use v-html as:
+ - $t passes the translated string through DOMPurify.sanitize,
+ - replacement strings are not user-controlled. -->
+ <!-- eslint-disable-next-line vue/no-v-html -->
+ <em v-html="sendEventRemindersHelpText" />
+ <br>
+ <em>
+ {{ $t('dav', 'Notifications are sent via background jobs, so these must occur often enough.') }}
+ </em>
+ </p>
+ <p class="indented">
+ <NcCheckboxRadioSwitch id="caldavSendEventRemindersToSharedGroupMembers"
+ :checked.sync="sendEventRemindersToSharedUsers"
+ type="switch"
+ :disabled="!sendEventReminders">
+ {{ $t('dav', 'Send reminder notifications to calendar sharees as well' ) }}
+ </NcCheckboxRadioSwitch>
+ <em>
+ {{ $t('dav', 'Reminders are always sent to organizers and attendees.' ) }}
+ </em>
+ </p>
+ <p class="indented">
+ <NcCheckboxRadioSwitch id="caldavSendEventRemindersPush"
+ :checked.sync="sendEventRemindersPush"
+ type="switch"
+ :disabled="!sendEventReminders">
+ {{ $t('dav', 'Enable notifications for events via push') }}
+ </NcCheckboxRadioSwitch>
+ </p>
+ </NcSettingsSection>
+</template>
+
+<script>
+import axios from '@nextcloud/axios'
+import { generateUrl } from '@nextcloud/router'
+import { loadState } from '@nextcloud/initial-state'
+import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection'
+import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'
+
+const userSyncCalendarsDocUrl = loadState('dav', 'userSyncCalendarsDocUrl', '#')
+
+export default {
+ name: 'CalDavSettings',
+ components: {
+ NcCheckboxRadioSwitch,
+ NcSettingsSection,
+ },
+ data() {
+ return {
+ userSyncCalendarsDocUrl,
+ }
+ },
+ computed: {
+ hint() {
+ const translated = this.$t(
+ 'dav',
+ 'Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.',
+ )
+ return translated
+ .replace('{calendarappstoreopen}', '<a target="_blank" href="../apps/office/calendar">')
+ .replace('{calendardocopen}', `<a target="_blank" href="${userSyncCalendarsDocUrl}" rel="noreferrer noopener">`)
+ .replace(/\{linkclose\}/g, '</a>')
+ },
+ sendInvitationsHelpText() {
+ const translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.')
+ return translated
+ .replace('{emailopen}', '<a href="../admin#mail_general_settings">')
+ .replace('{linkclose}', '</a>')
+ },
+ sendEventRemindersHelpText() {
+ const translated = this.$t('dav', 'Please make sure to properly set up {emailopen}the email server{linkclose}.')
+ return translated
+ .replace('{emailopen}', '<a href="../admin#mail_general_settings">')
+ .replace('{linkclose}', '</a>')
+ },
+ },
+ watch: {
+ generateBirthdayCalendar(value) {
+ const baseUrl = value ? '/apps/dav/enableBirthdayCalendar' : '/apps/dav/disableBirthdayCalendar'
+ axios.post(generateUrl(baseUrl))
+ },
+ sendInvitations(value) {
+ OCP.AppConfig.setValue(
+ 'dav',
+ 'sendInvitations',
+ value ? 'yes' : 'no',
+ )
+ },
+ sendEventReminders(value) {
+ OCP.AppConfig.setValue('dav', 'sendEventReminders', value ? 'yes' : 'no')
+ },
+ sendEventRemindersToSharedUsers(value) {
+ OCP.AppConfig.setValue(
+ 'dav',
+ 'sendEventRemindersToSharedUsers',
+ value ? 'yes' : 'no',
+ )
+ },
+ sendEventRemindersPush(value) {
+ OCP.AppConfig.setValue('dav', 'sendEventRemindersPush', value ? 'yes' : 'no')
+ },
+ },
+}
+</script>
+
+<style scoped>
+ .indented {
+ padding-inline-start: 28px;
+ }
+ /** Use deep selector to affect v-html */
+ * :deep(a) {
+ text-decoration: underline;
+ }
+
+ .settings-hint {
+ margin-top: -.2em;
+ margin-bottom: 1em;
+ opacity: .7;
+ }
+</style>
diff --git a/apps/dav/src/views/ExampleContentSettingsSection.vue b/apps/dav/src/views/ExampleContentSettingsSection.vue
new file mode 100644
index 00000000000..3ee2d9e8648
--- /dev/null
+++ b/apps/dav/src/views/ExampleContentSettingsSection.vue
@@ -0,0 +1,38 @@
+<!--
+ - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+
+<template>
+ <NcSettingsSection id="example-content"
+ :name="$t('dav', 'Example content')"
+ class="example-content-setting"
+ :description="$t('dav', 'Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.')">
+ <ExampleContactSettings v-if="hasContactsApp" />
+ <ExampleEventSettings v-if="hasCalendarApp" />
+ </NcSettingsSection>
+</template>
+
+<script>
+import { loadState } from '@nextcloud/initial-state'
+import { NcSettingsSection } from '@nextcloud/vue'
+import ExampleEventSettings from '../components/ExampleEventSettings.vue'
+import ExampleContactSettings from '../components/ExampleContactSettings.vue'
+
+export default {
+ name: 'ExampleContentSettingsSection',
+ components: {
+ NcSettingsSection,
+ ExampleContactSettings,
+ ExampleEventSettings,
+ },
+ computed: {
+ hasContactsApp() {
+ return loadState('dav', 'contactsEnabled')
+ },
+ hasCalendarApp() {
+ return loadState('dav', 'calendarEnabled')
+ },
+ },
+}
+</script>
diff --git a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap
new file mode 100644
index 00000000000..fdbe09f5b5e
--- /dev/null
+++ b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap
@@ -0,0 +1,434 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`CalDavSettings > interactions 1`] = `
+<div>
+ <div
+ class="settings-section settings-section--limit-width"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ <h2
+ class="settings-section__name"
+ data-v-6f6953b5=""
+ >
+ Calendar server
+ <a
+ aria-label="External documentation for Calendar server"
+ class="settings-section__info"
+ data-v-6f6953b5=""
+ href="https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars"
+ rel="noreferrer nofollow"
+ target="_blank"
+ title="External documentation for Calendar server"
+ >
+ <span
+ aria-hidden="true"
+ class="material-design-icon help-circle-icon"
+ data-v-6f6953b5=""
+ role="img"
+ >
+ <svg
+ class="material-design-icon__svg"
+ fill="currentColor"
+ height="20"
+ viewBox="0 0 24 24"
+ width="20"
+ >
+ <path
+ d="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"
+ >
+ <!---->
+ </path>
+ </svg>
+ </span>
+ </a>
+ </h2>
+ <!---->
+ <p
+ class="settings-hint"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ Also install the
+ <a
+ href="../apps/office/calendar"
+ target="_blank"
+ >
+ Calendar app
+ </a>
+ , or
+ <a
+ href="https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars"
+ rel="noreferrer noopener"
+ target="_blank"
+ >
+ connect your desktop & mobile for syncing ↗
+ </a>
+ .
+ </p>
+ <p
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ <span
+ class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ data-v-f275cf53=""
+ style="--icon-size: 36px; --icon-height: 16px;"
+ >
+ <input
+ aria-labelledby="caldavSendInvitations-label"
+ class="checkbox-radio-switch__input"
+ data-v-f275cf53=""
+ id="caldavSendInvitations"
+ type="checkbox"
+ value=""
+ />
+ <span
+ class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text"
+ data-v-3714b019=""
+ data-v-f275cf53=""
+ id="caldavSendInvitations-label"
+ >
+ <span
+ aria-hidden="true"
+ class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon"
+ data-v-3714b019=""
+ inert="inert"
+ >
+ <span
+ aria-hidden="true"
+ class="material-design-icon toggle-switch-icon"
+ data-v-3714b019=""
+ role="img"
+ >
+ <svg
+ class="material-design-icon__svg"
+ fill="currentColor"
+ height="36"
+ viewBox="0 0 24 24"
+ width="36"
+ >
+ <path
+ d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+ >
+ <!---->
+ </path>
+ </svg>
+ </span>
+ </span>
+ <span
+ class="checkbox-content__text checkbox-radio-switch__text"
+ data-v-3714b019=""
+ >
+ Send invitations to attendees
+ </span>
+ </span>
+ </span>
+ <em
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ Please make sure to properly set up
+ <a
+ href="../admin#mail_general_settings"
+ >
+ the email server
+ </a>
+ .
+ </em>
+ </p>
+ <p
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ <span
+ class="checkbox-radio-switch checkbox checkbox-radio-switch-switch checkbox-radio-switch--checked"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ data-v-f275cf53=""
+ style="--icon-size: 36px; --icon-height: 16px;"
+ >
+ <input
+ aria-labelledby="caldavGenerateBirthdayCalendar-label"
+ class="checkbox-radio-switch__input"
+ data-v-f275cf53=""
+ id="caldavGenerateBirthdayCalendar"
+ type="checkbox"
+ value=""
+ />
+ <span
+ class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text"
+ data-v-3714b019=""
+ data-v-f275cf53=""
+ id="caldavGenerateBirthdayCalendar-label"
+ >
+ <span
+ aria-hidden="true"
+ class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon"
+ data-v-3714b019=""
+ inert="inert"
+ >
+ <span
+ aria-hidden="true"
+ class="material-design-icon toggle-switch-icon"
+ data-v-3714b019=""
+ role="img"
+ >
+ <svg
+ class="material-design-icon__svg"
+ fill="currentColor"
+ height="36"
+ viewBox="0 0 24 24"
+ width="36"
+ >
+ <path
+ d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+ >
+ <!---->
+ </path>
+ </svg>
+ </span>
+ </span>
+ <span
+ class="checkbox-content__text checkbox-radio-switch__text"
+ data-v-3714b019=""
+ >
+ Automatically generate a birthday calendar
+ </span>
+ </span>
+ </span>
+ <em
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ Birthday calendars will be generated by a background job.
+ </em>
+ <br
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ />
+ <em
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ Hence they will not be available immediately after enabling but will show up after some time.
+ </em>
+ </p>
+ <p
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ <span
+ class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ data-v-f275cf53=""
+ style="--icon-size: 36px; --icon-height: 16px;"
+ >
+ <input
+ aria-labelledby="caldavSendEventReminders-label"
+ class="checkbox-radio-switch__input"
+ data-v-f275cf53=""
+ id="caldavSendEventReminders"
+ type="checkbox"
+ value=""
+ />
+ <span
+ class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text"
+ data-v-3714b019=""
+ data-v-f275cf53=""
+ id="caldavSendEventReminders-label"
+ >
+ <span
+ aria-hidden="true"
+ class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon"
+ data-v-3714b019=""
+ inert="inert"
+ >
+ <span
+ aria-hidden="true"
+ class="material-design-icon toggle-switch-icon"
+ data-v-3714b019=""
+ role="img"
+ >
+ <svg
+ class="material-design-icon__svg"
+ fill="currentColor"
+ height="36"
+ viewBox="0 0 24 24"
+ width="36"
+ >
+ <path
+ d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+ >
+ <!---->
+ </path>
+ </svg>
+ </span>
+ </span>
+ <span
+ class="checkbox-content__text checkbox-radio-switch__text"
+ data-v-3714b019=""
+ >
+ Send notifications for events
+ </span>
+ </span>
+ </span>
+ <em
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ Please make sure to properly set up
+ <a
+ href="../admin#mail_general_settings"
+ >
+ the email server
+ </a>
+ .
+ </em>
+ <br
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ />
+ <em
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ Notifications are sent via background jobs, so these must occur often enough.
+ </em>
+ </p>
+ <p
+ class="indented"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ <span
+ class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ data-v-f275cf53=""
+ style="--icon-size: 36px; --icon-height: 16px;"
+ >
+ <input
+ aria-labelledby="caldavSendEventRemindersToSharedGroupMembers-label"
+ class="checkbox-radio-switch__input"
+ data-v-f275cf53=""
+ id="caldavSendEventRemindersToSharedGroupMembers"
+ type="checkbox"
+ value=""
+ />
+ <span
+ class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text"
+ data-v-3714b019=""
+ data-v-f275cf53=""
+ id="caldavSendEventRemindersToSharedGroupMembers-label"
+ >
+ <span
+ aria-hidden="true"
+ class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon"
+ data-v-3714b019=""
+ inert="inert"
+ >
+ <span
+ aria-hidden="true"
+ class="material-design-icon toggle-switch-icon"
+ data-v-3714b019=""
+ role="img"
+ >
+ <svg
+ class="material-design-icon__svg"
+ fill="currentColor"
+ height="36"
+ viewBox="0 0 24 24"
+ width="36"
+ >
+ <path
+ d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+ >
+ <!---->
+ </path>
+ </svg>
+ </span>
+ </span>
+ <span
+ class="checkbox-content__text checkbox-radio-switch__text"
+ data-v-3714b019=""
+ >
+ Send reminder notifications to calendar sharees as well
+ </span>
+ </span>
+ </span>
+ <em
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ Reminders are always sent to organizers and attendees.
+ </em>
+ </p>
+ <p
+ class="indented"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ >
+ <span
+ class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
+ data-v-6b8d4c30=""
+ data-v-6f6953b5=""
+ data-v-f275cf53=""
+ style="--icon-size: 36px; --icon-height: 16px;"
+ >
+ <input
+ aria-labelledby="caldavSendEventRemindersPush-label"
+ class="checkbox-radio-switch__input"
+ data-v-f275cf53=""
+ id="caldavSendEventRemindersPush"
+ type="checkbox"
+ value=""
+ />
+ <span
+ class="checkbox-content checkbox-radio-switch__content checkbox-content-switch checkbox-content--has-text"
+ data-v-3714b019=""
+ data-v-f275cf53=""
+ id="caldavSendEventRemindersPush-label"
+ >
+ <span
+ aria-hidden="true"
+ class="checkbox-content__icon checkbox-content__icon--checked checkbox-radio-switch__icon"
+ data-v-3714b019=""
+ inert="inert"
+ >
+ <span
+ aria-hidden="true"
+ class="material-design-icon toggle-switch-icon"
+ data-v-3714b019=""
+ role="img"
+ >
+ <svg
+ class="material-design-icon__svg"
+ fill="currentColor"
+ height="36"
+ viewBox="0 0 24 24"
+ width="36"
+ >
+ <path
+ d="M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z"
+ >
+ <!---->
+ </path>
+ </svg>
+ </span>
+ </span>
+ <span
+ class="checkbox-content__text checkbox-radio-switch__text"
+ data-v-3714b019=""
+ >
+ Enable notifications for events via push
+ </span>
+ </span>
+ </span>
+ </p>
+ </div>
+</div>
+`;
diff --git a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license
new file mode 100644
index 00000000000..b8f52265f1f
--- /dev/null
+++ b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
+SPDX-License-Identifier: AGPL-3.0-or-later \ No newline at end of file