Lompat ke isi

MediaWiki:Common.js: Perbedaan antara revisi

Dari Wikisporta, ensiklopedia olahraga
←Membuat halaman berisi 'mw.hook('wikipage.content').add(function ($content) { // SECURITY CHECK: Hanya berjalan di HALAMAN UTAMA! // Di artikel lain kode ini OTOMATIS BERHENTI/MATI. if (!mw.config.get('wgIsMainPage')) { return; } // Cari link yang punya teks "Selengkapnya" di Halaman Utama $content.find('a').filter(function () { return $(this).text().indexOf('Selengkapnya') !== -1; }).each(function () { var $link = $(this);...'
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
 
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Baris 1: Baris 1:
mw.hook('wikipage.content').add(function ($content) {
mw.hook('wikipage.content').add(function ($content) {
     // SECURITY CHECK: Hanya berjalan di HALAMAN UTAMA!
     // KHUSUS HALAMAN UTAMA
    // Di artikel lain kode ini OTOMATIS BERHENTI/MATI.
     if (!mw.config.get('wgIsMainPage')) {
     if (!mw.config.get('wgIsMainPage')) {
         return;
         return;
     }
     }


     // Cari link yang punya teks "Selengkapnya" di Halaman Utama
     // Cari link bawaan template yang punya kata "Selengkapnya"
     $content.find('a').filter(function () {
     $content.find('a').filter(function () {
         return $(this).text().indexOf('Selengkapnya') !== -1;
         return $(this).text().indexOf('Selengkapnya') !== -1;
     }).each(function () {
     }).first().each(function () {
         var $link = $(this);
         var $originalLink = $(this);
          
         var originalUrl = $originalLink.attr('href'); // Ambil link artikel aslinya
        // Mengambil container/paragraf pembungkus teks artikel unggulan
         var $container = $originalLink.closest('p, div');
         var $container = $link.closest('p, div');


         if ($container.length && !$container.hasClass('mp-expand-processed')) {
         if ($container.length && !$container.hasClass('mp-expand-processed')) {
             // Pasang class lipatan & animasi
             // Terapkan class lipatan pada container teks
             $container.addClass('mainpage-featured-box is-collapsed mp-expand-processed');
             $container.addClass('mainpage-featured-box is-collapsed mp-expand-processed');
             $link.addClass('mainpage-readmore-link');
 
             // Buat tombol pengganti yang SELALU KELIHATAN di luar lipatan
            var $customBtn = $('<a>', {
                'class': 'custom-readmore-btn',
                'html': '(Selengkapnya.....)',
                'href': 'javascript:void(0);' // Mencegah reload sebelum diklik
            });
 
            // Sisipkan tombol buatan tepat di bawah container teks
            $container.after($customBtn);


             var isExpanded = false;
             var isExpanded = false;


             // Handle Klik Pertama & Klik Kedua
             // Handle Klik
             $link.on('click', function (e) {
             $customBtn.on('click', function (e) {
                 if (!isExpanded) {
                 if (!isExpanded) {
                    // KLIK PERTAMA: Tahan navigasi, jalankan animasi buka lipatan
                     e.preventDefault();
                     e.preventDefault();
                    // KLIK 1: Buka lipatan animasi & hilangkan efek samar
                     $container.removeClass('is-collapsed').addClass('is-expanded');
                     $container.removeClass('is-collapsed').addClass('is-expanded');
                     isExpanded = true;
                     isExpanded = true;
                }
                   
                // KLIK KEDUA: e.preventDefault() tidak dipanggil,
                    // Ubah link tombol menjadi URL artikel asli untuk klik kedua
                 // sehingga link otomatis mengarahkan ke halaman artikel aslinya!
                    $customBtn.attr('href', originalUrl);
                }
                 // KLIK 2: Karena href sudah diisi originalUrl, browser otomatis pindah halaman!
             });
             });
         }
         }
     });
     });
});
});

Revisi per 17 Oktober 2026 04.05

mw.hook('wikipage.content').add(function ($content) {
    // KHUSUS HALAMAN UTAMA
    if (!mw.config.get('wgIsMainPage')) {
        return;
    }

    // Cari link bawaan template yang punya kata "Selengkapnya"
    $content.find('a').filter(function () {
        return $(this).text().indexOf('Selengkapnya') !== -1;
    }).first().each(function () {
        var $originalLink = $(this);
        var originalUrl = $originalLink.attr('href'); // Ambil link artikel aslinya
        var $container = $originalLink.closest('p, div');

        if ($container.length && !$container.hasClass('mp-expand-processed')) {
            // Terapkan class lipatan pada container teks
            $container.addClass('mainpage-featured-box is-collapsed mp-expand-processed');

            // Buat tombol pengganti yang SELALU KELIHATAN di luar lipatan
            var $customBtn = $('<a>', {
                'class': 'custom-readmore-btn',
                'html': '(Selengkapnya.....)',
                'href': 'javascript:void(0);' // Mencegah reload sebelum diklik
            });

            // Sisipkan tombol buatan tepat di bawah container teks
            $container.after($customBtn);

            var isExpanded = false;

            // Handle Klik
            $customBtn.on('click', function (e) {
                if (!isExpanded) {
                    e.preventDefault();
                    // KLIK 1: Buka lipatan animasi & hilangkan efek samar
                    $container.removeClass('is-collapsed').addClass('is-expanded');
                    isExpanded = true;
                    
                    // Ubah link tombol menjadi URL artikel asli untuk klik kedua
                    $customBtn.attr('href', originalUrl);
                } 
                // KLIK 2: Karena href sudah diisi originalUrl, browser otomatis pindah halaman!
            });
        }
    });
});