MediaWiki:Common.js: Difference between revisions

No edit summary
Tags: Reverted Mobile edit Mobile web edit
No edit summary
Tags: Manual revert Mobile edit Mobile web edit
 
(6 intermediate revisions by the same user not shown)
Line 9: Line 9:
     var dataDomain = 'https://data.mippedia.org';
     var dataDomain = 'https://data.mippedia.org';
      
      
     // Alamat API Mippedia Bahasa Indonesia
     // Alamat API Mippedia Bahasa Indonesia (Sesuaikan URL domainnya jika berbeda)
     var indonesianWikiApi = 'https://id.mippedia.org/api.php';  
     var indonesianWikiApi = 'https://id.mippedia.org/api.php';  


Line 89: Line 89:
         if ($('#mippedia-data-btn').length) return;
         if ($('#mippedia-data-btn').length) return;


        // Otak Cerdas Baru: Panggil API MediaWiki lokal buat nyari link image SVG yang valid
         var $btn = $('<a>', {
         var api = new mw.Api();
             id: 'mippedia-data-btn',
        api.get({
             href: domain + '/wiki/' + encodeURIComponent(name),
             action: 'query',
             target: '_blank',
             titles: 'File:Locked_Data.svg',
             style: 'position: absolute; right: 10px; top: -32px; background: #36c; color: #fff; padding: 4px 10px; border-radius: 4px; font-weight: bold; font-size: 10px; text-decoration: none; z-index: 1000; box-shadow: 0 2px 4px rgba(0,0,0,0.1);',
             prop: 'imageinfo',
             text: 'DATA'
             iiprop: 'url',
        });
            iiurlwidth: 24, // Minta server MediaWiki render ukuran lebar 24px otomatis
            format: 'json'
        }).done(function(data) {
            var imageUrl = '';
            try {
                var pages = data.query.pages;
                for (var id in pages) {
                    if (pages[id].imageinfo && pages[id].imageinfo[0]) {
                        // Dapat URL render resmi berformat PNG/SVG yang didukung browser!
                        imageUrl = pages[id].imageinfo[0].thumburl || pages[id].imageinfo[0].url;
                    }
                }
             } catch (e) {
                imageUrl = '';
            }


            // Jika gagal dapet gambar, pakai fallback ikon dasar murni teks atau kosongan
        var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit, .minerva__tab-container').first();
            if (!imageUrl) return;
       
 
        if ($target.length) {
            var $btn = $('<a>', {
            $target.css('position', 'relative').append($btn);
                id: 'mippedia-data-btn',
        } else {
                href: domain + '/wiki/' + encodeURIComponent(name),
            $('#firstHeading').css('position', 'relative').append($btn);
                target: '_blank',
         }
                style: 'position: absolute; right: 15px; top: -5px; z-index: 1000; text-decoration: none; display: inline-block; transition: transform 0.2s;',
                html: $('<img>', {
                    src: imageUrl,
                    alt: 'Data Icon',
                    style: 'height: 24px; width: 24px; display: block; vertical-align: middle;'
                })
            });
 
            // Efek hover interaktif
            $btn.hover(
                function() { $(this).css('transform', 'scale(1.15)'); },
                function() { $(this).css('transform', 'scale(1.0)'); }
            );
 
            // Target penempatan tombol aksi di Minerva mobile / Desktop skin
            var $target = $('.page-actions-menu, .mw-editsection-visualeditor, #ca-edit, .minerva__tab-container').first();
           
            if ($target.length) {
                $target.css('position', 'relative').append($btn);
            } else {
                // Fallback aman agar tidak nabrak teks judul halaman utama
                $('#firstHeading').css('position', 'relative').append($btn);
                $btn.css('top', '5px');
            }
         });
     }
     }
});
});