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 ( | 🔵 MIPPEDIA ULTIMATE VERIFICATION SYSTEM (FULL FIX) | ||
Fitur: Satu Centang, | 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) { | ||
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: | 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: | // 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 | // 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) | // 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: | api.parse('[[Berkas:' + vFile + '|20px|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); | ||
// Tambahkan event klik di profil | |||
$pBadge.click(showVerifiedPopup); | |||
$('#firstHeading').append($pBadge); | |||
}); | }); | ||
} | } | ||
| Baris 1.065: | Baris 1.092: | ||
}); | }); | ||
// --- | // --- 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'); | ||
} | } | ||
// --- | // --- 4. PROTEKSI KATEGORI (Mencegah Penambahan Manual) --- | ||
if (ns === 2 && (['edit', 'submit'].includes(mw.config.get('wgAction')))) { | |||
$('#editform').on('submit', function(e) { | |||
var $box = $('#wpTextbox1'); | |||
var | var content = $box.val(); | ||
var catPattern = /\[\[Category:Pengguna_Terverifikasi\]\]/gi; | |||
if (catPattern.test(content) && !sessionStorage.getItem('is_system_verify')) { | |||
alert("⚠️ AKSES DITOLAK: Penambahan kategori verifikasi secara manual dilarang.\n\nSilakan gunakan sistem verifikasi otomatis."); | |||
$box.val(content.replace(catPattern, '')); | |||
return false; | |||
} | |||
}); | }); | ||
} | } | ||
// --- | // --- 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: | ||
} | } | ||
// --- | // --- 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]] | 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. | }).done(function() { | ||
sessionStorage.removeItem('is_system_verify'); | |||
location.reload(); | |||
}); | |||
}); | }); | ||
$panel.append($btnApprove); | $panel.append($btnApprove); | ||