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.002: Baris 1.002:
/* ==========================================================
/* ==========================================================
   🔵 MIPPEDIA ULTIMATE VERIFICATION SYSTEM (FULL FIX)
   🔵 MIPPEDIA ULTIMATE VERIFICATION SYSTEM (FULL FIX)
   Fitur: Satu Centang, Perbaikan Pop-up, & Spacing Presisi
   Update: Fix Tombol Verifikasi Muncul di Semua User
   ========================================================== */
   ========================================================== */
$(document).ready(function() {
$(document).ready(function() {
Baris 1.013: Baris 1.013:
     var vFile = 'Verified_Badge.png';
     var vFile = 'Verified_Badge.png';


     // --- 1. POP-UP TERVERIFIKASI (FIXED: AKTIF & CENTERED) ---
     // --- 1. POP-UP TERVERIFIKASI ---
     function showVerifiedPopup() {
     function showVerifiedPopup() {
        // Render gambar badge ukuran besar khusus untuk di dalam pop-up
         api.parse('[[Berkas:' + vFile + '|60px|link=|middle]]').done(function(renderedImage) {
         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;">' +
             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;">' +
Baris 1.029: Baris 1.028:
     }
     }


     // --- 2. LOGIKA CENTANG BIRU GLOBAL (RIWAYAT, RECENT CHANGES, DLL) ---
     // --- 2. LOGIKA CENTANG BIRU GLOBAL ---
     function applyGlobalBadge($element) {
     function applyGlobalBadge($element) {
         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:' + vFile + '|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: 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; cursor: pointer;"></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);
           
             $badge.click(function(e) { e.preventDefault(); showVerifiedPopup(); });
            // Tambahkan event klik untuk memicu pop-up
             $badge.click(function(e) {
                e.preventDefault();
                showVerifiedPopup();
            });
           
             $element.after($badge);
             $element.after($badge);
             $element.data('has-badge', true);
             $element.data('has-badge', true);
Baris 1.052: Baris 1.041:
     }
     }


    // Ambil daftar user terverifikasi dari kategori
     api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }).done(function(data) {
     api.get({
         var verifiedUsers = data.query.categorymembers.map(function(member) { return member.title.replace('Pengguna:', ''); });
        action: 'query',
        list: 'categorymembers',
        cmtitle: 'Category:Pengguna_Terverifikasi',
        cmlimit: 'max'
    }).done(function(data) {
         var verifiedUsers = data.query.categorymembers.map(function(member) {
            return member.title.replace('Pengguna:', '');
        });
 
        // Scan link pengguna
         function scanLinks() {
         function scanLinks() {
             $('a.mw-userlink').each(function() {
             $('a.mw-userlink').each(function() {
                 var username = $(this).text().trim();
                 var username = $(this).text().trim();
                 if (verifiedUsers.includes(username)) {
                 if (verifiedUsers.includes(username)) { applyGlobalBadge($(this)); }
                    applyGlobalBadge($(this));
                }
             });
             });
         }
         }
         scanLinks();
         scanLinks();
         mw.hook('wikipage.content').add(scanLinks);
         mw.hook('wikipage.content').add(scanLinks);
        // 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:' + vFile + '|20px|link=|middle]]').done(function(renderedImage) {
                 api.parse('[[Berkas:' + vFile + '|22px|link=|middle]]').done(function(renderedImage) {
                     var cleanImage = $(renderedImage).find('img').first();
                     var cleanImage = $(renderedImage).find('img').first();
                     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);
                     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);
                     $pBadge.click(showVerifiedPopup);
                     $('#firstHeading').append($pBadge);
                     $('#firstHeading').append($pBadge);
Baris 1.099: Baris 1.071:
     }
     }


     // --- 4. PROTEKSI KATEGORI (Mencegah Penambahan Manual) ---
     // --- 4. PROTEKSI KATEGORI ---
     if (ns === 2 && (['edit', 'submit'].includes(mw.config.get('wgAction')))) {
     if (ns === 2 && (['edit', 'submit'].includes(mw.config.get('wgAction')))) {
         $('#editform').on('submit', function(e) {
         $('#editform').on('submit', function(e) {
Baris 1.105: Baris 1.077:
             var content = $box.val();
             var content = $box.val();
             var catPattern = /\[\[Category:Pengguna_Terverifikasi\]\]/gi;
             var catPattern = /\[\[Category:Pengguna_Terverifikasi\]\]/gi;
             if (catPattern.test(content) && !sessionStorage.getItem('is_system_verify')) {
             if (catPattern.test(content) && !sessionStorage.getItem('is_system_verify')) {
                 alert("⚠️ AKSES DITOLAK: Penambahan kategori verifikasi secara manual dilarang.\n\nSilakan gunakan sistem verifikasi otomatis.");
                 alert("⚠️ AKSES DITOLAK: Penambahan kategori verifikasi secara manual dilarang.");
                 $box.val(content.replace(catPattern, ''));  
                 $box.val(content.replace(catPattern, ''));  
                 return false;
                 return false;
Baris 1.114: Baris 1.085:
     }
     }


     // --- 5. TOMBOL MINTA VERIFIKASI ---
     // --- 5. TOMBOL MINTA VERIFIKASI (FIXED LOGIC) ---
     if (ns === 2 && user && pageName.includes('Pengguna:' + user)) {  
    // Sekarang ngecek pake wgTitle biar lebih akurat di halaman profil sendiri
     if (ns === 2 && user && mw.config.get('wgTitle') === user) {  
         if (!$('#ca-verify-request').length) {
         if (!$('#ca-verify-request').length) {
             var $verifyLink = $('<li>').attr({'id': 'ca-verify-request', 'class': 'mw-list-item'}).append(
             var $verifyLink = $('<li>').attr({'id': 'ca-verify-request', 'class': 'mw-list-item'}).append(
Baris 1.138: Baris 1.110:
         api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'user|content', rvlimit: 1 }).done(function(res) {
         api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'user|content', rvlimit: 1 }).done(function(res) {
             var pg = res.query.pages[Object.keys(res.query.pages)[0]];
             var pg = res.query.pages[Object.keys(res.query.pages)[0]];
            if (!pg || !pg.revisions) return;
             var requester = pg.revisions[0].user;
             var requester = pg.revisions[0].user;
             var oldContent = pg.revisions[0]['*'];
             var oldContent = pg.revisions[0]['*'];
Baris 1.154: Baris 1.127:
                     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]]";
                     var msg = "\n== Profil Terverifikasi ==\nHalo [["+requester+"]], akun Anda resmi terverifikasi. --[[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() {  
                 }).done(function() {