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.263: Baris 1.263:


/* ==========================================================
/* ==========================================================
   🚀 MIPPEDIA SUPER AUTO-INTEGRATION
   🚀 MIPPEDIA ULTIMATE INTEGRATION v3
   Fix: Image URL, Position After P1, & Smart Clean Links
   Fix: Image, Position, & Social Media Links Whitelist
   ========================================================== */
   ========================================================== */
$(document).ready(function() {
$(document).ready(function() {
Baris 1.282: Baris 1.282:


                     if ($infobox.length) {
                     if ($infobox.length) {
                         // 1. INJECT TOMBOL DATA (Otomatis di Header)
                         // 1. FIX GAMBAR: Ambil Nama Berkas & Tampilkan Beneran
                        injectMippediaDataBtn(pageName);
                         $infobox.find('img, .image').each(function() {
 
                             var $imgObj = $(this).is('img') ? $(this) : $(this).find('img');
                        // 2. FIX GAMBAR (Arahkan ke Berkas Lokal)
                            var fileName = $imgObj.attr('alt') || $imgObj.data('file-name');
                         $infobox.find('img').each(function() {
                           
                             var fileName = $(this).attr('alt');  
                             if (fileName) {
                             if (fileName) {
                                // Pakai jalur internal agar tidak galat lagi
                                 var localImgUrl = mw.util.getUrl('Berkas:' + fileName);
                                 var localImgUrl = mw.util.getUrl('Berkas:' + fileName);
                                 $(this).attr('src', '/w/thumb.php?f=' + encodeURIComponent(fileName) + '&w=300');
                                // Gunakan thumb.php lokal untuk render gambar
                                 $(this).attr('src', '/thumb.php?f=' + encodeURIComponent(fileName) + '&w=400');
                                 $(this).attr('srcset', '');  
                                 $(this).attr('srcset', '');  
                                 $(this).wrap('<a href="' + localImgUrl + '"></a>');
                                 $(this).wrap('<a href="' + localImgUrl + '" class="image"></a>');
                             }
                             }
                         });
                         });


                         // 3. FIX LINK (Hapus sampah teks agar tidak Merah/Salah Judul)
                         // 2. WHITELIST LINK: Jangan ganggu URL Luar & Tombol Medsos
                         $infobox.find('a').each(function() {
                         $infobox.find('a').each(function() {
                             var rawTitle = $(this).attr('title') || $(this).text();
                             var href = $(this).attr('href') || '';
                             // Hapus semua teks di dalam kurung dan spasi berlebih
                            var text = $(this).text().trim();
                             var cleanTitle = rawTitle.replace(/\s*\(.*?\)\s*/g, '').trim();
 
                           
                            // Jika link ke luar (http/https) atau tombol medsos (singkatan 2-3 huruf)
                            $(this).attr('title', cleanTitle);
                             if (href.indexOf('http') === 0 || text.length <= 3) {
                            $(this).text(cleanTitle);
                                $(this).addClass('external-link-safe'); // Tandai agar tidak diubah
                             $(this).addClass('new'); // Set merah sementara
                             } else {
                                // Hanya bersihkan link internal yang berantakan
                                var cleanTitle = text.replace(/\s*\(.*?\)\s*/g, '').trim();
                                $(this).attr('title', cleanTitle);
                                $(this).text(cleanTitle);
                             }
                         });
                         });


                         // 4. PENEMPATAN: SETELAH PARAGRAF PERTAMA
                         // 3. POSISI: WAJIB DI BAWAH PARAGRAF PERTAMA
                         // Kita cari paragraf yang bukan bagian dari koordinat atau pesan sistem
                         // Cari paragraf pertama yang punya teks cukup panjang
                         var $targetP = $('#mw-content-text > .mw-parser-output > p').filter(function() {
                         var $parserOutput = $('#mw-content-text > .mw-parser-output');
                             return $(this).text().trim().length > 10;
                        var $firstP = $parserOutput.find('> p').filter(function() {
                             return $(this).text().trim().length > 20;
                         }).first();
                         }).first();


                         if ($targetP.length) {
                         if ($firstP.length) {
                             $targetP.after($infobox);
                             $firstP.after($infobox);
                         } else {
                         } else {
                             $('#mw-content-text').prepend($infobox);
                             $parserOutput.prepend($infobox);
                         }
                         }


                         // 5. CEK STATUS LINK (Ubah Merah ke Biru jika ada artikelnya)
                         // 4. CEK WARNA LINK (Biru/Merah)
                         checkAndColorLinks($infobox);
                         checkInternalLinks($infobox);
                     }
                     }
                 }
                 }
Baris 1.328: Baris 1.333:
     }
     }


     function injectMippediaDataBtn(name) {
     function checkInternalLinks($container) {
        if ($('#mippedia-data-btn').length === 0) {
            var fullUrl = dataDomain + '/wiki/' + encodeURIComponent(name);
            var $btn = $(`
                <div id="mippedia-data-btn" style="margin: 10px 0; display: inline-block;">
                    <a href="${fullUrl}" target="_blank" style="text-decoration: none !important;">
                        <div style="display: flex; align-items: center; background: #36c; color: #fff; padding: 6px 12px; border-radius: 8px; font-family: sans-serif; box-shadow: 0 4px 10px rgba(54,102,204,0.25);">
                            <span style="font-size: 11px; font-weight: 800; letter-spacing: 0.5px; text-transform: uppercase;">Lihat di Mippedia Data</span>
                        </div>
                    </a>
                </div>
            `);
 
            var $header = $('.estimasi-baca-container, .minerva__subtitle, .tagline').last();
            if ($header.length) { $header.after($btn); }
            else { $('#firstHeading').after($btn); }
        }
    }
 
    function checkAndColorLinks($container) {
         var titles = [];
         var titles = [];
         $container.find('a').each(function() {
         $container.find('a:not(.external-link-safe)').each(function() {
             var t = $(this).attr('title');
             var t = $(this).attr('title');
             if (t) titles.push(t);
             if (t) titles.push(t);
Baris 1.366: Baris 1.352:
                 }
                 }


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