MediaWiki:Common.js
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;
});
});
/* 1. Lightbox Gambar Sederhana */
$(document).ready(function() {
if (mw.config.get('wgAction') === 'view') {
$('.mw-file-description, .image').click(function(e) {
e.preventDefault();
var imgUrl = $(this).find('img').attr('src');
var overlay = $('<div id="img-overlay" style="position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.85); z-index:10000; display:flex; align-items:center; justify-content:center; cursor:pointer;"></div>');
var bigImg = $('<img src="' + imgUrl + '" style="max-width:90%; max-height:90%; border: 3px solid #fff; border-radius:5px;">');
overlay.append(bigImg);
$('body').append(overlay);
overlay.click(function() { $(this).remove(); });
});
}
});
/* 2. Notif Rekomendasi Pintar (Bottom Toast) */
$(document).ready(function() {
if (mw.config.get('wgIsArticle') && mw.config.get('wgNamespaceNumber') === 0) {
$(window).scroll(function() {
// Muncul kalau sudah scroll 90% halaman
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
if ($('#exit-recommend').length === 0) {
var toast = $('<div id="exit-recommend" style="position:fixed; bottom:20px; left:20px; right:20px; background:#36c; color:#fff; padding:15px; border-radius:10px; z-index:9998; box-shadow:0 -2px 10px rgba(0,0,0,0.2); animation: slideUp 0.5s ease;"></div>');
toast.html('<b>Suka artikel ini?</b><br>Coba cek halaman acak lainnya di Mippedia! <br><a href="/wiki/Special:Random" style="color:#ff0; font-weight:bold;">Klik di Sini »</a>');
$('body').append(toast);
// Hilang otomatis dalam 8 detik
setTimeout(function() { $('#exit-recommend').fadeOut(); }, 8000);
}
}
});
}
});
// CSS Animation buat toast
$("<style>").prop("type", "text/css").html("@keyframes slideUp { from { bottom: -100px; } to { bottom: 20px; } }").appendTo("head");