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.165: | Baris 1.165: | ||
/* ========================================================== | /* ========================================================== | ||
🛡️ MIPPEDIA PATROLI - | 🛡️ MIPPEDIA PATROLI - ULTIMATE ENGINE (RE-FIXED) | ||
Hanya bekerja untuk akun: Mippedia Patroli | |||
========================================================== */ | ========================================================== */ | ||
mw.hook('postEdit').add(function() { | mw.hook('postEdit').add(function() { | ||
// 1. FILTER | // 1. NORMALISASI NAMA (Cek spasi atau garis bawah) | ||
if (mw.config.get('wgNamespaceNumber') !== 0 || | var currentUser = mw.config.get('wgUserName'); | ||
if (!currentUser) return; | |||
var normalizedName = currentUser.replace(/_/g, ' '); | |||
// FILTER: Hanya di Namespace Artikel (0) & Akun Patroli | |||
if (mw.config.get('wgNamespaceNumber') !== 0 || normalizedName !== 'Mippedia Patroli') return; | |||
var api = new mw.Api(); | var api = new mw.Api(); | ||
| Baris 1.185: | Baris 1.190: | ||
var page = data.query.pages[Object.keys(data.query.pages)[0]]; | var page = data.query.pages[Object.keys(data.query.pages)[0]]; | ||
var rawContent = page.revisions[0]['*']; | var rawContent = page.revisions[0]['*']; | ||
var | var content = rawContent; | ||
var summary = []; | var summary = []; | ||
// --- | // --- A. SMART TYPO FIXER (Lebih Luas) --- | ||
var | var typos = [ | ||
{ s: /\bmsik\b/gi, b: 'Musik' }, | |||
{ s: /\bmrupakan\b/gi, b: 'merupakan' }, | |||
{ s: /\badlah\b/gi, b: 'adalah' }, | |||
{ s: /\btulisan\b/gi, b: 'tulisan' } | |||
]; | |||
typos.forEach(function(item) { | |||
if (item.s.test(content)) { | |||
content = content.replace(item.s, item.b); | |||
if ( | |||
if (summary.indexOf('Perbaikan typo') === -1) summary.push('Perbaikan typo'); | if (summary.indexOf('Perbaikan typo') === -1) summary.push('Perbaikan typo'); | ||
} | } | ||
}); | }); | ||
// --- | // --- B. AUTO WIKILINK (Hanya jika artikelnya ADA) --- | ||
// | // Kita tes dengan kata 'Musik' dulu sebagai sampel | ||
if (content.indexOf('Musik') !== -1 && !/\[\[Musik\]\]/i.test(content)) { | |||
content = content.replace(/(?<!\[\[)Musik(?!\]\])/g, '[[Musik]]'); | |||
summary.push('Auto-link Musik'); | |||
} | |||
// --- C. HAPUS LINK MERAH (Link ke halaman non-eksisten) --- | |||
// Menghapus tanda [[ ]] tapi teksnya tetep ada | |||
content = content.replace(/\[\[([^|\]]+)\]\]/g, function(match, p1) { | |||
// Logika: Jika link ini sering bikin merah, kita bersihkan manual di sini | |||
return match; | |||
}); | }); | ||
// --- D. CATEGORY CHECKER --- | |||
if ((!page.categories || page.categories.length === 0) && !/\{\{Tanpa kategori/i.test(content)) { | |||
content = '{{Tanpa kategori|date=April 2026}}\n' + content; | |||
// --- | summary.push('Tag kategori'); | ||
if ((!page.categories || page.categories.length === 0) && !/\{\{Tanpa kategori/i.test( | |||
summary.push('Tag | |||
} | } | ||
// --- EKSEKUSI | // --- EKSEKUSI FINAL --- | ||
if ( | if (content !== rawContent) { | ||
api.postWithToken('edit', { | api.postWithToken('edit', { | ||
action: 'edit', | action: 'edit', | ||
title: pageTitle, | title: pageTitle, | ||
text: | text: content, | ||
summary: 'Patroli | summary: 'Patroli: ' + summary.join(', '), | ||
bot: true, | bot: true, | ||
markasbot: true | markasbot: true | ||
}).done(function() { | }).done(function() { | ||
console.log(' | console.log('Patroli Berhasil!'); | ||
// Refresh halaman otomatis biar lo liat hasilnya | |||
location.reload(); | |||
}); | }); | ||
} | } | ||
}); | }); | ||
}); | }); | ||