MediaWiki:Common.js
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* ==========================================================
🚀 MIPPEDIA DATA BUTTON ONLY (Otomatis - English Bridge Version)
Hanya memunculkan tombol jika data tersedia di pusat.
Mendukung auto-translation cerdas dari EN ke ID sebelum pengecekan.
========================================================== */
$(document).ready(function() {
var pageName = mw.config.get('wgPageName').replace(/_/g, ' ');
var namespace = mw.config.get('wgNamespaceNumber');
var dataDomain = 'https://data.mippedia.org';
// Jalankan hanya di namespace artikel
if (namespace === 0) {
// Otak Pintar: Terjemahkan judul bahasa Inggris ke bahasa Indonesia secara natural
var translateUrl = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=id&dt=t&q=" + encodeURIComponent(pageName);
$.ajax({
url: translateUrl,
type: 'GET',
dataType: 'json',
success: function(translateRes) {
var translatedTitle = pageName; // Fallback jika translasi gagal
try {
// Mengambil hasil terjemahan frasa/kalimat utuh secara natural (mengatasi struktur terbalik)
if (translateRes && translateRes[0] && translateRes[0][0] && translateRes[0][0][0]) {
translatedTitle = translateRes[0][0][0].trim();
}
} catch (e) {
translatedTitle = pageName;
}
// Format kembali spasi menjadi underscore untuk pencarian nama halaman MediaWiki yang akurat
var targetDataPage = translatedTitle.replace(/\s+/g, '_');
// Cek apakah halaman hasil terjemahan tersebut ada di Mippedia Data
$.ajax({
url: dataDomain + '/api.php',
data: {
action: 'query',
titles: targetDataPage,
format: 'json',
origin: '*'
},
dataType: 'jsonp',
success: function(res) {
var pages = res.query.pages;
var isExist = false;
// Cek apakah ID halaman > 0 (artinya halaman ada)
for (var id in pages) {
if (parseInt(id) > 0) {
isExist = true;
break;
}
}
// Jika data ditemukan, munculkan tombol melayang dengan link menuju halaman Indonesia-nya
if (isExist) {
injectFloatingDataBtn(targetDataPage, dataDomain);
}
}
});
},
error: function() {
// Jika server Google Translate limit/down, tetap lakukan fallback cek nama asli
$.ajax({
url: dataDomain + '/api.php',
data: { action: 'query', titles: pageName.replace(/\s+/g, '_'), 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(pageName.replace(/\s+/g, '_'), dataDomain); }
}
});
}
});
}
function injectFloatingDataBtn(name, domain) {
if ($('#mippedia-data-btn').length) return;
var $btn = $('<a>', {
id: 'mippedia-data-btn',
href: domain + '/wiki/' + encodeURIComponent(name),
target: '_blank',
style: 'position: absolute; right: 10px; top: -32px; background: #36c; color: #fff; padding: 4px 10px; border-radius: 4px; font-weight: bold; font-size: 10px; text-decoration: none; z-index: 1000; box-shadow: 0 2px 4px rgba(0,0,0,0.1);',
text: 'DATA'
});
// Target: Area menu aksi (dekat ikon pensil)
// Mendukung skin Mobile (Minerva) dan Desktop
var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit, .minerva__tab-container').first();
if ($target.length) {
$target.css('position', 'relative').append($btn);
} else {
// Fallback jika header tidak standar
$('#firstHeading').css('position', 'relative').append($btn);
}
}
});