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.245: Baris 1.245:
});
});


/* Mippedia Branch: Automatic & Hidden ShortDesc Injector */
/* ==========================================================
$(document).ready(function() {
  🚀 MIPPEDIA DYNAMIC SHORTDESC BRIDGE (FIXED)
     var ns = mw.config.get('wgNamespaceNumber');
  Fungsi: Mengambil deskripsi spesifik per Judul & per Bahasa
    if (ns === 0 && !mw.config.get('wgIsMainPage')) {
  ========================================================== */
       
(function($, mw) {
        var pageTitle = mw.config.get('wgPageName');
     "use strict";
        var myDomain = window.location.hostname.split('.')[0]; // 'id', 'en', atau 'concise'


         // CEK KE PUSAT DATA
    // 1. Filter: Hanya jalan di halaman artikel yang sedang dibaca (bukan saat edit)
    var conf = mw.config.get([
        'wgNamespaceNumber',
        'wgAction',
        'wgPageName',
        'wgIsMainPage'
    ]);
 
    if (conf.wgNamespaceNumber !== 0 || conf.wgAction !== 'view' || conf.wgIsMainPage) return;
 
    $(document).ready(function() {
        var host = window.location.hostname;
        var currentTitle = conf.wgPageName; // Mengambil judul artikel aktif
 
        // 2. Deteksi Bahasa berdasarkan Subdomain
        var langKey = 'id';
        if (host.indexOf('en.') !== -1) langKey = 'en';
        if (host.indexOf('concise.') !== -1) langKey = 'concise';
 
         // 3. Ambil data dari JSON Pusat (Mippedia Data)
         $.ajax({
         $.ajax({
             url: 'https://data.mippedia.org/api.php',
             url: 'https://data.mippedia.org/api.php',
Baris 1.259: Baris 1.277:
                 action: 'query',
                 action: 'query',
                 prop: 'revisions',
                 prop: 'revisions',
                 titles: pageTitle,
                 titles: 'MediaWiki:ShortDesc-Data.json',
                 rvprop: 'content',
                 rvprop: 'content',
                 format: 'json',
                 format: 'json',
                 origin: '*'
                 origin: '*'
             },
             },
             success: function(response) {
            dataType: 'jsonp',
                 var pages = response.query.pages;
             success: function(res) {
                for (var p in pages) {
                 try {
                     var content = pages[p].revisions[0]['*'];
                    var pages = res.query.pages;
                    var pageId = Object.keys(pages)[0];
                    if (pageId === "-1") return;
 
                     var fullData = JSON.parse(pages[pageId].revisions[0]['*']);
                      
                      
                     // Logic Canggih: Cari baris yang sesuai hak domainnya
                     // 4. MENCARI DATA YANG COCOK DENGAN JUDUL ARTIKEL INI
                    var regex = new RegExp(myDomain.toUpperCase() + "_DESC=(.*)");
                     var myData = fullData[currentTitle];
                     var match = content.match(regex);


                     if (match && match[1].trim() !== "") {
                     if (myData && myData[langKey]) {
                         var finalDesc = match[1].trim();
                         var finalDesc = myData[langKey];
                       
 
                        // SUNTIKKAN SEBAGAI SHORTDESC (Di balik layar/Virtual)
                         // Set metadata untuk Extension ShortDescription agar terbaca sistem
                        // Ini tidak akan muncul di editor "Sunting Sumber"
                         if (mw.config.exists('wgShortDescription')) {
                         // tapi muncul secara visual di bawah judul (Virtual Injection)
                            mw.config.set('wgShortDescription', finalDesc);
                         if (!$('.mippedia-visual-desc').length) {
                            $('#firstHeading').after('<div class="mippedia-visual-desc" style="font-size: 0.9em; font-style: italic; color: #54595d; margin-top: -5px; margin-bottom: 12px; border-bottom: 1px solid #a2a9b1; padding-bottom: 5px;">' + finalDesc + '</div>');
                         }
                         }
                          
 
                         // Secara teknis mendaftarkan ke sistem MediaWiki sebagai metadata
                         // Render visual di bawah judul (First Heading)
                         mw.config.set('wgMippediaShortDesc', finalDesc);
                         // Memastikan tidak duplikat jika script terpanggil dua kali
                         $('#mippedia-dynamic-desc').remove();
                        $('.firstHeading').after(
                            $('<div id="mippedia-dynamic-desc">')
                                .text(finalDesc)
                                .css({
                                    'color': '#54595d',
                                    'font-size': '0.92em',
                                    'margin': '4px 0 15px 0',
                                    'font-style': 'italic',
                                    'border-bottom': '1px solid #eaecf0',
                                    'padding-bottom': '5px',
                                    'display': 'block'
                                })
                        );
                     }
                     }
                } catch (e) {
                    console.error("Mippedia: Error matching title data.");
                 }
                 }
             }
             }
         });
         });
     }
     });
});
})(jQuery, mediaWiki);