|
|
@@ -1,20 +1,17 @@ |
|
|
|
<template> |
|
|
|
<div class="section"> |
|
|
|
<h2>{{ $t('dav', 'Calendar server') }}</h2> |
|
|
|
<SettingsSection :title="$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> |
|
|
|
<input id="caldavSendInvitations" |
|
|
|
v-model="sendInvitations" |
|
|
|
type="checkbox" |
|
|
|
class="checkbox"> |
|
|
|
<label for="caldavSendInvitations"> |
|
|
|
<CheckboxRadioSwitch id="caldavSendInvitations" |
|
|
|
:checked.sync="sendInvitations" |
|
|
|
type="switch"> |
|
|
|
{{ $t('dav', 'Send invitations to attendees') }} |
|
|
|
</label> |
|
|
|
<br> |
|
|
|
</CheckboxRadioSwitch> |
|
|
|
<!-- Can use v-html as: |
|
|
|
- $t passes the translated string through DOMPurify.sanitize, |
|
|
|
- replacement strings are not user-controlled. --> |
|
|
@@ -22,14 +19,12 @@ |
|
|
|
<em v-html="sendInvitationsHelpText" /> |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
<input id="caldavGenerateBirthdayCalendar" |
|
|
|
v-model="generateBirthdayCalendar" |
|
|
|
type="checkbox" |
|
|
|
<CheckboxRadioSwitch id="caldavGenerateBirthdayCalendar" |
|
|
|
:checked.sync="generateBirthdayCalendar" |
|
|
|
type="switch" |
|
|
|
class="checkbox"> |
|
|
|
<label for="caldavGenerateBirthdayCalendar"> |
|
|
|
{{ $t('dav', 'Automatically generate a birthday calendar') }} |
|
|
|
</label> |
|
|
|
<br> |
|
|
|
</CheckboxRadioSwitch> |
|
|
|
<em> |
|
|
|
{{ $t('dav', 'Birthday calendars will be generated by a background job.') }} |
|
|
|
</em> |
|
|
@@ -39,14 +34,11 @@ |
|
|
|
</em> |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
<input id="caldavSendEventReminders" |
|
|
|
v-model="sendEventReminders" |
|
|
|
type="checkbox" |
|
|
|
class="checkbox"> |
|
|
|
<label for="caldavSendEventReminders"> |
|
|
|
<CheckboxRadioSwitch id="caldavSendEventReminders" |
|
|
|
:checked.sync="sendEventReminders" |
|
|
|
type="switch"> |
|
|
|
{{ $t('dav', 'Send notifications for events') }} |
|
|
|
</label> |
|
|
|
<br> |
|
|
|
</CheckboxRadioSwitch> |
|
|
|
<!-- Can use v-html as: |
|
|
|
- $t passes the translated string through DOMPurify.sanitize, |
|
|
|
- replacement strings are not user-controlled. --> |
|
|
@@ -58,47 +50,47 @@ |
|
|
|
</em> |
|
|
|
</p> |
|
|
|
<p class="indented"> |
|
|
|
<input id="caldavSendEventRemindersToSharedGroupMembers" |
|
|
|
v-model="sendEventRemindersToSharedGroupMembers" |
|
|
|
type="checkbox" |
|
|
|
class="checkbox" |
|
|
|
<CheckboxRadioSwitch id="caldavSendEventRemindersToSharedGroupMembers" |
|
|
|
:checked.sync="sendEventRemindersToSharedGroupMembers" |
|
|
|
type="switch" |
|
|
|
:disabled="!sendEventReminders"> |
|
|
|
<label for="caldavSendEventRemindersToSharedGroupMembers"> |
|
|
|
{{ $t('dav', 'Send reminder notifications to calendar sharees as well' ) }} |
|
|
|
</label> |
|
|
|
<br> |
|
|
|
</CheckboxRadioSwitch> |
|
|
|
<em> |
|
|
|
{{ $t('dav', 'Reminders are always sent to organizers and attendees.' ) }} |
|
|
|
</em> |
|
|
|
</p> |
|
|
|
<p class="indented"> |
|
|
|
<input id="caldavSendEventRemindersPush" |
|
|
|
v-model="sendEventRemindersPush" |
|
|
|
type="checkbox" |
|
|
|
class="checkbox" |
|
|
|
<CheckboxRadioSwitch id="caldavSendEventRemindersPush" |
|
|
|
:checked.sync="sendEventRemindersPush" |
|
|
|
type="switch" |
|
|
|
:disabled="!sendEventReminders"> |
|
|
|
<label for="caldavSendEventRemindersPush"> |
|
|
|
{{ $t('dav', 'Enable notifications for events via push') }} |
|
|
|
</label> |
|
|
|
</CheckboxRadioSwitch> |
|
|
|
</p> |
|
|
|
</div> |
|
|
|
</SettingsSection> |
|
|
|
</template> |
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
.indented { |
|
|
|
padding-left: 28px; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|
|
|
|
<script> |
|
|
|
import axios from '@nextcloud/axios' |
|
|
|
import { generateUrl } from '@nextcloud/router' |
|
|
|
import { loadState } from '@nextcloud/initial-state' |
|
|
|
import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' |
|
|
|
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' |
|
|
|
|
|
|
|
const userSyncCalendarsDocUrl = loadState('dav', 'userSyncCalendarsDocUrl', '#') |
|
|
|
|
|
|
|
export default { |
|
|
|
name: 'CalDavSettings', |
|
|
|
components: { |
|
|
|
CheckboxRadioSwitch, |
|
|
|
SettingsSection, |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return { |
|
|
|
userSyncCalendarsDocUrl, |
|
|
|
} |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
hint() { |
|
|
|
const translated = this.$t( |
|
|
@@ -151,3 +143,18 @@ export default { |
|
|
|
}, |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style scoped> |
|
|
|
.indented { |
|
|
|
padding-left: 28px; |
|
|
|
} |
|
|
|
/** Use deep selector to affect v-html */ |
|
|
|
* >>> a { |
|
|
|
text-decoration: underline; |
|
|
|
} |
|
|
|
.settings-hint { |
|
|
|
margin-top: -.2em; |
|
|
|
margin-bottom: 1em; |
|
|
|
opacity: .7; |
|
|
|
} |
|
|
|
</style> |