diff --git a/OneCprogsite/programmer/static/programmer/js/theme-switcher.js b/OneCprogsite/programmer/static/programmer/js/theme-switcher.js index ed8ddba..0cd326f 100644 --- a/OneCprogsite/programmer/static/programmer/js/theme-switcher.js +++ b/OneCprogsite/programmer/static/programmer/js/theme-switcher.js @@ -1,42 +1,68 @@ // Theme Switcher Script document.addEventListener('DOMContentLoaded', function() { const themeToggle = document.getElementById('theme-toggle'); + const mobileThemeToggle = document.getElementById('mobile-theme-toggle'); const themeCSS = document.getElementById('theme-css'); // Проверяем сохраненную тему в localStorage const savedTheme = localStorage.getItem('theme'); - if (savedTheme === 'light') { - switchToLightTheme(); - } else { + // Устанавливаем светлую тему по умолчанию + if (savedTheme === 'dark') { switchToDarkTheme(); + } else { + switchToLightTheme(); // Светлая тема по умолчанию } - // Обработчик переключения темы - themeToggle.addEventListener('change', function() { - if (this.checked) { - switchToLightTheme(); - } else { - switchToDarkTheme(); - } - }); + // Обработчик переключения темы для десктопного переключателя + if (themeToggle) { + themeToggle.addEventListener('change', function() { + if (this.checked) { + switchToLightTheme(); + } else { + switchToDarkTheme(); + } + }); + } + + // Обработчик переключения темы для мобильного переключателя + if (mobileThemeToggle) { + mobileThemeToggle.addEventListener('change', function() { + if (this.checked) { + switchToLightTheme(); + } else { + switchToDarkTheme(); + } + // Синхронизируем оба переключателя + if (themeToggle) { + themeToggle.checked = this.checked; + } + }); + } function switchToLightTheme() { themeCSS.href = themeCSS.href.replace('styles_dark.css', 'styles_w.css'); - themeToggle.checked = true; + if (themeToggle) themeToggle.checked = true; + if (mobileThemeToggle) mobileThemeToggle.checked = true; localStorage.setItem('theme', 'light'); } function switchToDarkTheme() { themeCSS.href = themeCSS.href.replace('styles_w.css', 'styles_dark.css'); - themeToggle.checked = false; + if (themeToggle) themeToggle.checked = false; + if (mobileThemeToggle) mobileThemeToggle.checked = false; localStorage.setItem('theme', 'dark'); } + // Синхронизация переключателей при загрузке + if (themeToggle && mobileThemeToggle) { + mobileThemeToggle.checked = themeToggle.checked; + } + // Обработка ошибок загрузки CSS themeCSS.onerror = function() { console.error('Ошибка загрузки CSS файла темы'); - // Восстанавливаем темную тему по умолчанию - themeCSS.href = '/static/programmer/css/styles_dark.css'; + // Восстанавливаем светлую тему по умолчанию при ошибке + themeCSS.href = themeCSS.href.replace('styles_dark.css', 'styles_w.css'); }; }); \ No newline at end of file diff --git a/OneCprogsite/programmer/templates/programmer/base.html b/OneCprogsite/programmer/templates/programmer/base.html index 16cc4e6..e9148f3 100644 --- a/OneCprogsite/programmer/templates/programmer/base.html +++ b/OneCprogsite/programmer/templates/programmer/base.html @@ -8,7 +8,7 @@ {% bootstrap_css %} - + @@ -367,7 +367,7 @@
- +