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 - | 🚀 MIPPEDIA METADATA GUARD - HARD LOCK SYSTEM (V2) | ||
Status: Anti-Manual | All-User | Deep Validation | |||
========================================================== */ | ========================================================== */ | ||
(function() { | (function($, mw) { | ||
"use strict"; | "use strict"; | ||
// 1. Ambil state awal saat halaman editor dibuka | |||
var ns = mw.config.get('wgNamespaceNumber'); | |||
if (ns !== 0 || mw.config.get('wgIsMainPage')) return; | |||
// Ambil konten asli artikel dari textarea saat pertama kali load | |||
var originalContent = $('#wpTextbox1').val() || ""; | |||
var shortDescRegex = /\{\{SHORTDESC:.*?\}\}/gi; | |||
var originalMatch = originalContent.match(shortDescRegex); | |||
var originalShortDesc = originalMatch ? originalMatch[0] : null; | |||
// 2. Fungsi Validasi Inti | |||
var | function validateMetadata() { | ||
var $textbox = $('#wpTextbox1'); | |||
if (!$textbox.length) return true; | |||
var currentContent = $textbox.val(); | |||
var shortDescRegex = | var currentMatch = currentContent.match(shortDescRegex); | ||
var currentShortDesc = currentMatch ? currentMatch[0] : null; | |||
// | // CEK: Apakah SHORTDESC dihapus, ditambah, atau diubah isinya secara manual? | ||
// Kita bandingkan string SHORTDESC lama vs baru. | |||
if (originalShortDesc !== currentShortDesc) { | |||
window.alert( | |||
"❌ SUNTINGAN DITOLAK SISTEM!\n\n" + | |||
"Anda mencoba mengubah kode {{SHORTDESC:}} secara manual.\n" + | |||
"Metadata ini hanya boleh dikelola otomatis oleh Mippedia Data.\n\n" + | |||
"Silakan kembalikan kode tersebut ke kondisi semula untuk dapat menyimpan." | |||
); | |||
return false; // Gagalkan simpan | |||
} | |||
return true; // Izinkan simpan | |||
} | |||
// 3. Masuk ke Hook Validasi MediaWiki (Paling Ampuh) | |||
mw.hook('editform.setup').add(function($editForm) { | |||
$editForm.on('submit', function(e) { | |||
if (!validateMetadata()) { | |||
e.preventDefault(); | |||
return false; | |||
if (! | |||
} | } | ||
} | }); | ||
}); | |||
if ( | // Jalankan juga di tombol-tombol khusus (Opal/VE) | ||
$(document).on('click', '#wpSave, #wpPreview, #wpDiff', function(e) { | |||
if (!validateMetadata()) { | |||
e.preventDefault(); | e.preventDefault(); | ||
e.stopImmediatePropagation(); | e.stopImmediatePropagation(); | ||
return false; | return false; | ||
} | } | ||
} | }); | ||
})(jQuery, mediaWiki); | |||