Lompat ke isi

MediaWiki:Common.js: Perbedaan antara revisi

Dari Mippedia bahasa Indonesia, ensiklopedia umum
Tidak ada ringkasan suntingan
Tanda: Dikembalikan Suntingan perangkat seluler Suntingan peramban seluler
←Mengosongkan halaman
Tanda: Pengosongan Pengembalian manual Suntingan perangkat seluler Suntingan peramban seluler
Baris 1: Baris 1:
/* 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);
                        }
                    });
                }
            });
        }
    }
});

Revisi per 9 April 2026 19.59