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 | 🔵 MIPPEDIA VERIFICATION SYSTEM (PERFECTION) | ||
Fix: No Delay, Single Badge, & Works Everywhere | |||
========================================================== */ | ========================================================== */ | ||
$(document).ready(function() { | $(document).ready(function() { | ||
var api = new mw.Api(); | |||
var user = mw.config.get('wgUserName'); | var user = mw.config.get('wgUserName'); | ||
var ns = mw.config.get('wgNamespaceNumber'); | var ns = mw.config.get('wgNamespaceNumber'); | ||
// | // 1. Ambil Data User Terverifikasi & Gambar secara bersamaan | ||
var | $.when( | ||
api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }), | |||
api.parse('[[Berkas:Verified_Badge.png|20px|link=|middle]]') | |||
).done(function(userRes, imgRes) { | |||
var verifiedUsers = userRes[0].query.categorymembers.map(function(m) { return m.title.replace('Pengguna:', ''); }); | |||
var badgeHtml = $(imgRes[0]).find('img').first(); // Ambil elemen gambarnya saja | |||
if (!badgeHtml.length) return; // Guard jika gambar gagal load | |||
function | function applyBadge() { | ||
// A. Di Halaman Profil | // A. Di Halaman Profil (Besar & Gagah) | ||
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 .mippedia- | if (!$('#firstHeading .mippedia-badge').length) { | ||
$('#firstHeading'). | var $pBadge = badgeHtml.clone().css({'width': '20px', 'height': '20px', 'margin-left': '5px'}); | ||
$('#firstHeading').append($('<span class="mippedia-badge"></span>').append($pBadge)); | |||
} | } | ||
} | } | ||
// B. Di | // B. Di Riwayat & Link Pengguna (Kecil & Rapi) | ||
$('.mw-userlink').each(function() { | $('.mw-userlink').each(function() { | ||
var $this = $(this); | var $this = $(this); | ||
var username = $this.text().trim(); | var username = $this.text().trim(); | ||
// | |||
if (verifiedUsers.includes(username) && !$this. | // Pastikan user terverifikasi, belum ada badge, dan bukan elemen duplikat | ||
$this. | if (verifiedUsers.includes(username) && !$this.next('.mippedia-badge-global').length) { | ||
var $gBadge = badgeHtml.clone().css({'width': '14px', 'height': '14px', 'margin-left': '3px'}); | |||
$this.after($('<span class="mippedia-badge-global"></span>').append($gBadge)); | |||
} | } | ||
}); | }); | ||
} | } | ||
// | // Jalankan langsung & pasang hook agar saat scroll/loading baru tetap muncul (Instan) | ||
applyBadge(); | |||
mw.hook('wikipage.content').add(applyBadge); | |||
mw.hook('wikipage.content').add( | |||
}); | }); | ||
// --- | // --- 2. SISTEM REQUEST & PANEL ADMIN (TETAP UTUH) --- | ||
if (ns === 2 && user && | if (ns === 2 && user && mw.config.get('wgPageName').includes('Pengguna:' + user)) { | ||
var $ | var $btn = $('<li>').addClass('mw-list-item').append($('<a>').attr('href', '#').append($('<span>').text('🔵 Verifikasi').css('font-weight','bold'))); | ||
$btn.click(function(e) { | |||
$ | |||
e.preventDefault(); | e.preventDefault(); | ||
sessionStorage.setItem('mippedia_verify_req', "Halo Pengurus, | sessionStorage.setItem('mippedia_verify_req', "Halo Pengurus, mohon verifikasi akun saya."); | ||
window.location.href = mw.util.getUrl("Pembicaraan_Pengguna:" + user, { action: 'edit', section: 'new' | window.location.href = mw.util.getUrl("Pembicaraan_Pengguna:" + user, { action: 'edit', section: 'new' }); | ||
}); | }); | ||
$('#p-cactions ul').append($btn); | |||
} | } | ||
}); | }); | ||