„MediaWiki:Common.js” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló |
Nincs szerkesztési összefoglaló |
||
| 223. sor: | 223. sor: | ||
mw.hook('wikipage.content').add(function () { | mw.hook('wikipage.content').add(function () { | ||
const regexKoztespont = /^Szukkulens határozó: .+/; | |||
const | |||
const regexVegpont = /(→|→)/; | const regexVegpont = /(→|→)/; | ||
| 230. sor: | 229. sor: | ||
document.querySelectorAll('a').forEach(a => { | document.querySelectorAll('a').forEach(a => { | ||
const linkText = a.textContent.trim(); | const linkText = a.textContent.trim(); | ||
if ( | if (regexKoztespont.test(linkText)) { | ||
a.classList.add("hatarozo- | a.classList.add("hatarozo-koztespont-btn"); | ||
} | } | ||
}); | }); | ||
// --- MÁSODIK LOGIKA: Határozó kulcs végpontjai ( | // --- MÁSODIK LOGIKA: Határozó kulcs végpontjai (Példák kizárásával) --- | ||
document.querySelectorAll('li').forEach(li => { | document.querySelectorAll('li').forEach(li => { | ||
// JAVÍTVA: Ha a sorban már van köztespont gomb, akkor ez NEM egy végpont sor! | |||
// A kód azonnal átugorja ezt a listaelemet, így a példák érintetlenek maradnak. | |||
if (li.querySelector('.hatarozo-koztespont-btn')) { | |||
return; | |||
} | |||
if (regexVegpont.test(li.innerHTML)) { | if (regexVegpont.test(li.innerHTML)) { | ||
const link = li.querySelector('a[href*="/wiki/"]:not(.external)'); | const link = li.querySelector('a[href*="/wiki/"]:not(.external)'); | ||
if (link) { | if (link) { | ||
link.classList.add(" | // A növény nevét a link 'title' attribútumából vesszük ki | ||
const fajNev = link.getAttribute('title') || link.textContent.trim(); | |||
// Beletesszük a nyilat és a hibátlan fajnevet a gombba | |||
link.innerHTML = `<span class="arrow-prefix">→</span><span class="botanical-name">${fajNev}</span>`; | |||
link.classList.add("hatarozo-vegpont-btn"); | |||
// | // Eltávolítjuk a gombon kívüli, eredeti nyilat a szövegből | ||
let previousNode = link.previousSibling; | |||
if (link.parentElement.tagName.toLowerCase() === 'i') { | |||
previousNode = link.parentElement.previousSibling; | |||
link.parentElement.style.fontStyle = "normal"; | |||
} | |||
if (previousNode && previousNode.nodeType === Node.TEXT_NODE) { | |||
previousNode.textContent = previousNode.textContent.replace(/[→\s]+$/, ''); | |||
} | } | ||
} | } | ||
A lap 2026. május 24., 12:43-kori változata
/* LightGallery + Commons API Integráció */
(function() {
// Csak akkor fusson, ha van galéria az oldalon
if ($('.wiki-dynamic-gallery').length === 0) return;
// Erőforrások betöltése mw.loader-rel
mw.loader.addStyleTag('@import "https://cdn.jsdelivr.net/npm/lightgallery@2.4.0/css/lightgallery-bundle.min.css";');
$.getScript('https://cdn.jsdelivr.net/npm/lightgallery@2.4.0/lightgallery.umd.min.js')
.done(function() {
console.log('LightGallery 2.4.0 inicializálva.');
initWikiDynamicGallery();
});
function initWikiDynamicGallery() {
$('.wiki-dynamic-gallery').each(function() {
var $container = $(this);
if ($container.data('initialized')) return;
$container.data('initialized', true);
var searchTerm = $container.data('search');
var limit = $container.data('limit') || 3;
var targetHeight = 200;
var apiUrl = "https://commons.wikimedia.org/w/api.php?action=query&format=json&generator=search&gsrsearch=File:" +
encodeURIComponent(searchTerm) + "&gsrlimit=" + limit +
"&prop=imageinfo&iiprop=url|size&iiurlheight=" + targetHeight + "&origin=*";
$.getJSON(apiUrl, function(data) {
if (data && data.query && data.query.pages) {
var pages = data.query.pages;
var galleryHtml = '';
for (var id in pages) {
if (!pages[id].imageinfo) continue;
var img = pages[id].imageinfo[0];
var title = pages[id].title.replace('File:', '');
galleryHtml += '<a href="' + img.url + '" class="lg-item" data-src="' + img.url + '" data-sub-html="<h4>' + title + '</h4>">';
galleryHtml += ' <img src="' + img.thumburl + '" style="height:' + targetHeight + 'px; width:auto; margin:5px; border-radius:6px; cursor:pointer;" alt="' + title + '" />';
galleryHtml += '</a>';
}
$container.html(galleryHtml);
if (window.lightGallery) {
lightGallery($container[0], {
selector: '.lg-item',
licenseKey: '0000-0000-000-0000'
});
}
}
});
});
}
})();
// Bootstrap Icons betöltése
var link = document.createElement("link");
link.rel = "stylesheet";
//link.href = "https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css";
link.href = "https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css";
document.head.appendChild(link);
/* Az ide elhelyezett JavaScript kód minden felhasználó számára lefut az oldalak betöltésekor. */
// Fülek elrejtése anonim felhasználók számára
if (mw.config.get('wgUserName') === null) {
var hideTabs = function () {
var el1 = document.querySelector('#ca-history');
var el2 = document.querySelector('#ca-viewsource');
if (el1) el1.style.display = 'none';
if (el2) el2.style.display = 'none';
// Ha mindkét elem megtalálható, leállítjuk az ismétlést
if (el1 || el2) clearInterval(observer);
};
// 100ms-onként ellenőrizzük, hogy megjelentek-e a fülek
var observer = setInterval(hideTabs, 100);
}
/* MediaWikiben az alapértelmezett viselkedés az, hogy a külső hivatkozások (pl. [https://példa.hu link szövege]) ugyanazon a lapon nyílnak meg.
Ahhoz, hogy ezek új lapon nyíljanak meg:*/
$(function () {
$('a.external').attr('target', '_blank');
});
// Egy "Tetejére" gomb megjelenítése és kattintáskor scrollozás az oldal tetejére
$(function() {
// Létrehozzuk a gombot
var $btn = $('<button/>', {
//text: '⬆ Tetejére',
html: '<i class="bi bi-arrow-up-square"></i> Tetejére',
id: 'backToTopBtn',
title: 'Az oldal tetejére',
css: {
position: 'fixed',
bottom: '20px',
right: '20px',
padding: '10px 15px',
'font-size': '14px',
'background-color': '#888446ff',
color: 'white',
border: 'none',
'border-radius': '10px',
cursor: 'pointer',
display: 'none', // alapból rejtve
width: '100px',
'z-index': 1000
},
click: function() {
window.scrollTo({top: 0, behavior: 'smooth'});
}
});
// A body végére tesszük a gombot
$('body').append($btn);
// Megjelenítés, ha az oldal le van görgetve 100px-nél
$(window).scroll(function() {
if ($(window).scrollTop() > 100) {
$btn.fadeIn();
} else {
$btn.fadeOut();
}
});
});
// Egy "Vissza" gomb megjelenítése, ami az előző oldalra mutat
$(function() {
// Vissza gomb létrehozása
var $backBtn = $('<button/>', {
// text: '⬅ Vissza',
html: '<i class="bi bi-arrow-left-square"></i> Vissza',
id: 'backBtn',
title: 'Előző oldal',
css: {
position: 'fixed',
bottom: '60px', // a "Tetejére" gomb fölé kerül
right: '20px',
padding: '10px 15px',
'font-size': '14px',
'background-color': '#547454ff',
color: 'white',
border: 'none',
'border-radius': '10px',
cursor: 'pointer',
display: 'none',
width: '100px',
'z-index': 1000
},
click: function() {
window.history.back();
}
});
// Hozzáadás a DOM-hoz
$('body').append($backBtn);
// Megjelenítés görgetés után
$(window).scroll(function() {
if ($(window).scrollTop() > 100) {
$backBtn.fadeIn();
} else {
$backBtn.fadeOut();
}
});
});
/* Taxobox ikonok megnyitása új lapon */
$(document).ready(function() {
$('.taxobox-icons a').attr('target', '_blank');
});
/**
* DataTables 2.1.8 integráció - MediaWiki javított verzió
*/
mw.loader.using( ['jquery', 'mediawiki.util'] ).done( function () {
if ( $( '.datatable-hook' ).length > 0 ) {
// DataTables JS betöltése
$.getScript( 'https://cdn.datatables.net/2.1.8/js/dataTables.min.js' )
.done( function() {
$( '.datatable-hook' ).each( function() {
var $table = $(this);
// 1. LÉPÉS: A MediaWiki hibás struktúrájának javítása
// Megkeressük az első sort, amiben TH (fejléc) cellák vannak
var $headerRow = $table.find( 'tr:has(th)' ).first();
if ( $headerRow.length > 0 ) {
// Létrehozunk egy THEAD-et és belemozgatjuk a fejléc sort
var $thead = $( '<thead></thead>' );
$headerRow.detach().appendTo( $thead );
$table.prepend( $thead );
}
// 2. LÉPÉS: Inicializálás a javított táblázaton
$table.DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/2.1.8/i18n/hu.json'
},
layout: {
topStart: 'pageLength',
topEnd: 'search',
bottomStart: 'info',
bottomEnd: 'paging'
},
pageLength: 10,
// Biztonsági beállítás: ne álljon le hibával, ha mégis eltérés lenne
columnDefs: [ { targets: '_all', defaultContent: '' } ]
});
});
})
.fail( function() {
console.error( 'Hiba: Nem sikerült betölteni a DataTables szkriptet.' );
});
}
});
mw.hook('wikipage.content').add(function () {
const regexKoztespont = /^Szukkulens határozó: .+/;
const regexVegpont = /(→|→)/;
// --- ELSŐ LOGIKA: Köztes határozó oldalak linkjei ---
document.querySelectorAll('a').forEach(a => {
const linkText = a.textContent.trim();
if (regexKoztespont.test(linkText)) {
a.classList.add("hatarozo-koztespont-btn");
}
});
// --- MÁSODIK LOGIKA: Határozó kulcs végpontjai (Példák kizárásával) ---
document.querySelectorAll('li').forEach(li => {
// JAVÍTVA: Ha a sorban már van köztespont gomb, akkor ez NEM egy végpont sor!
// A kód azonnal átugorja ezt a listaelemet, így a példák érintetlenek maradnak.
if (li.querySelector('.hatarozo-koztespont-btn')) {
return;
}
if (regexVegpont.test(li.innerHTML)) {
const link = li.querySelector('a[href*="/wiki/"]:not(.external)');
if (link) {
// A növény nevét a link 'title' attribútumából vesszük ki
const fajNev = link.getAttribute('title') || link.textContent.trim();
// Beletesszük a nyilat és a hibátlan fajnevet a gombba
link.innerHTML = `<span class="arrow-prefix">→</span><span class="botanical-name">${fajNev}</span>`;
link.classList.add("hatarozo-vegpont-btn");
// Eltávolítjuk a gombon kívüli, eredeti nyilat a szövegből
let previousNode = link.previousSibling;
if (link.parentElement.tagName.toLowerCase() === 'i') {
previousNode = link.parentElement.previousSibling;
link.parentElement.style.fontStyle = "normal";
}
if (previousNode && previousNode.nodeType === Node.TEXT_NODE) {
previousNode.textContent = previousNode.textContent.replace(/[→\s]+$/, '');
}
}
}
});
});