From ed901fa0c3cc3bd4d2b2b02c79a7f1a26bdfb908 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Thu, 18 Apr 2024 10:21:51 +0000
Subject: [PATCH] don't rely on set data for determining whether a sidebar is
 present, check the...

Closes #3927

Merge request studip/studip!2883
---
 .../vue/components/responsive/ResponsiveNavigation.vue     | 7 +++----
 templates/header.php                                       | 6 ------
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/resources/vue/components/responsive/ResponsiveNavigation.vue b/resources/vue/components/responsive/ResponsiveNavigation.vue
index fffce17d77a..87084a5ae2a 100644
--- a/resources/vue/components/responsive/ResponsiveNavigation.vue
+++ b/resources/vue/components/responsive/ResponsiveNavigation.vue
@@ -130,10 +130,6 @@ export default {
             type: String,
             default: ''
         },
-        hasSidebar: {
-            type: Boolean,
-            default: true
-        },
         navigation: {
             type: Object,
             required: true,
@@ -162,6 +158,7 @@ export default {
             classObserver: null,
             dialogObserver: null,
             hasSkiplinks: document.querySelector('#skiplink_list') !== null,
+            hasSidebar: false,
             hasContentbar: false,
             contentbarTitle: ''
         }
@@ -494,6 +491,8 @@ export default {
         }
     },
     mounted() {
+        this.hasSidebar = document.querySelectorAll('#sidebar .sidebar-widget:not(#sidebar-navigation)').length > 0;
+
         const cache = STUDIP.Cache.getInstance('responsive.');
         const fullscreen = cache.get('fullscreen-mode') ?? false;
         const fullscreenDocument = document.documentElement.classList.contains('fullscreen-mode');
diff --git a/templates/header.php b/templates/header.php
index 5ff5a1f5c74..f11b23c4792 100644
--- a/templates/header.php
+++ b/templates/header.php
@@ -66,18 +66,12 @@ if ($navigation) {
                     'username' => $user->username,
                     'perm' => $GLOBALS['perm']->get_perm()
                 ];
-
-                $navWidget = Sidebar::get()->countWidgets(NavigationWidget::class);
-                $allWidgets = Sidebar::get()->countWidgets();
-                $hasSidebar = $allWidgets - $navWidget > 0;
                 ?>
             <? } else {
                 $me = ['username' => 'nobody'];
-                $hasSidebar = false;
             } ?>
             <responsive-navigation :me="<?= htmlReady(json_encode($me)) ?>"
                                    context="<?= htmlReady(Context::get() ? Context::get()->getFullName() : '') ?>"
-                                   :has-sidebar="<?= $hasSidebar ? 'true' : 'false' ?>"
                                    :navigation="<?= htmlReady(json_encode(ResponsiveHelper::getNavigationObject($_COOKIE['responsive-navigation-hash'] ?? null))) ?>"
             ></responsive-navigation>
         </div>
-- 
GitLab