From 46738b63094c3ce43c33af6e3ca7705777d17ebb Mon Sep 17 00:00:00 2001 From: farbod <zamanifarbod2@gmail.com> Date: Thu, 6 Jan 2022 14:35:50 +0100 Subject: [PATCH] not showing courses without courseware, refs #277 --- .../CoursewareManagerCopySelector.vue | 2 +- .../vue/store/courseware/courseware.module.js | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/resources/vue/components/courseware/CoursewareManagerCopySelector.vue b/resources/vue/components/courseware/CoursewareManagerCopySelector.vue index 2a88e534c2e..c582737aef8 100755 --- a/resources/vue/components/courseware/CoursewareManagerCopySelector.vue +++ b/resources/vue/components/courseware/CoursewareManagerCopySelector.vue @@ -194,7 +194,7 @@ export default { } }, async mounted() { - this.courses = await this.loadUsersCourses(this.userId); + this.courses = await this.loadUsersCourses({ userId: this.userId, withCourseware: true }); this.loadSemesterMap(); } diff --git a/resources/vue/store/courseware/courseware.module.js b/resources/vue/store/courseware/courseware.module.js index be6ea2732de..4bf0dfb1b1a 100755 --- a/resources/vue/store/courseware/courseware.module.js +++ b/resources/vue/store/courseware/courseware.module.js @@ -819,7 +819,7 @@ export const actions = { } while (rootGetters[`${type}/all`].length < rootGetters[`${type}/lastMeta`].page.total); }, - async loadUsersCourses({ dispatch, rootGetters, state }, userId) { + async loadUsersCourses({ dispatch, rootGetters, state }, { userId, withCourseware }) { const parent = { type: 'users', id: userId, @@ -841,19 +841,29 @@ export const actions = { }); let courses = []; - memberships.forEach((membership) => { + for (let membership of memberships) { if ( membership.attributes.permission === 'dozent' && state.context.id !== membership.relationships.course.data.id ) { - courses.push(rootGetters['courses/related']({ parent: membership, relationship: 'course' })); + const course = rootGetters['courses/related']({ parent: membership, relationship: 'course' }); + if (!withCourseware) { + courses.push(course); + continue; + } + const coursewareInstance = await dispatch('loadRemoteCoursewareStructure', { + rangeId: course.id, + rangeType: course.type + }); + if (coursewareInstance?.relationships?.root) { + courses.push(course); + } } - }); - + } return courses; }, - loadRemoteCoursewareStructure({ dispatch, rootGetters }, { rangeId, rangeType }) { + async loadRemoteCoursewareStructure({ dispatch, rootGetters }, { rangeId, rangeType }) { const parent = { id: rangeId, type: rangeType, -- GitLab