„MediaWiki:Common.js” változatai közötti eltérés
Megjelenés
Nincs szerkesztési összefoglaló |
Nincs szerkesztési összefoglaló |
||
| (13 közbenső módosítás ugyanattól a felhasználótól nincs mutatva) | |||
| 1. sor: | 1. sor: | ||
/* LightGallery 2.9.0 + Wikipédia API Integráció */ | |||
(function() { | |||
// 1. Külső erőforrások (CSS és JS) betöltése CDN-ről | |||
mw.loader.load('https://cdn.jsdelivr.net/npm/lightgallery@2.4.0/css/lightgallery-bundle.min.css', 'text/css'); | |||
$.getScript('https://cdn.jsdelivr.net/npm/lightgallery@2.4.0/lightgallery.umd.min.js', function() { | |||
console.log('LightGallery 2.9.0 betöltve.'); | |||
// 2. A galériaépítő főfüggvény | |||
function initWikiDynamicGallery() { | |||
$('.wiki-dynamic-gallery').each(function() { | |||
var $container = $(this); | |||
// Megakadályozzuk a duplikált futást | |||
if ($container.data('initialized')) return; | |||
$container.data('initialized', true); | |||
var searchTerm = $container.data('search'); | |||
var limit = $container.data('limit') || 3; | |||
var targetHeight = 200; // A kért magasság | |||
// Wikipédia/Commons API hívás (iiurlheight paraméterrel a 200px magassághoz) | |||
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 = ''; | |||
// Találatok feldolgozása | |||
for (var id in pages) { | |||
var img = pages[id].imageinfo[0]; | |||
var title = pages[id].title.replace('File:', ''); | |||
// LightGallery HTML struktúra | |||
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; box-shadow: 0 2px 4px rgba(0,0,0,0.1);" alt="' + title + '" />'; | |||
galleryHtml += '</a>'; | |||
} | |||
// Tartalom behelyezése és a betöltési üzenet eltávolítása | |||
$container.html(galleryHtml); | |||
// 3. LightGallery inicializálása a konténeren | |||
if (window.lightGallery) { | |||
lightGallery($container[0], { | |||
selector: '.lg-item', | |||
speed: 400, | |||
download: true, | |||
counter: true, | |||
enableDrag: true, | |||
enableSwipe: true, | |||
licenseKey: '0000-0000-000-0000' // Ingyenes/Non-profit használat | |||
}); | |||
} | |||
} else { | |||
$container.html('<p style="color:#888; font-style:italic;">Nem található kép a következőhöz: ' + searchTerm + '</p>'); | |||
} | |||
}).fail(function() { | |||
$container.html('<p style="color:red;">Hiba történt a galéria betöltésekor.</p>'); | |||
}); | |||
}); | |||
} | |||
// Futtatás az oldal betöltésekor | |||
$(document).ready(function() { | |||
initWikiDynamicGallery(); | |||
}); | |||
}); | |||
})(); | |||
// Bootstrap Icons betöltése | // Bootstrap Icons betöltése | ||
var link = document.createElement("link"); | var link = document.createElement("link"); | ||
| 34. sor: | 109. sor: | ||
var $btn = $('<button/>', { | var $btn = $('<button/>', { | ||
//text: '⬆ Tetejére', | //text: '⬆ Tetejére', | ||
html: '<i class="bi bi-arrow-up-square"></i> Tetejére', | |||
id: 'backToTopBtn', | id: 'backToTopBtn', | ||
title: 'Az oldal tetejére', | title: 'Az oldal tetejére', | ||
| 46. sor: | 121. sor: | ||
color: 'white', | color: 'white', | ||
border: 'none', | border: 'none', | ||
'border-radius': ' | 'border-radius': '10px', | ||
cursor: 'pointer', | cursor: 'pointer', | ||
display: 'none', // alapból rejtve | display: 'none', // alapból rejtve | ||
width: '100px', | |||
'z-index': 1000 | 'z-index': 1000 | ||
}, | }, | ||
| 74. sor: | 150. sor: | ||
var $backBtn = $('<button/>', { | var $backBtn = $('<button/>', { | ||
// text: '⬅ Vissza', | // text: '⬅ Vissza', | ||
html: '<i class="bi bi-arrow-left-square"></i> Vissza', | |||
id: 'backBtn', | id: 'backBtn', | ||
title: 'Előző oldal', | title: 'Előző oldal', | ||
| 86. sor: | 162. sor: | ||
color: 'white', | color: 'white', | ||
border: 'none', | border: 'none', | ||
'border-radius': ' | 'border-radius': '10px', | ||
cursor: 'pointer', | cursor: 'pointer', | ||
display: 'none', | display: 'none', | ||
width: '100px', | |||
'z-index': 1000 | 'z-index': 1000 | ||
}, | }, | ||
| 107. sor: | 184. sor: | ||
} | } | ||
}); | }); | ||
}); | |||
/* 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.' ); | |||
}); | |||
} | |||
}); | }); | ||
A lap jelenlegi, 2026. január 3., 21:12-kori változata
/* LightGallery 2.9.0 + Wikipédia API Integráció */
(function() {
// 1. Külső erőforrások (CSS és JS) betöltése CDN-ről
mw.loader.load('https://cdn.jsdelivr.net/npm/lightgallery@2.4.0/css/lightgallery-bundle.min.css', 'text/css');
$.getScript('https://cdn.jsdelivr.net/npm/lightgallery@2.4.0/lightgallery.umd.min.js', function() {
console.log('LightGallery 2.9.0 betöltve.');
// 2. A galériaépítő főfüggvény
function initWikiDynamicGallery() {
$('.wiki-dynamic-gallery').each(function() {
var $container = $(this);
// Megakadályozzuk a duplikált futást
if ($container.data('initialized')) return;
$container.data('initialized', true);
var searchTerm = $container.data('search');
var limit = $container.data('limit') || 3;
var targetHeight = 200; // A kért magasság
// Wikipédia/Commons API hívás (iiurlheight paraméterrel a 200px magassághoz)
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 = '';
// Találatok feldolgozása
for (var id in pages) {
var img = pages[id].imageinfo[0];
var title = pages[id].title.replace('File:', '');
// LightGallery HTML struktúra
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; box-shadow: 0 2px 4px rgba(0,0,0,0.1);" alt="' + title + '" />';
galleryHtml += '</a>';
}
// Tartalom behelyezése és a betöltési üzenet eltávolítása
$container.html(galleryHtml);
// 3. LightGallery inicializálása a konténeren
if (window.lightGallery) {
lightGallery($container[0], {
selector: '.lg-item',
speed: 400,
download: true,
counter: true,
enableDrag: true,
enableSwipe: true,
licenseKey: '0000-0000-000-0000' // Ingyenes/Non-profit használat
});
}
} else {
$container.html('<p style="color:#888; font-style:italic;">Nem található kép a következőhöz: ' + searchTerm + '</p>');
}
}).fail(function() {
$container.html('<p style="color:red;">Hiba történt a galéria betöltésekor.</p>');
});
});
}
// Futtatás az oldal betöltésekor
$(document).ready(function() {
initWikiDynamicGallery();
});
});
})();
// 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': '#337ab7',
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': '#5cb85c',
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.' );
});
}
});