diff --git a/oknardia/templates/base.html b/oknardia/templates/base.html index bc1b022..f58823b 100755 --- a/oknardia/templates/base.html +++ b/oknardia/templates/base.html @@ -25,29 +25,8 @@ {% block Top_CSS1 %}{% endblock %}{% block Top_CSS2 %}{% endblock %}{% block Top_CSS3 %}{% endblock %} {# #} {# #}{% block Top_JS1 %}{% endblock %}{% block Top_JS2 %}{% endblock %}{% block Top_JS3 %}{% endblock %}{% block Top_JS4 %}{% endblock %}{% block Top_JS5 %}{% endblock %}{% block Top_Meta1 %}{% endblock %} - {# Аналитика: Google Analytics 4, Yandex.Metrika, Top.Mail.Ru #} - - {% block ADD_TO_HEAD %}{% endblock %} + {# Аналитика: Google Analytics 4, Yandex.Metrika, Top.Mail.Ru #} + {# Модуль авторизации: управление dropdown меню логина/логаута #}{% block ADD_TO_HEAD %}{% endblock %} diff --git a/public/static/js/auth.js b/public/static/js/auth.js new file mode 100644 index 0000000..b2f34f3 --- /dev/null +++ b/public/static/js/auth.js @@ -0,0 +1,45 @@ +/** + * Модуль авторизации: управление dropdown меню логина/логаута + * Открывает/закрывает меню авторизации с загрузкой контента по AJAX + * + * + * Открывает или закрывает dropdown меню логина/логаута + * При первом открытии загружает содержимое меню по AJAX + * + * @param {Event} event - объект события клика (опционально) + * @returns {boolean} false - для предотвращения перезагрузки страницы + */ +function openLoginLogout(event) { + // Предотвращаем переход по ссылке + if (event) event.preventDefault(); + + // Получаем контейнер меню авторизации + var $box = $('#login-logout'); + + /** + * Переключает видимость dropdown'а + * Сначала ищет Bootstrap toggle, если нет — вызывает click + */ + function openDropdown() { + var $toggle = $box.find('.dropdown-toggle').first(); + if (!$toggle.length) return; + if (typeof $toggle.dropdown === 'function') + $toggle.dropdown('toggle'); + else + $toggle.trigger('click'); + } + + // Если контент ещё не загружен, загружаем его по AJAX + if (!$box.data('loginLoaded')) { + $box.load('/login-logout', function () { + $box.data('loginLoaded', true); + openDropdown(); + }); + } else { + // Если уже загружен, просто переключаем видимость + openDropdown(); + } + + return false; +} +