Skip to content
Snippets Groups Projects
Commit 29c6a309 authored by Konrad Mohrfeldt's avatar Konrad Mohrfeldt :koala:
Browse files

feat: allow users to delete episodes

refs #332
parent 964972a0
No related branches found
No related tags found
No related merge requests found
Pipeline #8873 passed
Pipeline: aura-tests

#8874

    <template> <template>
    <div> <div>
    <PageHeader :lead="show.name" :title="title" :editing-metadata="episode" /> <PageHeader :lead="show.name" :title="title" :editing-metadata="episode">
    <APermissionGuard show-permissions="program.delete_episode">
    <ConfirmEpisodeDelete v-slot="{ resolve }">
    <AConfirmDialog
    :title="t('episode.deletion.title')"
    :confirm-label="t('episode.deletion.confirmLabel')"
    @confirm="resolve(true)"
    @cancel="resolve(false)"
    >
    <p>{{ t('episode.deletion.description') }}</p>
    </AConfirmDialog>
    </ConfirmEpisodeDelete>
    <button type="button" class="btn btn-danger" @click="deleteEpisode">
    {{ t('episode.deletion.title') }}
    </button>
    </APermissionGuard>
    </PageHeader>
    <div <div
    class="tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 xl:tw-grid-cols-10 tw-items-start tw-gap-6 tw-max-w-[1200px]" class="tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 xl:tw-grid-cols-10 tw-items-start tw-gap-6 tw-max-w-[1200px]"
    ...@@ -82,8 +99,9 @@ import { ensureDate, useObjectListFromStore } from '@/util' ...@@ -82,8 +99,9 @@ import { ensureDate, useObjectListFromStore } from '@/util'
    import ASpinnerLabel from '@/components/generic/ASpinnerLabel.vue' import ASpinnerLabel from '@/components/generic/ASpinnerLabel.vue'
    import { useMediaFactory } from '@/stores/media-manager' import { useMediaFactory } from '@/stores/media-manager'
    import FormGroup from '@/components/generic/FormGroup.vue' import FormGroup from '@/components/generic/FormGroup.vue'
    import { useTextareaAutosize } from '@vueuse/core' import { createTemplatePromise, useTextareaAutosize } from '@vueuse/core'
    import { useAPIObjectFieldCopy } from '@/form' import { useAPIObjectFieldCopy } from '@/form'
    import AConfirmDialog from '@/components/generic/AConfirmDialog.vue'
    const props = defineProps<{ const props = defineProps<{
    show: Show show: Show
    ...@@ -115,6 +133,13 @@ const timeslotData = computed(() => { ...@@ -115,6 +133,13 @@ const timeslotData = computed(() => {
    }) })
    }) })
    const ConfirmEpisodeDelete = createTemplatePromise<boolean>()
    async function deleteEpisode() {
    if (!(await ConfirmEpisodeDelete.start())) return
    await episodeStore.remove(episode.value.id)
    }
    const mediaDescription = useAPIObjectFieldCopy(episodeStore, episode, 'mediaDescription', { const mediaDescription = useAPIObjectFieldCopy(episodeStore, episode, 'mediaDescription', {
    debounce: 2, debounce: 2,
    }) })
    ......
    ...@@ -93,6 +93,11 @@ export default { ...@@ -93,6 +93,11 @@ export default {
    createNew: 'Neue Sendung anlegen', createNew: 'Neue Sendung anlegen',
    perPage: 'Sendungen pro Seite', perPage: 'Sendungen pro Seite',
    }, },
    deletion: {
    title: 'Sendung löschen',
    description: 'Bist du sicher, dass du diese Sendung löschen willst?',
    confirmLabel: 'Ja, Sendung löschen',
    },
    assignment: { assignment: {
    clear: 'Zuweisung aufheben', clear: 'Zuweisung aufheben',
    clearDescription: clearDescription:
    ......
    ...@@ -92,6 +92,11 @@ export default { ...@@ -92,6 +92,11 @@ export default {
    createNew: 'Create new episode', createNew: 'Create new episode',
    perPage: 'Episodes per page', perPage: 'Episodes per page',
    }, },
    deletion: {
    title: 'Delete episode',
    description: 'Are you sure you want to delete this episode?',
    confirmLabel: 'Yes, delete episode',
    },
    assignment: { assignment: {
    clear: 'Clear assignment', clear: 'Clear assignment',
    clearDescription: clearDescription:
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment