From 7fde9fce1b94e5bc051e836238b0dda7c26f87b3 Mon Sep 17 00:00:00 2001 From: NikDizell Date: Wed, 12 Nov 2025 11:29:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D1=81?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=D0=BB=D1=83=D1=8E=20=D1=82=D0=B5=D0=BC=D1=83?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/programmer/js/theme-switcher.js | 56 ++++++++++++++----- .../programmer/templates/programmer/base.html | 6 +- 2 files changed, 44 insertions(+), 18 deletions(-) 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 @@
- +