MediaWiki:Common.js: Difference between revisions
No edit summary Tags: Mobile edit Mobile web edit |
No edit summary Tags: Mobile edit Mobile web edit |
||
| Line 9: | Line 9: | ||
var dataDomain = 'https://data.mippedia.org'; | var dataDomain = 'https://data.mippedia.org'; | ||
// Jalankan hanya di namespace artikel | // Jalankan hanya di namespace artikel resmi | ||
if (namespace === 0) { | if (namespace === 0) { | ||
var translateUrl = "https://api.mymemory.translated.net/get?q=" + encodeURIComponent(pageName) + "&langpair=en|id"; | var translateUrl = "https://api.mymemory.translated.net/get?q=" + encodeURIComponent(pageName) + "&langpair=en|id"; | ||
// Tembak API translasi terlebih dahulu secara independen | |||
$.ajax({ | $.ajax({ | ||
url: translateUrl, | url: translateUrl, | ||
type: 'GET', | type: 'GET', | ||
dataType: 'json' | dataType: 'json' | ||
}).done(function(translateRes) { | |||
var translatedTitle = pageName; | |||
if (translateRes && translateRes.responseData && translateRes.responseData.translatedText) { | |||
var rawText = translateRes.responseData.translatedText; | |||
// Bersihkan karakter tak diinginkan dan rapikan kapitalisasi kata | |||
translatedTitle = rawText.replace(/[.\ sovereignty\?]/g, '').trim(); | |||
} | |||
// Format teks hasil translasi agar sesuai standar nama halaman MediaWiki | |||
var targetDataPage = translatedTitle.charAt(0).toUpperCase() + translatedTitle.slice(1).replace(/\s+/g, '_'); | |||
// Oper hasil translasi ke mesin pengecek data utama | |||
checkAndInject(targetDataPage); | |||
}).fail(function() { | |||
// Jika API translasi down/limit, langsung paksa cek pakai nama asli (Fallback) | |||
checkAndInject(pageName.replace(/\s+/g, '_')); | |||
}); | |||
} | |||
// Fungsi Utama: Cek ketersediaan data di pusat & eksekusi pembuatan tombol | |||
function checkAndInject(targetPage) { | |||
$.ajax({ | |||
url: dataDomain + '/api.php', | |||
data: { | |||
action: 'query', | |||
titles: targetPage, | |||
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 halaman ber-ID valid (ada di pusat), langsung buat tombolnya | |||
if (isExist) { | |||
injectFloatingDataBtn(targetPage, dataDomain); | |||
} | } | ||
} | } | ||
} | } | ||
}); | }); | ||