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.279: Baris 1.279:


                     if ($infobox.length) {
                     if ($infobox.length) {
                         // 1. TOMBOL DATA TANPA MERUSAK TAB (Position Absolute)
                         // 1. TOMBOL DATA MELAYANG (Gak ganggu Tab)
                         injectFloatingDataBtn(pageName);
                         injectFloatingDataBtn(pageName);


                         // 2. FIX GAMBAR (Ambil murni nama file)
                         // 2. FIX GAMBAR (UKURAN ASLI DARI DATA)
                         $infobox.find('img').each(function() {
                         $infobox.find('img').each(function() {
                             var rawAlt = $(this).attr('alt') || "";
                             var rawAlt = $(this).attr('alt') || "";
Baris 1.288: Baris 1.288:
                             if (fileMatch) {
                             if (fileMatch) {
                                 var pureName = fileMatch[0].replace(/Berkas:|File:/i, '').trim();
                                 var pureName = fileMatch[0].replace(/Berkas:|File:/i, '').trim();
                                 $(this).attr('src', '/thumb.php?f=' + encodeURIComponent(pureName) + '&w=350');
                                // Pakai URL asli tanpa paksa lebar 350px
                                 $(this).attr('src', '/thumb.php?f=' + encodeURIComponent(pureName) + '&w=500');  
                                 $(this).attr('srcset', '');
                                 $(this).attr('srcset', '');
                                $(this).css({'width': '100%', 'height': 'auto'}); // Biar pas di kotak infobox
                             }
                             }
                         });
                         });


                         // 3. FIX TEKS & LINK (Support Pipe, Kurung, & Case-Insensitive)
                         // 3. FIX LINK (BIAR GAK MERAH - JANGAN BUANG KURUNG)
                         $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 fullText = $(this).text().trim();
                             if (href.indexOf('http') !== 0 && text.length > 2) {
                              
                                // Ambil judul asli dari title kalau ada, kalau nggak pake text
                            // Ambil judul asli dari attribute title (ini yang paling akurat dari MediaWiki)
                                var target = $(this).attr('title') || text;
                            var realTarget = $(this).attr('title') || fullText;
                                 $(this).attr('data-real-title', target);
 
                                 // Bersihkan tampilan teks (buang tanda kurung tambahan)
                            if (href.indexOf('http') !== 0 && fullText.length > 2) {
                                $(this).text(text.replace(/\s*\(.*?\)\s*/g, '').trim());
                                 $(this).attr('data-real-title', realTarget);
                                 // Tampilan teks tetep apa adanya (biar pipe link [[A|B]] tetep muncul B)
                             } else {
                             } else {
                                 $(this).addClass('is-safe-link');
                                 $(this).addClass('is-safe-link');
Baris 1.308: Baris 1.311:
                         });
                         });


                         // 4. MASUKKAN KE CONTAINER TEMPLATE
                         // 4. MASUKKAN KE CONTAINER
                         $('#mip-loading').hide();
                         $('#mip-loading').hide();
                         $container.html($infobox);
                         $container.html($infobox);


                         // 5. JALANKAN CEK LINK BIRU/MERAH (WAJIB)
                         // 5. JALANKAN CEK LINK (CASE-INSENSITIVE)
                         checkLinksFinal($infobox);
                         checkLinksPerfect($infobox);
                     } else {
                     } else {
                         $('#mip-loading').text('Data tidak tersedia.');
                         $('#mip-loading').text('Data tidak tersedia.');
Baris 1.324: Baris 1.327:
     function injectFloatingDataBtn(name) {
     function injectFloatingDataBtn(name) {
         if ($('#mippedia-data-btn').length) return;
         if ($('#mippedia-data-btn').length) return;
        // Pake style melayang biar gak nendang tab navigasi
         var $btn = $('<a>', {
         var $btn = $('<a>', {
             id: 'mippedia-data-btn',
             id: 'mippedia-data-btn',
             href: dataDomain + '/wiki/' + encodeURIComponent(name),
             href: dataDomain + '/wiki/' + encodeURIComponent(name),
             target: '_blank',
             target: '_blank',
             style: 'position: absolute; right: 10px; top: -35px; background: #36c; color: #fff; padding: 3px 8px; border-radius: 4px; font-weight: bold; font-size: 10px; text-decoration: none; z-index: 100;',
             style: 'position: absolute; right: 10px; top: -30px; background: #36c; color: #fff; padding: 4px 10px; border-radius: 4px; font-weight: bold; font-size: 10px; text-decoration: none; z-index: 1000;',
             text: 'DATA'
             text: 'DATA'
         });
         });
        // Tempel di area aksi halaman (dekat pensil)
         var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit');
         var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit');
         if ($target.length) {
         if ($target.length) {
Baris 1.340: Baris 1.340:
     }
     }


     function checkLinksFinal($container) {
     function checkLinksPerfect($container) {
         var titles = [];
         var titles = [];
         $container.find('a:not(.is-safe-link)').each(function() {
         $container.find('a:not(.is-safe-link)').each(function() {
Baris 1.354: Baris 1.354:
             success: function(res) {
             success: function(res) {
                 var pages = res.query.pages;
                 var pages = res.query.pages;
                 var map = {};
                 var existMap = {};
                 // Mapping judul yang ada di wiki lokal (Lowercase)
                 // Mapping judul yang beneran ada di wiki lokal (Lowercase)
                 for (var id in pages) {
                 for (var id in pages) {
                     if (parseInt(id) > 0) map[pages[id].title.toLowerCase()] = pages[id].title;
                     if (parseInt(id) > 0) existMap[pages[id].title.toLowerCase()] = pages[id].title;
                 }
                 }


Baris 1.363: Baris 1.363:
                     var myTitle = $(this).attr('data-real-title');
                     var myTitle = $(this).attr('data-real-title');
                     var lower = myTitle.toLowerCase();
                     var lower = myTitle.toLowerCase();
                     if (map[lower]) {
                   
                         // JADI BIRU (Case-Insensitive OK)
                     if (existMap[lower]) {
                         $(this).removeClass('new').attr('href', mw.util.getUrl(map[lower]));
                         // KETEMU: Jadi Biru (Pakai judul resmi dari database)
                         $(this).removeClass('new').attr('href', mw.util.getUrl(existMap[lower]));
                     } else {
                     } else {
                         // TETEP MERAH
                         // GAK KETEMU: Tetep Merah
                         $(this).addClass('new').attr('href', mw.util.getUrl(myTitle, { action: 'edit', redlink: '1' }));
                         $(this).addClass('new').attr('href', mw.util.getUrl(myTitle, { action: 'edit', redlink: '1' }));
                     }
                     }