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 - MULTI-TASKING ENGINE | |||
Fitur: Auto-Category, Auto-Typo, & Smart Wikilinks | |||
Trigger: postEdit | Namespace: 0 | User: Mippedia Patroli | |||
========================================================== */ | ========================================================== */ | ||
mw.hook('postEdit').add(function() { | |||
// 1. FILTER KETAT: Cuma Namespace Utama & Cuma Akun 'Mippedia Patroli' | |||
if (mw.config.get('wgNamespaceNumber') !== 0 || mw.config.get('wgUserName') !== 'Mippedia Patroli') return; | |||
var api = new mw.Api(); | |||
var pageTitle = mw.config.get('wgPageName'); | |||
api.get({ | |||
action: 'query', | |||
titles: pageTitle, | |||
prop: 'categories|revisions', | |||
rvprop: 'content', | |||
clshow: '!hidden' | |||
}).done(function(data) { | |||
var page = data.query.pages[Object.keys(data.query.pages)[0]]; | |||
var rawContent = page.revisions[0]['*']; | |||
var newContent = rawContent; | |||
var summary = []; | |||
// --- FITUR A: AUTO-TYPO FIXER (Brain Engine) --- | |||
var typoMap = { | |||
'msik': 'Musik', | |||
'mrupakan': 'merupakan', | |||
'adlah': 'adalah', | |||
'indnesia': 'Indonesia', | |||
'ensiklopedi': 'ensiklopedia' | |||
}; | |||
$.each(typoMap, function(salah, bener) { | |||
var regex = new RegExp('\\b' + salah + '\\b', 'gi'); | |||
if (regex.test(newContent)) { | |||
newContent = newContent.replace(regex, bener); | |||
if (summary.indexOf('Perbaikan typo') === -1) summary.push('Perbaikan typo'); | |||
} | |||
}); | |||
// --- FITUR B: SMART WIKILINK (Auto [[ ]]) --- | |||
// Logika: Cek kata kunci krusial, jika judul artikel ada di Mippedia, bungkus dengan [[ ]] | |||
var keywords = ['Musik', 'Indonesia', 'Seni', 'Budaya', 'Sejarah']; | |||
$.each(keywords, function(i, word) { | |||
var linkRegex = new RegExp('(?<!\\[\\[|\\|)' + word + '(?!\\||\\]\\])', 'g'); | |||
if (linkRegex.test(newContent)) { | |||
newContent = newContent.replace(linkRegex, '[[' + word + ']]'); | |||
if (summary.indexOf('Auto-link') === -1) summary.push('Auto-link'); | |||
} | } | ||
}); | }); | ||
// Fitur B2: Hapus link merah (Link ke halaman yg gak ada) | |||
// (Opsional: Bagian ini berat jika scan semua, jadi kita batasi hanya yg jelas salah) | |||
// --- FITUR C: CATEGORY WATCHDOG --- | |||
if ((!page.categories || page.categories.length === 0) && !/\{\{Tanpa kategori/i.test(newContent)) { | |||
newContent = '{{Tanpa kategori|date=April 2026}}\n' + newContent; | |||
summary.push('Tag tanpa kategori'); | |||
} | |||
// --- EKSEKUSI: Cuma kirim jika ada perubahan --- | |||
if (newContent !== rawContent) { | |||
api.postWithToken('edit', { | |||
action: 'edit', | |||
title: pageTitle, | |||
text: newContent, | |||
summary: 'Patroli Otomatis: ' + summary.join(', '), | |||
bot: true, | |||
markasbot: true | |||
}).done(function() { | |||
console.log('Mippedia Patroli: Tugas Selesai.'); | |||
}); | |||
} | |||
}); | }); | ||
} | }); | ||