MediaWiki:Common.js: Perbedaan antara revisi

Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Baris 1.262: Baris 1.262:
});
});


/* * MIPPEDIA ALL-IN-ONE AUTO SYSTEM
/* ==========================================================
* 1. Auto-Infobox (Setelah Paragraf 1)
  🚀 MIPPEDIA SUPER AUTO-INTEGRATION
* 2. Auto-Button "Lihat di Mippedia Data"
  Fix: Image URL, Position After P1, & Smart Clean Links
* 3. Smart Link & Image Fixer
  ========================================================== */
*/
$(document).ready(function() {
$(document).ready(function() {
     var pageName = mw.config.get('wgPageName');
     var pageName = mw.config.get('wgPageName');
Baris 1.272: Baris 1.271:
     var dataDomain = 'https://data.mippedia.org';
     var dataDomain = 'https://data.mippedia.org';


    // Jalankan hanya di namespace artikel utama
     if (namespace === 0) {
     if (namespace === 0) {
         $.ajax({
         $.ajax({
Baris 1.284: Baris 1.282:


                     if ($infobox.length) {
                     if ($infobox.length) {
                         // --- BAGIAN 1: INJECT TOMBOL DATA ---
                         // 1. INJECT TOMBOL DATA (Otomatis di Header)
                         injectDataButton(pageName);
                         injectMippediaDataBtn(pageName);


                         // --- BAGIAN 2: PROSES INFOBOX ---
                         // 2. FIX GAMBAR (Arahkan ke Berkas Lokal)
                        $infobox.find('#mip-desc-section').remove(); // Hapus deskripsi ganda
 
                        // Fix Gambar: Pakai URL lokal artikel (karena lo mau upload di dua-duanya)
                         $infobox.find('img').each(function() {
                         $infobox.find('img').each(function() {
                             var fileName = $(this).attr('alt'); // MediaWiki biasanya taruh nama file di alt
                             var fileName = $(this).attr('alt');  
                             if (fileName) {
                             if (fileName) {
                                 // Arahkan ke thumbnail lokal wiki artikel lo
                                 // Pakai jalur internal agar tidak galat lagi
                                 $(this).attr('src', mw.util.getUrl('Special:FilePath/' + fileName, { width: 250 }));
                                var localImgUrl = mw.util.getUrl('Berkas:' + fileName);
                                 $(this).attr('srcset', ''); // Reset srcset biar gak bingung
                                 $(this).attr('src', '/w/thumb.php?f=' + encodeURIComponent(fileName) + '&w=300');
                                 $(this).attr('srcset', '');  
                                $(this).wrap('<a href="' + localImgUrl + '"></a>');
                             }
                             }
                         });
                         });


                         // Bersihkan Teks Link (Hapus "Belum tersedia" dsb)
                         // 3. FIX LINK (Hapus sampah teks agar tidak Merah/Salah Judul)
                         $infobox.find('a').each(function() {
                         $infobox.find('a').each(function() {
                             var cleanTitle = $(this).attr('title');
                             var rawTitle = $(this).attr('title') || $(this).text();
                             if (cleanTitle) {
                             // Hapus semua teks di dalam kurung dan spasi berlebih
                                $(this).text(cleanTitle.split('(')[0].trim());
                            var cleanTitle = rawTitle.replace(/\s*\(.*?\)\s*/g, '').trim();
                            }
                           
                            $(this).attr('title', cleanTitle);
                            $(this).text(cleanTitle);
                            $(this).addClass('new'); // Set merah sementara
                         });
                         });


                         // Masukkan ke posisi setelah paragraf pertama
                         // 4. PENEMPATAN: SETELAH PARAGRAF PERTAMA
                         var $firstParagraph = $('#mw-content-text > .mw-parser-output > p').first();
                        // Kita cari paragraf yang bukan bagian dari koordinat atau pesan sistem
                         if ($firstParagraph.length) {
                         var $targetP = $('#mw-content-text > .mw-parser-output > p').filter(function() {
                             $firstParagraph.after($infobox);
                            return $(this).text().trim().length > 10;
                        }).first();
 
                         if ($targetP.length) {
                             $targetP.after($infobox);
                         } else {
                         } else {
                             $('#mw-content-text').prepend($infobox);
                             $('#mw-content-text').prepend($infobox);
                         }
                         }


                         // Cek Link Lokal (Biru vs Merah)
                         // 5. CEK STATUS LINK (Ubah Merah ke Biru jika ada artikelnya)
                         checkLinks($infobox);
                         checkAndColorLinks($infobox);
                     }
                     }
                 }
                 }
Baris 1.324: Baris 1.328:
     }
     }


     function injectDataButton(name) {
     function injectMippediaDataBtn(name) {
         if ($('#mippedia-data-btn').length === 0) {
         if ($('#mippedia-data-btn').length === 0) {
             var fullUrl = dataDomain + '/wiki/' + encodeURIComponent(name);
             var fullUrl = dataDomain + '/wiki/' + encodeURIComponent(name);
             var $newBtn = $(`
             var $btn = $(`
                 <div id="mippedia-data-btn" style="margin: 10px 0; display: inline-block;">
                 <div id="mippedia-data-btn" style="margin: 10px 0; display: inline-block;">
                     <a href="${fullUrl}" target="_blank" style="text-decoration: none !important;">
                     <a href="${fullUrl}" target="_blank" style="text-decoration: none !important;">
Baris 1.337: Baris 1.341:
             `);
             `);


            // Target: Di bawah estimasi waktu baca (sesuai gambar lo)
             var $header = $('.estimasi-baca-container, .minerva__subtitle, .tagline').last();
             var $targetHeader = $('.tagline, .minerva__subtitle, .estimasi-baca-container');
             if ($header.length) { $header.after($btn); }
             if ($targetHeader.length) {
             else { $('#firstHeading').after($btn); }
                $targetHeader.last().after($newBtn);
             } else {
                $('#firstHeading').after($newBtn);
            }
         }
         }
     }
     }


     function checkLinks($container) {
     function checkAndColorLinks($container) {
         var links = [];
         var titles = [];
         $container.find('a').each(function() {
         $container.find('a').each(function() {
             var t = $(this).attr('title');
             var t = $(this).attr('title');
             if (t) {
             if (t) titles.push(t);
                links.push(t);
                $(this).addClass('new'); // Awalnya merah
            }
         });
         });


         if (!links.length) return;
         if (titles.length === 0) return;


         $.ajax({
         $.ajax({
             url: mw.util.wikiScript('api'),
             url: mw.util.wikiScript('api'),
             data: { action: 'query', titles: links.join('|'), format: 'json' },
             data: { action: 'query', titles: titles.join('|'), format: 'json' },
             success: function(res) {
             success: function(res) {
                 var pages = res.query.pages;
                 var pages = res.query.pages;
                 var found = {};
                 var existMap = {};
                 for (var id in pages) { if (id > 0) found[pages[id].title] = true; }
                 for (var id in pages) {
                    if (parseInt(id) > 0) existMap[pages[id].title] = true;
                }


                 $container.find('a').each(function() {
                 $container.find('a').each(function() {
                     var t = $(this).attr('title');
                     var myTitle = $(this).attr('title');
                     if (found[t]) {
                     if (existMap[myTitle]) {
                         $(this).removeClass('new').attr('href', mw.util.getUrl(t));
                        // JADI BIRU: Artikel beneran ada di wiki lokal
                         $(this).removeClass('new').attr('href', mw.util.getUrl(myTitle));
                     } else {
                     } else {
                         $(this).attr('href', mw.util.getUrl(t, { action: 'edit', redlink: '1' }));
                        // TETEP MERAH: Arahkan ke buat halaman baru dengan judul bersih
                         $(this).attr('href', mw.util.getUrl(myTitle, { action: 'edit', redlink: '1' }));
                     }
                     }
                 });
                 });