MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) Отмена правки 53415, сделанной Pok (обсуждение) Метка: отмена |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 453: | Строка 453: | ||
var lastLevel = 1; // Уровень предыдущего заголовка | var lastLevel = 1; // Уровень предыдущего заголовка | ||
var $currentList = $toc; // Текущий список для вложенности | var $currentList = $toc; // Текущий список для вложенности | ||
// Функция для обновления счётчиков для текущего уровня | // Функция для обновления счётчиков для текущего уровня | ||
function updateCounters(level) { | function updateCounters(level) { | ||
| Строка 463: | Строка 464: | ||
lastLevel = level; | lastLevel = level; | ||
} | } | ||
// Функция для получения номера секции в стиле "1", "1.1", "1.1.1" | // Функция для получения номера секции в стиле "1", "1.1", "1.1.1" | ||
function getSectionNumber() { | function getSectionNumber() { | ||
return tocCounters.join('.'); | return tocCounters.join('.'); | ||
} | } | ||
// Функция для создания нового <ul> для вложенного уровня | // Функция для создания нового <ul> для вложенного уровня | ||
function createNestedList($parent) { | function createNestedList($parent) { | ||
| Строка 473: | Строка 476: | ||
return $nestedList; | return $nestedList; | ||
} | } | ||
// Перебираем все заголовки и элементы с классом .custom-heading | // Перебираем все заголовки и элементы с классом .custom-heading | ||
$headings.each(function() { | $headings.each(function() { | ||
var $heading = $(this); | var $heading = $(this); | ||
var level; | var level; | ||
// Определяем уровень | |||
// Определяем уровень для .custom-heading | |||
if ($heading.hasClass('custom-heading')) { | if ($heading.hasClass('custom-heading')) { | ||
level = 1; | level = 1; // Можно настроить уровень, если нужно | ||
var customId = $heading.attr('id') || 'custom-heading-' + getSectionNumber(); | |||
$heading.attr('id', customId); // Присваиваем уникальный id | |||
} else { | } else { | ||
// Проверяем наличие <span class="mw-headline"> внутри заголовка | // Проверяем наличие <span class="mw-headline"> внутри заголовка | ||
| Строка 489: | Строка 496: | ||
var tagName = $heading.prop('tagName').toLowerCase(); | var tagName = $heading.prop('tagName').toLowerCase(); | ||
level = parseInt(tagName.charAt(1), 10); | level = parseInt(tagName.charAt(1), 10); | ||
var sectionId = $headlineSpan.attr('id') || 'heading-' + getSectionNumber(); | |||
$headlineSpan.attr('id', sectionId); // Присваиваем уникальный id заголовку | |||
} | } | ||
updateCounters(level); // Обновляем счётчики для текущего уровня | updateCounters(level); // Обновляем счётчики для текущего уровня | ||
// Извлекаем текст заголовка | // Извлекаем текст заголовка | ||
var headingText = $heading.find('span.mw-headline').text().trim() || $heading.text().trim(); | var headingText = $heading.find('span.mw-headline').text().trim() || $heading.text().trim(); | ||
// Проверяем, что текст заголовка не пустой | // Проверяем, что текст заголовка не пустой | ||
if (headingText.length > 0) { | if (headingText.length > 0) { | ||
| Строка 509: | Строка 519: | ||
$currentList = $toc; | $currentList = $toc; | ||
} | } | ||
// Создаём элемент списка в оглавлении (TOC) | // Создаём элемент списка в оглавлении (TOC) | ||
var tocItem = $('<li>').addClass('toclevel-' + (level - 1)).append($('<a>').attr('href', '#' + | var tocItem = $('<li>').addClass('toclevel-' + (level - 1)).append( | ||
$('<a>').attr('href', '#' + ($heading.attr('id'))).append( | |||
$('<span>').addClass('tocnumber').text(getSectionNumber()), | |||
$('<span>').addClass('toctext').text(headingText) | |||
) | |||
); | |||
// Добавляем элемент в текущий список | // Добавляем элемент в текущий список | ||
$currentList.append(tocItem); | $currentList.append(tocItem); | ||