From 8e113deeb0cddaad2135f7f1d23a9d6c10e597f7 Mon Sep 17 00:00:00 2001
From: Thomas Hackl <hackl@data-quest.de>
Date: Sat, 15 Jul 2023 23:42:50 +0200
Subject: [PATCH] check for sidebar existence, fixes #2918

---
 resources/assets/javascripts/lib/sidebar.js | 38 +++++++++++++--------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/resources/assets/javascripts/lib/sidebar.js b/resources/assets/javascripts/lib/sidebar.js
index eefd317beaf..17362fa017c 100644
--- a/resources/assets/javascripts/lib/sidebar.js
+++ b/resources/assets/javascripts/lib/sidebar.js
@@ -2,8 +2,11 @@ const Sidebar = {
 
     place() {
         const header = document.getElementById('main-header');
-        document.getElementById('sidebar').style.top =
-            header.offsetTop + header.offsetHeight + 'px';
+        const sidebar = document.getElementById('sidebar');
+        if (sidebar) {
+            sidebar.style.top =
+                header.offsetTop + header.offsetHeight + 'px';
+        }
     },
 
     observeSidebar() {
@@ -16,8 +19,11 @@ const Sidebar = {
         /**
          * Observe if sidebar fits into viewport.
          */
-        const sObserver = new IntersectionObserver(STUDIP.Sidebar.fits, options);
-        sObserver.observe(document.getElementById('sidebar'));
+        const sidebar = document.getElementById('sidebar');
+        if (sidebar) {
+            const sObserver = new IntersectionObserver(STUDIP.Sidebar.fits, options);
+            sObserver.observe();
+        }
     },
 
     observeBody() {
@@ -87,18 +93,20 @@ const Sidebar = {
 
     footerVisible(entries, observer) {
         const sidebar = document.getElementById('sidebar');
-        entries.forEach(entry => {
-            // Footer is visible on current page.
-            if (entry.isIntersecting) {
-                if (sidebar.classList.contains('no-footer')) {
-                    sidebar.classList.remove('no-footer');
-                }
-            } else {
-                if (!sidebar.classList.contains('no-footer')) {
-                    sidebar.classList.add('no-footer');
+        if (sidebar) {
+            entries.forEach(entry => {
+                // Footer is visible on current page.
+                if (entry.isIntersecting) {
+                    if (sidebar.classList.contains('no-footer')) {
+                        sidebar.classList.remove('no-footer');
+                    }
+                } else {
+                    if (!sidebar.classList.contains('no-footer')) {
+                        sidebar.classList.add('no-footer');
+                    }
                 }
-            }
-        });
+            });
+        }
     }
 };
 
-- 
GitLab