From df37f9c734ac4097661ddc9f5ae1a5a7d5fc6bc2 Mon Sep 17 00:00:00 2001
From: Marcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>
Date: Tue, 30 Nov 2021 06:01:28 +0100
Subject: [PATCH] Fix `base` of Courseware's Vue router.

Closes #279.
---
 .../vue/components/courseware/CoursewareLinkBlock.vue    | 2 +-
 resources/vue/courseware-index-app.js                    | 9 ++++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/resources/vue/components/courseware/CoursewareLinkBlock.vue b/resources/vue/components/courseware/CoursewareLinkBlock.vue
index 02922d3eadd..c20ef10c5f7 100755
--- a/resources/vue/components/courseware/CoursewareLinkBlock.vue
+++ b/resources/vue/components/courseware/CoursewareLinkBlock.vue
@@ -17,7 +17,7 @@
                     </a>
                 </div>
                 <div v-if="currentType === 'internal'">
-                    <router-link :to="'/structural_element/' + currentTarget">
+                    <router-link :to="{ name: 'CoursewareStructuralElement', params: { id: currentTarget } }">
                         <div class="cw-link internal">
                             <span class="cw-link-title">
                                 {{ currentTitle }}
diff --git a/resources/vue/courseware-index-app.js b/resources/vue/courseware-index-app.js
index e4552a1f0bb..a72437970a3 100755
--- a/resources/vue/courseware-index-app.js
+++ b/resources/vue/courseware-index-app.js
@@ -71,7 +71,14 @@ const mountApp = (STUDIP, createApp, element) => {
         },
     ];
 
-    const base = `${STUDIP.ABSOLUTE_URI_STUDIP}dispatch.php/course/courseware/?cid=${STUDIP.URLHelper.parameters.cid}`;
+    let pathname = new URL(STUDIP.ABSOLUTE_URI_STUDIP).pathname;
+    if (pathname.endsWith('/')) {
+        pathname = pathname + '/';
+    }
+    const base = STUDIP.URLHelper.parameters.cid
+          ? `${pathname}dispatch.php/course/courseware/?cid=${STUDIP.URLHelper.parameters.cid}`
+          : `${pathname}dispatch.php/contents/courseware/courseware`;
+
     const router = new VueRouter({
         base,
         routes,
-- 
GitLab