MediaWiki:Common.js: различия между версиями

мНет описания правки
мНет описания правки
Строка 466: Строка 466:
return text.trim().replace(/\s+/g, '-').replace(/[^a-zа-яёA-ZА-ЯЁ0-9\-]/g, '');
return text.trim().replace(/\s+/g, '-').replace(/[^a-zа-яёA-ZА-ЯЁ0-9\-]/g, '');
}
}
// Присвоение ID категориям и пунктам меню
function assignIds() {
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var categoryText = category.textContent || category.innerText;
var categoryId = generateIdFromText(categoryText);
category.setAttribute('id', categoryId);
var menu = menus[i];
var menuItems = menu.querySelectorAll('div');
for (var j = 0; j < menuItems.length; j++) {
var menuItem = menuItems[j];
var menuItemText = menuItem.textContent || menuItem.innerText;
var menuItemId = generateIdFromText(menuItemText);
menuItem.setAttribute('id', menuItemId);
}
}
}
assignIds(); // Вызов функции для присвоения ID


// Удаление класса active у всех переданных элементов
// Удаление класса active у всех переданных элементов
Строка 483: Строка 504:
if (selectedCategory) {
if (selectedCategory) {
selectedCategory.classList.add('active');
selectedCategory.classList.add('active');
var categoryClass = selectedCategory.classList[0]; // Получаем первый класс категории
var categoryClass = selectedCategory.classList[0];
var selectedMenu = document.querySelector('.' + categoryClass + '-menu');
var selectedMenu = document.querySelector('.' + categoryClass + '-menu');
if (selectedMenu) {
if (selectedMenu) {
Строка 501: Строка 522:


if (menuItem) {
if (menuItem) {
menuItem.classList.add('active');
var contentClass = menuItem.className + '-content';
var contentClass = menuItem.className.split(' ')[0] + '-content'; // Берем первый класс
var content = document.querySelector('.' + contentClass);
var content = document.querySelector('.' + contentClass);
if (content) {
if (content) {
content.classList.add('active');
content.classList.add('active');
menuItem.classList.add('active');
}
}
}
}
Строка 565: Строка 586:
for (var i = 0; i < menuItems.length; i++) {
for (var i = 0; i < menuItems.length; i++) {
if (menuItems[i].id === anchor) {
if (menuItems[i].id === anchor) {
var categoryIndex = Array.prototype.indexOf.call(categories, menuItems[i].closest('.navigation__categories > div'));
// Найти индекс категории, к которой принадлежит пункт меню
switchCategory(categoryIndex); // Открываем категорию
var categoryIndex = Array.prototype.indexOf.call(categories, menuItems[i].closest('.navigation__menu-item').previousElementSibling);
switchContent(menuItems[i]);  // Открываем пункт меню
if (categoryIndex !== -1) {
switchCategory(categoryIndex); // Открываем категорию
switchContent(menuItems[i]);  // Открываем пункт меню
}
found = true;
found = true;
break;
break;