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 ULTIMATE INTEGRATION v4
   🚀 MIPPEDIA OMNI-AUTO v5 (Mobile & Desktop Optimized)
   Fix: Smart Position, Data Button Restore, & Auto-Link Check
   Fix: Auto-Position, Data Button, & Social Media Whitelist
   ========================================================== */
   ========================================================== */
$(document).ready(function() {
$(document).ready(function() {
Baris 1.270: Baris 1.270:
     var namespace = mw.config.get('wgNamespaceNumber');
     var namespace = mw.config.get('wgNamespaceNumber');
     var dataDomain = 'https://data.mippedia.org';
     var dataDomain = 'https://data.mippedia.org';
    // 1. KEMBALIKAN TOMBOL "LIHAT DI MIPPEDIA DATA"
    if (namespace === 0 && !$('#mippedia-data-btn').length) {
        var dataUrl = dataDomain + '/wiki/' + pageName;
        var $btn = $('<div id="mippedia-data-btn" style="margin: 10px 0;">')
            .append($('<a>', {
                href: dataUrl,
                class: 'mw-ui-button mw-ui-progressive',
                style: 'background-color: #3366cc; color: white; padding: 8px 16px; border-radius: 4px; font-weight: bold; text-decoration: none; display: inline-block;',
                text: 'LIHAT DI MIPPEDIA DATA'
            }));
        $('.mw-indicators').after($btn);
    }


     if (namespace === 0) {
     if (namespace === 0) {
        // 1. CEK DATA KE PUSAT
         $.ajax({
         $.ajax({
             url: dataDomain + '/api.php',
             url: dataDomain + '/api.php',
Baris 1.295: Baris 1.283:


                     if ($infobox.length) {
                     if ($infobox.length) {
                         // FIX GAMBAR: Ambil nama file asli
                        // Jalankan fungsi suntik tombol data
                        injectMippediaDataBtn(pageName);
 
                         // FIX GAMBAR: Ambil dari jalur lokal wiki
                         $infobox.find('img, .image').each(function() {
                         $infobox.find('img, .image').each(function() {
                             var $imgObj = $(this).is('img') ? $(this) : $(this).find('img');
                             var $imgObj = $(this).is('img') ? $(this) : $(this).find('img');
Baris 1.305: Baris 1.296:
                         });
                         });


                         // WHITELIST URL & MEDSOS (GAK BOLEH DIUBAH)
                         // WHITELIST: Lindungi link medsos & URL luar
                         $infobox.find('a').each(function() {
                         $infobox.find('a').each(function() {
                             var href = $(this).attr('href') || '';
                             var href = $(this).attr('href') || '';
                             var text = $(this).text().trim();
                             var text = $(this).text().trim();
                            // Jika URL luar atau tombol medsos (IG, YT, TK, dll)
                             if (href.indexOf('http') === 0 || text.length <= 4) {
                             if (href.indexOf('http') === 0 || text.length <= 3) {
                                 $(this).addClass('is-safe-link');  
                                 $(this).addClass('is-safe-link');  
                             } else {
                             } else {
Baris 1.318: Baris 1.308:
                         });
                         });


                         // SMART POSITION: PINDAH KE BAWAH PARAGRAF PERTAMA
                         // 2. PENEMPATAN INFOBOX (KHUSUS MOBILE & DESKTOP)
                         var $parserOutput = $('#mw-content-text > .mw-parser-output');
                        // Gunakan interval singkat untuk memastikan elemen konten sudah siap
                        // Cari paragraf pertama yang bukan bagian dari template/notifikasi
                         var placementTimer = setInterval(function() {
                        var $firstP = $parserOutput.find('> p').filter(function() {
                            var $contentBody = $('#mw-content-text .mw-parser-output');
                            return $(this).text().trim().length > 10;
                            if ($contentBody.length) {
                        }).first();
                                var $firstP = $contentBody.find('> p').filter(function() {
                                    return $(this).text().trim().length > 15;
                                }).first();


                        if ($firstP.length) {
                                if ($firstP.length) {
                            $firstP.after($infobox); // Taruh infobox SETELAH paragraf pertama
                                    $firstP.after($infobox);
                        } else {
                                    clearInterval(placementTimer);
                            $parserOutput.prepend($infobox); // Fallback jika tidak ada paragraf
                                } else if ($contentBody.length) {
                         }
                                    $contentBody.prepend($infobox);
 
                                    clearInterval(placementTimer);
                         // JALANKAN PENGECEKAN LINK OTOMATIS (BIRU/MERAH)
                                }
                         checkInternalLinks($infobox);
                                // Jalankan cek link biru/merah
                                checkInternalLinks($infobox);
                            }
                         }, 500);
                       
                         // Stop timer setelah 5 detik jika gagal (mencegah loop)
                         setTimeout(function() { clearInterval(placementTimer); }, 5000);
                     }
                     }
                 }
                 }
Baris 1.339: Baris 1.337:
     }
     }


     // FUNGSI PENGECEKAN LINK (BIAR GAK MATI FITURNYA)
     function injectMippediaDataBtn(name) {
        if ($('#mippedia-data-btn').length === 0) {
            var dataUrl = dataDomain + '/wiki/' + encodeURIComponent(name);
            var $btn = $('<div id="mippedia-data-btn" style="margin: 12px 0;">')
                .append($('<a>', {
                    href: dataUrl,
                    target: '_blank',
                    style: 'background: #36c; color: #fff; padding: 8px 14px; border-radius: 6px; font-weight: bold; text-decoration: none; display: inline-block; font-size: 12px; box-shadow: 0 2px 5px rgba(0,0,0,0.2);',
                    text: 'LIHAT DI MIPPEDIA DATA'
                }));
 
            // Support untuk Mobile (Minerva) dan Desktop (Vector)
            var $header = $('.estimasi-baca-container, .minerva__subtitle, #siteSub, #contentSub').last();
            if ($header.length) {
                $header.after($btn);
            } else {
                $('#firstHeading').after($btn);
            }
        }
    }
 
     function checkInternalLinks($container) {
     function checkInternalLinks($container) {
         var titles = [];
         var titles = [];