|
|
@@ -21,24 +21,26 @@ |
|
|
|
--> |
|
|
|
|
|
|
|
<template> |
|
|
|
<div class="absence"> |
|
|
|
<form class="absence" @submit.prevent="saveForm"> |
|
|
|
<div class="absence__dates"> |
|
|
|
<NcDateTimePickerNative id="absence-first-day" |
|
|
|
v-model="firstDay" |
|
|
|
:label="$t('dav', 'First day')" |
|
|
|
class="absence__dates__picker" /> |
|
|
|
class="absence__dates__picker" |
|
|
|
:required="true" /> |
|
|
|
<NcDateTimePickerNative id="absence-last-day" |
|
|
|
v-model="lastDay" |
|
|
|
:label="$t('dav', 'Last day (inclusive)')" |
|
|
|
class="absence__dates__picker" /> |
|
|
|
class="absence__dates__picker" |
|
|
|
:required="true" /> |
|
|
|
</div> |
|
|
|
<NcTextField :value.sync="status" :label="$t('dav', 'Short absence status')" /> |
|
|
|
<NcTextArea :value.sync="message" :label="$t('dav', 'Long absence Message')" /> |
|
|
|
<NcTextField :value.sync="status" :label="$t('dav', 'Short absence status')" :required="true" /> |
|
|
|
<NcTextArea :value.sync="message" :label="$t('dav', 'Long absence Message')" :required="true" /> |
|
|
|
|
|
|
|
<div class="absence__buttons"> |
|
|
|
<NcButton :disabled="loading || !valid" |
|
|
|
type="primary" |
|
|
|
@click="saveForm"> |
|
|
|
native-type="submit"> |
|
|
|
{{ $t('dav', 'Save') }} |
|
|
|
</NcButton> |
|
|
|
<NcButton :disabled="loading || !valid" |
|
|
@@ -47,7 +49,7 @@ |
|
|
|
{{ $t('dav', 'Disable absence') }} |
|
|
|
</NcButton> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</form> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
@@ -59,7 +61,9 @@ import { generateUrl } from '@nextcloud/router' |
|
|
|
import axios from '@nextcloud/axios' |
|
|
|
import { formatDateAsYMD } from '../utils/date.js' |
|
|
|
import { loadState } from '@nextcloud/initial-state' |
|
|
|
import { showError } from '@nextcloud/dialogs' |
|
|
|
import { showError, showSuccess } from '@nextcloud/dialogs' |
|
|
|
|
|
|
|
import logger from '../service/logger.js' |
|
|
|
|
|
|
|
export default { |
|
|
|
name: 'AbsenceForm', |
|
|
@@ -88,6 +92,7 @@ export default { |
|
|
|
return !!this.firstDay |
|
|
|
&& !!this.lastDay |
|
|
|
&& !!this.status |
|
|
|
&& !!this.message |
|
|
|
&& this.lastDay > this.firstDay |
|
|
|
}, |
|
|
|
}, |
|
|
@@ -111,8 +116,10 @@ export default { |
|
|
|
status: this.status, |
|
|
|
message: this.message, |
|
|
|
}) |
|
|
|
showSuccess(this.$t('dav', 'Absence saved')) |
|
|
|
} catch (error) { |
|
|
|
showError(this.$t('dav', 'Failed to save your absence settings')) |
|
|
|
logger.error('Could not save absence', { error }) |
|
|
|
} finally { |
|
|
|
this.loading = false |
|
|
|
} |
|
|
@@ -122,8 +129,10 @@ export default { |
|
|
|
try { |
|
|
|
await axios.delete(generateUrl('/apps/dav/settings/absence')) |
|
|
|
this.resetForm() |
|
|
|
showSuccess(this.$t('dav', 'Absence cleared')) |
|
|
|
} catch (error) { |
|
|
|
showError(this.$t('dav', 'Failed to clear your absence settings')) |
|
|
|
logger.error('Could not clear absence', { error }) |
|
|
|
} finally { |
|
|
|
this.loading = false |
|
|
|
} |