mod: дроп-даун логин/логаут вынесен во внешний auth.js
This commit is contained in:
45
public/static/js/auth.js
Normal file
45
public/static/js/auth.js
Normal file
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user