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

Нет описания правки
Метка: отменено
Нет описания правки
Метка: отменено
Строка 6: Строка 6:
         var treeHTML = $('#p-categorytree-portlet .CategoryTreeTag').html();
         var treeHTML = $('#p-categorytree-portlet .CategoryTreeTag').html();
         localStorage.setItem('categoryTreeHTML', treeHTML);
         localStorage.setItem('categoryTreeHTML', treeHTML);
        // Сохраняем состояние открытых категорий
        var expandedCategories = [];
        $('.CategoryTreeItem.expanded').each(function() {
            expandedCategories.push($(this).text().trim());
        });
        localStorage.setItem('expandedCategories', JSON.stringify(expandedCategories));
     }
     }


Строка 14: Строка 21:
             $('#p-categorytree-portlet .CategoryTreeTag').html(treeHTML);
             $('#p-categorytree-portlet .CategoryTreeTag').html(treeHTML);
         }
         }
        // Восстанавливаем открытые категории
        var expandedCategories = JSON.parse(localStorage.getItem('expandedCategories')) || [];
        $('.CategoryTreeItem').each(function() {
            if (expandedCategories.includes($(this).text().trim())) {
                $(this).find('.CategoryTreeToggle').first().click();
            }
        });
     }
     }


Строка 83: Строка 98:
     }
     }


     function expandAndFindCategory($parent, callback) {
     function recursiveSearchForCategory() {
         var $toggleButton = $parent.find('.CategoryTreeToggle').first();
         console.log("Очищаем `localStorage` только при прямом входе...");
         if ($toggleButton.length && !$parent.hasClass('expanded')) {
         if (!document.referrer) {
             console.log("Раскрываем:", $parent.text().trim());
             localStorage.removeItem('lastOpenedPageTitle');
             $toggleButton.click();
             localStorage.removeItem('highlightedCategory');
             setTimeout(function() {
             localStorage.removeItem('expandedCategories');
                if (scrollToCategory(mw.config.get('wgTitle'), callback)) {
                    callback(true);
                } else {
                    callback(false);
                }
            }, 1000);
        } else {
            callback(false);
         }
         }
    }
    function recursiveSearchForCategory() {
        console.log("Очищаем localStorage перед поиском...");
        localStorage.removeItem('lastOpenedPageTitle');
        localStorage.removeItem('highlightedCategory');


         var currentPageTitle = mw.config.get('wgTitle');
         var currentPageTitle = mw.config.get('wgTitle');
Строка 124: Строка 125:
         }
         }


        console.log("Категория не найдена сразу, начинаем раскрытие...");
         var $categoryItems = $('#p-categorytree-portlet .CategoryTreeItem');
         var $categoryItems = $('#p-categorytree-portlet .CategoryTreeItem');
         var index = 0;
         var index = 0;
Строка 134: Строка 136:


             var $item = $($categoryItems[index]);
             var $item = $($categoryItems[index]);
             expandAndFindCategory($item, function(found) {
             expandParentCategories($item, function() {
                 if (!found) {
                 if (!scrollToCategory(currentPageTitle)) {
                     index++;
                     index++;
                     processNext();
                     processNext();