Lompat ke isi

MediaWiki:Common.js: Perbedaan antara revisi

Dari Wikisporta, ensiklopedia olahraga
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Baris 13: Baris 13:


         if ($container.length && !$container.hasClass('mp-processed')) {
         if ($container.length && !$container.hasClass('mp-processed')) {
             $container.addClass('mp-featured-text is-collapsed mp-processed');
             $container.addClass('mp-featured-paragraph mp-processed');
            $link.addClass('featured-readmore-link');


             // Pindahkan link ke luar container agar posisinya berada tepat di bawah pemotongan 3 baris
             // Simpan HTML versi lengkap asli (untuk dibuka saat klik pertama)
             var $wrapper = $('<div>', {'class': 'featured-readmore-wrapper'});
            var fullHtml = $container.html();
             $link.detach().appendTo($wrapper);
 
             $container.after($wrapper);
            // Ambil teks bersih dari paragraf tanpa link untuk dipotong
            var $clone = $container.clone();
            $clone.find('a').remove();
            var fullText = $clone.text().trim();
 
            // Tentukan batas karakter agar pas sekitar 3 baris tampilan HP/Desktop
             var charLimit = 145;
            var truncatedText = fullText.length > charLimit ? fullText.substring(0, charLimit).trim() + '...' : fullText;
 
             // Ambil HTML link asli untuk digabung secara inline
            var linkHtml = $link[0].outerHTML;
 
            // Gabungkan teks terpotong dengan link secara inline
            var collapsedHtml = truncatedText + ' ' + linkHtml;
 
            // Render kondisi awal (tertutup/terpotong)
             $container.html(collapsedHtml);


             var isExpanded = false;
             var isExpanded = false;


             // Handle Mekanisme 2x Klik
             // Handle Klik dengan Event Delegation pada container
             $link.on('click', function (e) {
             $container.on('click', 'a', function (e) {
                 if (!isExpanded) {
                var $clickedLink = $(this);
                    // KLIK 1: Buka lipatan 3 baris menjadi full teks tanpa reload
               
                    e.preventDefault();
                 if ($clickedLink.text().indexOf('Selengkapnya') !== -1) {
                    $container.removeClass('is-collapsed').addClass('is-expanded');
                    if (!isExpanded) {
                    isExpanded = true;
                        // KLIK PERTAMA: Kembalikan teks ke versi lengkap (fullHtml)
                        e.preventDefault();
                        $container.html(fullHtml);
                        isExpanded = true;
                    }
                    // KLIK KEDUA: Karena HTML sudah kembali ke fullHtml,
                    // link otomatis berfungsi normal mengarah ke halaman artikel asli!
                 }
                 }
                // KLIK 2: Mengarah langsung ke halaman artikel asli
             });
             });
         }
         }
     });
     });
});
});

Revisi per 17 Oktober 2026 04.22

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('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');

            // Simpan HTML versi lengkap asli (untuk dibuka saat klik pertama)
            var fullHtml = $container.html();

            // Ambil teks bersih dari paragraf tanpa link untuk dipotong
            var $clone = $container.clone();
            $clone.find('a').remove();
            var fullText = $clone.text().trim();

            // Tentukan batas karakter agar pas sekitar 3 baris tampilan HP/Desktop
            var charLimit = 145; 
            var truncatedText = fullText.length > charLimit ? fullText.substring(0, charLimit).trim() + '...' : fullText;

            // Ambil HTML link asli untuk digabung secara inline
            var linkHtml = $link[0].outerHTML;

            // Gabungkan teks terpotong dengan link secara inline
            var collapsedHtml = truncatedText + ' ' + linkHtml;

            // Render kondisi awal (tertutup/terpotong)
            $container.html(collapsedHtml);

            var isExpanded = false;

            // Handle Klik dengan Event Delegation pada container
            $container.on('click', 'a', function (e) {
                var $clickedLink = $(this);
                
                if ($clickedLink.text().indexOf('Selengkapnya') !== -1) {
                    if (!isExpanded) {
                        // KLIK PERTAMA: Kembalikan teks ke versi lengkap (fullHtml)
                        e.preventDefault();
                        $container.html(fullHtml);
                        isExpanded = true;
                    }
                    // KLIK KEDUA: Karena HTML sudah kembali ke fullHtml, 
                    // link otomatis berfungsi normal mengarah ke halaman artikel asli!
                }
            });
        }
    });
});