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
 
(11 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 auto-translation cerdas dari EN ke ID sebelum pengecekan.
   Mendukung pencarian otomatis ke Mippedia ID secara mandiri tanpa interwiki manual.
   ========================================================== */
   ========================================================== */
$(document).ready(function() {
$(document).ready(function() {
Line 8: Line 8:
     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
     // Jalankan hanya di namespace artikel resmi
     if (namespace === 0) {
     if (namespace === 0) {
         // Otak Pintar Baru: Menggunakan MyMemory API yang bebas blokir CORS browser
       
        var translateUrl = "https://api.mymemory.translated.net/get?q=" + encodeURIComponent(pageName) + "&langpair=en|id";
         // Langkah 1: Tembak API Mippedia Indonesia untuk mencari padanan halaman paling relevan
 
         $.ajax({
         $.ajax({
             url: translateUrl,
             url: indonesianWikiApi,
             type: 'GET',
             data: {
                action: 'query',
                list: 'search',
                srsearch: pageName, // Mencari padanan berdasarkan judul Inggris
                srlimit: 1,
                format: 'json',
                origin: '*'
            },
             dataType: 'json',
             dataType: 'json',
             success: function(translateRes) {
             success: function(wikiRes) {
                 var translatedTitle = pageName; // Fallback awal
                 var targetDataPage = pageName; // Fallback jika tidak ditemukan
                  
                  
                 try {
                 if (wikiRes && wikiRes.query && wikiRes.query.search && wikiRes.query.search.length > 0) {
                    if (translateRes && translateRes.responseData && translateRes.responseData.translatedText) {
                    // Ketemu judul bahasa Indonesianya secara otomatis dari sistem search internal
                        var rawText = translateRes.responseData.translatedText;
                    targetDataPage = wikiRes.query.search[0].title;
                       
                        // Bersihkan dari tanda baca atau karakter aneh hasil translasi jika ada
                        translatedTitle = rawText.replace(/[.\ sovereignty\?]/g, '').trim();
                    }
                } catch (e) {
                    translatedTitle = pageName;
                 }
                 }
               
                // Format spasi menjadi underscore untuk validasi nama halaman MediaWiki
                targetDataPage = targetDataPage.replace(/\s+/g, '_');


                 // Format ke format halaman MediaWiki (spasi jadi underscore, huruf pertama kapital)
                 // Langkah 2: Cek langsung ke Mippedia Data menggunakan nama halaman Indonesia hasil pelacakan
                var targetDataPage = translatedTitle.charAt(0).toUpperCase() + translatedTitle.slice(1).replace(/\s+/g, '_');
 
                // Cek apakah halaman hasil terjemahan tersebut ada di Mippedia Data
                 $.ajax({
                 $.ajax({
                     url: dataDomain + '/api.php',
                     url: dataDomain + '/api.php',
Line 46: Line 49:
                     dataType: 'jsonp',
                     dataType: 'jsonp',
                     success: function(res) {
                     success: function(res) {
                         var pages = res.query.pages;
                         if (res && res.query && res.query.pages) {
                        var isExist = false;
                            var pages = res.query.pages;
                       
                            var isExist = false;
                        for (var id in pages) {
                           
                            if (parseInt(id) > 0) {
                            for (var id in pages) {
                                isExist = true;
                                if (parseInt(id) > 0) {
                                break;
                                    isExist = true;
                                    break;
                                }
                             }
                             }
                        }


                        // Jika data ditemukan di pusat, munculkan tombolnya
                            // Jika data valid ditemukan di pusat, munculkan tombol melayang
                        if (isExist) {
                            if (isExist) {
                            injectFloatingDataBtn(targetDataPage, dataDomain);
                                injectFloatingDataBtn(targetDataPage, dataDomain);
                            }
                         }
                         }
                     }
                     }
Line 64: Line 69:
             },
             },
             error: function() {
             error: function() {
                 // Fallback otomatis: Jika API translasi down, langsung cek pake nama aslinya
                 // Jika server Wiki Indonesia down, langsung pakai nama asli Inggris-nya sebagai fallback akhir
                 var nativePage = pageName.replace(/\s+/g, '_');
                 var nativePage = pageName.replace(/\s+/g, '_');
                 $.ajax({
                 $.ajax({