MediaWiki:Common.js
Tampilan
Catatan: Setelah menerbitkan, Anda mungkin perlu melewati tembolok peramban web Anda untuk melihat perubahan.
- Firefox/Safari: Tekan dan tahan Shift sembari mengeklik Reload, atau tekan Ctrl-F5 atau Ctrl-R (⌘-R di Mac)
- Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R di Mac)
- Edge: Tahan Ctrl sembari mengeklik Refresh, atau tekan Ctrl-F5
mw.hook('wikipage.content').add(function ($content) {
// KHUSUS HALAMAN UTAMA
if (!mw.config.get('wgIsMainPage')) {
return;
}
// Cari link bawaan template yang berisi kata "Selengkapnya"
$content.find('a').filter(function () {
return $(this).text().indexOf('Baca selengkapnya....') !== -1;
}).first().each(function () {
var $link = $(this);
var $paragraph = $link.closest('p');
if ($paragraph.length && !$paragraph.hasClass('mp-processed')) {
$paragraph.addClass('mp-processed');
var articleUrl = $link.attr('href'); // Ambil URL artikel asli
// Ubah teks link menjadi "Baca selengkapnya...."
$link.text('Baca selengkapnya....');
$link.addClass('featured-readmore-link');
// Ambil isi teks paragraf, lalu pisahkan link dari teks utama
var $linkClone = $link.clone();
$link.remove(); // Hapus link dari posisi asli di paragraf
var textHtml = $paragraph.html(); // Sisa teks artikel
// Bungkus teks ke dalam kontainer lipatan
var $collapsibleDiv = $('<div>', {
'class': 'mp-collapsible-text',
'html': textHtml
});
// Bungkus link di dalam wrapper bawah
var $wrapperDiv = $('<div>', {
'class': 'mp-readmore-wrapper'
});
$wrapperDiv.append($linkClone);
// Susun ulang struktur HTML di dalam paragraf
$paragraph.empty().append($collapsibleDiv).append($wrapperDiv);
var isExpanded = false;
// Handle Klik dengan Animasi Mulus
mw.loader.using('mediawiki.util', function () {
$wrapperDiv.on('click', 'a', function (e) {
if (!isExpanded) {
// KLIK PERTAMA: Buka lipatan teks dengan animasi halus ke bawah
e.preventDefault();
isExpanded = true;
$collapsibleDiv.addClass('is-expanded');
} else {
// KLIK KEDUA: Langsung arahkan ke halaman artikel asli
window.location.href = articleUrl;
}
});
});
}
});
});