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.246: | Baris 1.246: | ||
/* ========================================================== | /* ========================================================== | ||
🚀 MIPPEDIA COMMAND CENTER: | 🚀 MIPPEDIA COMMAND CENTER: ULTIMATE SYNC (V4) | ||
Fitur: Hidden Editor | Global User Sync | Auto-Purge | |||
========================================================== */ | ========================================================== */ | ||
(function($, mw) { | (function($, mw) { | ||
| Baris 1.253: | Baris 1.253: | ||
var conf = mw.config.get(['wgNamespaceNumber', 'wgAction', 'wgPageName', 'wgIsMainPage', 'wgUserName']); | var conf = mw.config.get(['wgNamespaceNumber', 'wgAction', 'wgPageName', 'wgIsMainPage', 'wgUserName']); | ||
// | // Hanya jalan untuk pengguna login di halaman artikel | ||
if (conf.wgNamespaceNumber !== 0 || conf.wgAction !== 'view' || conf.wgIsMainPage || conf.wgUserName === null) return; | if (conf.wgNamespaceNumber !== 0 || conf.wgAction !== 'view' || conf.wgIsMainPage || conf.wgUserName === null) return; | ||
$(document).ready(function() { | $(document).ready(function() { | ||
var currentTitle = conf.wgPageName; | var currentTitle = conf.wgPageName; | ||
var | var host = window.location.hostname; | ||
var langKey = host.indexOf('en.') !== -1 ? 'en' : (host.indexOf('concise.') !== -1 ? 'concise' : 'id'); | |||
$.ajax({ | $.ajax({ | ||
| Baris 1.274: | Baris 1.274: | ||
var targetDesc = (fullData[currentTitle] && fullData[currentTitle][langKey]) ? fullData[currentTitle][langKey].trim() : ""; | var targetDesc = (fullData[currentTitle] && fullData[currentTitle][langKey]) ? fullData[currentTitle][langKey].trim() : ""; | ||
executeSync(currentTitle, targetDesc); | |||
} catch (e) { console.log("Mippedia | } catch (e) { console.log("Mippedia: Data center connection secured."); } | ||
} | } | ||
}); | }); | ||
function | function executeSync(title, centerDesc) { | ||
var api = new mw.Api(); | var api = new mw.Api(); | ||
api.get({ action: 'query', prop: 'revisions', titles: title, rvprop: 'content', formatversion: 2 }).done(function(data) { | api.get({ action: 'query', prop: 'revisions', titles: title, rvprop: 'content', formatversion: 2 }).done(function(data) { | ||
var content = data.query.pages[0].revisions[0].content; | var content = data.query.pages[0].revisions[0].content; | ||
var | // Regex untuk mendeteksi SHORTDESC baik yang polos maupun yang tersembunyi | ||
var | var shortDescRegex = /(?:)?\n?/gi; | ||
var | var hasLocal = shortDescRegex.test(content); | ||
var localDescMatch = content.match(/\{\{SHORTDESC:(.*?)\}\}/i); | |||
var currentLocalDesc = localDescMatch ? localDescMatch[1].trim() : ""; | |||
// AKSI | // AKSI A: Hapus jika di pusat kosong tapi di artikel ada | ||
if ( | if (centerDesc === "" && hasLocal) { | ||
savePage(title, content.replace(shortDescRegex, ""), "Purge out-of-sync metadata"); | |||
} | } | ||
// AKSI | // AKSI B: Update atau Tambah jika ada perbedaan | ||
else if ( | else if (centerDesc !== "" && centerDesc !== currentLocalDesc) { | ||
var cleanContent = content.replace(shortDescRegex, ""); | |||
var | // Kunci "Tersembunyi": Membungkus dalam HTML comment agar samar di editor | ||
// | var hiddenMetadata = "{{SHORTDESC:" + centerDesc + "}}\n"; | ||
var | savePage(title, hiddenMetadata + cleanContent, "Synchronize metadata: " + centerDesc); | ||
} | } | ||
}); | }); | ||
} | } | ||
function | function savePage(title, text, summary) { | ||
new mw.Api().postWithEditToken({ | new mw.Api().postWithEditToken({ | ||
action: 'edit', | action: 'edit', | ||
| Baris 1.309: | Baris 1.309: | ||
text: text, | text: text, | ||
summary: '🤖 ' + summary, | summary: '🤖 ' + summary, | ||
minor | minor: true // Ditandai sebagai suntingan kecil agar tidak mengganggu | ||
}).done(function() { | |||
console.log("Mippedia: Artikel '" + title + "' berhasil disinkronkan."); | |||
}); | }); | ||
} | } | ||
}); | }); | ||
})(jQuery, mediaWiki); | })(jQuery, mediaWiki); | ||