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
         var tocItems = $toc.find('li'); // Получаем текущие элементы TOC
         if ($toc.length === 0) {
         var tocNumber = tocItems.length + 1; // Начинаем нумерацию с первого доступного номера
            return; // Если оглавление отсутствует, выходим
         }


         // Перебираем все кастомные заголовки
         // Перебираем все кастомные заголовки
         $content.find('.custom-heading').each(function() {
         $content.find('.custom-heading').each(function(index) {
             var $heading = $(this);
             var $heading = $(this);
             var sectionId = $heading.attr('id') || 'custom-heading-' + tocNumber;
             var sectionId = $heading.attr('id') || 'custom-heading-' + (index + 1);
             $heading.attr('id', sectionId); // Присваиваем уникальный id заголовку
             $heading.attr('id', sectionId); // Присваиваем уникальный id заголовку


Строка 463: Строка 464:
             $heading.append(editLink); // Добавляем ссылку "править" к заголовку
             $heading.append(editLink); // Добавляем ссылку "править" к заголовку


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