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.001: Baris 1.001:


/* ==========================================================
/* ==========================================================
   🔵 MIPPEDIA IRONCLAD SYSTEM V2
   🔵 MIPPEDIA IRONCLAD SYSTEM V3
   Fitur: Proteksi Kategori Ketat, Pop-up Centered, & Full Auto
   Fitur: Proteksi Namespace Pengguna Saja, Fix Pop-up, & Full Auto
   ========================================================== */
   ========================================================== */
$(document).ready(function() {
$(document).ready(function() {
Baris 1.011: Baris 1.011:
         api = new mw.Api();
         api = new mw.Api();


    // URL Gambar Centang Biru Asli
     var vBadgeUrl = mw.config.get('wgScriptPath') + '/index.php?title=Special:Redirect/file/Verified_Badge.png';
     var vBadgeUrl = mw.config.get('wgScriptPath') + '/index.php?title=Special:Redirect/file/Verified_Badge.png';


     // --- 1. POP-UP TERVERIFIKASI (FIX TAMPILAN) ---
     // --- 1. POP-UP TERVERIFIKASI (FIXED & CENTERED) ---
     function showVerifiedPopup() {
     function showVerifiedPopup() {
         var modalHtml = '<div id="mippedia-v-modal" style="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);z-index:99999;display:flex;align-items:center;justify-content:center;">' +
         var modalHtml = '<div id="mippedia-v-modal" style="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.75);z-index:99999;display:flex;align-items:center;justify-content:center;">' +
             '<div style="background:#fff;padding:30px;border-radius:20px;width:85%;max-width:350px;text-align:center;box-shadow:0 15px 35px rgba(0,0,0,0.4);position:relative;margin:auto;">' +
             '<div style="background:#fff;padding:30px;border-radius:20px;width:85%;max-width:320px;text-align:center;box-shadow:0 15px 35px rgba(0,0,0,0.5);position:relative;">' +
             '<img src="' + vBadgeUrl + '&width=60" style="width:60px;height:60px;margin-bottom:20px;">' +
             '<img src="' + vBadgeUrl + '&width=60" style="width:60px;height:60px;margin-bottom:15px;">' +
             '<h2 style="margin:0 0 15px 0;color:#1a1a1a;font-family:sans-serif;font-size:22px;">Akun Terverifikasi</h2>' +
             '<h2 style="margin:0 0 10px 0;color:#1a1a1a;font-family:sans-serif;font-size:20px;font-weight:bold;">Akun Terverifikasi</h2>' +
             '<p style="color:#555;line-height:1.6;font-size:14px;margin-bottom:25px;font-family:sans-serif;">Mippedia telah mengonfirmasi bahwa individu atau entitas ini adalah asli. Akun ini telah melewati proses verifikasi ketat untuk memastikan kredibilitas dan mencegah peniruan identitas.</p>' +
             '<p style="color:#555;line-height:1.5;font-size:13px;margin-bottom:20px;font-family:sans-serif;">Mippedia telah mengonfirmasi bahwa identitas pemilik akun ini adalah asli. Lencana ini menandakan kredibilitas tinggi di dalam komunitas kami.</p>' +
             '<button id="close-v-modal" style="background:#0095f6;color:#fff;border:none;padding:12px 0;width:100%;border-radius:10px;cursor:pointer;font-weight:bold;font-size:16px;">Mengerti</button>' +
             '<button id="close-v-modal" style="background:#0095f6;color:#fff;border:none;padding:12px 0;width:100%;border-radius:10px;cursor:pointer;font-weight:bold;font-size:14px;">Mengerti</button>' +
             '</div></div>';
             '</div></div>';
         $('body').append(modalHtml);
         $('body').append(modalHtml);
Baris 1.027: Baris 1.026:
     }
     }


     // --- 2. RENDER BADGE (RIWAYAT & PROFIL) ---
     // --- 2. RENDER BADGE ---
     api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }).done(function(d) {
     api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }).done(function(d) {
         var vUsers = d.query.categorymembers.map(function(m) { return m.title.replace('Pengguna:', ''); });
         var vUsers = d.query.categorymembers.map(function(m) { return m.title.replace('Pengguna:', ''); });
Baris 1.048: Baris 1.047:
     });
     });


     // --- 3. PROTEKSI KATEGORI (SATPAM KETAT) ---
     // --- 3. PROTEKSI KATEGORI (KHUSUS NAMESPACE PENGGUNA) ---
     if (['edit', 'submit'].includes(mw.config.get('wgAction'))) {
     if (ns === 2 && (['edit', 'submit'].includes(mw.config.get('wgAction')))) {
         function checkCategory() {
         $('#editform').on('submit', function(e) {
             var $box = $('#wpTextbox1');
             var $box = $('#wpTextbox1');
            if (!$box.length) return;
           
             var content = $box.val();
             var content = $box.val();
             var catPattern = /\[\[Category:Pengguna_Terverifikasi\]\]/gi;
             var catPattern = /\[\[Category:Pengguna_Terverifikasi\]\]/gi;


            // Jika ada kategori manual dinput & bukan lewat sistem otomatis
             if (catPattern.test(content) && !sessionStorage.getItem('is_system_verify')) {
             if (catPattern.test(content) && !sessionStorage.getItem('is_system_verify')) {
                 alert("⚠️ AKSES DITOLAK: Kategori verifikasi tidak boleh ditambahkan secara manual!\n\nGunakan tombol 'Verifikasi' di menu profil.");
                 alert("⚠️ AKSES DITOLAK: Penambahan kategori verifikasi secara manual hanya dilarang di profil pengguna.\n\nSilakan gunakan sistem verifikasi otomatis.");
                 $box.val(content.replace(catPattern, '')); // Hapus teksnya secara paksa
                 $box.val(content.replace(catPattern, ''));  
                return false;
            }
            return true;
        }
 
        // Cek saat tombol simpan diklik
        $('#wpSave, #wpPreview, #wpDiff').on('click', function(e) {
            if (!checkCategory()) {
                e.preventDefault();
                 return false;
                 return false;
             }
             }
Baris 1.093: Baris 1.080:
     }
     }


     // --- 5. PANEL ADMIN (BYPASS PROTEKSI) ---
     // --- 5. PANEL ADMIN (BYPASS) ---
     if (ns === 3 && isAdmin && $('#mw-content-text').text().includes("Sedang diverifikasi")) {
     if (ns === 3 && isAdmin && $('#mw-content-text').text().includes("Sedang diverifikasi")) {
         var $pnl = $('<div style="background:#f0f7ff;border:2px solid #0095f6;padding:12px;border-radius:10px;margin-bottom:10px">').append('<b>🔵 ADMIN SYSTEM</b><br>');
         var $pnl = $('<div style="background:#f0f7ff;border:2px solid #0095f6;padding:12px;border-radius:10px;margin-bottom:10px">').append('<b>🔵 ADMIN SYSTEM</b><br>');
Baris 1.100: Baris 1.087:
         $btnApprove.click(function() {
         $btnApprove.click(function() {
             $(this).prop('disabled', true).text('Working...');
             $(this).prop('disabled', true).text('Working...');
             sessionStorage.setItem('is_system_verify', 'true'); // Flag bypass satpam
             sessionStorage.setItem('is_system_verify', 'true');
           
             api.postWithToken('edit', { action: 'edit', title: "Pengguna:" + mw.config.get('wgTitle'), appendtext: '\n[[Category:Pengguna_Terverifikasi]]', summary: 'System: Account Verified' })
             api.postWithToken('edit', { action: 'edit', title: "Pengguna:" + mw.config.get('wgTitle'), appendtext: '\n[[Category:Pengguna_Terverifikasi]]', summary: 'System: Account Verified' })
             .then(function() {
             .then(function() {