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

Отмена правки 53415, сделанной 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 sectionId = $heading.find('span.mw-headline').attr('id') || 'heading-' + getSectionNumber();
 
$heading.find('span.mw-headline').attr('id', sectionId); // Присваиваем уникальный id заголовку
// Извлекаем текст заголовка
// Извлекаем текст заголовка
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(
sectionId).append($('<span>').addClass('tocnumber').text(getSectionNumber()), $('<span>').addClass(
$('<a>').attr('href', '#' + ($heading.attr('id'))).append(
'toctext').text(headingText)));
$('<span>').addClass('tocnumber').text(getSectionNumber()),  
$('<span>').addClass('toctext').text(headingText)
)
);
// Добавляем элемент в текущий список
// Добавляем элемент в текущий список
$currentList.append(tocItem);
$currentList.append(tocItem);