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 335: Baris 335:
})();
})();


/* ==========================================================
  🚀 MIPPEDIA DATA - CONTENT GUARD (ULTRA BRUTAL)
  Fungsi: Mencegah simpan halaman tanpa {{Infobox}}
  Support: Desktop (Vector/Monobook) & Mobile (Minerva)
  ========================================================== */
(function() {
(function() {
     function showBlocker(msg) {
     function getGuardStatus() {
        // Pake alert biar user HP bener-bener nggak bisa nembus
        window.alert("⚠️ SISTEM MIPPEDIA DATA:\n\n" + msg);
    }
 
    // Intersep SEMUA klik yang bau-baunya tombol Simpan/Save/Terbitkan
    $(document).on('click', 'button, a, .mw-ui-button', function(e) {
         var ns = mw.config.get('wgNamespaceNumber');
         var ns = mw.config.get('wgNamespaceNumber');
         if (ns !== 0) return;
        // Hanya proteksi Namespace Utama (0)
         if (ns !== 0) return false;


         var $el = $(this);
         // Ambil isi dari textarea (mendukung berbagai jenis selector editor)
         var label = ($el.text() + $el.val() + $el.attr('id') + $el.attr('class')).toLowerCase();
         var content = $('#wpTextbox1, .editor-container textarea, textarea.mw-ui-input').val() || "";
       
        // Cek apakah ada teks "{{Infobox"
        return content.includes('{{Infobox');
    }


        // Cek apakah yang diklik itu tombol Simpan/Terbitkan
    function blockAction(e) {
         if (label.includes('save') || label.includes('simpan') || label.includes('terbit') || label.includes('submit')) {
         if (!getGuardStatus()) {
             var content = $('#wpTextbox1, textarea.mw-ui-input, .editor-container textarea').val() || "";
            e.preventDefault();
            e.stopPropagation();
             e.stopImmediatePropagation();
              
              
             // Logika: Kalo isinya nggak ada {{Infobox, HAJAR!
             // Pake alert standar browser agar pasti muncul di semua jenis HP
             if (!content.includes('{{Infobox')) {
             window.alert("⚠️ AKSES DITOLAK!\n\nNamespace Utama Mippedia Data wajib menggunakan struktur {{Infobox}}.\n\nAnda dilarang mengunggah teks artikel biasa, huruf asal, atau konten tanpa metadata terstruktur.");
                e.preventDefault();
            return false;
                e.stopPropagation();
                e.stopImmediatePropagation();
               
                showBlocker("DITOLAK! Namespace utama wajib pake {{Infobox}}.\nJangan isi teks biasa atau asal ketik.");
                return false;
            }
         }
         }
    }
    // 1. Cegah klik pada SEMUA elemen yang berfungsi sebagai tombol simpan/terbit
    $(document).on('click mousedown touchstart', '#wpSave, #wpPreview, .editor-save, .mw-ui-button.primary, button[type="submit"], .save-button', function(e) {
        return blockAction(e);
    });
    // 2. Cegah submit form secara langsung (antisipasi bypass)
    $(document).on('submit', '#editform, .editor-container form', function(e) {
        return blockAction(e);
     });
     });
    console.log("Mippedia: Content Guard Active (Namespace 0)");
})();
})();