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 KECIL DI ATAS PENSIL (Gak ganggu Tab)
                         // 1. TOMBOL DATA TANPA MERUSAK TAB (Position Absolute)
                         injectSmallDataBtn(pageName);
                         injectFloatingDataBtn(pageName);


                         // 2. FIX GAMBAR (Pisahin Nama File dari Deskripsi)
                         // 2. FIX GAMBAR (Ambil murni nama file)
                         $infobox.find('img').each(function() {
                         $infobox.find('img').each(function() {
                             var rawAlt = $(this).attr('alt') || "";
                             var rawAlt = $(this).attr('alt') || "";
Baris 1.293: Baris 1.293:
                         });
                         });


                         // 3. FIX LINK (Support [[A|B]] & Bracket)
                         // 3. FIX TEKS & LINK (Support Pipe, Kurung, & Case-Insensitive)
                         $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();
                             if (href.indexOf('http') !== 0 && text.length > 2) {
                             if (href.indexOf('http') !== 0 && text.length > 2) {
                                // Ambil judul asli dari title kalau ada, kalau nggak pake text
                                 var target = $(this).attr('title') || text;
                                 var target = $(this).attr('title') || text;
                                 $(this).attr('data-real-title', target);
                                 $(this).attr('data-real-title', target);
                                 // Hanya tampilkan teks setelah pipe jika ada
                                 // Bersihkan tampilan teks (buang tanda kurung tambahan)
                                 $(this).text(text.replace(/\s*\(.*?\)\s*/g, '').trim());
                                 $(this).text(text.replace(/\s*\(.*?\)\s*/g, '').trim());
                             } else {
                             } else {
Baris 1.307: Baris 1.308:
                         });
                         });


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


                         // 5. CEK STATUS LINK (Case-Insensitive)
                         // 5. JALANKAN CEK LINK BIRU/MERAH (WAJIB)
                         checkLinksFinal($infobox);
                         checkLinksFinal($infobox);
                     } else {
                     } else {
Baris 1.317: Baris 1.318:
                     }
                     }
                 }
                 }
             },
             }
            error: function() { $('#mip-loading').text('Gagal memuat data.'); }
         });
         });
     }
     }


     function injectSmallDataBtn(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: 'display: block; background: #36c; color: #fff; padding: 4px 8px; border-radius: 4px; font-weight: bold; text-align: center; font-size: 10px; margin-bottom: 5px; text-decoration: none; width: fit-content; margin-left: auto;',
             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;',
             text: 'DATA'
             text: 'DATA'
         });
         });
         // Taruh tepat di atas menu aksi (ikon pensil)
 
         // 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) $target.first().before($btn);
         if ($target.length) {
            $target.first().css('position', 'relative').append($btn);
        }
     }
     }


Baris 1.342: Baris 1.346:
             if (t) titles.push(t);
             if (t) titles.push(t);
         });
         });
         if (!titles.length) return;
         if (!titles.length) return;
         $.ajax({
         $.ajax({
             url: mw.util.wikiScript('api'),
             url: mw.util.wikiScript('api'),
Baris 1.349: Baris 1.355:
                 var pages = res.query.pages;
                 var pages = res.query.pages;
                 var map = {};
                 var map = {};
                 for (var id in pages) { if (id > 0) map[pages[id].title.toLowerCase()] = pages[id].title; }
                // Mapping judul yang ada di wiki lokal (Lowercase)
                 for (var id in pages) {
                    if (parseInt(id) > 0) map[pages[id].title.toLowerCase()] = pages[id].title;
                }
 
                 $container.find('a:not(.is-safe-link)').each(function() {
                 $container.find('a:not(.is-safe-link)').each(function() {
                     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]) {
                     if (map[lower]) {
                        // JADI BIRU (Case-Insensitive OK)
                         $(this).removeClass('new').attr('href', mw.util.getUrl(map[lower]));
                         $(this).removeClass('new').attr('href', mw.util.getUrl(map[lower]));
                     } else {
                     } else {
                        // 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' }));
                     }
                     }