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 (FIXED) | ||
Fokus: Perbaikan Pop-up & Proteksi Kategori Manual | |||
========================================================== */ | ========================================================== */ | ||
$(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 | // --- 1. POP-UP TERVERIFIKASI (FIXED & CENTERED) --- | ||
function showVerifiedPopup() { | |||
// Render gambar ukuran besar khusus buat dalem Pop-up secara dinamis | |||
api.parse('[[Berkas:Verified_Badge.png|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 --- | |||
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:Verified_Badge.png|13px|link=|middle]]').done(function(renderedImage) { | api.parse('[[Berkas:Verified_Badge.png|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(); | ||
// | // Tambah cursor pointer dan event click untuk Pop-up | ||
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); | ||
$badge.click(function(e) { e.preventDefault(); showVerifiedPopup(); }); | |||
$element.after($badge); | $element.after($badge); | ||
| Baris 1.029: | Baris 1.045: | ||
} | } | ||
api.get({ | api.get({ | ||
action: 'query', | action: 'query', | ||
| Baris 1.040: | Baris 1.055: | ||
}); | }); | ||
function scanLinks() { | function scanLinks() { | ||
$('a.mw-userlink').each(function() { | $('a.mw-userlink').each(function() { | ||
| Baris 1.053: | Baris 1.067: | ||
mw.hook('wikipage.content').add(scanLinks); | mw.hook('wikipage.content').add(scanLinks); | ||
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)) { | ||
| Baris 1.059: | Baris 1.072: | ||
api.parse('[[Berkas:Verified_Badge.png|20px|link=|middle]]').done(function(renderedImage) { | api.parse('[[Berkas:Verified_Badge.png|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); | ||
// Pemicu Pop-up di Profil | |||
$pBadge.click(function() { showVerifiedPopup(); }); | |||
$('#firstHeading').append($pBadge); | |||
}); | }); | ||
} | } | ||
| Baris 1.065: | Baris 1.082: | ||
}); | }); | ||
// --- | // --- 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.088: | ||
sessionStorage.removeItem('mippedia_verify_req'); | sessionStorage.removeItem('mippedia_verify_req'); | ||
} | } | ||
// --- 4. PROTEKSI KATEGORI (REVISED & STRONGER) --- | |||
// --- | |||
if (ns === 2 && (['edit', 'submit'].includes(mw.config.get('wgAction')))) { | if (ns === 2 && (['edit', 'submit'].includes(mw.config.get('wgAction')))) { | ||
$('# | // Gunakan mousedown pada tombol save untuk cek sebelum submit terkirim | ||
$('#wpSave, #wpPreview, #wpDiff').on('click', function(e) { | |||
var $box = $('#wpTextbox1'); | var $box = $('#wpTextbox1'); | ||
var content = $box.val(); | var content = $box.val(); | ||
| Baris 1.093: | Baris 1.098: | ||
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 | alert("⚠️ AKSES DITOLAK: Penambahan kategori verifikasi secara manual dilarang!\n\nKategori akan dihapus secara otomatis."); | ||
$box.val(content.replace(catPattern, '')); | $box.val(content.replace(catPattern, '')); | ||
e.preventDefault(); | |||
return false; | return false; | ||
} | } | ||
| Baris 1.100: | Baris 1.106: | ||
} | } | ||
// --- | // --- 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.119: | Baris 1.125: | ||
} | } | ||
// --- | // --- 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.134: | Baris 1.140: | ||
$btnApprove.click(function() { | $btnApprove.click(function() { | ||
$(this).prop('disabled', true).text('Processing...'); | $(this).prop('disabled', true).text('Processing...'); | ||
// Set flag agar proteksi kategori tidak memblokir aksi admin | |||
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.139: | Baris 1.147: | ||
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.reload(); }); | }).done(function() { | ||
sessionStorage.removeItem('is_system_verify'); | |||
location.reload(); | |||
}); | |||
}); | }); | ||
$panel.append($btnApprove); | $panel.append($btnApprove); | ||