MediaWiki:Common.js: Perbedaan antara revisi
Tampilan
Tidak ada ringkasan suntingan Tanda: Dikembalikan Suntingan perangkat seluler Suntingan peramban seluler |
Tidak ada ringkasan suntingan Tanda: Dikembalikan Suntingan perangkat seluler Suntingan peramban seluler |
||
| Baris 1: | Baris 1: | ||
/* Script Otomatis | /* Script Injeksi RelatedArticles Otomatis ke Footer */ | ||
$(document).ready(function() { | $(document).ready(function() { | ||
if (mw.config.get('wgIsArticle') && mw.config.get('wgAction') === 'view' && mw.config.get('wgNamespaceNumber') === 0) { | |||
// 1. Cek dulu, apakah di halaman ini udah ada kode {{#related}} manual? | |||
// Kita cek lewat elemen kelas bawaan ekstensi RelatedArticles | |||
if ($('.ext-related-articles-card').length || $('div[id^="related"]').length > 0) { | |||
return; // Kalau udah ada, berhenti biar gak numpuk | |||
} | |||
var categories = mw.config.get('wgCategories'); | |||
if (categories.length > 0) { | |||
var targetCat = categories.filter(function(c){ return !c.match(/halaman|artikel|maintenance/i); })[0] || categories[0]; | |||
// 2. Ambil daftar artikel dalam kategori | |||
$.getJSON(mw.util.wikiScript('api'), { | |||
action: 'query', | |||
list: 'categorymembers', | |||
cmtitle: 'Category:' + targetCat, | |||
cmlimit: 30, | |||
format: 'json' | |||
}, function(data) { | |||
var members = data.query.categorymembers; | |||
if (!members) return; | |||
var currentTitle = mw.config.get('wgPageName').replace(/_/g, ' '); | |||
var filtered = members.filter(function(m) { return m.title !== currentTitle; }); | |||
// Acak dan ambil 3 | |||
filtered.sort(function() { return 0.5 - Math.random(); }); | |||
var chosen = filtered.slice(0, 3); | |||
if (chosen.length > 0) { | |||
// 3. Bikin string perintah manual buat ekstensi RelatedArticles | |||
var relatedWikiText = ""; | |||
var | chosen.forEach(function(item) { | ||
relatedWikiText += '{{#related:' + item.title + '}}'; | |||
}); | }); | ||
// 4. Perintah "Pinter": Nyuruh server ngerender wikitext jadi HTML asli ekstensi | |||
$.getJSON(mw.util.wikiScript('api'), { | |||
action: 'parse', | |||
// | text: relatedWikiText, | ||
// | contentmodel: 'wikitext', | ||
prop: 'text', | |||
disablelimitreport: 1, | |||
format: 'json' | |||
}, function(parseData) { | |||
var finalHtml = parseData.parse.text['*']; | |||
// 5. Tempel hasilnya di bawah artikel | |||
var container = $('<div id="auto-related-wrapper" style="clear:both; margin-top:20px;"></div>').append(finalHtml); | |||
// Target Minerva (HP) dan Vector (Desktop) | |||
if ($('.minerva-footer').length) { | if ($('.minerva-footer').length) { | ||
$('.minerva-footer').before( | $('.minerva-footer').before(container); | ||
} else if ($('#catlinks').length) { | } else if ($('#catlinks').length) { | ||
$('#catlinks').after( | $('#catlinks').after(container); | ||
} else { | } else { | ||
$('#mw-content-text').after( | $('#mw-content-text').after(container); | ||
} | } | ||
} | }); | ||
} | } | ||
} | }); | ||
} | } | ||
} | } | ||
}); | }); | ||
Revisi per 9 April 2026 19.55
/* Script Injeksi RelatedArticles Otomatis ke Footer */
$(document).ready(function() {
if (mw.config.get('wgIsArticle') && mw.config.get('wgAction') === 'view' && mw.config.get('wgNamespaceNumber') === 0) {
// 1. Cek dulu, apakah di halaman ini udah ada kode {{#related}} manual?
// Kita cek lewat elemen kelas bawaan ekstensi RelatedArticles
if ($('.ext-related-articles-card').length || $('div[id^="related"]').length > 0) {
return; // Kalau udah ada, berhenti biar gak numpuk
}
var categories = mw.config.get('wgCategories');
if (categories.length > 0) {
var targetCat = categories.filter(function(c){ return !c.match(/halaman|artikel|maintenance/i); })[0] || categories[0];
// 2. Ambil daftar artikel dalam kategori
$.getJSON(mw.util.wikiScript('api'), {
action: 'query',
list: 'categorymembers',
cmtitle: 'Category:' + targetCat,
cmlimit: 30,
format: 'json'
}, function(data) {
var members = data.query.categorymembers;
if (!members) return;
var currentTitle = mw.config.get('wgPageName').replace(/_/g, ' ');
var filtered = members.filter(function(m) { return m.title !== currentTitle; });
// Acak dan ambil 3
filtered.sort(function() { return 0.5 - Math.random(); });
var chosen = filtered.slice(0, 3);
if (chosen.length > 0) {
// 3. Bikin string perintah manual buat ekstensi RelatedArticles
var relatedWikiText = "";
chosen.forEach(function(item) {
relatedWikiText += '{{#related:' + item.title + '}}';
});
// 4. Perintah "Pinter": Nyuruh server ngerender wikitext jadi HTML asli ekstensi
$.getJSON(mw.util.wikiScript('api'), {
action: 'parse',
text: relatedWikiText,
contentmodel: 'wikitext',
prop: 'text',
disablelimitreport: 1,
format: 'json'
}, function(parseData) {
var finalHtml = parseData.parse.text['*'];
// 5. Tempel hasilnya di bawah artikel
var container = $('<div id="auto-related-wrapper" style="clear:both; margin-top:20px;"></div>').append(finalHtml);
// Target Minerva (HP) dan Vector (Desktop)
if ($('.minerva-footer').length) {
$('.minerva-footer').before(container);
} else if ($('#catlinks').length) {
$('#catlinks').after(container);
} else {
$('#mw-content-text').after(container);
}
});
}
});
}
}
});