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.246: Baris 1.246:


/* ==========================================================
/* ==========================================================
   🚀 MIPPEDIA DYNAMIC SHORTDESC BRIDGE (FIXED)
   🚀 MIPPEDIA AUTO-INJECTOR FOR SHORTDESCRIPTION EXTENSION
   Fungsi: Mengambil deskripsi spesifik per Judul & per Bahasa
   Fungsi: Otomatis menyuntikkan data ke fungsi {{SHORTDESC}}
   ========================================================== */
   ========================================================== */
(function($, mw) {
(function($, mw) {
     "use strict";
     "use strict";


     // 1. Filter: Hanya jalan di halaman artikel yang sedang dibaca (bukan saat edit)
     // Konfigurasi dasar
     var conf = mw.config.get([
     var conf = mw.config.get(['wgNamespaceNumber', 'wgAction', 'wgPageName', 'wgIsMainPage']);
        'wgNamespaceNumber',
        'wgAction',
        'wgPageName',
        'wgIsMainPage'
    ]);
 
     if (conf.wgNamespaceNumber !== 0 || conf.wgAction !== 'view' || conf.wgIsMainPage) return;
     if (conf.wgNamespaceNumber !== 0 || conf.wgAction !== 'view' || conf.wgIsMainPage) return;


     $(document).ready(function() {
     $(document).ready(function() {
         var host = window.location.hostname;
         var host = window.location.hostname;
         var currentTitle = conf.wgPageName; // Mengambil judul artikel aktif
         var currentTitle = conf.wgPageName;


         // 2. Deteksi Bahasa berdasarkan Subdomain
         // 1. Deteksi Bahasa (ID, EN, atau Concise)
         var langKey = 'id';
         var langKey = 'id';
         if (host.indexOf('en.') !== -1) langKey = 'en';
         if (host.indexOf('en.') !== -1) langKey = 'en';
         if (host.indexOf('concise.') !== -1) langKey = 'concise';
         if (host.indexOf('concise.') !== -1) langKey = 'concise';


         // 3. Ambil data dari JSON Pusat (Mippedia Data)
         // 2. 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.290: Baris 1.284:


                     var fullData = JSON.parse(pages[pageId].revisions[0]['*']);
                     var fullData = JSON.parse(pages[pageId].revisions[0]['*']);
                   
                    // 4. MENCARI DATA YANG COCOK DENGAN JUDUL ARTIKEL INI
                     var myData = fullData[currentTitle];
                     var myData = fullData[currentTitle];


Baris 1.297: Baris 1.289:
                         var finalDesc = myData[langKey];
                         var finalDesc = myData[langKey];


                         // Set metadata untuk Extension ShortDescription agar terbaca sistem
                         // --- BAGIAN INJEKSI OTOMATIS ---
                         if (mw.config.exists('wgShortDescription')) {
                       
                            mw.config.set('wgShortDescription', finalDesc);
                        // A. Suntikkan ke konfigurasi JavaScript MediaWiki (Client-side)
                        // Ini agar extension ShortDescription mengenali deskripsi ini
                        mw.config.set('wgShortDescription', finalDesc);
 
                        // B. Gunakan API MediaWiki untuk "menginfokan" sistem tentang deskripsi ini
                        // Ini memastikan sistem memperlakukan teks ini seolah berasal dari {{SHORTDESC:}}
                         if (mw.loader.getState('ext.shortDescription') !== null) {
                            $(document).trigger('shortdescription-update', [finalDesc]);
                         }
                         }


                         // Render visual di bawah judul (First Heading)
                         // C. Render visual agar sama persis dengan tampilan manual (seperti gambar Mippedia)
                        // Memastikan tidak duplikat jika script terpanggil dua kali
                         $('#mippedia-auto-shortdesc').remove();
                         $('#mippedia-dynamic-desc').remove();
                         $('.firstHeading').after(
                         $('.firstHeading').after(
                             $('<div id="mippedia-dynamic-desc">')
                             $('<div id="mippedia-auto-shortdesc" class="bcl-shortdesc">')
                                 .text(finalDesc)
                                 .text(finalDesc)
                                 .css({
                                 .css({
                                     'color': '#54595d',
                                     'color': '#54595d',
                                     'font-size': '0.92em',
                                     'font-size': '0.92em',
                                     'margin': '4px 0 15px 0',
                                     'margin': '2px 0 10px 0',
                                     'font-style': 'italic',
                                     'font-weight': 'normal'
                                    'border-bottom': '1px solid #eaecf0',
                                    'padding-bottom': '5px',
                                    'display': 'block'
                                 })
                                 })
                         );
                         );
                       
                        console.log("Mippedia: Metadata {{SHORTDESC}} injected for " + currentTitle);
                     }
                     }
                 } catch (e) {
                 } catch (e) {
                     console.error("Mippedia: Error matching title data.");
                     console.error("Mippedia: Injection failed.");
                 }
                 }
             }
             }