diff --git a/client/src/components/rooms/RoomEntry.vue b/client/src/components/rooms/RoomEntry.vue
index f45fb7e5..7aed49bc 100644
--- a/client/src/components/rooms/RoomEntry.vue
+++ b/client/src/components/rooms/RoomEntry.vue
@@ -34,8 +34,8 @@
diff --git a/client/src/components/rooms/RoomEntryActions.vue b/client/src/components/rooms/RoomEntryActions.vue
index 16549cb0..0c4364f7 100644
--- a/client/src/components/rooms/RoomEntryActions.vue
+++ b/client/src/components/rooms/RoomEntryActions.vue
@@ -3,13 +3,13 @@
@@ -19,10 +19,11 @@
import MoreActions from '@/components/rooms/MoreActions';
import DELETE_ROOM_ENTRY_MUTATION from 'gql/mutations/rooms/deleteRoomEntry';
import ROOM_ENTRIES_QUERY from 'gql/queries/roomEntriesQuery';
+ import {UPDATE_ROOM_ENTRY_PAGE} from '@/router/room.names';
export default {
props: {
- id: {
+ slug: {
type: String,
default: '',
},
@@ -40,12 +41,12 @@
},
methods: {
- deleteRoomEntry(id) {
+ deleteRoomEntry(slug) {
this.$apollo.mutate({
mutation: DELETE_ROOM_ENTRY_MUTATION,
variables: {
input: {
- id,
+ slug,
},
},
update(store, {data: {deleteRoomEntry: {success, roomSlug}}}) {
@@ -54,15 +55,22 @@
const variables = {slug: roomSlug};
const data = store.readQuery({query, variables});
if (data) {
- data.room.roomEntries.edges.splice(data.room.roomEntries.edges.findIndex(edge => edge.node.id === id), 1);
+ // todo: make immutable
+ data.room.roomEntries.edges.splice(data.room.roomEntries.edges.findIndex(edge => edge.node.slug === slug), 1);
store.writeQuery({query, data, variables});
}
}
},
});
},
- editRoomEntry(id) {
- this.$store.dispatch('editRoomEntry', id);
+ editRoomEntry(slug) {
+ this.$router.push({
+ name: UPDATE_ROOM_ENTRY_PAGE,
+ params: {
+ slug: this.$route.params.slug,
+ entrySlug: slug
+ }
+ });
},
},
};
diff --git a/client/src/components/rooms/room-entries/NewRoomEntryWizard.vue b/client/src/components/rooms/room-entries/NewRoomEntryWizard.vue
deleted file mode 100644
index 06aebd61..00000000
--- a/client/src/components/rooms/room-entries/NewRoomEntryWizard.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-
diff --git a/client/src/pages/rooms/editRoomEntry.vue b/client/src/pages/rooms/editRoomEntry.vue
new file mode 100644
index 00000000..ad630a8c
--- /dev/null
+++ b/client/src/pages/rooms/editRoomEntry.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
diff --git a/client/src/pages/rooms/newRoomEntry.vue b/client/src/pages/rooms/newRoomEntry.vue
index 124998ed..04c46636 100644
--- a/client/src/pages/rooms/newRoomEntry.vue
+++ b/client/src/pages/rooms/newRoomEntry.vue
@@ -52,7 +52,7 @@
const entry = {
title,
contents,
- slug: this.slug
+ roomSlug: this.slug
};
this.$apollo.mutate({
mutation: NEW_ROOM_ENTRY_MUTATION,
diff --git a/client/src/router/room.names.js b/client/src/router/room.names.js
index f99a3a30..6edd6e8a 100644
--- a/client/src/router/room.names.js
+++ b/client/src/router/room.names.js
@@ -2,3 +2,4 @@ export const NEW_ROOM_PAGE = 'new-room';
export const ROOMS_PAGE = 'rooms';
export const ROOM_PAGE = 'room';
export const ADD_ROOM_ENTRY_PAGE = 'add-room-entry';
+export const UPDATE_ROOM_ENTRY_PAGE = 'update-room-entry';
diff --git a/client/src/router/room.routes.js b/client/src/router/room.routes.js
index d1e4e0e0..c1f15b50 100644
--- a/client/src/router/room.routes.js
+++ b/client/src/router/room.routes.js
@@ -1,10 +1,11 @@
-import {NEW_ROOM_PAGE, ROOMS_PAGE, ADD_ROOM_ENTRY_PAGE, ROOM_PAGE} from '@/router/room.names';
+import {NEW_ROOM_PAGE, ROOMS_PAGE, ADD_ROOM_ENTRY_PAGE, ROOM_PAGE, UPDATE_ROOM_ENTRY_PAGE} from '@/router/room.names';
const rooms = () => import(/* webpackChunkName: "rooms" */'@/pages/rooms/rooms');
const newRoom = () => import(/* webpackChunkName: "rooms" */'@/pages/rooms/newRoom');
const editRoom = () => import(/* webpackChunkName: "rooms" */'@/pages/rooms/editRoom');
const room = () => import(/* webpackChunkName: "rooms" */'@/pages/rooms/room');
const newRoomEntry = () => import(/* webpackChunkName: "rooms" */'@/pages/rooms/newRoomEntry');
+const editRoomEntry = () => import(/* webpackChunkName: "rooms" */'@/pages/rooms/editRoomEntry');
const moduleRoom = () => import(/* webpackChunkName: "rooms" */'@/pages/module/moduleRoom');
export default [
@@ -13,6 +14,7 @@ export default [
{path: '/edit-room/:id', name: 'edit-room', component: editRoom, props: true},
{path: '/room/:slug', name: ROOM_PAGE, component: room, props: true},
{path: '/room/:slug/add', name: ADD_ROOM_ENTRY_PAGE, component: newRoomEntry, props: true},
+ {path: '/room/:slug/edit/:entrySlug', name: UPDATE_ROOM_ENTRY_PAGE, component: editRoomEntry, props: true},
{
path: '/module-room/:slug',
name: 'moduleRoom',
diff --git a/server/rooms/inputs.py b/server/rooms/inputs.py
index 499468ca..6e7a2d8d 100644
--- a/server/rooms/inputs.py
+++ b/server/rooms/inputs.py
@@ -26,8 +26,8 @@ class RoomEntryArgument(InputObjectType):
class AddRoomEntryArgument(RoomEntryArgument):
- slug = graphene.String(required=True)
+ room_slug = graphene.String(required=True)
class UpdateRoomEntryArgument(RoomEntryArgument):
- id = graphene.ID(required=True)
+ slug = graphene.String(required=True)
diff --git a/server/rooms/mutations.py b/server/rooms/mutations.py
index 74606e9b..a4a033b5 100644
--- a/server/rooms/mutations.py
+++ b/server/rooms/mutations.py
@@ -86,13 +86,13 @@ class MutateRoomEntry(relay.ClientIDMutation):
def mutate_and_get_payload(cls, root, info, **kwargs):
room_entry_data = kwargs.get('room_entry')
room = None
- slug = room_entry_data.get('slug')
+ room_slug = room_entry_data.get('room_slug')
- if slug is not None:
- room = Room.objects.get(slug=slug)
+ if room_slug is not None:
+ room = Room.objects.get(slug=room_slug)
room_entry_data['room'] = room.id
- if room_entry_data.get('id') is not None:
+ if room_entry_data.get('slug') is not None:
serializer = cls.update_room_entry(info, room_entry_data)
else:
serializer = cls.add_room_entry(info, room_entry_data, room)
@@ -106,7 +106,7 @@ class MutateRoomEntry(relay.ClientIDMutation):
@classmethod
def update_room_entry(cls, info, room_entry_data):
- instance = get_object(RoomEntry, room_entry_data.get('id'))
+ instance = RoomEntry.objects.get(slug=room_entry_data.get('slug'))
if not instance.room.school_class.is_user_in_schoolclass(info.context.user):
raise Exception('You are in the wrong class')
diff --git a/server/schema.graphql b/server/schema.graphql
index 6eea61e0..93b685fc 100644
--- a/server/schema.graphql
+++ b/server/schema.graphql
@@ -118,7 +118,7 @@ input AddRoomArgument {
input AddRoomEntryArgument {
title: String!
contents: [ContentElementInput]
- slug: String!
+ roomSlug: String!
}
input AddRoomEntryInput {