MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 454: | Строка 454: | ||
var maxLevel = 7; // Изначально максимальный уровень не определён | var maxLevel = 7; // Изначально максимальный уровень не определён | ||
// | // Определяем максимальный уровень заголовков | ||
$headings.each(function() { | $headings.each(function() { | ||
var $heading = $(this); | var $heading = $(this); | ||
var level; | var level = getHeadingLevel($heading); | ||
if (level < maxLevel) { | |||
maxLevel = level; // Находим минимальный уровень заголовков | |||
} | |||
}); | |||
function getHeadingLevel($heading) { | |||
if ($heading.hasClass('custom-heading')) { | if ($heading.hasClass('custom-heading')) { | ||
return 1; // Для кастомных заголовков | |||
} else { | } else { | ||
var tagName = $heading.prop('tagName').toLowerCase(); | var tagName = $heading.prop('tagName').toLowerCase(); | ||
return parseInt(tagName.charAt(1), 10); // Определяем уровень h1-h6 | |||
} | } | ||
} | |||
} | |||
function updateCounters(level) { | function updateCounters(level) { | ||
| Строка 497: | Строка 500: | ||
$headings.each(function() { | $headings.each(function() { | ||
var $heading = $(this); | var $heading = $(this); | ||
var level; | var level = getHeadingLevel($heading); | ||
var $headlineSpan = $heading.find('span.mw-headline'); | var $headlineSpan = $heading.find('span.mw-headline'); | ||
if ($headlineSpan.length > 0) { | |||
var existingId = $headlineSpan.attr('id'); | var existingId = $headlineSpan.attr('id'); | ||
if (!existingId) { | if (!existingId) { | ||
var sectionId = 'heading-' + getSectionNumber(); | var sectionId = 'heading-' + getSectionNumber(); | ||
$headlineSpan.attr('id', sectionId); | $headlineSpan.attr('id', sectionId); | ||
} | } | ||
} else if ($heading.hasClass('custom-heading')) { | |||
var customId = $heading.attr('id') || 'custom-heading-' + getSectionNumber(); | |||
$heading.attr('id', customId); | |||
} else { | } else { | ||
return; // Пропускаем элементы без заголовков | return; // Пропускаем элементы без заголовков | ||
| Строка 522: | Строка 521: | ||
if (headingText.length > 0) { | if (headingText.length > 0) { | ||
closeNestedLists(level); | closeNestedLists(level); | ||
| Строка 532: | Строка 530: | ||
); | ); | ||
if (level > (levelStack[levelStack.length - 1] || 0)) { | |||
var $nestedList = createNestedList($currentList); | |||
$currentList = $nestedList; | |||
} | } | ||
$currentList.append(tocItem); | |||
levelStack.push(level); | levelStack.push(level); | ||
} | } | ||
}); | }); | ||
// Закрываем все оставшиеся открытые списки после обработки заголовков | |||
closeNestedLists(0); | |||
}); | }); | ||
} | } | ||