Add confirm dialog and custom text to room and room entry delete actions
Resolves MS-524
This commit is contained in:
parent
bf850198f7
commit
0aa60c5853
|
|
@ -9,7 +9,7 @@
|
||||||
</h3>
|
</h3>
|
||||||
</template>
|
</template>
|
||||||
<p class="confirm-dialog__content">
|
<p class="confirm-dialog__content">
|
||||||
Wollen Sie diesen Eintrag wirklich löschen?
|
{{ message }}
|
||||||
</p>
|
</p>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -48,6 +48,13 @@
|
||||||
}
|
}
|
||||||
return 'Bestätigung';
|
return 'Bestätigung';
|
||||||
},
|
},
|
||||||
|
message() {
|
||||||
|
const {payload} = this.$modal.state;
|
||||||
|
if (payload && payload.message) {
|
||||||
|
return payload.message;
|
||||||
|
}
|
||||||
|
return 'Wollen Sie diesen Eintrag wirklich löschen?';
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<more-actions data-cy="room-actions">
|
<more-actions
|
||||||
|
v-slot="{toggle}"
|
||||||
|
data-cy="room-actions"
|
||||||
|
>
|
||||||
<popover-link
|
<popover-link
|
||||||
icon="pen-icon"
|
icon="pen-icon"
|
||||||
text="Bearbeiten"
|
text="Bearbeiten"
|
||||||
|
|
@ -15,7 +18,7 @@
|
||||||
icon="trash-icon"
|
icon="trash-icon"
|
||||||
text="Löschen"
|
text="Löschen"
|
||||||
data-cy="delete-room"
|
data-cy="delete-room"
|
||||||
@link-action="deleteRoom()"
|
@link-action="deleteRoom(toggle)"
|
||||||
/>
|
/>
|
||||||
</more-actions>
|
</more-actions>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -47,36 +50,45 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
deleteRoom() {
|
deleteRoom(toggle) {
|
||||||
this.$apollo.mutate({
|
toggle();
|
||||||
mutation: DELETE_ROOM_MUTATION,
|
this.$modal.open('confirm', {
|
||||||
variables: {
|
title: 'Raum löschen',
|
||||||
input: {
|
message: 'Willst du diesen Raum wirklich löschen? Wenn du diesen Raum löschst, werden auch alle dazugehörigen Einträge und Kommentare gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.',
|
||||||
id: this.id,
|
}).then(() => {
|
||||||
},
|
this.$apollo.mutate({
|
||||||
},
|
mutation: DELETE_ROOM_MUTATION,
|
||||||
update: (store, {data: {deleteRoom: {success}}}) => {
|
variables: {
|
||||||
if (success) {
|
input: {
|
||||||
const {rooms} = store.readQuery({query: ROOMS_QUERY});
|
id: this.id,
|
||||||
if (rooms) {
|
},
|
||||||
const index = rooms.findIndex(room => room.id === this.id);
|
},
|
||||||
console.log(`found room index ${index} - rooms length ${rooms.length}`);
|
update: (store, {data: {deleteRoom: {success}}}) => {
|
||||||
const slicedRooms = [
|
if (success) {
|
||||||
...rooms.slice(0, index),
|
const {rooms} = store.readQuery({query: ROOMS_QUERY});
|
||||||
...rooms.slice(index+1)
|
if (rooms) {
|
||||||
];
|
const index = rooms.findIndex(room => room.id === this.id);
|
||||||
console.log(`slicedRooms length ${slicedRooms.length}`);
|
console.log(`found room index ${index} - rooms length ${rooms.length}`);
|
||||||
const data = {
|
const slicedRooms = [
|
||||||
rooms: slicedRooms
|
...rooms.slice(0, index),
|
||||||
};
|
...rooms.slice(index + 1),
|
||||||
store.writeQuery({query: ROOMS_QUERY, data});
|
];
|
||||||
}
|
console.log(`slicedRooms length ${slicedRooms.length}`);
|
||||||
}
|
const data = {
|
||||||
this.$router.push({
|
rooms: slicedRooms,
|
||||||
name: ROOMS_PAGE,
|
};
|
||||||
|
store.writeQuery({query: ROOMS_QUERY, data});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.$router.push({
|
||||||
|
name: ROOMS_PAGE,
|
||||||
|
});
|
||||||
|
},
|
||||||
});
|
});
|
||||||
},
|
})
|
||||||
});
|
.catch(() => {
|
||||||
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
editRoom() {
|
editRoom() {
|
||||||
this.$router.push({name: 'edit-room', params: {id: this.id}});
|
this.$router.push({name: 'edit-room', params: {id: this.id}});
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,10 @@
|
||||||
methods: {
|
methods: {
|
||||||
deleteRoomEntry(slug, toggle) {
|
deleteRoomEntry(slug, toggle) {
|
||||||
toggle();
|
toggle();
|
||||||
this.$modal.open('confirm')
|
this.$modal.open('confirm', {
|
||||||
|
title: 'Eintrag löschen',
|
||||||
|
message: 'Willst du diesen Eintrag wirklich löschen? Wenn du diesen Eintrag löschst, werden auch alle dazugehörigen Kommentare gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.',
|
||||||
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.$apollo.mutate({
|
this.$apollo.mutate({
|
||||||
mutation: DELETE_ROOM_ENTRY_MUTATION,
|
mutation: DELETE_ROOM_ENTRY_MUTATION,
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class ModuleRoomSlug(TitleSlugDescriptionModel):
|
||||||
|
|
||||||
class Comment(models.Model):
|
class Comment(models.Model):
|
||||||
text = models.TextField()
|
text = models.TextField()
|
||||||
room_entry = models.ForeignKey(RoomEntry, related_name='comments', on_delete=models.PROTECT)
|
room_entry = models.ForeignKey(RoomEntry, related_name='comments', on_delete=models.CASCADE)
|
||||||
owner = models.ForeignKey(get_user_model(), related_name='comments', on_delete=models.PROTECT)
|
owner = models.ForeignKey(get_user_model(), related_name='comments', on_delete=models.PROTECT)
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue