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 IRONCLAD SYSTEM | 🔵 MIPPEDIA IRONCLAD SYSTEM V4 - FULL EDITION | ||
Fitur: | Fitur: Auto-Text, Auto-Message, Auto-Status, Pop-up & Security | ||
========================================================== */ | ========================================================== */ | ||
$(document).ready(function() { | $(document).ready(function() { | ||
| Baris 1.013: | Baris 1.013: | ||
var vBadgeUrl = mw.config.get('wgScriptPath') + '/index.php?title=Special:Redirect/file/Verified_Badge.png'; | var vBadgeUrl = mw.config.get('wgScriptPath') + '/index.php?title=Special:Redirect/file/Verified_Badge.png'; | ||
// --- 1. POP-UP TERVERIFIKASI | // --- 1. POP-UP TERVERIFIKASI --- | ||
function showVerifiedPopup() { | function showVerifiedPopup() { | ||
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;">' + | ||
'<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) | '<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);">' + | ||
'<img src="' + vBadgeUrl + '&width=60" style="width:60px;height:60px;margin-bottom:15px;">' + | '<img src="' + vBadgeUrl + '&width=60" style="width:60px;height:60px;margin-bottom:15px;">' + | ||
'<h2 style="margin:0 0 10px 0;color:#1a1a1a | '<h2 style="margin:0 0 10px 0;color:#1a1a1a;font-size:20px;font-weight:bold;">Akun Terverifikasi</h2>' + | ||
'<p style="color:#555;line-height:1.5;font-size:13px;margin-bottom:20px | '<p style="color:#555;line-height:1.5;font-size:13px;margin-bottom:20px;">Mippedia telah mengonfirmasi bahwa identitas pemilik akun ini adalah asli. Lencana ini menandakan kredibilitas tinggi.</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 | '<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;">Mengerti</button>' + | ||
'</div></div>'; | '</div></div>'; | ||
$('body').append(modalHtml); | $('body').append(modalHtml); | ||
| Baris 1.026: | Baris 1.026: | ||
} | } | ||
// --- 2. RENDER BADGE --- | // --- 2. RENDER BADGE (RIWAYAT & PROFIL) --- | ||
api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }).done(function(d) { | api.get({ action: 'query', list: 'categorymembers', cmtitle: 'Category:Pengguna_Terverifikasi', cmlimit: 'max' }).done(function(d) { | ||
var vUsers = d.query.categorymembers.map(function(m) { return m.title.replace('Pengguna:', ''); }); | var vUsers = d.query.categorymembers.map(function(m) { return m.title.replace('Pengguna:', ''); }); | ||
| Baris 1.039: | Baris 1.039: | ||
}); | }); | ||
if ((ns === 2 || ns === 3) && vUsers.includes(mw.config.get('wgTitle')) && !$('#firstHeading .mp-v-p').length) { | |||
if ((ns === 2 || ns === 3) && vUsers.includes( | |||
var $pBadge = $('<span class="mp-v-p" style="margin-left:6px;vertical-align:middle;display:inline-flex;cursor:pointer;"><img src="' + vBadgeUrl + '&width=20" style="width:20px;height:20px;"></span>'); | var $pBadge = $('<span class="mp-v-p" style="margin-left:6px;vertical-align:middle;display:inline-flex;cursor:pointer;"><img src="' + vBadgeUrl + '&width=20" style="width:20px;height:20px;"></span>'); | ||
$pBadge.click(showVerifiedPopup); | $pBadge.click(showVerifiedPopup); | ||
| Baris 1.047: | Baris 1.046: | ||
}); | }); | ||
// --- 3. PROTEKSI KATEGORI ( | // --- 3. PROTEKSI KATEGORI (SATPAM NS PENGGUNA) --- | ||
if (ns === 2 && | if (ns === 2 && ['edit', 'submit'].includes(mw.config.get('wgAction'))) { | ||
$('#editform').on('submit', function(e) { | $('#editform').on('submit', function(e) { | ||
var | var content = $('#wpTextbox1').val(); | ||
if (/\[\[Category:Pengguna_Terverifikasi\]\]/gi.test(content) && !sessionStorage.getItem('is_system_verify')) { | |||
alert("⚠️ DITOLAK: Penambahan kategori manual dilarang!"); | |||
$('#wpTextbox1').val(content.replace(/\[\[Category:Pengguna_Terverifikasi\]\]/gi, '')); | |||
alert("⚠️ | |||
$ | |||
return false; | return false; | ||
} | } | ||
| Baris 1.062: | Baris 1.058: | ||
} | } | ||
// --- 4. | // --- 4. OTOMATISASI TEKS REQUEST --- | ||
if (mw.config.get('wgAction') === 'edit' && sessionStorage.getItem('mippedia_verify_req')) { | if (mw.config.get('wgAction') === 'edit' && sessionStorage.getItem('mippedia_verify_req')) { | ||
$('#wpTextbox1').val( | var reqText = sessionStorage.getItem('mippedia_verify_req'); | ||
$('#wpTextbox1').val(reqText + "\n\n**Alasan:**\n(Tulis alasan lo di sini, boys!)\n\n<div class='mippedia-status'>'''Status: 🕒 Sedang diverifikasi'''</div>\n\n--" + user); | |||
sessionStorage.removeItem('mippedia_verify_req'); | sessionStorage.removeItem('mippedia_verify_req'); | ||
} | } | ||
// --- 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.073: | Baris 1.071: | ||
$btn.click(function(e) { | $btn.click(function(e) { | ||
e.preventDefault(); | e.preventDefault(); | ||
sessionStorage.setItem('mippedia_verify_req', " | sessionStorage.setItem('mippedia_verify_req', "== Permintaan Verifikasi ==\nHalo 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' }); | ||
}); | }); | ||
| Baris 1.080: | Baris 1.078: | ||
} | } | ||
// --- | // --- 6. SISTEM ADMIN OTOMATIS (APPROVE & PESAN) --- | ||
if (ns === 3 && isAdmin && $('#mw-content-text').text().includes("Sedang diverifikasi")) { | if (ns === 3 && isAdmin && $('#mw-content-text').text().includes("Sedang diverifikasi")) { | ||
var $pnl = $('<div style="background:#f0f7ff;border:2px solid #0095f6;padding:12px;border-radius:10px;margin-bottom:10px">').append('<b>🔵 ADMIN SYSTEM</b><br>'); | 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]], | |||
requester = pg.revisions[0].user, | |||
oldContent = pg.revisions[0]['*']; | |||
var $pnl = $('<div style="background:#f0f7ff;border:2px solid #0095f6;padding:12px;border-radius:10px;margin-bottom:10px">').append('<b>🔵 ADMIN SYSTEM</b><br>'); | |||
var $btnApprove = $('<button>').text('✅ APPROVE').css({'background':'#0095f6','color':'#fff','border':'none','padding':'5px 15px','cursor':'pointer','font-weight':'bold','border-radius':'4px'}); | |||
$btnApprove.click(function() { | |||
$(this).prop('disabled', true).text('Processing...'); | |||
sessionStorage.setItem('is_system_verify', 'true'); | |||
// A. Tambah Kategori ke Profil | |||
api.postWithToken('edit', { action: 'edit', title: "Pengguna:" + mw.config.get('wgTitle'), appendtext: '\n[[Category:Pengguna_Terverifikasi]]', summary: 'System: Verified' }) | |||
.then(function() { | |||
// B. Update Status di Halaman Talk | |||
var newT = oldContent.replace("Status: 🕒 Sedang diverifikasi", "Status: ✅ '''Akun Terverifikasi''' 🔵"); | |||
return api.postWithToken('edit', { action: 'edit', title: pageName, text: newT, summary: 'Approved' }); | |||
}).then(function() { | |||
// C. Kirim Pesan Otomatis ke Wall User | |||
var msg = "\n== Profil Terverifikasi ==\nHalo [["+requester+"]], akun Anda resmi terverifikasi dengan centang biru 🔵. --[[Pengguna:Admin|Admin]] ([[Pembicaraan Pengguna:Admin|bicara]]) 10 April 2026 21.24 (UTC)"; | |||
return api.postWithToken('edit', { action: 'edit', title: "Pembicaraan_Pengguna:" + requester, section: 'new', text: msg, summary: 'Verification Notice' }); | |||
}).done(function() { | |||
sessionStorage.removeItem('is_system_verify'); | |||
location.reload(); | |||
}); | |||
}); | }); | ||
$('#mw-content-text').prepend($pnl.append($btnApprove)); | |||
}); | }); | ||
} | } | ||
}); | }); | ||