MediaWiki:Common.js: Perbedaan antara revisi

Tidak ada ringkasan suntingan
Tanda: Dikembalikan
←Mengosongkan halaman
Tanda: Pengosongan Pengembalian manual Suntingan perangkat seluler Suntingan peramban seluler
 
Baris 1: Baris 1:
/**
* Auto Related Articles Generator for MediaWiki
* Memilih secara acak hingga 3 wikilink biru di dalam artikel untuk dijadikan artikel terkait.
*/
$(function() {
    // Jalankan hanya di halaman baca artikel (action=view atau tanpa action)
    if ($('#mw-content-text').length && mw.config.get('wgIsArticle')) {
        var container = $('#auto-related-articles');
       
        // Cek apakah templat dipanggil dalam kondisi kosong (butuh otomatis)
        var hasManualParams = false;
        container.find('.mw-related-item, script').each(function() {
            // Jika sudah ada item dari manual parameter, biarkan
        });


        // Jika wadah ada dan belum terisi manual
        if (container.length) {
            var validLinks = [];
           
            // Cari semua link di dalam konten artikel
            $('#mw-content-text a').each(function() {
                var href = $(this).attr('href');
                var title = $(this).attr('title');
               
                // Validasi: Pastikan ini link internal wiki, BUKAN redlink (.new),
                // dan bukan bagian dari namespace khusus (File:, Special:, Help:, dll)
                if (href && href.startsWith('/wiki/') && !$(this).hasClass('new')) {
                    if (title && !title.includes(':') && title !== mw.config.get('wgPageName')) {
                        // Hindari duplikat
                        ifmo: if (!validLinks.includes(title)) {
                            validLinks.push(title);
                        }
                    }
                }
            });
            // Jika ditemukan link valid, ambil secara acak maksimal 3 buah
            if (validLinks.length > 0) {
                // Acak array (Shuffle)
                validLinks.sort(function() { return 0.5 - Math.random(); });
               
                // Ambil maksimal 3
                var selectedLinks = validLinks.slice(0, 3);
               
                // Eksekusi pemanggilan ekstensi RelatedArticles via HTML/API atau render otomatis
                var htmlOutput = '';
                selectedLinks.forEach(function(articleTitle) {
                    // Render elemen penampung atau inject format related articles
                    htmlOutput += '<div class="related-article-item"><a href="' + mw.util.getUrl(articleTitle) + '" title="' + articleTitle + '">' + articleTitle + '</a></div>';
                });
               
                // Masukkan ke dalam kontainer jika belum ada isi manual
                if (container.text().trim() === '' || container.find('a').length === 0) {
                    container.html(htmlOutput);
                }
            }
        }
    }
});