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 AUTO-INJECTOR FOR SHORTDESCRIPTION EXTENSION
   🚀 MIPPEDIA DATA BRIDGE: OFFICIAL EXTENSION INJECTOR
   Fungsi: Otomatis menyuntikkan data ke fungsi {{SHORTDESC}}
   Fungsi: Menyuntikkan kode {{SHORTDESC:}} secara permanen
  ke database artikel agar muncul di hasil pencarian.
   ========================================================== */
   ========================================================== */
(function($, mw) {
(function($, mw) {
     "use strict";
     "use strict";


     // Konfigurasi dasar
     // Hanya jalankan di artikel asli (Namespace 0) saat dilihat oleh user
     var conf = mw.config.get(['wgNamespaceNumber', 'wgAction', 'wgPageName', 'wgIsMainPage']);
     var conf = mw.config.get(['wgNamespaceNumber', 'wgAction', 'wgPageName', 'wgIsMainPage', 'wgArticleId']);
     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 currentTitle = conf.wgPageName;
         var host = window.location.hostname;
         var host = window.location.hostname;
        var currentTitle = conf.wgPageName;


         // 1. Deteksi Bahasa (ID, EN, atau Concise)
         // 1. Tentukan bahasa berdasarkan subdomain
         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';


         // 2. Ambil data dari JSON Pusat (Mippedia Data)
         // 2. Ambil data dari Pusat (Mippedia Data)
         $.ajax({
         $.ajax({
             url: 'https://data.mippedia.org/api.php',
             url: 'https://data.mippedia.org/api.php',
             data: {
             data: { action: 'query', prop: 'revisions', titles: 'MediaWiki:ShortDesc-Data.json', rvprop: 'content', format: 'json', origin: '*' },
                action: 'query',
                prop: 'revisions',
                titles: 'MediaWiki:ShortDesc-Data.json',
                rvprop: 'content',
                format: 'json',
                origin: '*'
            },
             dataType: 'jsonp',
             dataType: 'jsonp',
             success: function(res) {
             success: function(res) {
Baris 1.287: Baris 1.281:


                     if (myData && myData[langKey]) {
                     if (myData && myData[langKey]) {
                         var finalDesc = myData[langKey];
                         var targetDesc = myData[langKey];
                        checkAndInject(currentTitle, targetDesc);
                    }
                } catch (e) { console.log("Mippedia: JSON Sync Error."); }
            }
        });


                        // --- BAGIAN INJEKSI OTOMATIS ---
        // 3. Fungsi Cek & Suntik via API
                       
        function checkAndInject(title, desc) {
                        // A. Suntikkan ke konfigurasi JavaScript MediaWiki (Client-side)
            var api = new mw.Api();
                        // Ini agar extension ShortDescription mengenali deskripsi ini
           
                        mw.config.set('wgShortDescription', finalDesc);
            // Ambil konten artikel untuk cek apakah sudah ada {{SHORTDESC:}}
            api.get({ action: 'query', prop: 'revisions', titles: title, rvprop: 'content', formatversion: 2 }).done(function(data) {
                var content = data.query.pages[0].revisions[0].content;
                var shortDescPattern = /\{\{SHORTDESC:.*?\}\}/i;


                        // B. Gunakan API MediaWiki untuk "menginfokan" sistem tentang deskripsi ini
                // Jika belum ada kodenya, atau deskripsinya beda dengan di Mippedia Data
                        // Ini memastikan sistem memperlakukan teks ini seolah berasal dari {{SHORTDESC:}}
                if (!shortDescPattern.test(content)) {
                        if (mw.loader.getState('ext.shortDescription') !== null) {
                    console.log("Mippedia: Injecting official ShortDesc...");
                            $(document).trigger('shortdescription-update', [finalDesc]);
                   
                        }
                    var newContent = '{{SHORTDESC:' + desc + '}}\n' + content;
 
                   
                        // C. Render visual agar sama persis dengan tampilan manual (seperti gambar Mippedia)
                    // Simpan otomatis ke database tanpa membebani user
                        $('#mippedia-auto-shortdesc').remove();
                    api.postWithEditToken({
                        $('.firstHeading').after(
                        action: 'edit',
                            $('<div id="mippedia-auto-shortdesc" class="bcl-shortdesc">')
                        title: title,
                                .text(finalDesc)
                        text: newContent,
                                .css({
                        summary: 'Mippedia System: Auto-synced Short Description from Data Center'
                                    'color': '#54595d',
                    }).done(function() {
                                    'font-size': '0.92em',
                         console.log("Mippedia: Sync Complete. Metadata is now live.");
                                    'margin': '2px 0 10px 0',
                        // Optional: reload jika ingin langsung lihat hasilnya
                                    'font-weight': 'normal'
                     });
                                })
                        );
                       
                         console.log("Mippedia: Metadata {{SHORTDESC}} injected for " + currentTitle);
                     }
                } catch (e) {
                    console.error("Mippedia: Injection failed.");
                 }
                 }
             }
             });
         });
         }
     });
     });
})(jQuery, mediaWiki);
})(jQuery, mediaWiki);