Skip to content
Snippets Groups Projects
Commit f39783dd authored by Ron Lucke's avatar Ron Lucke
Browse files

biest-615

parent 66e483e9
No related branches found
No related tags found
No related merge requests found
<template> <template>
<div v-if="structureLoadingState === 'done'"> <div>
<courseware-structural-element <div v-if="structureLoadingState === 'done'">
:canVisit="canVisit" <courseware-structural-element
:structural-element="selected" :canVisit="canVisit"
:ordered-structural-elements="orderedStructuralElements" :structural-element="selected"
@select="selectStructuralElement" :ordered-structural-elements="orderedStructuralElements"
></courseware-structural-element> @select="selectStructuralElement"
<MountingPortal mountTo="#courseware-action-widget" name="sidebar-actions"> ></courseware-structural-element>
<courseware-action-widget :structural-element="selected" :canVisit="canVisit"></courseware-action-widget> <MountingPortal mountTo="#courseware-action-widget" name="sidebar-actions">
</MountingPortal> <courseware-action-widget :structural-element="selected" :canVisit="canVisit"></courseware-action-widget>
<MountingPortal mountTo="#courseware-view-widget" name="sidebar-views"> </MountingPortal>
<courseware-view-widget :structural-element="selected" :canVisit="canVisit"></courseware-view-widget> <MountingPortal mountTo="#courseware-view-widget" name="sidebar-views">
</MountingPortal> <courseware-view-widget :structural-element="selected" :canVisit="canVisit"></courseware-view-widget>
</MountingPortal>
</div>
<studip-progress-indicator
v-if="structureLoadingState === 'loading'"
class="cw-loading-indicator-content"
:description="$gettext('Lade Lernmaterial...')"
/>
<courseware-companion-box
v-if="structureLoadingState === 'error'"
mood="sad"
:msgCompanion="loadingErrorMessage"
/>
</div> </div>
<studip-progress-indicator
v-else
class="cw-loading-indicator-content"
:description="$gettext('Lade Lernmaterial...')"
/>
</template> </template>
<script> <script>
import CoursewareStructuralElement from './CoursewareStructuralElement.vue'; import CoursewareStructuralElement from './CoursewareStructuralElement.vue';
import CoursewareViewWidget from './CoursewareViewWidget.vue'; import CoursewareViewWidget from './CoursewareViewWidget.vue';
import CoursewareActionWidget from './CoursewareActionWidget.vue'; import CoursewareActionWidget from './CoursewareActionWidget.vue';
import CoursewareCompanionBox from './CoursewareCompanionBox.vue';
import StudipProgressIndicator from '../StudipProgressIndicator.vue'; import StudipProgressIndicator from '../StudipProgressIndicator.vue';
import { mapActions, mapGetters } from 'vuex'; import { mapActions, mapGetters } from 'vuex';
...@@ -32,12 +40,14 @@ export default { ...@@ -32,12 +40,14 @@ export default {
CoursewareStructuralElement, CoursewareStructuralElement,
CoursewareViewWidget, CoursewareViewWidget,
CoursewareActionWidget, CoursewareActionWidget,
CoursewareCompanionBox,
StudipProgressIndicator, StudipProgressIndicator,
}, },
data: () => ({ data: () => ({
canVisit: null, canVisit: null,
selected: null, selected: null,
structureLoadingState: 'idle', structureLoadingState: 'idle',
loadingErrorStatus: null
}), }),
computed: { computed: {
...mapGetters({ ...mapGetters({
...@@ -49,6 +59,16 @@ export default { ...@@ -49,6 +59,16 @@ export default {
structuralElementById: 'courseware-structural-elements/byId', structuralElementById: 'courseware-structural-elements/byId',
userId: 'userId', userId: 'userId',
}), }),
loadingErrorMessage() {
switch (this.loadingErrorStatus) {
case 404:
return this.$gettext('Die Seite konnte nicht gefunden werden.');
case 403:
return this.$gettext('Diese Seite steht Ihnen leider nicht zur Verfügung.');
default:
return this.$gettext('Beim Laden der Seite ist ein Fehler aufgetreten.');
}
}
}, },
methods: { methods: {
...mapActions({ ...mapActions({
...@@ -71,7 +91,14 @@ export default { ...@@ -71,7 +91,14 @@ export default {
}, },
async mounted() { async mounted() {
this.structureLoadingState = 'loading'; this.structureLoadingState = 'loading';
await this.loadCoursewareStructure(); try {
await this.loadCoursewareStructure();
}
catch (error) {
this.loadingErrorStatus = error.status;
this.structureLoadingState = 'error';
return;
}
await this.loadTeacherStatus(this.userId); await this.loadTeacherStatus(this.userId);
this.structureLoadingState = 'done'; this.structureLoadingState = 'done';
const selectedId = this.$route.params?.id; const selectedId = this.$route.params?.id;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment