MediaWiki:Common.js: Perbedaan antara revisi
Tampilan
Wikisporta (bicara | kontrib) Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
Wikisporta (bicara | kontrib) Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
||
| Baris 10: | Baris 10: | ||
}).first().each(function () { | }).first().each(function () { | ||
var $link = $(this); | var $link = $(this); | ||
var $ | var $container = $link.closest('p'); // Paragraf teks artikel unggulan | ||
if ($ | if ($container.length && !$container.hasClass('mp-processed')) { | ||
$ | $container.addClass('mp-featured-paragraph mp-processed'); | ||
var articleUrl = $link.attr('href'); // Ambil URL artikel asli | var articleUrl = $link.attr('href'); // Ambil URL artikel asli | ||
// | // Ambil teks bersih dari paragraf tanpa link | ||
$ | var $clone = $container.clone(); | ||
$ | $clone.find('a').remove(); | ||
var fullText = $clone.text().trim(); | |||
// | // Batasi karakter untuk tampilan awal (sekitar 3 baris) | ||
var | var charLimit = 135; | ||
var truncatedText = fullText.length > charLimit ? fullText.substring(0, charLimit).trim() + '...' : fullText; | |||
var remainingText = fullText.length > charLimit ? fullText.substring(charLimit) : ''; | |||
var | // Buat HTML dengan teks baru "Baca selengkapnya...." | ||
var linkHtml = '<a class="featured-readmore-link" href="' + articleUrl + '">Baca selengkapnya....</a>'; | |||
var collapsedHtml = '<span class="mp-text-main">' + truncatedText + ' </span>' + | |||
var | '<span class="mp-text-extra" style="display:none;">' + remainingText + ' </span>' + | ||
linkHtml; | |||
// | // Render ke dalam paragraf | ||
$container.html(collapsedHtml); | |||
$ | |||
var isExpanded = false; | var isExpanded = false; | ||
// Handle Klik dengan Animasi Mulus | // Handle Klik dengan Animasi Mulus | ||
$container.on('click', '.featured-readmore-link', function (e) { | |||
if (!isExpanded) { | |||
e.preventDefault(); | |||
isExpanded = true; | |||
// KLIK PERTAMA: Munculkan sisa teks dengan animasi fade-in yang halus | |||
var $extra = $container.find('.mp-text-extra'); | |||
$extra.css({ display: 'inline', opacity: 0 }).animate({ opacity: 1 }, 400); | |||
} | |||
// KLIK KEDUA: Otomatis mengarahkan ke halaman artikel asli | |||
}); | }); | ||
} | } | ||
}); | }); | ||
}); | }); | ||
Revisi per 17 Oktober 2026 04.43
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 $container = $link.closest('p'); // Paragraf teks artikel unggulan
if ($container.length && !$container.hasClass('mp-processed')) {
$container.addClass('mp-featured-paragraph mp-processed');
var articleUrl = $link.attr('href'); // Ambil URL artikel asli
// Ambil teks bersih dari paragraf tanpa link
var $clone = $container.clone();
$clone.find('a').remove();
var fullText = $clone.text().trim();
// Batasi karakter untuk tampilan awal (sekitar 3 baris)
var charLimit = 135;
var truncatedText = fullText.length > charLimit ? fullText.substring(0, charLimit).trim() + '...' : fullText;
var remainingText = fullText.length > charLimit ? fullText.substring(charLimit) : '';
// Buat HTML dengan teks baru "Baca selengkapnya...."
var linkHtml = '<a class="featured-readmore-link" href="' + articleUrl + '">Baca selengkapnya....</a>';
var collapsedHtml = '<span class="mp-text-main">' + truncatedText + ' </span>' +
'<span class="mp-text-extra" style="display:none;">' + remainingText + ' </span>' +
linkHtml;
// Render ke dalam paragraf
$container.html(collapsedHtml);
var isExpanded = false;
// Handle Klik dengan Animasi Mulus
$container.on('click', '.featured-readmore-link', function (e) {
if (!isExpanded) {
e.preventDefault();
isExpanded = true;
// KLIK PERTAMA: Munculkan sisa teks dengan animasi fade-in yang halus
var $extra = $container.find('.mp-text-extra');
$extra.css({ display: 'inline', opacity: 0 }).animate({ opacity: 1 }, 400);
}
// KLIK KEDUA: Otomatis mengarahkan ke halaman artikel asli
});
}
});
});