MediaWiki:Common.js: различия между версиями
Shihov (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
Shihov (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
$(document).ready(function() { | $(document).ready(function() { | ||
console.log("Скрипт дерева категорий загружен."); | console.log("Скрипт дерева категорий загружен."); | ||
| Строка 8: | Строка 6: | ||
console.log("Сохраняем состояние дерева..."); | console.log("Сохраняем состояние дерева..."); | ||
var treeState = {}; | var treeState = {}; | ||
$('. | $('.CategoryTreeToggle').each(function() { | ||
var $ | var $toggle = $(this); | ||
var | var $section = $toggle.closest('.CategoryTreeSection'); | ||
var title = $ | var title = $toggle.data('ct-title'); // Получаем data-ct-title | ||
if (title) { | if (title) { | ||
var isVisible = $section.find('.CategoryTreeChildren').css('display') !== 'none'; | |||
treeState[title] = isVisible; // Сохраняем состояние видимости | treeState[title] = isVisible; // Сохраняем состояние видимости | ||
} | } | ||
| Строка 27: | Строка 26: | ||
var treeState = JSON.parse(treeStateString); | var treeState = JSON.parse(treeStateString); | ||
console.log("Состояние дерева из localStorage:", treeState); | console.log("Состояние дерева из localStorage:", treeState); | ||
$('. | $('.CategoryTreeToggle').each(function() { | ||
var $ | var $toggle = $(this); | ||
var | var $section = $toggle.closest('.CategoryTreeSection'); | ||
var title = $toggle.data('ct-title'); // Получаем data-ct-title | |||
var $children = $section.find('.CategoryTreeChildren'); | |||
if (title && treeState[title] === true) { | if (title && treeState[title] === true) { | ||
console.log("Раскрываем категорию:", title); | console.log("Раскрываем категорию:", title); | ||
$ | $children.css('display', ''); // Удаляем display: none; | ||
console.log("Состояние display после раскрытия:", $children.css('display')); | |||
} else if (title && treeState[title] === false) { | |||
console.log("Скрываем категорию:", title); | |||
$children.css('display', 'none'); // Добавляем display: none; | |||
console.log("Состояние display после скрытия:", $children.css('display')); | |||
} | } | ||
}); | }); | ||
| Строка 63: | Строка 70: | ||
// Переключаем состояние категории (раскрываем или сворачиваем) | // Переключаем состояние категории (раскрываем или сворачиваем) | ||
console.log("Клик по ссылке категории, переключаем состояние:", $target.attr('href')); | console.log("Клик по ссылке категории, переключаем состояние:", $target.attr('href')); | ||
$toggleButton. | var $section = $toggleButton.closest('.CategoryTreeSection'); | ||
var $children = $section.find('.CategoryTreeChildren'); | |||
if ($children.css('display') === 'none') { | |||
$children.css('display', ''); // Раскрываем категорию | |||
} else { | |||
$children.css('display', 'none'); // Скрываем категорию | |||
} | |||
} | } | ||
// 3. Если клик по элементу категории (не ссылке и не странице) | // 3. Если клик по элементу категории (не ссылке и не странице) | ||
| Строка 70: | Строка 82: | ||
// Переключаем состояние категории (раскрываем или сворачиваем) | // Переключаем состояние категории (раскрываем или сворачиваем) | ||
console.log("Клик по элементу категории (не ссылка), переключаем состояние:", $item.text().trim()); | console.log("Клик по элементу категории (не ссылка), переключаем состояние:", $item.text().trim()); | ||
$ | var $section = $toggleButton.closest('.CategoryTreeSection'); | ||
var $children = $section.find('.CategoryTreeChildren'); | |||
if ($children.css('display') === 'none') { | |||
$children.css('display', ''); // Раскрываем категорию | |||
} else { | |||
$children.css('display', 'none'); // Скрываем категорию | |||
} | |||
} | } | ||
// 4. Если клик по ссылке страницы или на элемент страницы | // 4. Если клик по ссылке страницы или на элемент страницы | ||
| Строка 84: | Строка 102: | ||
} | } | ||
} | } | ||
// Сохраняем состояние дерева после каждого клика | |||
saveTreeState(); | saveTreeState(); | ||
}); | }); | ||
// Сохраняем состояние дерева при выгрузке страницы (например, при закрытии вкладки) | |||
$(window).on('beforeunload', saveTreeState); | $(window).on('beforeunload', saveTreeState); | ||
}); | }); | ||