MediaWiki:Common.js: Difference between revisions
Appearance
Created page with "→========================================================== 🚀 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..." Tags: Mobile edit Mobile web edit  |
No edit summary Tags: Manual revert Mobile edit Mobile web edit  |
||
| (12 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 |   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) { | ||
     // |     | ||
     // Langkah 1: Tembak API Mippedia Indonesia untuk mencari padanan halaman paling relevan | |||
 | |||
     $.ajax({ |      $.ajax({ | ||
       url: |        url: indonesianWikiApi, | ||
       |        data: { | ||
        action: 'query', | |||
        list: 'search', | |||
        srsearch: pageName, // Mencari padanan berdasarkan judul Inggris | |||
        srlimit: 1, | |||
        format: 'json', | |||
        origin: '*' | |||
      }, | |||
       dataType: 'json', |        dataType: 'json', | ||
       success: function( |        success: function(wikiRes) { | ||
         var |          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({ |          $.ajax({ | ||
           url: dataDomain + '/api.php', |            url: dataDomain + '/api.php', | ||
| Line 44: | 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 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); | |||
              } | |||
             } |              } | ||
           } |            } | ||
| Line 63: | Line 69: | ||
       }, |        }, | ||
       error: function() { |        error: function() { | ||
         // Jika server |          // Jika server Wiki Indonesia down, langsung pakai nama asli Inggris-nya sebagai fallback akhir | ||
        var nativePage = pageName.replace(/\s+/g, '_'); | |||
         $.ajax({ |          $.ajax({ | ||
           url: dataDomain + '/api.php', |            url: dataDomain + '/api.php', | ||
           data: { action: 'query', titles: |            data: { action: 'query', titles: nativePage, format: 'json', origin: '*' }, | ||
           dataType: 'jsonp', |            dataType: 'jsonp', | ||
           success: function(res) { |            success: function(res) { | ||
| Line 72: | Line 79: | ||
             var isExist = false; |              var isExist = false; | ||
             for (var id in pages) { if (parseInt(id) > 0) { isExist = true; break; } } |              for (var id in pages) { if (parseInt(id) > 0) { isExist = true; break; } } | ||
             if (isExist) { injectFloatingDataBtn( |              if (isExist) { injectFloatingDataBtn(nativePage, dataDomain); } | ||
           } |            } | ||
         }); |          }); | ||
| Line 90: | Line 97: | ||
     }); |      }); | ||
     var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit, .minerva__tab-container').first(); |      var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit, .minerva__tab-container').first(); | ||
      |       | ||
| Line 97: | Line 102: | ||
       $target.css('position', 'relative').append($btn); |        $target.css('position', 'relative').append($btn); | ||
     } else { |      } else { | ||
       $('#firstHeading').css('position', 'relative').append($btn); |        $('#firstHeading').css('position', 'relative').append($btn); | ||
     } |      } | ||
   } |    } | ||
}); | }); | ||
Latest revision as of 18:04, 29 May 2026
/* ==========================================================
🚀 MIPPEDIA DATA BUTTON ONLY (Otomatis - English Bridge Version)
Hanya memunculkan tombol jika data tersedia di pusat.
Mendukung pencarian otomatis ke Mippedia ID secara mandiri tanpa interwiki manual.
========================================================== */
$(document).ready(function() {
var pageName = mw.config.get('wgPageName').replace(/_/g, ' ');
var namespace = mw.config.get('wgNamespaceNumber');
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
if (namespace === 0) {
// Langkah 1: Tembak API Mippedia Indonesia untuk mencari padanan halaman paling relevan
$.ajax({
url: indonesianWikiApi,
data: {
action: 'query',
list: 'search',
srsearch: pageName, // Mencari padanan berdasarkan judul Inggris
srlimit: 1,
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);
}
}
}
});
},
error: function() {
// 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); }
}
});
}
});
}
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'
});
var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit, .minerva__tab-container').first();
if ($target.length) {
$target.css('position', 'relative').append($btn);
} else {
$('#firstHeading').css('position', 'relative').append($btn);
}
}
});