From 8a97b384405468bef588171615bd87c33dc02c4e Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Tue, 7 Jan 2025 10:15:48 +0000 Subject: [PATCH] Courseware Block sortieren ist nicht persistent Closes #5097 Merge request studip/studip!3813 --- .../containers/CoursewareAccordionContainer.vue | 2 +- .../containers/CoursewareListContainer.vue | 1 + .../containers/CoursewareTabsContainer.vue | 2 +- resources/vue/mixins/courseware/container.js | 14 +++++++------- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/resources/vue/components/courseware/containers/CoursewareAccordionContainer.vue b/resources/vue/components/courseware/containers/CoursewareAccordionContainer.vue index 861db7bd419..18e6a4a4844 100644 --- a/resources/vue/components/courseware/containers/CoursewareAccordionContainer.vue +++ b/resources/vue/components/courseware/containers/CoursewareAccordionContainer.vue @@ -59,7 +59,7 @@ :data-section-id="index" > <template #item="{element, index}"> - <li class="cw-block-item cw-block-item-sortable"> + <li class="cw-block-item cw-block-item-sortable" :data-block-id="element.id"> <span :class="{ 'cw-sortable-handle-dragging': isDragging }" class="cw-sortable-handle" diff --git a/resources/vue/components/courseware/containers/CoursewareListContainer.vue b/resources/vue/components/courseware/containers/CoursewareListContainer.vue index fea378a4a98..1a8cbf28b97 100644 --- a/resources/vue/components/courseware/containers/CoursewareListContainer.vue +++ b/resources/vue/components/courseware/containers/CoursewareListContainer.vue @@ -44,6 +44,7 @@ <template #item="{element}"> <li class="cw-block-item cw-block-item-sortable" + :data-block-id="element.id" > <span :class="{ 'cw-sortable-handle-dragging': isDragging }" diff --git a/resources/vue/components/courseware/containers/CoursewareTabsContainer.vue b/resources/vue/components/courseware/containers/CoursewareTabsContainer.vue index 7b32bf9254e..4e3440f0d23 100644 --- a/resources/vue/components/courseware/containers/CoursewareTabsContainer.vue +++ b/resources/vue/components/courseware/containers/CoursewareTabsContainer.vue @@ -66,7 +66,7 @@ :data-section-id="sectionIndex" > <template #item="{element}"> - <li class="cw-block-item cw-block-item-sortable"> + <li class="cw-block-item cw-block-item-sortable" :data-block-id="element.id"> <span :class="{ 'cw-sortable-handle-dragging': isDragging }" class="cw-sortable-handle" diff --git a/resources/vue/mixins/courseware/container.js b/resources/vue/mixins/courseware/container.js index df3ab09b86e..b1db1b2d92f 100644 --- a/resources/vue/mixins/courseware/container.js +++ b/resources/vue/mixins/courseware/container.js @@ -39,16 +39,16 @@ const containerMixin = { dropBlock(e) { this.isDragging = false; // implemented by each container type let data = {}; - data.originContainerId = e.from.__vnode.ctx.attrs.containerId; - data.targetContainerId = e.to.__vnode.ctx.attrs.containerId; + data.originContainerId = e.from.dataset.containerId; + data.targetContainerId = e.to.dataset.containerId; if (data.originContainerId === data.targetContainerId) { this.storeSort(); // implemented by each container type } else { - data.originSectionId = e.from.__vnode.ctx.attrs.sectionId; - data.originSectionBlockList = e.from.__vnode.children.map(b => { return b.ctx.attrs.blockId; }); - data.targetSectionId = e.to.__vnode.ctx.attrs.sectionId; - data.targetSectionBlockList = e.to.__vnode.children.map(b => { return b.ctx.attrs.blockId; }); - data.blockId = e.item._underlying_vm_.id; + data.originSectionId = e.from.dataset.sectionId; + data.originSectionBlockList = [...e.from.children].map(b => b.dataset.blockId); + data.targetSectionId = e.to.dataset.sectionId; + data.targetSectionBlockList = [...e.to.children].map(b => b.dataset.blockId); + data.blockId = e.item.dataset.blockId; data.newPos = e.newIndex; const indexInBlockList = data.targetSectionBlockList.findIndex(b => b === data.blockId); data.targetSectionBlockList.splice(data.newPos, 0, data.targetSectionBlockList.splice(indexInBlockList,1)[0]); // move block id to new position -- GitLab