MediaWiki:Common.js: Perbedaan antara revisi
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
||
| Baris 531: | Baris 531: | ||
/* ========================================================== | /* ========================================================== | ||
🚀 MIPPEDIA DATA - AUTO-LINKER ( | 🚀 MIPPEDIA DATA - AUTO-LINKER ENGINE (FIXED) | ||
Fungsi: Scan teks di #mip-auto-description & ubah jadi Link Biru | |||
========================================================== */ | ========================================================== */ | ||
(function() { | (function() { | ||
async function | async function transformToLinks() { | ||
var | var $container = $('#mip-auto-description'); | ||
if (! | |||
// Cek apakah kontainer sudah ada isinya tapi belum diproses | |||
if ($container.length && $container.text().trim() !== "" && $container.attr('data-linked') !== 'yes') { | |||
var originalText = $container.text(); | |||
// Ambil semua kata/frasa yang diawali huruf Kapital (Nama/Istilah penting) | |||
var matches = originalText.match(/[A-Z][a-z]+(?:\s[A-Z][a-z]+)*/g); | |||
if (!matches) return; | |||
var uniqueMatches = [...new Set(matches)]; | |||
var linkedText = originalText; | |||
for (var title of uniqueMatches) { | |||
try { | |||
// Tanya ke API Mippedia Data: "Halaman ini ada gak?" | |||
var res = await $.getJSON(mw.util.wikiScript('api'), { | |||
action: 'query', | |||
titles: title, | |||
format: 'json' | |||
}); | |||
// Jika ID halamannya bukan -1 (artinya ADA di Mippedia Data) | |||
if (!res.query.pages["-1"]) { | |||
// Bungkus jadi link biru Mippedia Data | |||
var regex = new RegExp('\\b' + title + '\\b', 'g'); | |||
linkedText = linkedText.replace(regex, '<a href="/wiki/' + title.replace(/ /g, '_') + '" style="color: #0645ad; text-decoration: none;" title="' + title + '">' + title + '</a>'); | |||
} | |||
} catch (e) { } | |||
}) | } | ||
// Suntik balik teks yang sudah jadi link | |||
$container.html(linkedText); | |||
$container.attr('data-linked', 'yes'); // Tandai biar gak looping | |||
} | } | ||
} | |||
// Pakai Observer karena deskripsi lo munculnya "telat" (nunggu API Mippedia Artikel) | |||
var linkerObserver = new MutationObserver(function(mutations) { | |||
} | transformToLinks(); | ||
}); | |||
$(document).ready(function() { | |||
var target = document.body; | |||
linkerObserver.observe(target, { childList: true, subtree: true }); | |||
var | |||
// Jalankan sekali lagi pas awal buat jaga-jaga | |||
setTimeout(transformToLinks, 2000); | |||
}); | }); | ||
})(); | })(); | ||