Lompat ke isi

MediaWiki:Common.js

Dari Wikisporta, ensiklopedia olahraga

Catatan: Setelah menerbitkan, Anda mungkin perlu melewati tembolok peramban web Anda untuk melihat perubahan.

  • Firefox/Safari: Tekan dan tahan Shift sembari mengeklik Reload, atau tekan Ctrl-F5 atau Ctrl-R (⌘-R di Mac)
  • Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R di Mac)
  • Edge: Tahan Ctrl sembari mengeklik Refresh, atau tekan Ctrl-F5
/**
 * 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);
                }
            }
        }
    }
});