مدیاویکی:Common.js: تفاوت میان نسخهها
از آیتالله گنجی
صفحهای تازه حاوی «←جستوجوی زنده در جدولهای آرشیو دروس: $(function () { function normalize(value) { return String(value || '') .replace(/ي/g, 'ی') .replace(/ك/g, 'ک') .replace(/[۰-۹]/g, function (digit) { return '۰۱۲۳۴۵۶۷۸۹'.indexOf(digit); }) .replace(/\s+/g, ' ') .trim() .toLowerCase();...» ایجاد کرد |
بدون خلاصۀ ویرایش |
||
| خط ۴۹: | خط ۴۹: | ||
}); | }); | ||
}); | }); | ||
/* ساخت فهرست مطالب صفحه در پایین منوی کناری قالب Medik */ | |||
var sidebar = document.querySelector('#mw-navigation nav'); | |||
var content = document.querySelector('.mw-parser-output'); | |||
if (!sidebar || !content || sidebar.querySelector('.ganji-sidebar-toc')) { | |||
return; | |||
} | |||
var headings = Array.prototype.slice.call( | |||
content.querySelectorAll('h2, h3, h4') | |||
).filter(function (heading) { | |||
return !heading.closest('.toc') && !heading.closest('table'); | |||
}); | |||
if (!headings.length) { | |||
return; | |||
} | |||
var toc = document.createElement('div'); | |||
toc.className = 'ganji-sidebar-toc'; | |||
var title = document.createElement('div'); | |||
title.className = 'ganji-sidebar-toc-title'; | |||
title.textContent = 'فهرست مطالب'; | |||
toc.appendChild(title); | |||
var list = document.createElement('ul'); | |||
headings.forEach(function (heading, index) { | |||
if (!heading.id) { | |||
heading.id = 'ganji-section-' + (index + 1); | |||
} | |||
var item = document.createElement('li'); | |||
item.className = 'ganji-toc-level-' + heading.tagName.toLowerCase(); | |||
var link = document.createElement('a'); | |||
link.href = '#' + encodeURIComponent(heading.id); | |||
link.textContent = (heading.querySelector('.mw-headline') || heading) | |||
.textContent | |||
.replace(/\[ویرایش\]/g, '') | |||
.trim(); | |||
item.appendChild(link); | |||
list.appendChild(item); | |||
}); | |||
toc.appendChild(list); | |||
sidebar.appendChild(toc); | |||
}); | }); | ||
نسخهٔ کنونی تا ۱۰ سپتامبر ۲۰۲۶، ساعت ۰۳:۳۳
/* جستوجوی زنده در جدولهای آرشیو دروس */
$(function () {
function normalize(value) {
return String(value || '')
.replace(/ي/g, 'ی')
.replace(/ك/g, 'ک')
.replace(/[۰-۹]/g, function (digit) {
return '۰۱۲۳۴۵۶۷۸۹'.indexOf(digit);
})
.replace(/\s+/g, ' ')
.trim()
.toLowerCase();
}
document.querySelectorAll('.ganji-archive').forEach(function (archive) {
var table = archive.querySelector('.ganji-archive-table');
if (!table || archive.querySelector('.ganji-table-search')) {
return;
}
var input = document.createElement('input');
input.type = 'search';
input.className = 'ganji-table-search';
input.placeholder = 'جستوجو در جلسه، تاریخ و موضوعها…';
input.setAttribute('aria-label', 'جستوجو در جدول جلسات');
var empty = document.createElement('div');
empty.className = 'ganji-table-no-results';
empty.textContent = 'نتیجهای پیدا نشد.';
empty.hidden = true;
archive.insertBefore(input, archive.firstChild);
archive.insertBefore(empty, input.nextSibling);
input.addEventListener('input', function () {
var query = normalize(input.value);
var visible = 0;
table.querySelectorAll('tr').forEach(function (row) {
if (!row.querySelector('td')) {
return;
}
var matched = !query || normalize(row.textContent).includes(query);
row.hidden = !matched;
if (matched) {
visible += 1;
}
});
empty.hidden = visible !== 0;
});
});
/* ساخت فهرست مطالب صفحه در پایین منوی کناری قالب Medik */
var sidebar = document.querySelector('#mw-navigation nav');
var content = document.querySelector('.mw-parser-output');
if (!sidebar || !content || sidebar.querySelector('.ganji-sidebar-toc')) {
return;
}
var headings = Array.prototype.slice.call(
content.querySelectorAll('h2, h3, h4')
).filter(function (heading) {
return !heading.closest('.toc') && !heading.closest('table');
});
if (!headings.length) {
return;
}
var toc = document.createElement('div');
toc.className = 'ganji-sidebar-toc';
var title = document.createElement('div');
title.className = 'ganji-sidebar-toc-title';
title.textContent = 'فهرست مطالب';
toc.appendChild(title);
var list = document.createElement('ul');
headings.forEach(function (heading, index) {
if (!heading.id) {
heading.id = 'ganji-section-' + (index + 1);
}
var item = document.createElement('li');
item.className = 'ganji-toc-level-' + heading.tagName.toLowerCase();
var link = document.createElement('a');
link.href = '#' + encodeURIComponent(heading.id);
link.textContent = (heading.querySelector('.mw-headline') || heading)
.textContent
.replace(/\[ویرایش\]/g, '')
.trim();
item.appendChild(link);
list.appendChild(item);
});
toc.appendChild(list);
sidebar.appendChild(toc);
});