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

мНет описания правки
мНет описания правки
Строка 453: Строка 453:
         var lastLevel = 1; // Уровень предыдущего заголовка
         var lastLevel = 1; // Уровень предыдущего заголовка
         var $currentList = $toc; // Текущий список для вложенности
         var $currentList = $toc; // Текущий список для вложенности
        var currentLevel = 1;


         // Функция для обновления счётчиков для текущего уровня
         // Функция для обновления счётчиков для текущего уровня
Строка 484: Строка 485:
             var level = isCustomHeading ? 1 : parseInt(tagName.charAt(1), 10); // Определяем уровень заголовка
             var level = isCustomHeading ? 1 : parseInt(tagName.charAt(1), 10); // Определяем уровень заголовка


             if (isCustomHeading) {
             // Обрабатываем только заголовки с текстом
                level = 1;
            var headingText = $heading.text().trim();
            }
            if (headingText.length === 0) return;


             updateCounters(level); // Обновляем счётчики для текущего уровня
             updateCounters(level); // Обновляем счётчики для текущего уровня
Строка 493: Строка 494:
             $heading.attr('id', sectionId); // Присваиваем уникальный id заголовку
             $heading.attr('id', sectionId); // Присваиваем уникальный id заголовку


             // Извлекаем только текстовое содержимое заголовка, игнорируя вложенные элементы
             // Если уровень заголовка ниже текущего, возвращаемся на уровень выше
             var headingText = $heading.text().trim();
             while (tocCounters.length > level) {
                $currentList = $currentList.parent(); // Переходим к родительскому <ul>
            }


             // Проверяем, что текст заголовка не пустой
             // Если уровень заголовка выше, создаём вложенный список <ul>
            if (headingText.length > 0) {
            if (level > lastLevel) {
                // Если уровень заголовка ниже текущего, возвращаемся на уровень выше
                $currentList = createNestedList($currentList); // Создаём новый вложенный список
                while (tocCounters.length > level) {
            }
                    $currentList = $currentList.parent(); // Переходим к родительскому <ul>
                }
 
                // Если уровень заголовка выше, создаём вложенный список <ul>
                if (level > lastLevel) {
                    $currentList = createNestedList($currentList); // Создаём новый вложенный список
                }


                // Создаём элемент списка в оглавлении (TOC) с классами для вложенности
            // Создаём элемент списка в оглавлении (TOC)
                var tocItem = $('<li>')
            var tocItem = $('<li>')
                    .addClass('toclevel-' + (level - 1))
                .addClass('toclevel-' + (level - 1))
                    .append(
                .append(
                        $('<a>').attr('href', '#' + sectionId).append(
                    $('<a>').attr('href', '#' + sectionId).append(
                            $('<span>').addClass('tocnumber').text(getSectionNumber()),
                        $('<span>').addClass('tocnumber').text(getSectionNumber()),
                            $('<span>').addClass('toctext').text(headingText)
                        $('<span>').addClass('toctext').text(headingText)
                        )
                    )
                    );
                );


                // Добавляем элемент в текущий список
            // Добавляем элемент в текущий список
                $currentList.append(tocItem);
            $currentList.append(tocItem);
            }
         });
         });
     });
     });