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

Нет описания правки
мНет описания правки
Строка 447: Строка 447:
     mw.hook('wikipage.content').add(function($content) {
     mw.hook('wikipage.content').add(function($content) {
         var $toc = $('#toc ul'); // Находим TOC
         var $toc = $('#toc ul'); // Находим TOC
         if ($toc.length === 0) {
         var tocItems = $toc.find('li'); // Получаем текущие элементы TOC
            return; // Если оглавление отсутствует, выходим
         var tocNumber = tocItems.length + 1; // Начинаем нумерацию с первого доступного номера
         }


         var headingCount = 0; // Счётчик заголовков
         // Перебираем все кастомные заголовки
        var currentNumbering = [0]; // Массив для отслеживания нумерации
         $content.find('.custom-heading').each(function() {
 
             var sectionId = $(this).attr('id') || 'custom-heading-' + tocNumber;
        // Функция для обновления текущей нумерации
        function updateNumbering(level) {
            while (currentNumbering.length <= level) {
                currentNumbering.push(0);
            }
            currentNumbering[level]++;
            for (var i = level + 1; i < currentNumbering.length; i++) {
                currentNumbering[i] = 0;
            }
            return currentNumbering.slice(1, level + 1).join('.');
        }
 
         $content.find('.custom-heading').each(function(index) {
            headingCount++;
             var sectionId = $(this).attr('id') || 'custom-heading-' + headingCount;
             $(this).attr('id', sectionId); // Присваиваем уникальный id заголовку
             $(this).attr('id', sectionId); // Присваиваем уникальный id заголовку
            // Определяем уровень заголовка
            var headingLevel = $(this).data('level') || 2;
            var numbering = updateNumbering(headingLevel); // Получаем правильный номер


             // Создаем ссылку "править"
             // Создаем ссылку "править"
Строка 480: Строка 460:
                 $('<a>').attr('href', editUrl).text('править')
                 $('<a>').attr('href', editUrl).text('править')
             );
             );
             $(this).prepend(numbering + ' ').append(editLink); // Добавляем нумерацию и ссылку "править"
             $(this).append(editLink); // Добавляем ссылку "править" к заголовку


             // Добавляем заголовок в оглавление (TOC)
             // Создаем элемент в оглавлении (TOC)
             var headingText = $(this).clone().children().remove().end().text(); // Получаем текст без ссылки "править"
             var headingText = $(this).clone().children().remove().end().text(); // Получаем текст без ссылки "править"
             var tocItem = $('<li>').append(
             var tocItem = $('<li>').append(
                 $('<a>').attr('href', '#' + sectionId).text(numbering + ' ' + headingText)
                 $('<a>').attr('href', '#' + sectionId).append(
                    $('<span>').addClass('tocnumber').text(tocNumber + '. '),
                    $('<span>').addClass('toctext').text(headingText)
                )
             );
             );
             $toc.append(tocItem); // Добавляем элемент в оглавление
             $toc.append(tocItem); // Добавляем элемент в оглавление
            tocNumber++; // Увеличиваем номер для следующего элемента
         });
         });
     });
     });