Ugrás a tartalomhoz

MediaWiki:Common.js

Innen: MKOE wiki
A lap korábbi változatát látod, amilyen Dr. Gyúró Zoltán (vitalap | szerkesztései) 2026. január 3., 20:53-kor történt szerkesztése után volt.

Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.

  • Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
  • Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
  • Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
/* 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ó
 */
mw.loader.using( ['jquery', 'mediawiki.util'] ).done( function () {
    
    if ( $( '.datatable-hook' ).length > 0 ) {
        
        // A legújabb JS betöltése
        $.getScript( 'https://cdn.datatables.net/2.1.8/js/dataTables.min.js' )
            .done( function() {
                
                $( '.datatable-hook' ).DataTable({
                    // Magyarosítás a legújabb i18n fájllal
                    language: {
                        url: '//cdn.datatables.net/plug-ins/2.1.8/i18n/hu.json'
                    },
                    // Modern elrendezés beállítása
                    layout: {
                        topStart: 'pageLength',
                        topEnd: 'search',
                        bottomStart: 'info',
                        bottomEnd: 'paging'
                    },
                    pageLength: 10,
                    responsive: true
                });
                
            })
            .fail( function() {
                console.error( 'Hiba történt a DataTables 2 betöltésekor.' );
            });
    }
});