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;