Lompat ke isi

MediaWiki:Common.js

Dari Mippedia bahasa Indonesia, ensiklopedia umum
Revisi sejak 9 April 2026 20.43 oleh Admin (bicara | kontrib)

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
/* Script Estimasi Waktu Baca - Spesialis Mobile (Minerva) & Desktop */
$(document).ready(function() {
    // Hanya jalan di halaman artikel asli
    if (mw.config.get('wgIsArticle') && mw.config.get('wgAction') === 'view' && mw.config.get('wgNamespaceNumber') === 0) {
        
        function hitungWaktuBaca() {
            // Ambil teks dari konten utama
            var content = $('#mw-content-text').text();
            
            // Hitung jumlah kata (asumsi rata-rata orang baca 200 kata per menit)
            var wordsPerMinute = 200;
            var textLength = content.split(/\s+/).length; // Pecah berdasarkan spasi
            var readingTime = Math.ceil(textLength / wordsPerMinute);
            
            // Bikin elemen tampilannya
            var icon = '🕒'; // Emoji jam biar simpel dan ringan
            var label = (readingTime <= 1) ? 'Kurang dari 1 menit' : readingTime + ' menit';
            
            var html = '<div id="reading-time-auto" style="font-size: 0.9em; color: #54595d; margin-bottom: 15px; display: flex; align-items: center; font-family: sans-serif;">';
            html += '<span style="margin-right: 5px;">' + icon + '</span>';
            html += '<span>Estimasi waktu baca: <b>' + label + '</b></span>';
            html += '</div>';

            // PENEMPELAN TARGET:
            // Di Minerva (HP), judul biasanya ada di .page-heading
            // Di Vector (Desktop), judul ada di #firstHeading
            if ($('.page-heading').length) {
                $('.page-heading').after(html); // Target Mobile
            } else if ($('#firstHeading').length) {
                $('#firstHeading').after(html); // Target Desktop
            }
        }

        // Jalankan fungsi
        hitungWaktuBaca();
    }
});


/* Script Tombol Back to Top (Spesial Mobile) */
$(document).ready(function() {
    // Bikin tombolnya lewat JS biar gak ribet edit CSS/HTML
    var btnHtml = '<div id="backToTop" style="display:none; position:fixed; bottom:80px; right:20px; z-index:9999; background:#36c; color:#fff; width:45px; height:45px; border-radius:50%; text-align:center; line-height:45px; font-size:24px; cursor:pointer; box-shadow: 0 4px 6px rgba(0,0,0,0.3); opacity: 0.8;">↑</div>';
    $('body').append(btnHtml);

    // Fungsi munculin tombol pas di-scroll
    $(window).scroll(function() {
        if ($(this).scrollTop() > 300) {
            $('#backToTop').fadeIn();
        } else {
            $('#backToTop').fadeOut();
        }
    });

    // Fungsi pas tombol diklik
    $('#backToTop').click(function() {
        $('html, body').animate({scrollTop: 0}, 600);
        return false;
    });
});


/* 2. Notif Rekomendasi Pintar (Premium Bottom Toast) */
$(document).ready(function() {
    if (mw.config.get('wgIsArticle') && mw.config.get('wgNamespaceNumber') === 0) {
        $(window).scroll(function() {
            // Muncul kalau sudah scroll 92% halaman (agak telat dikit biar pas di footer)
            if($(window).scrollTop() + $(window).height() > $(document).height() - 80) {
                if ($('#exit-recommend').length === 0) {
                    
                    // Style dasar dengan Opacity 0 buat awal animasi
                    var toastHtml = '<div id="exit-recommend" style="position:fixed; bottom:140px; left:20px; right:20px; background:rgba(54, 100, 204, 0.95); color:#fff; padding:18px; border-radius:15px; z-index:9998; box-shadow:0 10px 30px rgba(0,0,0,0.3); backdrop-filter: blur(5px); opacity:0; transform: translateY(20px); transition: all 0.6s cubic-bezier(0.23, 1, 0.32, 1); border-left: 6px solid #ff0;">' +
                        '<div style="font-size:1.15em; margin-bottom:6px; font-weight:bold; letter-spacing:0.5px;">Suka artikel ini?</div>' +
                        '<div style="font-size:0.95em; margin-bottom:12px; color:#eaecf0;">Coba cek halaman acak lainnya di Mippedia!</div>' +
                        '<a href="/wiki/Special:Random" style="display:inline-block; background:#ff0; color:#000; padding:7px 20px; border-radius:25px; text-decoration:none; font-weight:bold; font-size:0.9em; box-shadow: 0 2px 5px rgba(0,0,0,0.2); transition: transform 0.2s ease;">Klik di Sini »</a>' +
                        '</div>';
                        
                    $('body').append(toastHtml);
                    
                    // Trigger animasi MUNCUL (Fade In + Slide Up)
                    setTimeout(function() {
                        $('#exit-recommend').css({'opacity': '1', 'transform': 'translateY(0)'});
                    }, 100); // Delay kecil biar CSS render dulu

                    // Trigger animasi HILANG (Fade Out + Slide Down) otomatis dalam 12 detik
                    setTimeout(function() {
                        $('#exit-recommend').css({'opacity': '0', 'transform': 'translateY(20px)'});
                        // Hapus elemen dari DOM setelah animasi selesai
                        setTimeout(function() { $('#exit-recommend').remove(); }, 600);
                    }, 12000);
                }
            }
        });
    }
});