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 | 🚀 MIPPEDIA DATA BRIDGE: OFFICIAL EXTENSION INJECTOR | ||
Fungsi: | Fungsi: Menyuntikkan kode {{SHORTDESC:}} secara permanen | ||
ke database artikel agar muncul di hasil pencarian. | |||
========================================================== */ | ========================================================== */ | ||
(function($, mw) { | (function($, mw) { | ||
"use strict"; | "use strict"; | ||
// | // Hanya jalankan di artikel asli (Namespace 0) saat dilihat oleh user | ||
var conf = mw.config.get(['wgNamespaceNumber', 'wgAction', 'wgPageName', 'wgIsMainPage']); | var conf = mw.config.get(['wgNamespaceNumber', 'wgAction', 'wgPageName', 'wgIsMainPage', 'wgArticleId']); | ||
if (conf.wgNamespaceNumber !== 0 || conf.wgAction !== 'view' || conf.wgIsMainPage) return; | if (conf.wgNamespaceNumber !== 0 || conf.wgAction !== 'view' || conf.wgIsMainPage) return; | ||
$(document).ready(function() { | $(document).ready(function() { | ||
var currentTitle = conf.wgPageName; | |||
var host = window.location.hostname; | var host = window.location.hostname; | ||
// 1. | // 1. Tentukan bahasa berdasarkan subdomain | ||
var langKey = 'id'; | var langKey = 'id'; | ||
if (host.indexOf('en.') !== -1) langKey = 'en'; | if (host.indexOf('en.') !== -1) langKey = 'en'; | ||
if (host.indexOf('concise.') !== -1) langKey = 'concise'; | if (host.indexOf('concise.') !== -1) langKey = 'concise'; | ||
// 2. Ambil data dari | // 2. Ambil data dari Pusat (Mippedia Data) | ||
$.ajax({ | $.ajax({ | ||
url: 'https://data.mippedia.org/api.php', | url: 'https://data.mippedia.org/api.php', | ||
data: { | data: { action: 'query', prop: 'revisions', titles: 'MediaWiki:ShortDesc-Data.json', rvprop: 'content', format: 'json', origin: '*' }, | ||
dataType: 'jsonp', | dataType: 'jsonp', | ||
success: function(res) { | success: function(res) { | ||
| Baris 1.287: | Baris 1.281: | ||
if (myData && myData[langKey]) { | if (myData && myData[langKey]) { | ||
var | var targetDesc = myData[langKey]; | ||
checkAndInject(currentTitle, targetDesc); | |||
} | |||
} catch (e) { console.log("Mippedia: JSON Sync Error."); } | |||
} | |||
}); | |||
// 3. Fungsi Cek & Suntik via API | |||
function checkAndInject(title, desc) { | |||
var api = new mw.Api(); | |||
// Ambil konten artikel untuk cek apakah sudah ada {{SHORTDESC:}} | |||
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 shortDescPattern = /\{\{SHORTDESC:.*?\}\}/i; | |||
// Jika belum ada kodenya, atau deskripsinya beda dengan di Mippedia Data | |||
if (!shortDescPattern.test(content)) { | |||
console.log("Mippedia: Injecting official ShortDesc..."); | |||
var newContent = '{{SHORTDESC:' + desc + '}}\n' + content; | |||
// Simpan otomatis ke database tanpa membebani user | |||
api.postWithEditToken({ | |||
action: 'edit', | |||
title: title, | |||
text: newContent, | |||
summary: 'Mippedia System: Auto-synced Short Description from Data Center' | |||
}).done(function() { | |||
console.log("Mippedia: Sync Complete. Metadata is now live."); | |||
// Optional: reload jika ingin langsung lihat hasilnya | |||
}); | |||
console.log("Mippedia: Metadata | |||
} | |||
} | } | ||
} | }); | ||
} | } | ||
}); | }); | ||
})(jQuery, mediaWiki); | })(jQuery, mediaWiki); | ||