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.000: | Baris 1.000: | ||
}); | }); | ||
/* ========================================================== | |||
🔵 MIPPEDIA HYPER-LIGHT VERIFICATION | |||
Fitur: Zero Latency, Single API Call, High Efficiency | |||
========================================================== */ | |||
$(document).ready(function() { | $(document).ready(function() { | ||
var api = new mw.Api() | var api = new mw.Api(); | ||
var ns = mw.config.get('wgNamespaceNumber'); | |||
var user = mw.config.get('wgUserName'); | |||
// 1. | // 1. Ambil data & gambar DALAM SATU WAKTU (Single Thread) | ||
$.when( | $.when( | ||
api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }), | api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }), | ||
api.parse('[[Berkas:Verified_Badge.png|20px|link=|middle]]') | api.parse('[[Berkas:Verified_Badge.png|20px|link=|middle]]') | ||
).done(function( | ).done(function(userRes, imgRes) { | ||
var | var verifiedUsers = userRes[0].query.categorymembers.map(function(m) { return m.title.replace('Pengguna:', ''); }); | ||
var badgeSource = $(imgRes[0]).find('img').first(); | |||
if (! | if (!badgeSource.length) return; | ||
function | // Fungsi tempel kilat | ||
// | function injectBadge() { | ||
// A. Halaman Profil (Langsung tempel) | |||
var currentTitle = mw.config.get('wgTitle'); | |||
if ((ns === 2 || ns === 3) && verifiedUsers.includes(currentTitle)) { | |||
if (!$('#firstHeading .mp-v').length) { | |||
var $pB = badgeSource.clone().attr('class', 'mp-v').css({'width':'18px','height':'18px','margin-left':'5px','vertical-align':'middle'}); | |||
$('#firstHeading').append($pB); | |||
} | |||
} | |||
// B. Riwayat & Daftar (Scanning kilat tanpa API ulang) | |||
$('.mw-userlink').each(function() { | $('.mw-userlink').each(function() { | ||
var $ | var $u = $(this); | ||
if (verifiedUsers.includes($u.text().trim()) && !$u.next('.mp-v-g').length) { | |||
$ | var $gB = badgeSource.clone().attr('class', 'mp-v-g').css({'width':'12px','height':'12px','margin-left':'3px','vertical-align':'middle'}); | ||
$u.after($gB); | |||
} | } | ||
}); | }); | ||
} | } | ||
mw.hook('wikipage.content').add( | // Jalankan & pasang hook (Untuk konten dinamis) | ||
injectBadge(); | |||
mw.hook('wikipage.content').add(injectBadge); | |||
}); | }); | ||
// | // --- SISTEM PANEL ADMIN & REQUEST (Disederhanakan kodenya) --- | ||
if (ns === 2 && user && mw.config.get('wgPageName').includes('Pengguna:' + user)) { | |||
$('#p-cactions ul').append($('<li>').addClass('mw-list-item').append($('<a>').attr('href', '#').text('🔵 Verifikasi').on('click', function(e) { | |||
if (ns===2 && | |||
e.preventDefault(); | e.preventDefault(); | ||
sessionStorage.setItem(' | sessionStorage.setItem('mippedia_verify_req', "Halo Pengurus, mohon verifikasi."); | ||
window.location.href = mw.util.getUrl("Pembicaraan_Pengguna:"+ | window.location.href = mw.util.getUrl("Pembicaraan_Pengguna:" + user, { action: 'edit', section: 'new' }); | ||
}) | }))); | ||
} | } | ||
// | // Panel Admin (Hanya render jika ada teks pemicu - Hemat CPU) | ||
if (ns===3 && | if (ns === 3 && mw.config.get('wgUserGroups').includes('sysop') && $('#mw-content-text').text().includes("Sedang diverifikasi")) { | ||
var $btn = $('<button>').text('✅ VERIFIKASI').css({'background':'#0095f6','color':'#fff','border':'none','padding':'5px','cursor':'pointer'}) | |||
.click(function() { | |||
$(this).prop('disabled', true).text('Working...'); | |||
api.postWithToken('edit', { action: 'edit', title: "Pengguna:"+mw.config.get('wgTitle'), appendtext: '\n[[Category:Pengguna_Terverifikasi]]', summary: 'Verified' }) | |||
.done(function() { location.reload(); }); | |||
$(this).prop('disabled',true).text(' | |||
api.postWithToken('edit', {action:'edit', title:"Pengguna:"+mw.config.get('wgTitle'), appendtext:'\n[[Category:Pengguna_Terverifikasi]]', summary:'Verified'}) | |||
}); | }); | ||
$('#mw-content-text').prepend($('<div style="border:1px solid #0095f6;padding:10px;border-radius:8px;margin-bottom:10px">').append("<b>Admin Panel</b><br>", $btn)); | |||
} | } | ||
}); | }); | ||