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 532: | Baris 532: | ||
/* ========================================================== | /* ========================================================== | ||
🛡️ MIPPEDIA VERIFICATION SYSTEM | 🛡️ MIPPEDIA VERIFICATION SYSTEM v8.0 (ANTI-GAGAL) | ||
========================================================== */ | ========================================================== */ | ||
$(document).ready(function() { | $(document).ready(function() { | ||
| Baris 541: | Baris 541: | ||
var $content = $('#mw-content-text'); | var $content = $('#mw-content-text'); | ||
// --- 1. AUTO-FILL | // --- 1. AUTO-FILL TEKS (PENGGUNA) --- | ||
if (mw.config.get('wgAction') === 'edit' && sessionStorage.getItem('mippedia_req_text')) { | if (mw.config.get('wgAction') === 'edit' && sessionStorage.getItem('mippedia_req_text')) { | ||
var savedText = sessionStorage.getItem('mippedia_req_text'); | var savedText = sessionStorage.getItem('mippedia_req_text'); | ||
| Baris 548: | Baris 548: | ||
} | } | ||
// --- 2. TOMBOL MINTA | // --- 2. TOMBOL MINTA (HALAMAN BERKAS) --- | ||
if (ns === 6) { | if (ns === 6) { | ||
if (!$content.text().includes("Aset Resmi")) { | |||
var $reqBtn = $('<button>').html('<span>📩</span> Minta Verifikasi').css({ | var $reqBtn = $('<button>').html('<span>📩</span> Minta Verifikasi').css({ | ||
'background': '#36c', 'color': '#fff', 'border': 'none', 'padding': '5px 15px', | 'background': '#36c', 'color': '#fff', 'border': 'none', 'padding': '5px 15px', | ||
| Baris 566: | Baris 565: | ||
} | } | ||
// --- 3. | // --- 3. PANEL ADMIN & AUTOMATION (HALAMAN PEMBICARAAN) --- | ||
if (ns === 7) { | if (ns === 7) { | ||
var api = new mw.Api(); | var api = new mw.Api(); | ||
var filePage = pageName.replace('Pembicaraan_Berkas:', 'Berkas:'); | var filePage = pageName.replace('Pembicaraan_Berkas:', 'Berkas:'); | ||
var fullContent = $content.text(); | |||
// | var isPending = fullContent.includes("Status: 🕒 Sedang diajukan"); | ||
// Ambil User Pengaju | |||
api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'user', rvlimit: 1, rvdir: 'newer' }).done(function(data) { | api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'user', rvlimit: 1, rvdir: 'newer' }).done(function(data) { | ||
var pages = data.query.pages; | var pages = data.query.pages; | ||
| Baris 577: | Baris 578: | ||
for (var id in pages) { requester = pages[id].revisions[0].user; } | for (var id in pages) { requester = pages[id].revisions[0].user; } | ||
// Tombol Coba Lagi buat Pengaju | |||
if (fullContent.includes("Status: ❌ Ditolak") && user === requester) { | |||
var $retryBtn = $('<button>').text('🔄 Coba Lagi').css({'background':'#36c','color':'#fff','border':'none','padding':'4px 10px','border-radius':'4px','cursor':'pointer','display':'block','margin-top':'10px'}); | |||
var $retryBtn = $('<button>').text('🔄 Coba Lagi').css({'background':'#36c','color':'#fff','border':'none','padding':' | |||
$retryBtn.click(function() { window.location.href = mw.util.getUrl(filePage); }); | $retryBtn.click(function() { window.location.href = mw.util.getUrl(filePage); }); | ||
$('.mippedia-status').append($retryBtn); | $('.mippedia-status').append($retryBtn); | ||
} | } | ||
// PANEL ADMIN | // PANEL ADMIN | ||
if (isAdmin && isPending) { | if (isAdmin && isPending) { | ||
var $panel = $('<div style="background:#f0f5ff; border:2px solid #36c; padding:15px; border-radius: | var $panel = $('<div id="admin-panel" style="background:#f0f5ff; border:2px solid #36c; padding:15px; border-radius:10px; margin:15px 0;">' + | ||
'<div style="font-weight:bold; color:#36c; margin-bottom:10px;">🛡️ ADMIN CONTROL | '<div style="font-weight:bold; color:#36c; margin-bottom:10px;">🛡️ ADMIN CONTROL</div></div>'); | ||
var $btnApprove = $('<button>').text('✅ SETUJUI').css({'background':'#00af89','color':'#fff','border':'none','padding':'8px 15px','margin-right':'10px','cursor':'pointer | var $btnApprove = $('<button>').text('✅ SETUJUI').css({'background':'#00af89','color':'#fff','border':'none','padding':'8px 15px','margin-right':'10px','cursor':'pointer'}); | ||
var $btnReject = $('<button>').text('❌ TOLAK').css({'background':'#d33','color':'#fff','border':'none','padding':'8px 15px','cursor':'pointer | var $btnReject = $('<button>').text('❌ TOLAK').css({'background':'#d33','color':'#fff','border':'none','padding':'8px 15px','cursor':'pointer'}); | ||
$btnApprove.click(function() { | $btnApprove.click(function() { | ||
$btnApprove.prop('disabled', true).text('Processing...'); | $btnApprove.prop('disabled', true).text('Processing...'); | ||
// | |||
// STEP 1: Nulis "Aset Resmi" di Berkas | |||
api.postWithToken('edit', { action: 'edit', title: filePage, appendtext: '\nAset Resmi', summary: 'Verifikasi Disetujui' }).done(function() { | api.postWithToken('edit', { action: 'edit', title: filePage, appendtext: '\nAset Resmi', summary: 'Verifikasi Disetujui' }).done(function() { | ||
// | // STEP 2: Ganti teks status di halaman diskusi | ||
api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'content' }).done(function(res) { | api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'content' }).done(function(res) { | ||
var content = res.query.pages[Object.keys(res.query.pages)[0]].revisions[0]['*']; | var content = res.query.pages[Object.keys(res.query.pages)[0]].revisions[0]['*']; | ||
var | var newText = content.replace("Status: 🕒 Sedang diajukan", "Status: ✅ '''Disetujui'''"); | ||
api.postWithToken('edit', { action: 'edit', title: pageName, text: | api.postWithToken('edit', { action: 'edit', title: pageName, text: newText, summary: 'Update Status: Disetujui' }).done(function() { | ||
// | // STEP 3: Kirim notif ke User | ||
var msg = "\n== Notifikasi Verifikasi ==\nHalo [[" + requester + "]], permohonan Anda untuk [[:" + filePage + "]] telah '''DISETUJUI'''. --[[Pengguna:Admin|Admin]] ([[Pembicaraan Pengguna:Admin|bicara]]) 10 April 2026 16. | var msg = "\n== Notifikasi Verifikasi ==\nHalo [[" + requester + "]], permohonan Anda untuk [[:" + filePage + "]] telah '''DISETUJUI'''. --[[Pengguna:Admin|Admin]] ([[Pembicaraan Pengguna:Admin|bicara]]) 10 April 2026 16.37 (UTC)"; | ||
api.postWithToken('edit', { action: 'edit', title: "Pembicaraan_Pengguna:" + requester, section: 'new', text: msg }).done(function() { | api.postWithToken('edit', { action: 'edit', title: "Pembicaraan_Pengguna:" + requester, section: 'new', text: msg }).done(function() { | ||
location.reload(); | location.reload(); | ||
| Baris 615: | Baris 614: | ||
$btnReject.click(function() { | $btnReject.click(function() { | ||
var alasan = prompt(" | var alasan = prompt("Alasan penolakan:"); | ||
if (!alasan) return; | if (!alasan) return; | ||
$btnReject.prop('disabled', true).text('Processing...'); | $btnReject.prop('disabled', true).text('Processing...'); | ||
api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'content' }).done(function(res) { | api.get({ action: 'query', prop: 'revisions', titles: pageName, rvprop: 'content' }).done(function(res) { | ||
var content = res.query.pages[Object.keys(res.query.pages)[0]].revisions[0]['*']; | var content = res.query.pages[Object.keys(res.query.pages)[0]].revisions[0]['*']; | ||
var | var newText = content.replace("Status: 🕒 Sedang diajukan", "Status: ❌ '''Ditolak'''\n\n''Alasan: " + alasan + "''"); | ||
api.postWithToken('edit', { action: 'edit', title: pageName, text: | api.postWithToken('edit', { action: 'edit', title: pageName, text: newText, summary: 'Update Status: Ditolak' }).done(function() { | ||
var msg = "\n== Notifikasi Verifikasi ==\nHalo [[" + requester + "]], permohonan Anda untuk [[:" + filePage + "]] '''DITOLAK''' karena: ''" + alasan + "''. --[[Pengguna:Admin|Admin]] ([[Pembicaraan Pengguna:Admin|bicara]]) 10 April 2026 16.37 (UTC)"; | |||
var msg = "\n== Notifikasi Verifikasi ==\nHalo [[" + requester + "]], permohonan Anda untuk [[:" + filePage + "]] '''DITOLAK''' karena: ''" + alasan + "''. --[[Pengguna:Admin|Admin]] ([[Pembicaraan Pengguna:Admin|bicara]]) 10 April 2026 16. | |||
api.postWithToken('edit', { action: 'edit', title: "Pembicaraan_Pengguna:" + requester, section: 'new', text: msg }).done(function() { | api.postWithToken('edit', { action: 'edit', title: "Pembicaraan_Pengguna:" + requester, section: 'new', text: msg }).done(function() { | ||
location.reload(); | location.reload(); | ||