From 898d5bf3df2230722c12aaeaf0f16b8a4e462ab8 Mon Sep 17 00:00:00 2001 From: gzbender Date: Fri, 21 Sep 2018 15:56:44 +0500 Subject: [PATCH] LIL-645 --- api/v1/serializers/mixins.py | 6 +- web/src/components/CourseRedactor.vue | 12 +- web/src/components/blocks/BlockAdd.vue | 36 ++-- web/src/components/blocks/BlockContent.vue | 28 ++-- web/src/components/blocks/BlockImages.vue | 24 +-- web/src/components/blocks/Image.vue | 2 +- web/src/js/modules/api.js | 186 ++++++++++++++------- 7 files changed, 182 insertions(+), 112 deletions(-) diff --git a/api/v1/serializers/mixins.py b/api/v1/serializers/mixins.py index d75cbd12..50e7d19d 100644 --- a/api/v1/serializers/mixins.py +++ b/api/v1/serializers/mixins.py @@ -88,7 +88,6 @@ class DispatchContentMixin(object): g.position = cdata['position'] g.title = cdata['title'] g.uuid = cdata['uuid'] - g.save() else: g = Gallery( position=cdata['position'], @@ -96,8 +95,9 @@ class DispatchContentMixin(object): uuid=cdata['uuid'], ) setattr(g, obj_type, obj) - if 'gallery_images' in cdata: - for image in cdata['gallery_images']: + g.save() + if 'images' in cdata: + for image in cdata['images']: if 'img' in image and image['img']: if 'id' in image and image['id']: gi = GalleryImage.objects.get(id=image['id']) diff --git a/web/src/components/CourseRedactor.vue b/web/src/components/CourseRedactor.vue index 70a8971e..0f5ae924 100644 --- a/web/src/components/CourseRedactor.vue +++ b/web/src/components/CourseRedactor.vue @@ -761,19 +761,19 @@ let remoteDataMapper = {} if (courseData.content) { courseData.content.forEach((contentElement) => { - remoteUUIDMapper[contentElement.uuid] = contentElement.id; - remoteDataMapper[contentElement.uuid] = contentElement; + remoteUUIDMapper[contentElement.uuid] = contentElement.data.id; + remoteDataMapper[contentElement.uuid] = contentElement.data; }) } this.course.content.forEach((contentElement, index) => { - if (!contentElement.id) { - this.$set(this.course.content[index], 'id', remoteUUIDMapper[contentElement.uuid]) + if (!contentElement.data.id) { + this.$set(this.course.content[index].data, 'id', remoteUUIDMapper[contentElement.uuid]) } if(contentElement.type === 'images') { - remoteDataMapper[contentElement.uuid].gallery_images.forEach((image, imageIndex) => { - this.$set(this.course.content[index].gallery_images[imageIndex], 'id', image.id) + remoteDataMapper[contentElement.uuid].images.forEach((image, imageIndex) => { + this.$set(this.course.content[index].data.images[imageIndex], 'id', image.id) }) } }); diff --git a/web/src/components/blocks/BlockAdd.vue b/web/src/components/blocks/BlockAdd.vue index 6720b6da..0090a8df 100644 --- a/web/src/components/blocks/BlockAdd.vue +++ b/web/src/components/blocks/BlockAdd.vue @@ -69,38 +69,50 @@ addBlockText() { this.add({ type: 'text', - title: '', - text: '', + data: { + title: '', + text: '', + } }) }, addBlockImage() { this.add({ type: 'image', - title: '', - img: {}, + data: { + title: '', + image_id: null, + image_url: null, + } }) }, addBlockImageText() { this.add({ type: 'image-text', - title: '', - img: {}, - text: '', + data: { + title: '', + text: '', + image_id: null, + image_url: null, + } }) }, addBlockImages() { this.add({ type: 'images', - title: '', - text: '', - gallery_images: [], + data: { + title: '', + text: '', + images: [], + } }) }, addBlockVideo() { this.add({ type: 'video', - title: '', - video_url: '', + data: { + title: '', + video_url: '', + } }) }, } diff --git a/web/src/components/blocks/BlockContent.vue b/web/src/components/blocks/BlockContent.vue index eeb88314..551d6d9b 100644 --- a/web/src/components/blocks/BlockContent.vue +++ b/web/src/components/blocks/BlockContent.vue @@ -4,36 +4,36 @@
+ :video-url.sync="block.data.video_url"/>
diff --git a/web/src/components/blocks/BlockImages.vue b/web/src/components/blocks/BlockImages.vue index ba2c14d4..80f3a8ab 100644 --- a/web/src/components/blocks/BlockImages.vue +++ b/web/src/components/blocks/BlockImages.vue @@ -23,7 +23,7 @@