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.309: Baris 1.309:
});
});


/* * Skrip Global Virtual File Repo Mippedia
/* * Skrip Penarik Infobox Otomatis Mippedia (Versi Ringan)
  * Fungsi: Secara otomatis mendeteksi link berkas yang rusak/merah dan
  * Fungsi: Hanya menarik tabel infobox dari Mippedia Data dan menghapus deskripsi.
* menarik gambarnya langsung dari Mippedia Data (Pusat).
  */
  */
$(document).ready(function() {
$(document).ready(function() {
     var dataDomain = 'https://data.mippedia.org'; // Domain pusat data lo
     var pageName = mw.config.get('wgPageName');
     var apiPath = dataDomain + '/api.php';
     var container = $('#mip-infobox-container');
    var dataDomain = 'https://data.mippedia.org';


     function fetchRemoteFiles() {
     if (container.length) {
        // Cari semua link merah yang mengarah ke Berkas/File
         $.ajax({
         $('a.new').each(function() {
            url: dataDomain + '/api.php',
            var $link = $(this);
            data: {
            var title = $link.attr('title');
                action: 'parse',
                page: pageName,
                prop: 'text',
                format: 'json',
                origin: '*'
            },
            dataType: 'jsonp',
            success: function(data) {
                if (data.parse && data.parse.text) {
                    var html = data.parse.text['*'];
                    var $html = $(html);
                   
                    // Ambil tabel infobox
                    var infobox = $html.find('table.infobox');


            if (title && (title.startsWith('Berkas:') || title.startsWith('File:'))) {
                    if (infobox.length) {
                var fileName = title.split(':').pop();
                        // Hapus bagian deskripsi agar tidak double di artikel
               
                        infobox.find('#mip-desc-section').remove();  
                // Ambil data info file dari API pusat
                       
                $.ajax({
                        // Bersihkan baris kosong bekas hapusan div
                    url: apiPath,
                        infobox.find('tr').filter(function() {
                    data: {
                            return $(this).text().trim() === '' && $(this).find('img').length === 0;
                        action: 'query',
                        }).remove();
                        titles: title,
                        prop: 'imageinfo',
                        iiprop: 'url',
                        format: 'json',
                        origin: '*'
                    },
                    dataType: 'jsonp',
                    success: function(res) {
                        var pages = res.query.pages;
                        for (var p in pages) {
                            if (pages[p].imageinfo) {
                                var remoteUrl = pages[p].imageinfo[0].url;
                               
                                // Ganti teks merah jadi gambar beneran
                                var $newImg = $('<img>').attr({
                                    'src': remoteUrl,
                                    'width': '220', // Default thumbnail
                                    'style': 'cursor: pointer; border: 1px solid #ccc;'
                                });


                                // Bungkus dengan link ke pusat data
                        // Tampilkan infobox
                                var $newLink = $('<a>').attr({
                        $('#mip-loading').hide();
                                    'href': dataDomain + '/wiki/' + encodeURIComponent(title),
                        container.html(infobox);
                                    'target': '_blank',
                    } else {
                                    'class': 'no-viewer'
                        container.html('<div style="color:#d33; font-weight:bold;">Data tidak ditemukan di Mippedia Data.</div>');
                                }).append($newImg);
 
                                $link.replaceWith($newLink);
                            }
                        }
                     }
                     }
                 });
                 }
            },
            error: function() {
                container.html('<div style="color:#d33; font-weight:bold;">Gagal terhubung ke pusat data.</div>');
             }
             }
         });
         });
     }
     }
    // Jalankan fungsi saat halaman load
    fetchRemoteFiles();
    // Jalankan ulang jika ada konten baru (seperti dari AJAX Infobox)
    mw.hook('wikipage.content').add(function() {
        fetchRemoteFiles();
    });
});
});