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

Нет описания правки
Метка: ручная отмена
Нет описания правки
Строка 1: Строка 1:
$(document).ready(function() {
$(document).ready(function() {
     console.log("Скрипт дерева категорий загружен.");
     console.log("Скрипт дерева категорий загружен.");
Строка 8: Строка 6:
         console.log("Сохраняем состояние дерева...");
         console.log("Сохраняем состояние дерева...");
         var treeState = {};
         var treeState = {};
         $('.CategoryTreeSection').each(function() { // Используем CategoryTreeSection вместо CategoryTreeItem
         $('.CategoryTreeToggle').each(function() {
             var $section = $(this);
             var $toggle = $(this);
             var isVisible = $section.find('.CategoryTreeChildren').is(':visible');
             var $section = $toggle.closest('.CategoryTreeSection');
             var title = $section.find('.CategoryTreeToggle').data('ct-title'); // Получаем data-ct-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);
             $('.CategoryTreeSection').each(function() { // Используем CategoryTreeSection вместо CategoryTreeItem
             $('.CategoryTreeToggle').each(function() {
                 var $section = $(this);
                 var $toggle = $(this);
                 var title = $section.find('.CategoryTreeToggle').data('ct-title'); // Получаем data-ct-title
                 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);
                     $section.find('.CategoryTreeToggle').click(); // Раскрываем категорию
                     $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.click();
             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());
             $toggleButton.click();
              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);
});
});