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.338: Baris 1.338:


/* ==========================================================
/* ==========================================================
   🚀 MIPPEDIA METADATA GUARD - RADAR SYSTEM (V4)
   🚀 MIPPEDIA METADATA GUARD - RADAR SYSTEM (V5)
   Status: Aggressive Mobile Support | MutationObserver | All Devices
   Status: Professional Messaging | Hybrid Mobile/Desktop
   ========================================================== */
   ========================================================== */
(function($, mw) {
(function($, mw) {
Baris 1.350: Baris 1.350:
     var originalShortDesc = null;
     var originalShortDesc = null;


    // 1. Fungsi Inti Validasi
     function validateAndBlock(e) {
     function validateAndBlock(e) {
         var $textbox = $('#wpTextbox1, textarea.previewable-render, .editor-container textarea, textarea[name="wpTextbox1"]');
         var $textbox = $('#wpTextbox1, textarea.previewable-render, .editor-container textarea, textarea[name="wpTextbox1"]');
Baris 1.359: Baris 1.358:
         var currentShortDesc = currentMatch ? currentMatch[0] : "";
         var currentShortDesc = currentMatch ? currentMatch[0] : "";


        // Jika data asli belum tercatat, catat sekarang (untuk antisipasi)
         if (originalShortDesc === null) {
         if (originalShortDesc === null) {
             originalShortDesc = currentShortDesc;
             originalShortDesc = currentShortDesc;
Baris 1.366: Baris 1.364:


         if (originalShortDesc !== currentShortDesc) {
         if (originalShortDesc !== currentShortDesc) {
            // --- PESAN PROFESIONAL BARU ---
             window.alert(
             window.alert(
                 "❌ PERINGATAN KERAS (MIPPEDIA GUARD)!\n\n" +
                 "MIPPEDIA SYSTEM NOTIFICATION\n" +
                 "Metadata {{SHORTDESC:}} tidak boleh diubah secara manual.\n" +
                "──────────────────────────────\n\n" +
                 "Kembalikan kodenya seperti semula agar Anda bisa menyimpan."
                 "Sinkronisasi otomatis terdeteksi tidak valid.\n\n" +
                "Untuk menjaga integritas metadata, deskripsi singkat (ShortDescription) wajib dikelola melalui repositori Mippedia Data.\n\n" +
                 "Tindakan: Harap urungkan perubahan manual pada kode {{SHORTDESC}} untuk melanjutkan proses penyimpanan."
             );
             );
           
             e.preventDefault();
             e.preventDefault();
             e.stopPropagation();
             e.stopPropagation();
Baris 1.379: Baris 1.381:
     }
     }


     // 2. RADAR: Memantau munculnya editor (terutama di Mobile)
     // Radar untuk menangkap elemen editor saat muncul (terutama di Mobile)
     var observer = new MutationObserver(function() {
     var observer = new MutationObserver(function() {
         var $textbox = $('#wpTextbox1, .editor-container textarea, textarea[name="wpTextbox1"]');
         var $textbox = $('#wpTextbox1, .editor-container textarea, textarea[name="wpTextbox1"]');
Baris 1.386: Baris 1.388:
             var match = content.match(shortDescRegex);
             var match = content.match(shortDescRegex);
             originalShortDesc = match ? match[0] : "";
             originalShortDesc = match ? match[0] : "";
            console.log("Mippedia Guard: Radar captured original metadata.");
         }
         }
     });
     });
Baris 1.392: Baris 1.393:
     observer.observe(document.body, { childList: true, subtree: true });
     observer.observe(document.body, { childList: true, subtree: true });


     // 3. PENCEGATAN GLOBAL
     // Event listener untuk tombol simpan di berbagai platform
     $(document).on('click mousedown touchstart',  
     $(document).on('click mousedown touchstart',  
         '#wpSave, .mw-ui-button.primary, button.submit, .editor-save, .save-button, button[type="submit"]',  
         '#wpSave, .mw-ui-button.primary, button.submit, .editor-save, .save-button, button[type="submit"]',  
Baris 1.400: Baris 1.401:
     );
     );


    // Proteksi tambahan untuk form submit
     window.addEventListener('submit', function(e) {
     window.addEventListener('submit', function(e) {
         if (!validateAndBlock(e)) {
         if (!validateAndBlock(e)) e.preventDefault();
            e.preventDefault();
        }
     }, true);
     }, true);


})(jQuery, mediaWiki);
})(jQuery, mediaWiki);