MediaWiki:Common.js: Perbedaan antara revisi
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
Tidak ada ringkasan suntingan Tanda: Dikembalikan Suntingan perangkat seluler Suntingan peramban seluler |
||
| Baris 1.309: | Baris 1.309: | ||
}); | }); | ||
/* * Skrip | /* * Skrip Mippedia Auto-Infobox & Smart Link Fixer | ||
* Fungsi: | * Fungsi: | ||
* 1. Otomatis cek & tarik data dari Mippedia Data berdasarkan judul halaman. | |||
* 2. Memperbaiki link merah menjadi biru jika artikel lokal tersedia. | |||
* 3. Memperbaiki URL gambar agar sinkron dengan ForeignAPIRepo. | |||
*/ | */ | ||
$(document).ready(function() { | $(document).ready(function() { | ||
var pageName = mw.config.get('wgPageName'); | var pageName = mw.config.get('wgPageName'); | ||
var | var namespace = mw.config.get('wgNamespaceNumber'); | ||
var dataDomain = 'https://data.mippedia.org'; // Domain pusat data | var dataDomain = 'https://data.mippedia.org'; // Domain pusat data lo | ||
if ( | // HANYA JALAN DI NAMESPACE UTAMA (ARTIKEL) | ||
if (namespace === 0) { | |||
// 1. BUAT PENAMPUNG INFOBOX OTOMATIS (Tanpa perlu edit manual) | |||
// Kita taruh di paling atas konten artikel | |||
var $autoContainer = $('<div id="mip-auto-infobox"></div>'); | |||
$('#mw-content-text').prepend($autoContainer); | |||
// 2. CEK DATA KE PUSAT | |||
$.ajax({ | $.ajax({ | ||
url: dataDomain + '/api.php', | url: dataDomain + '/api.php', | ||
| Baris 1.332: | Baris 1.344: | ||
var html = data.parse.text['*']; | var html = data.parse.text['*']; | ||
var $html = $(html); | var $html = $(html); | ||
var $infobox = $html.find('table.infobox'); | |||
var infobox = $html.find('table.infobox | |||
if ($infobox.length) { | |||
// Bersihkan Deskripsi Otomatis (biar gak double) | |||
$infobox.find('#mip-desc-section').remove(); | |||
// Fix Gambar (biar muncul di infobox) | |||
$infobox.find('img').each(function() { | |||
var src = $(this).attr('src'); | |||
if (src && !src.startsWith('http')) { | |||
$(this).attr('src', dataDomain + src); | |||
} | } | ||
}); | }); | ||
// | // Tempelkan ke artikel | ||
$autoContainer.html($infobox); | |||
// | // 3. SMART LINK FIXER (Biar link jadi biru) | ||
fixInfoboxLinks($autoContainer); | |||
} | } | ||
} | } | ||
} | |||
}); | |||
} | |||
// FUNGSI UNTUK CEK APAKAH ARTIKEL LOKAL ADA (BIAR GAK MERAH) | |||
function fixInfoboxLinks($container) { | |||
var titlesToCheck = []; | |||
var linkMap = {}; | |||
// Kumpulkan semua link di dalam infobox | |||
$container.find('a').each(function() { | |||
var $a = $(this); | |||
var title = $a.attr('title'); | |||
if (title) { | |||
titlesToCheck.push(title); | |||
// Tandai link ini sementara sebagai 'new' (merah) | |||
$a.addClass('new'); | |||
} | |||
}); | |||
if (titlesToCheck.length === 0) return; | |||
// Cek ke API Lokal (id.mippedia.org) apakah halaman-halaman ini ada | |||
$.ajax({ | |||
url: mw.util.wikiScript('api'), | |||
data: { | |||
action: 'query', | |||
titles: titlesToCheck.join('|'), | |||
format: 'json' | |||
}, | }, | ||
success: function(res) { | |||
container. | var pages = res.query.pages; | ||
var existingPages = {}; | |||
for (var id in pages) { | |||
if (id > 0) { // Jika ID > 0, artinya halaman ada (biru) | |||
existingPages[pages[id].title] = true; | |||
} | |||
} | |||
// Update tampilan link | |||
$container.find('a').each(function() { | |||
var $a = $(this); | |||
var title = $a.attr('title'); | |||
if (existingPages[title]) { | |||
// JIKA ADA: Hapus class 'new' (jadi biru) dan arahkan link ke lokal | |||
$a.removeClass('new'); | |||
$a.attr('href', mw.util.getUrl(title)); | |||
} else { | |||
// JIKA TIDAK ADA: Arahkan link ke halaman edit lokal (tetap merah) | |||
$a.attr('href', mw.util.getUrl(title, { action: 'edit', redlink: '1' })); | |||
} | |||
}); | |||
} | } | ||
}); | }); | ||
} | } | ||
}); | }); | ||