diff --git a/resources/vue/components/courseware/CoursewareContentBookmarkFilterWidget.vue b/resources/vue/components/courseware/CoursewareContentBookmarkFilterWidget.vue index de8eb010ce1a2dd41e49d669de782bc48db88415..515796f2c067f3505767fc4d7ed3e0d46940e6e3 100644 --- a/resources/vue/components/courseware/CoursewareContentBookmarkFilterWidget.vue +++ b/resources/vue/components/courseware/CoursewareContentBookmarkFilterWidget.vue @@ -1,7 +1,10 @@ <template> <select v-model="bookmarkFilter" class="sidebar-selectlist"> <option value="all"> - <translate>alle</translate> + {{ $gettext('alle') }} + </option> + <option value="contents"> + {{ $gettext('Arbeitsplatz') }} </option> <option v-for="course in courses" :key="course.id" :value="course.id"> {{ course.attributes.title }} diff --git a/resources/vue/components/courseware/CoursewareContentBookmarks.vue b/resources/vue/components/courseware/CoursewareContentBookmarks.vue index 85345428b8501e7c1cb9bc12315606664c59a616..83d0927ddf0f3e4b2f69e941ff3e28cde2dfde26 100644 --- a/resources/vue/components/courseware/CoursewareContentBookmarks.vue +++ b/resources/vue/components/courseware/CoursewareContentBookmarks.vue @@ -14,9 +14,7 @@ :style="getChildStyle(bookmark)" ></div> <div class="description"> - <header - :class="[bookmark.attributes.purpose !== '' ? 'description-icon-' + bookmark.attributes.purpose : '']" - > + <header> {{ bookmark.attributes.title }} </header> <div class="description-text-wrapper"> @@ -27,7 +25,7 @@ <studip-icon shape="seminar" role="info_alt"/> {{ getCourseName(bookmark.relationships.course.data.id) }} </span> <span v-if="bookmark.relationships.user"> - <studip-icon shape="headache" role="info_alt"/> {{ getUserName(bookmark.relationships.user.data.id) }} + <studip-icon shape="content2" role="info_alt"/> {{ $gettext('Arbeitsplatz') }} </span> </footer> </div> @@ -58,8 +56,13 @@ export default { if (this.bookmarkFilter === 'all') { return this.bookmarks; } + if (this.bookmarkFilter === 'contents') { + return this.bookmarks.filter(bookmark => { + return bookmark.relationships.user?.data; + }); + } return this.bookmarks.filter(bookmark => { - return bookmark.relationships.course.data.id === this.bookmarkFilter; + return bookmark.relationships.course?.data?.id === this.bookmarkFilter; }); } return []; @@ -81,12 +84,14 @@ export default { return user.attributes['formatted-name']; }, getElementUrl(element) { - if (element.relationships.course.data) { - let cid = element.relationships.course.data.id; - return STUDIP.URLHelper.base_url + 'dispatch.php/course/courseware/?cid='+ cid +'#/structural_element/' + element.id; + const unitId = element.relationships.unit.data.id; + + if (element.relationships?.course?.data) { + const cid = element.relationships.course.data.id; + return STUDIP.URLHelper.base_url + 'dispatch.php/course/courseware/courseware/' + unitId + '?cid='+ cid +'#/structural_element/' + element.id; } - return STUDIP.URLHelper.base_url + 'dispatch.php/contents/courseware/courseware#/structural_element/' + element.id; + return STUDIP.URLHelper.base_url + 'dispatch.php/contents/courseware/courseware/' + unitId + '#/structural_element/' + element.id; }, getChildStyle(element) { let url = element.relationships?.image?.meta?.['download-url']; diff --git a/resources/vue/courseware-content-bookmark-app.js b/resources/vue/courseware-content-bookmark-app.js index 8e9a43c7bfe796936895e547ad8940e36c00fe9f..6d7eed95e32170664abc8107a2948fdaae9259c8 100644 --- a/resources/vue/courseware-content-bookmark-app.js +++ b/resources/vue/courseware-content-bookmark-app.js @@ -21,7 +21,7 @@ const mountApp = (STUDIP, createApp, element) => { ...mapResourceModules({ names: [ 'activities', - 'users', + 'file-refs', 'courses', 'course-memberships', 'courseware-blocks', @@ -30,14 +30,15 @@ const mountApp = (STUDIP, createApp, element) => { 'courseware-containers', 'courseware-instances', 'courseware-structural-elements', + 'courseware-units', 'courseware-user-data-fields', 'courseware-user-progresses', - 'users', 'institutes', 'semesters', 'sem-classes', 'sem-types', 'status-groups', + 'users', ], httpClient, }), @@ -78,4 +79,4 @@ const mountApp = (STUDIP, createApp, element) => { return app; } -export default mountApp; \ No newline at end of file +export default mountApp;