MediaWiki:Common.js
From Sanatan Hindu Dharma
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* === Move Category Links Above Footer === */
$(document).ready(function () {
var catlinks = $('#catlinks');
var footer = $('.mw-footer, footer, #footer'); // works with most skins
var content = $('#bodyContent, #content, .mw-body');
if (catlinks.length && footer.length) {
// Move categories just before footer
catlinks.insertBefore(footer);
} else if (catlinks.length && content.length) {
// Fallback: move it to the end of main content
catlinks.appendTo(content);
}
});
/* === Floating Upload Button === */
$(document).ready(function() {
if (mw.config.get('wgNamespaceNumber') >= 0) { // Only show on normal pages
var pageName = mw.config.get('wgPageName');
var uploadUrl = mw.util.getUrl('Form:UploadVideo', { 'page': pageName });
$('<div style="position:fixed; bottom:20px; right:20px; background:#007bff; color:white; padding:10px; border-radius:5px; cursor:pointer; font-weight:bold; z-index:9999;">Upload a Video</div>')
.click(function() {
window.location.href = uploadUrl;
}).appendTo('body');
}
});
/* === Responsive Slider (mw-slider) === */
(function () {
function initSliders() {
var sliders = document.querySelectorAll('.mw-slider');
sliders.forEach(function (slider) {
if (slider._mwSliderInited) return;
slider._mwSliderInited = true;
var track = slider.querySelector('.mw-slider-track');
var items = Array.from(slider.querySelectorAll('.mw-slider-item'));
var btnPrev = slider.querySelector('.mw-slider-btn.prev');
var btnNext = slider.querySelector('.mw-slider-btn.next');
var currentIndex = 0;
function getItemsToShow() {
var w = window.innerWidth;
if (w <= 600) return 1;
if (w <= 900) return 2;
return 3;
}
function update() {
var itemsToShow = getItemsToShow();
var itemRect = items[0].getBoundingClientRect();
var gap = parseFloat(getComputedStyle(track).gap || 16);
var translateX = -currentIndex * (itemRect.width + gap);
track.style.transform = 'translateX(' + translateX + 'px)';
btnPrev.disabled = currentIndex <= 0;
btnNext.disabled = currentIndex >= items.length - itemsToShow;
}
btnPrev && btnPrev.addEventListener('click', function() {
currentIndex = Math.max(0, currentIndex - 1);
update();
});
btnNext && btnNext.addEventListener('click', function() {
currentIndex = Math.min(items.length - getItemsToShow(), currentIndex + 1);
update();
});
window.addEventListener('resize', update);
setTimeout(update, 200);
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initSliders);
} else {
initSliders();
}
if (window.mw && mw.hook) mw.hook('wikipage.content').add(initSliders);
})();
/* === Full Width Slider (mw-fullslider) === */
(function () {
function initFullSliders() {
var sliders = document.querySelectorAll('.mw-fullslider');
sliders.forEach(function (slider) {
if (slider._fullSliderInit) return;
slider._fullSliderInit = true;
var track = slider.querySelector('.mw-fullslider-track');
var slides = Array.from(track.children);
var btnPrev = slider.querySelector('.mw-fullslider-btn.prev');
var btnNext = slider.querySelector('.mw-fullslider-btn.next');
var current = 0;
function goTo(index) {
current = (index + slides.length) % slides.length;
var x = -current * slider.clientWidth;
track.style.transform = 'translateX(' + x + 'px)';
}
btnPrev && btnPrev.addEventListener('click', () => goTo(current - 1));
btnNext && btnNext.addEventListener('click', () => goTo(current + 1));
window.addEventListener('resize', () => goTo(current));
var autoplay = true, interval = 4500, timer;
function start() {
if (!autoplay) return;
stop();
timer = setInterval(() => goTo(current + 1), interval);
}
function stop() { if (timer) clearInterval(timer); }
slider.addEventListener('mouseenter', stop);
slider.addEventListener('mouseleave', start);
start();
});
}
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initFullSliders);
else initFullSliders();
if (window.mw && mw.hook) mw.hook('wikipage.content').add(initFullSliders);
})();
