Lompat ke isi

MediaWiki:Common.js

Dari Mippedia bahasa Indonesia, ensiklopedia umum
Revisi sejak 9 April 2026 19.55 oleh Admin (bicara | kontrib)

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
/* Script Injeksi RelatedArticles Otomatis ke Footer */
$(document).ready(function() {
    if (mw.config.get('wgIsArticle') && mw.config.get('wgAction') === 'view' && mw.config.get('wgNamespaceNumber') === 0) {
        
        // 1. Cek dulu, apakah di halaman ini udah ada kode {{#related}} manual?
        // Kita cek lewat elemen kelas bawaan ekstensi RelatedArticles
        if ($('.ext-related-articles-card').length || $('div[id^="related"]').length > 0) {
            return; // Kalau udah ada, berhenti biar gak numpuk
        }

        var categories = mw.config.get('wgCategories');
        if (categories.length > 0) {
            var targetCat = categories.filter(function(c){ return !c.match(/halaman|artikel|maintenance/i); })[0] || categories[0];

            // 2. Ambil daftar artikel dalam kategori
            $.getJSON(mw.util.wikiScript('api'), {
                action: 'query',
                list: 'categorymembers',
                cmtitle: 'Category:' + targetCat,
                cmlimit: 30,
                format: 'json'
            }, function(data) {
                var members = data.query.categorymembers;
                if (!members) return;

                var currentTitle = mw.config.get('wgPageName').replace(/_/g, ' ');
                var filtered = members.filter(function(m) { return m.title !== currentTitle; });

                // Acak dan ambil 3
                filtered.sort(function() { return 0.5 - Math.random(); });
                var chosen = filtered.slice(0, 3);

                if (chosen.length > 0) {
                    // 3. Bikin string perintah manual buat ekstensi RelatedArticles
                    var relatedWikiText = "";
                    chosen.forEach(function(item) {
                        relatedWikiText += '{{#related:' + item.title + '}}';
                    });

                    // 4. Perintah "Pinter": Nyuruh server ngerender wikitext jadi HTML asli ekstensi
                    $.getJSON(mw.util.wikiScript('api'), {
                        action: 'parse',
                        text: relatedWikiText,
                        contentmodel: 'wikitext',
                        prop: 'text',
                        disablelimitreport: 1,
                        format: 'json'
                    }, function(parseData) {
                        var finalHtml = parseData.parse.text['*'];
                        
                        // 5. Tempel hasilnya di bawah artikel
                        var container = $('<div id="auto-related-wrapper" style="clear:both; margin-top:20px;"></div>').append(finalHtml);
                        
                        // Target Minerva (HP) dan Vector (Desktop)
                        if ($('.minerva-footer').length) {
                            $('.minerva-footer').before(container);
                        } else if ($('#catlinks').length) {
                            $('#catlinks').after(container);
                        } else {
                            $('#mw-content-text').after(container);
                        }
                    });
                }
            });
        }
    }
});