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 ULTIMATE VERIFICATION SYSTEM (STYLE FIX)
   🔵 MIPPEDIA ULTIMATE VERIFICATION SYSTEM (FULL FIX)
   Fitur: Satu Centang, Ukuran Kecil di Riwayat, & Sejajar Nama
   Fitur: Satu Centang, Perbaikan Pop-up, & Spacing Presisi
   ========================================================== */
   ========================================================== */
$(document).ready(function() {
$(document).ready(function() {
Baris 1.011: Baris 1.011:
     var api = new mw.Api();
     var api = new mw.Api();


     // --- 1. LOGIKA CENTANG BIRU GLOBAL (RIWAYAT, RECENT CHANGES, DLL) ---
    var vFile = 'Verified_Badge.png';
 
     // --- 1. POP-UP TERVERIFIKASI (FIXED: AKTIF & CENTERED) ---
    function showVerifiedPopup() {
        // Render gambar badge ukuran besar khusus untuk di dalam pop-up
        api.parse('[[Berkas:' + vFile + '|60px|link=|middle]]').done(function(renderedImage) {
            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:320px;text-align:center;box-shadow:0 15px 35px rgba(0,0,0,0.5);position:relative;">' +
                '<div style="margin-bottom:15px;">' + renderedImage + '</div>' +
                '<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.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:14px;">Mengerti</button>' +
                '</div></div>';
            $('body').append(modalHtml);
            $('#close-v-modal').click(function() { $('#mippedia-v-modal').remove(); });
        });
    }
 
    // --- 2. LOGIKA CENTANG BIRU GLOBAL (RIWAYAT, RECENT CHANGES, DLL) ---
     function applyGlobalBadge($element) {
     function applyGlobalBadge($element) {
        // Cek agar tidak duplikat
         if ($element.data('has-badge') || $element.next('.mippedia-badge-global').length) return;  
         if ($element.data('has-badge') || $element.next('.mippedia-badge-global').length) return;  
          
          
         api.parse('[[Berkas:Verified_Badge.png|13px|link=|middle]]').done(function(renderedImage) {
         api.parse('[[Berkas:' + vFile + '|13px|link=|middle]]').done(function(renderedImage) {
             if ($element.next('.mippedia-badge-global').length) return;
             if ($element.next('.mippedia-badge-global').length) return;


             var cleanImage = $(renderedImage).find('img').first();
             var cleanImage = $(renderedImage).find('img').first();
              
              
             // Pengaturan posisi: margin-top disesuaikan agar sejajar teks nama
             // Pengaturan posisi: cursor pointer ditambahkan agar user tahu bisa diklik
             var $badge = $('<span class="mippedia-badge-global" style="margin-left: 4px; display: inline-flex; align-items: center; vertical-align: middle; position: relative; top: -1px;"></span>').append(cleanImage);
             var $badge = $('<span class="mippedia-badge-global" style="margin-left: 4px; display: inline-flex; align-items: center; vertical-align: middle; position: relative; top: -1px; cursor: pointer;"></span>').append(cleanImage);
           
            // Tambahkan event klik untuk memicu pop-up
            $badge.click(function(e) {
                e.preventDefault();
                showVerifiedPopup();
            });
              
              
             $element.after($badge);
             $element.after($badge);
Baris 1.040: Baris 1.063:
         });
         });


         // Scan link pengguna di halaman riwayat/recent changes
         // Scan link pengguna
         function scanLinks() {
         function scanLinks() {
             $('a.mw-userlink').each(function() {
             $('a.mw-userlink').each(function() {
Baris 1.053: Baris 1.076:
         mw.hook('wikipage.content').add(scanLinks);
         mw.hook('wikipage.content').add(scanLinks);


         // Khusus di Halaman Profil (firstHeading) - Tetap Besar & Sejajar
         // Khusus di Halaman Profil (firstHeading)
         var currentTitle = mw.config.get('wgTitle');
         var currentTitle = mw.config.get('wgTitle');
         if ((ns === 2 || ns === 3) && verifiedUsers.includes(currentTitle)) {
         if ((ns === 2 || ns === 3) && verifiedUsers.includes(currentTitle)) {
             if (!$('#firstHeading').find('.mippedia-profile-badge').length) {
             if (!$('#firstHeading').find('.mippedia-profile-badge').length) {
                 api.parse('[[Berkas:Verified_Badge.png|20px|link=|middle]]').done(function(renderedImage) {
                 api.parse('[[Berkas:' + vFile + '|20px|link=|middle]]').done(function(renderedImage) {
                     var cleanImage = $(renderedImage).find('img').first();
                     var cleanImage = $(renderedImage).find('img').first();
                     $('#firstHeading').append($('<span class="mippedia-profile-badge" style="margin-left: 6px; display: inline-flex; align-items: center; vertical-align: middle;"></span>').append(cleanImage));
                     var $pBadge = $('<span class="mippedia-profile-badge" style="margin-left: 6px; display: inline-flex; align-items: center; vertical-align: middle; cursor: pointer;"></span>').append(cleanImage);
                   
                    // Tambahkan event klik di profil
                    $pBadge.click(showVerifiedPopup);
                    $('#firstHeading').append($pBadge);
                 });
                 });
             }
             }
Baris 1.065: Baris 1.092:
     });
     });


     // --- 2. AUTO-FILL TEKS PERMINTAAN ---
     // --- 3. AUTO-FILL TEKS PERMINTAAN ---
     if (mw.config.get('wgAction') === 'edit' && sessionStorage.getItem('mippedia_verify_req')) {
     if (mw.config.get('wgAction') === 'edit' && sessionStorage.getItem('mippedia_verify_req')) {
         var savedText = sessionStorage.getItem('mippedia_verify_req');
         var savedText = sessionStorage.getItem('mippedia_verify_req');
Baris 1.071: Baris 1.098:
         sessionStorage.removeItem('mippedia_verify_req');
         sessionStorage.removeItem('mippedia_verify_req');
     }
     }
   
 
     // --- 1. POP-UP TERVERIFIKASI (FIXED & CENTERED) ---
     // --- 4. PROTEKSI KATEGORI (Mencegah Penambahan Manual) ---
     function showVerifiedPopup() {
     if (ns === 2 && (['edit', 'submit'].includes(mw.config.get('wgAction')))) {
         // Render gambar ukuran besar khusus buat dalem Pop-up secara dinamis
         $('#editform').on('submit', function(e) {
        api.parse('[[Berkas:Verified_Badge.png|60px|link=|middle]]').done(function(renderedImage) {
             var $box = $('#wpTextbox1');
             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;">' +
            var content = $box.val();
                '<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;">' +
            var catPattern = /\[\[Category:Pengguna_Terverifikasi\]\]/gi;
                '<div style="margin-bottom:15px;">' + renderedImage + '</div>' +
 
                '<h2 style="margin:0 0 10px 0;color:#1a1a1a;font-family:sans-serif;font-size:20px;font-weight:bold;">Akun Terverifikasi</h2>' +
            if (catPattern.test(content) && !sessionStorage.getItem('is_system_verify')) {
                 '<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>' +
                 alert("⚠️ AKSES DITOLAK: Penambahan kategori verifikasi secara manual dilarang.\n\nSilakan gunakan sistem verifikasi otomatis.");
                '<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>' +
                 $box.val(content.replace(catPattern, ''));  
                 '</div></div>';
                return false;
            $('body').append(modalHtml);
            }
            $('#close-v-modal').click(function() { $('#mippedia-v-modal').remove(); });
         });
         });
     }
     }


     // --- 3. TOMBOL MINTA VERIFIKASI ---
     // --- 5. TOMBOL MINTA VERIFIKASI ---
     if (ns === 2 && user && pageName.includes('Pengguna:' + user)) {  
     if (ns === 2 && user && pageName.includes('Pengguna:' + user)) {  
         if (!$('#ca-verify-request').length) {
         if (!$('#ca-verify-request').length) {
Baris 1.107: Baris 1.133:
     }
     }


     // --- 4. PANEL ADMIN VERIFIKASI ---
     // --- 6. PANEL ADMIN VERIFIKASI ---
     if (ns === 3 && isAdmin && $('#mw-content-text').text().includes("Sedang diverifikasi")) {
     if (ns === 3 && isAdmin && $('#mw-content-text').text().includes("Sedang diverifikasi")) {
         var targetUserPage = "Pengguna:" + mw.config.get('wgTitle');
         var targetUserPage = "Pengguna:" + mw.config.get('wgTitle');
Baris 1.122: Baris 1.148:
             $btnApprove.click(function() {
             $btnApprove.click(function() {
                 $(this).prop('disabled', true).text('Processing...');
                 $(this).prop('disabled', true).text('Processing...');
                sessionStorage.setItem('is_system_verify', 'true');
                 api.postWithToken('edit', { action: 'edit', title: targetUserPage, appendtext: '\n[[Category:Pengguna_Terverifikasi]]', summary: 'Akun Terverifikasi'
                 api.postWithToken('edit', { action: 'edit', title: targetUserPage, appendtext: '\n[[Category:Pengguna_Terverifikasi]]', summary: 'Akun Terverifikasi'
                 }).then(function() {
                 }).then(function() {
Baris 1.127: Baris 1.154:
                     return api.postWithToken('edit', { action: 'edit', title: pageName, text: newText, summary: 'Approved' });
                     return api.postWithToken('edit', { action: 'edit', title: pageName, text: newText, summary: 'Approved' });
                 }).then(function() {
                 }).then(function() {
                     var msg = "\n== Profil Terverifikasi ==\nHalo [["+requester+"]], akun Anda resmi terverifikasi dengan centang biru 🔵. --[[Pengguna:Admin|Admin]] ([[Pembicaraan Pengguna:Admin|bicara]]) 10 April 2026 22.34 (UTC)";
                     var msg = "\n== Profil Terverifikasi ==\nHalo [["+requester+"]], akun Anda resmi terverifikasi dengan centang biru 🔵. --[[Pengguna:Admin|Admin]]";
                     return api.postWithToken('edit', { action: 'edit', title: "Pembicaraan_Pengguna:"+requester, section: 'new', text: msg });
                     return api.postWithToken('edit', { action: 'edit', title: "Pembicaraan_Pengguna:"+requester, section: 'new', text: msg });
                 }).done(function() { location.r
                 }).done(function() {  
eload(); });
                    sessionStorage.removeItem('is_system_verify');
                    location.reload();  
                });
             });
             });
             $panel.append($btnApprove);
             $panel.append($btnApprove);