46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
/**
|
||
* Модуль авторизации: управление 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;
|
||
}
|
||
|