MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 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) { | ||
var contentClass = menuItem.className + '-content'; | |||
var contentClass = menuItem.className | |||
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('. | // Найти индекс категории, к которой принадлежит пункт меню | ||
switchCategory(categoryIndex); // Открываем категорию | var categoryIndex = Array.prototype.indexOf.call(categories, menuItems[i].closest('.navigation__menu-item').previousElementSibling); | ||
if (categoryIndex !== -1) { | |||
switchCategory(categoryIndex); // Открываем категорию | |||
switchContent(menuItems[i]); // Открываем пункт меню | |||
} | |||
found = true; | found = true; | ||
break; | break; | ||