Lompat ke isi

MediaWiki:Common.js: Perbedaan antara revisi

Dari Mippedia bahasa Indonesia, ensiklopedia umum
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Baris 61: Baris 61:




/* Auto-Add Source on Copy */
/* 1. Dark Mode Sederhana */
$(document).ready(function() {
    var isDark = localStorage.getItem('darkMode') === 'enabled';
   
    // Bikin tombol melayang di pojok kiri bawah (biar gak bentrok sama Back to Top di kanan)
    var darkBtn = $('<div id="dark-toggle" style="position:fixed; bottom:80px; left:20px; z-index:9999; background:#202122; color:#fff; width:45px; height:45px; border-radius:50%; text-align:center; line-height:45px; font-size:20px; cursor:pointer; opacity:0.7; box-shadow: 0 4px 6px rgba(0,0,0,0.3);">🌓</div>');
    $('body').append(darkBtn);
 
    function enableDark() {
        $('body').css({'background-color': '#101418', 'color': '#eaecf0'});
        $('.mw-body, #content, .page-heading, #mw-content-text').css({'background-color': '#101418', 'color': '#eaecf0'});
        $('a').css('color', '#8ab4f8');
        localStorage.setItem('darkMode', 'enabled');
    }
 
    function disableDark() {
        location.reload(); // Paling aman buat balikin style asli MediaWiki
        localStorage.setItem('darkMode', 'disabled');
    }
 
    if (isDark) enableDark();
 
    $('#dark-toggle').click(function() {
        isDark = localStorage.getItem('darkMode') === 'enabled';
        if (!isDark) enableDark(); else disableDark();
    });
});
 
/* 2. Klik Judul buat Copy Link (Anchor) */
$(document).ready(function() {
$(document).ready(function() {
     if (mw.config.get('wgIsArticle')) {
     if (mw.config.get('wgIsArticle')) {
         document.addEventListener('copy', function(e) {
         $('#mw-content-text').find('h2, h3, h4').each(function() {
             var selection = window.getSelection();
             var id = $(this).attr('id');
             if (selection.toString().length > 50) { // Hanya untuk copas panjang
             if (id) {
                var pagelink = "\n\nSumber: " + document.location.href + "\n© Mippedia Community";
                $(this).css('cursor', 'pointer').click(function() {
                var copytext = selection + pagelink;
                    var link = window.location.href.split('#')[0] + '#' + id;
                var newdiv = document.createElement('div');
                    navigator.clipboard.writeText(link);
                newdiv.style.position = 'absolute';
                     alert('Link bagian ini berhasil disalin!');
                newdiv.style.left = '-99999px';
                 });
                document.body.appendChild(newdiv);
                newdiv.innerHTML = copytext;
                selection.selectAllChildren(newdiv);
                window.setTimeout(function() {
                     document.body.removeChild(newdiv);
                 }, 0);
             }
             }
         });
         });
     }
     }
});
});

Revisi per 9 April 2026 20.27

/* 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;
    });
});


/* 1. Dark Mode Sederhana */
$(document).ready(function() {
    var isDark = localStorage.getItem('darkMode') === 'enabled';
    
    // Bikin tombol melayang di pojok kiri bawah (biar gak bentrok sama Back to Top di kanan)
    var darkBtn = $('<div id="dark-toggle" style="position:fixed; bottom:80px; left:20px; z-index:9999; background:#202122; color:#fff; width:45px; height:45px; border-radius:50%; text-align:center; line-height:45px; font-size:20px; cursor:pointer; opacity:0.7; box-shadow: 0 4px 6px rgba(0,0,0,0.3);">🌓</div>');
    $('body').append(darkBtn);

    function enableDark() {
        $('body').css({'background-color': '#101418', 'color': '#eaecf0'});
        $('.mw-body, #content, .page-heading, #mw-content-text').css({'background-color': '#101418', 'color': '#eaecf0'});
        $('a').css('color', '#8ab4f8');
        localStorage.setItem('darkMode', 'enabled');
    }

    function disableDark() {
        location.reload(); // Paling aman buat balikin style asli MediaWiki
        localStorage.setItem('darkMode', 'disabled');
    }

    if (isDark) enableDark();

    $('#dark-toggle').click(function() {
        isDark = localStorage.getItem('darkMode') === 'enabled';
        if (!isDark) enableDark(); else disableDark();
    });
});

/* 2. Klik Judul buat Copy Link (Anchor) */
$(document).ready(function() {
    if (mw.config.get('wgIsArticle')) {
        $('#mw-content-text').find('h2, h3, h4').each(function() {
            var id = $(this).attr('id');
            if (id) {
                $(this).css('cursor', 'pointer').click(function() {
                    var link = window.location.href.split('#')[0] + '#' + id;
                    navigator.clipboard.writeText(link);
                    alert('Link bagian ini berhasil disalin!');
                });
            }
        });
    }
});