diff --git a/resources/vue/components/courseware/CoursewareTasksDialogDistribute.vue b/resources/vue/components/courseware/CoursewareTasksDialogDistribute.vue index 78d6d46d6846eed2d6a838cc832157634cb85b55..1e82d94c99b3316a97225dce17deb3e085735752 100644 --- a/resources/vue/components/courseware/CoursewareTasksDialogDistribute.vue +++ b/resources/vue/components/courseware/CoursewareTasksDialogDistribute.vue @@ -327,6 +327,7 @@ export default { selectedGroups: [], bulkSelectGroups: false, requirements: [], + distributing: false, }; }, computed: { @@ -494,6 +495,7 @@ export default { copyStructuralElement: 'copyStructuralElement', companionError: 'companionError', companionSuccess: 'companionSuccess', + companionInfo: 'companionInfo', loadCourseMemberships: 'course-memberships/loadRelated', loadCourseStatusGroups: 'status-groups/loadRelated', createTaskGroup: 'createTaskGroup', @@ -515,6 +517,11 @@ export default { this.loadStructuralElement({ id: id, options: { include: 'children' } }); }, async distributeTask() { + if (this.distributing) { + this.companionInfo({ info: this.$gettext('Aufgaben werden bereits verteilt.') }); + return; + } + this.distributing = true; const taskGroup = { attributes: { title: this.taskTitle, @@ -548,11 +555,12 @@ export default { solvers = this.selectedGroups.map((id) => ({ type: 'status-groups', id })); } taskGroup.relationships.solvers.data = solvers; - await this.createTaskGroup({ taskGroup }); this.companionSuccess({ info: this.$gettext('Aufgaben wurden verteilt.') }); this.$emit('newtask'); + this.distributing = false; this.setShowTasksDistributeDialog(false); + }, validateSolvers() { if ( diff --git a/resources/vue/components/courseware/TasksApp.vue b/resources/vue/components/courseware/TasksApp.vue index 37ec927542c4b180078cf5e123b5822f9e7012c2..7c149b828a3f7bdd7f800e6ee1ec0b2a67d16be1 100644 --- a/resources/vue/components/courseware/TasksApp.vue +++ b/resources/vue/components/courseware/TasksApp.vue @@ -7,13 +7,15 @@ <MountingPortal mountTo="#courseware-action-widget" name="sidebar-actions" v-if="userIsTeacher"> <courseware-tasks-action-widget /> </MountingPortal> + <courseware-companion-overlay /> </div> </template> <script> import CoursewareTasksActionWidget from './CoursewareTasksActionWidget.vue'; -import CoursewareDashboardTasks from './CoursewareDashboardTasks.vue' -import CoursewareDashboardStudents from './CoursewareDashboardStudents.vue' +import CoursewareDashboardTasks from './CoursewareDashboardTasks.vue'; +import CoursewareDashboardStudents from './CoursewareDashboardStudents.vue'; +import CoursewareCompanionOverlay from './CoursewareCompanionOverlay.vue'; import { mapGetters } from 'vuex'; export default { @@ -21,6 +23,7 @@ export default { CoursewareTasksActionWidget, CoursewareDashboardTasks, CoursewareDashboardStudents, + CoursewareCompanionOverlay, }, computed: { ...mapGetters({