From 52c3a703fbfdcaa918d11b1dbb2cfc3b70a95c22 Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Tue, 12 Oct 2021 07:29:08 +0000 Subject: [PATCH] Biest#292 --- .../courseware/CoursewareAccordionContainer.vue | 16 +++++++++++++--- .../courseware/CoursewareCollapsibleBox.vue | 2 +- .../courseware/CoursewareListContainer.vue | 1 + .../courseware/CoursewareTabsContainer.vue | 10 ++++++---- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/resources/vue/components/courseware/CoursewareAccordionContainer.vue b/resources/vue/components/courseware/CoursewareAccordionContainer.vue index 3f99e9b5a23..17f8d01996a 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 70bcf03fa3f..9021e2e1ec3 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 096befe2b8e..ed60f824e74 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 d14503e3d95..f8502bd8542 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) { -- GitLab