diff --git a/resources/vue/components/courseware/CoursewareAccordionContainer.vue b/resources/vue/components/courseware/CoursewareAccordionContainer.vue index 3f99e9b5a237650ed683b2a7ef20ecffb233e23a..17f8d01996a5b1ad7b94dd39c3bc193db39ddc7c 100755 --- a/resources/vue/components/courseware/CoursewareAccordionContainer.vue +++ b/resources/vue/components/courseware/CoursewareAccordionContainer.vue @@ -121,8 +121,7 @@ export default { unlockObject: 'unlockObject', }), initCurrentData() { - // clone container to make edit reversible - this.currentContainer = JSON.parse(JSON.stringify(this.container)); + this.currentContainer = _.cloneDeep(this.container); let view = this; let sections = this.currentContainer.attributes.payload.sections; @@ -157,6 +156,9 @@ export default { this.currentContainer.attributes.payload.sections.splice(index, 1); }, async storeContainer() { + this.currentContainer.attributes.payload.sections.forEach(section => { + section.blocks = section.blocks.map((block) => {return block.id;}); + }); await this.updateContainer({ container: this.currentContainer, structuralElementId: this.currentContainer.relationships['structural-element'].data.id, @@ -165,7 +167,10 @@ export default { this.initCurrentData(); }, component(block) { - return 'courseware-' + block.attributes["block-type"] + '-block'; + if (block.attributes) { + return 'courseware-' + block.attributes["block-type"] + '-block'; + } + return null; }, updateContent(blockAdder) { if(blockAdder.container.id === this.container.id) { @@ -173,5 +178,10 @@ export default { } } }, + watch: { + blocks() { + this.initCurrentData(); + } + } }; </script> diff --git a/resources/vue/components/courseware/CoursewareCollapsibleBox.vue b/resources/vue/components/courseware/CoursewareCollapsibleBox.vue index 70bcf03fa3f0a3099c22dcd32440383f662d0141..9021e2e1ec3feddad3221cbc9216a5182faef9de 100755 --- a/resources/vue/components/courseware/CoursewareCollapsibleBox.vue +++ b/resources/vue/components/courseware/CoursewareCollapsibleBox.vue @@ -1,7 +1,7 @@ <template> <div class="cw-collapsible" :class="{ 'cw-collapsible-open': isOpen }"> <header :class="{ 'cw-collapsible-open': isOpen }" class="cw-collapsible-title" @click="isOpen = !isOpen"> - <studip-icon v-if="icon !== ''" :shape="icon" /> {{ title }} + <studip-icon v-if="icon" :shape="icon" /> {{ title }} </header> <div class="cw-collapsible-content" :class="{ 'cw-collapsible-content-open': isOpen }"> <slot></slot> diff --git a/resources/vue/components/courseware/CoursewareListContainer.vue b/resources/vue/components/courseware/CoursewareListContainer.vue index 096befe2b8edefac163f679aff10b5f2c82cdc21..ed60f824e74b3a38c39bb8bf14e4eae838378838 100755 --- a/resources/vue/components/courseware/CoursewareListContainer.vue +++ b/resources/vue/components/courseware/CoursewareListContainer.vue @@ -56,6 +56,7 @@ export default { if (block.attributes["block-type"] !== undefined) { return 'courseware-' + block.attributes["block-type"] + '-block'; } + return null; }, }, mounted() {}, diff --git a/resources/vue/components/courseware/CoursewareTabsContainer.vue b/resources/vue/components/courseware/CoursewareTabsContainer.vue index d14503e3d952be9c50a6af8518bc789adc046c5a..f8502bd85425705a5b841ac33600b84b26d13551 100755 --- a/resources/vue/components/courseware/CoursewareTabsContainer.vue +++ b/resources/vue/components/courseware/CoursewareTabsContainer.vue @@ -128,8 +128,7 @@ export default { unlockObject: 'unlockObject', }), initCurrentData() { - // clone container to make edit reversible - this.currentContainer = JSON.parse(JSON.stringify(this.container)); + this.currentContainer = _.cloneDeep(this.container); let view = this; let sections = this.currentContainer.attributes.payload.sections; @@ -164,6 +163,10 @@ export default { this.currentContainer.attributes.payload.sections.splice(index, 1); }, async storeContainer() { + this.currentContainer.attributes.payload.sections.forEach(section => { + section.blocks = section.blocks.map((block) => {return block.id;}); + }); + await this.updateContainer({ container: this.currentContainer, structuralElementId: this.currentContainer.relationships['structural-element'].data.id, @@ -174,9 +177,8 @@ export default { component(block) { if (block.attributes) { return 'courseware-' + block.attributes["block-type"] + '-block'; - } else { - console.debug(block); } + return null; }, updateContent(blockAdder) { if(blockAdder.container.id === this.container.id) {