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 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 auto-translation cerdas dari EN ke ID sebelum pengecekan.
   Mendukung pencarian pintar berbasis Interlanguage Links (EN -> ID).
   ========================================================== */
   ========================================================== */
$(document).ready(function() {
$(document).ready(function() {
     var pageName = mw.config.get('wgPageName').replace(/_/g, ' ');
     var pageName = mw.config.get('wgPageName');
     var namespace = mw.config.get('wgNamespaceNumber');
     var namespace = mw.config.get('wgNamespaceNumber');
     var dataDomain = 'https://data.mippedia.org';
     var dataDomain = 'https://data.mippedia.org';
Line 11: Line 11:
     // Jalankan hanya di namespace artikel resmi
     // 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";
        // Otak Pintar: Ambil daftar link bahasa lain yang ada di artikel ini
         var langLinks = mw.config.get('wgLanguageLinks');
        var targetDataPage = '';


         // Tembak API translasi terlebih dahulu secara independen
         if (langLinks && langLinks.length > 0) {
        $.ajax({
             // Cari apakah ada link yang mengarah ke bahasa Indonesia (id)
             url: translateUrl,
             for (var i = 0; i < langLinks.length; i++) {
            type: 'GET',
                if (langLinks[i].lang === 'id') {
            dataType: 'json'
                    // Ketemu! Ambil judul artikel versi Bahasa Indonesianya
        }).done(function(translateRes) {
                    targetDataPage = langLinks[i].title.replace(/\s+/g, '_');
             var translatedTitle = pageName;
                    break;
           
                }
            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() {
         // Fallback: Jika artikel belum dihubungkan ke bahasa Indonesia, pakai nama aslinya
            // Jika API translasi down/limit, langsung paksa cek pakai nama asli (Fallback)
        if (!targetDataPage) {
             checkAndInject(pageName.replace(/\s+/g, '_'));
             targetDataPage = pageName;
         });
         }
    }


    // Fungsi Utama: Cek ketersediaan data di pusat & eksekusi pembuatan tombol
        // Cek langsung ke Mippedia Data menggunakan nama halaman Indonesia/aslinya
    function checkAndInject(targetPage) {
         $.ajax({
         $.ajax({
             url: dataDomain + '/api.php',
             url: dataDomain + '/api.php',
             data: {  
             data: {  
                 action: 'query',  
                 action: 'query',  
                 titles: targetPage,  
                 titles: targetDataPage,  
                 format: 'json',  
                 format: 'json',  
                 origin: '*'  
                 origin: '*'  
Line 62: Line 53:
                     }
                     }


                     // Jika halaman ber-ID valid (ada di pusat), langsung buat tombolnya
                     // Jika data valid ditemukan di pusat, munculkan tombol melayang
                     if (isExist) {
                     if (isExist) {
                         injectFloatingDataBtn(targetPage, dataDomain);
                         injectFloatingDataBtn(targetDataPage, dataDomain);
                     }
                     }
                 }
                 }