diff options
Diffstat (limited to 'apps/dav/src/views/CalDavSettings.vue')
-rw-r--r-- | apps/dav/src/views/CalDavSettings.vue | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/apps/dav/src/views/CalDavSettings.vue b/apps/dav/src/views/CalDavSettings.vue new file mode 100644 index 00000000000..4b33b2b45bb --- /dev/null +++ b/apps/dav/src/views/CalDavSettings.vue @@ -0,0 +1,127 @@ +<template> + <div class="section"> + <h2>{{ $t('dav', 'Calendar server') }}</h2> + <!-- 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> + <input + id="caldavSendInvitations" + v-model="sendInvitations" + type="checkbox" + class="checkbox"> + <label for="caldavSendInvitations"> + {{ $t('dav', 'Send invitations to attendees') }} + </label> + <br> + <!-- 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> + <input + id="caldavGenerateBirthdayCalendar" + v-model="generateBirthdayCalendar" + type="checkbox" + class="checkbox"> + <label for="caldavGenerateBirthdayCalendar"> + {{ $t('dav', 'Automatically generate a birthday calendar') }} + </label> + <br> + <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> + <input + id="caldavSendEventReminders" + v-model="sendEventReminders" + type="checkbox" + class="checkbox"> + <label for="caldavSendEventReminders"> + {{ $t('dav', 'Send notifications for events') }} + </label> + <br> + <!-- 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> + <input + id="caldavSendEventRemindersPush" + v-model="sendEventRemindersPush" + type="checkbox" + class="checkbox" + :disabled="!sendEventReminders"> + <label for="caldavSendEventRemindersPush"> + {{ $t('dav', 'Enable notifications for events via push') }} + </label> + </p> + </div> +</template> + +<script> +import axios from '@nextcloud/axios' +import { generateUrl } from '@nextcloud/router' + +export default { + name: 'CalDavSettings', + 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="userSyncCalendarsUrl" 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') + }, + sendEventRemindersPush(value) { + OCP.AppConfig.setValue('dav', 'sendEventRemindersPush', value ? 'yes' : 'no') + }, + }, +} +</script> |