MediaWiki:Common.js: Difference between revisions
No edit summary Tags: Mobile edit Mobile web edit |
No edit summary Tags: Manual revert Mobile edit Mobile web edit |
||
| (9 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
🚀 MIPPEDIA DATA BUTTON ONLY (Otomatis - English Bridge Version) | 🚀 MIPPEDIA DATA BUTTON ONLY (Otomatis - English Bridge Version) | ||
Hanya memunculkan tombol jika data tersedia di pusat. | Hanya memunculkan tombol jika data tersedia di pusat. | ||
Mendukung pencarian | Mendukung pencarian otomatis ke Mippedia ID secara mandiri tanpa interwiki manual. | ||
========================================================== */ | ========================================================== */ | ||
$(document).ready(function() { | $(document).ready(function() { | ||
var pageName = mw.config.get('wgPageName'); | var pageName = mw.config.get('wgPageName').replace(/_/g, ' '); | ||
var namespace = mw.config.get('wgNamespaceNumber'); | var namespace = mw.config.get('wgNamespaceNumber'); | ||
var dataDomain = 'https://data.mippedia.org'; | var dataDomain = 'https://data.mippedia.org'; | ||
// Alamat API Mippedia Bahasa Indonesia (Sesuaikan URL domainnya jika berbeda) | |||
var indonesianWikiApi = 'https://id.mippedia.org/api.php'; | |||
// Jalankan hanya di namespace artikel resmi | // Jalankan hanya di namespace artikel resmi | ||
if (namespace === 0) { | if (namespace === 0) { | ||
// | |||
// Langkah 1: Tembak API Mippedia Indonesia untuk mencari padanan halaman paling relevan | |||
$.ajax({ | |||
url: indonesianWikiApi, | |||
data: { | |||
action: 'query', | |||
list: 'search', | |||
if ( | srsearch: pageName, // Mencari padanan berdasarkan judul Inggris | ||
// Ketemu | srlimit: 1, | ||
targetDataPage = | format: 'json', | ||
origin: '*' | |||
}, | |||
dataType: 'json', | |||
success: function(wikiRes) { | |||
var targetDataPage = pageName; // Fallback jika tidak ditemukan | |||
if (wikiRes && wikiRes.query && wikiRes.query.search && wikiRes.query.search.length > 0) { | |||
// Ketemu judul bahasa Indonesianya secara otomatis dari sistem search internal | |||
targetDataPage = wikiRes.query.search[0].title; | |||
} | } | ||
// Format spasi menjadi underscore untuk validasi nama halaman MediaWiki | |||
targetDataPage = targetDataPage.replace(/\s+/g, '_'); | |||
// Langkah 2: Cek langsung ke Mippedia Data menggunakan nama halaman Indonesia hasil pelacakan | |||
$.ajax({ | |||
url: dataDomain + '/api.php', | |||
data: { | |||
action: 'query', | |||
titles: targetDataPage, | |||
format: 'json', | |||
origin: '*' | |||
}, | |||
dataType: 'jsonp', | |||
success: function(res) { | |||
if (res && res.query && res.query.pages) { | |||
var pages = res.query.pages; | |||
var isExist = false; | |||
for (var id in pages) { | |||
if (parseInt(id) > 0) { | |||
isExist = true; | |||
break; | |||
} | |||
} | |||
// Jika data valid ditemukan di pusat, munculkan tombol melayang | |||
if (isExist) { | |||
injectFloatingDataBtn(targetDataPage, dataDomain); | |||
} | |||
} | } | ||
} | } | ||
}); | |||
}, | |||
if ( | error: function() { | ||
injectFloatingDataBtn( | // Jika server Wiki Indonesia down, langsung pakai nama asli Inggris-nya sebagai fallback akhir | ||
var nativePage = pageName.replace(/\s+/g, '_'); | |||
$.ajax({ | |||
url: dataDomain + '/api.php', | |||
data: { action: 'query', titles: nativePage, format: 'json', origin: '*' }, | |||
dataType: 'jsonp', | |||
success: function(res) { | |||
var pages = res.query.pages; | |||
var isExist = false; | |||
for (var id in pages) { if (parseInt(id) > 0) { isExist = true; break; } } | |||
if (isExist) { injectFloatingDataBtn(nativePage, dataDomain); } | |||
} | } | ||
} | }); | ||
} | } | ||
}); | }); | ||