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 336: Baris 336:


/* ==========================================================
/* ==========================================================
   🚀 MIPPEDIA DATA - CONTENT GUARD (TOTAL LOCKDOWN)
   🚀 MIPPEDIA DATA - CONTENT GUARD (REVISI FINAL)
   ========================================================== */
   ========================================================== */
(function() {
(function() {
    function isEditMode() {
        // Cek apakah ada elemen editor di layar
        return $('#wpTextbox1, .editor-container textarea, textarea.mw-ui-input').length > 0;
    }
     function isContentValid() {
     function isContentValid() {
         var ns = mw.config.get('wgNamespaceNumber');
         var ns = mw.config.get('wgNamespaceNumber');
         if (ns !== 0) return true; // Lewati jika bukan namespace utama
         if (ns !== 0) return true;


        // Cek semua kemungkinan tempat teks berada (Desktop & Mobile)
         var content = $('#wpTextbox1, .editor-container textarea, textarea.mw-ui-input').val() || "";
         var content = $('#wpTextbox1, .editor-container textarea, textarea.mw-ui-input').val() || "";
       
        // Kembalikan TRUE jika ada {{Infobox, FALSE jika tidak ada
         return content.includes('{{Infobox');
         return content.includes('{{Infobox');
     }
     }


     function handleBlock(e) {
     function handleBlock(e) {
         if (!isContentValid()) {
        // CUMA CEGAH JIKA: Kita bener-bener lagi di mode edit
            // Hentikan proses simpan secepat mungkin
         if (isEditMode() && !isContentValid()) {
             e.preventDefault();
             e.preventDefault();
             e.stopPropagation();
             e.stopPropagation();
Baris 362: Baris 364:
     }
     }


     // Taktik 1: Cegah klik pada semua tombol yang berpotensi jadi tombol "Simpan"
     // 1. Tangkap klik tombol simpan (hanya jika di mode edit)
    // Termasuk tombol biru "Terbitkan" di pojok kanan atas mobile Minerva
     $(document).on('click mousedown touchstart',  
     $(document).on('click mousedown touchstart',  
         '#wpSave, #wpPreview, .editor-save, .mw-ui-button.primary, button[type="submit"], .save-button, .apply-changes',  
         '#wpSave, .editor-save, .mw-ui-button.primary, button[type="submit"].save-button',  
         function(e) {
         function(e) {
             return handleBlock(e);
             return handleBlock(e);
Baris 371: Baris 372:
     );
     );


     // Taktik 2: Intersepsi pengiriman form secara global
     // 2. Intersepsi submit form (hanya jika di mode edit)
     window.addEventListener('submit', function(e) {
     window.addEventListener('submit', function(e) {
         if (!isContentValid()) {
         if (isEditMode() && !isContentValid()) {
             handleBlock(e);
             handleBlock(e);
         }
         }
     }, true); // "true" di sini penting untuk menangkap event sebelum script lain
     }, true);
 
    // Taktik 3: Khusus Minerva Mobile (Mencegah klik tombol 'Terbitkan' di bar atas)
    $(document).on('touchstart click', '.header-action button, .editor-header .submit', function(e) {
        return handleBlock(e);
    });


     console.log("Mippedia Guard: Lockdown Mode Aktif");
     console.log("Mippedia Guard: Smart Mode Aktif (Hanya siaga di editor)");
})();
})();