|
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);
| |
| }
| |
| }
| |
| }
| |
| }
| |
| });
| |