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

Нет описания правки
Метка: отменено
Нет описания правки
Метка: отменено
Строка 42: Строка 42:
     });
     });


     function scrollToCategory(categoryTitle) {
     function scrollToCategory(categoryTitle, callback) {
         var $categoryItem = $('#p-categorytree-portlet .CategoryTreeItem').filter(function() {
         var $categoryItem = $('#p-categorytree-portlet .CategoryTreeItem').filter(function() {
             return $(this).text().trim() === categoryTitle;
             return $(this).text().trim() === categoryTitle;
Строка 54: Строка 54:
                 $('.CategoryTreeItem').removeClass('highlighted');
                 $('.CategoryTreeItem').removeClass('highlighted');
                 $categoryItem.addClass('highlighted');
                 $categoryItem.addClass('highlighted');
                if (callback) callback(true);
             });
             });


Строка 60: Строка 61:
         }
         }


        if (callback) callback(false);
         return false;
         return false;
    }
    function expandParentCategories($categoryItem, callback) {
        var $parentCategory = $categoryItem.closest('.CategoryTreeChildren').prev('.CategoryTreeItem');
        if ($parentCategory.length) {
            var $toggleButton = $parentCategory.find('.CategoryTreeToggle').first();
            if ($toggleButton.length && !$parentCategory.hasClass('expanded')) {
                console.log("Раскрываем родительскую категорию:", $parentCategory.text().trim());
                $toggleButton.click();
                setTimeout(function() {
                    expandParentCategories($parentCategory, callback);
                }, 800);
            } else {
                callback();
            }
        } else {
            callback();
        }
     }
     }


Строка 66: Строка 86:
         var $toggleButton = $parent.find('.CategoryTreeToggle').first();
         var $toggleButton = $parent.find('.CategoryTreeToggle').first();
         if ($toggleButton.length && !$parent.hasClass('expanded')) {
         if ($toggleButton.length && !$parent.hasClass('expanded')) {
            console.log("Раскрываем:", $parent.text().trim());
             $toggleButton.click();
             $toggleButton.click();
             setTimeout(function() {
             setTimeout(function() {
                 if (scrollToCategory(mw.config.get('wgTitle'))) {
                 if (scrollToCategory(mw.config.get('wgTitle'), callback)) {
                     callback(true);
                     callback(true);
                 } else {
                 } else {
Строка 82: Строка 102:
     function recursiveSearchForCategory() {
     function recursiveSearchForCategory() {
         console.log("Очищаем localStorage перед поиском...");
         console.log("Очищаем localStorage перед поиском...");
//        localStorage.removeItem('lastOpenedPageTitle');
        localStorage.removeItem('lastOpenedPageTitle');
//        localStorage.removeItem('highlightedCategory');
        localStorage.removeItem('highlightedCategory');


         var currentPageTitle = mw.config.get('wgTitle');
         var currentPageTitle = mw.config.get('wgTitle');
Строка 93: Строка 113:
         console.log("Начинаем поиск категории для текущей страницы:", currentPageTitle);
         console.log("Начинаем поиск категории для текущей страницы:", currentPageTitle);


         if (scrollToCategory(currentPageTitle)) {
        var $categoryItem = $('#p-categorytree-portlet .CategoryTreeItem').filter(function() {
            return $(this).text().trim() === currentPageTitle;
        });
 
         if ($categoryItem.length) {
            expandParentCategories($categoryItem, function() {
                scrollToCategory(currentPageTitle);
            });
             return;
             return;
         }
         }