MediaWiki:Common.js: Difference between revisions
From Sanatan Hindu Dharma
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
/* | /* === Move Category Links Above Footer === */ | ||
$(document).ready(function () { | $(document).ready(function () { | ||
var catlinks = $('#catlinks'); | var catlinks = $('#catlinks'); | ||
| Line 17: | Line 14: | ||
}); | }); | ||
/* === Floating Upload Button === */ | |||
$(document).ready(function() { | $(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 () { | ||
function initSliders() { | function initSliders() { | ||
var sliders = document.querySelectorAll('.mw-slider'); | var sliders = document.querySelectorAll('.mw-slider'); | ||
sliders.forEach(function (slider) { | sliders.forEach(function (slider) { | ||
if (slider._mwSliderInited) return; | if (slider._mwSliderInited) return; | ||
slider._mwSliderInited = true; | slider._mwSliderInited = true; | ||
var track = slider.querySelector('.mw-slider-track'); | var track = slider.querySelector('.mw-slider-track'); | ||
var items = Array.from(slider.querySelectorAll('.mw-slider-item')); | var items = Array.from(slider.querySelectorAll('.mw-slider-item')); | ||
var btnPrev = slider.querySelector('.mw-slider-btn.prev'); | var btnPrev = slider.querySelector('.mw-slider-btn.prev'); | ||
var btnNext = slider.querySelector('.mw-slider-btn.next'); | var btnNext = slider.querySelector('.mw-slider-btn.next'); | ||
var currentIndex = 0; | var currentIndex = 0; | ||
function getItemsToShow() { | function getItemsToShow() { | ||
| Line 61: | Line 48: | ||
} | } | ||
function | function update() { | ||
itemsToShow = getItemsToShow() | var itemsToShow = getItemsToShow(); | ||
var itemRect = items[0].getBoundingClientRect(); | var itemRect = items[0].getBoundingClientRect(); | ||
gap = parseFloat( | var gap = parseFloat(getComputedStyle(track).gap || 16); | ||
var | var translateX = -currentIndex * (itemRect.width + gap); | ||
track.style.transform = 'translateX(' + translateX + 'px)'; | 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); | |||
setTimeout( | |||
}); | }); | ||
} | } | ||
if (document.readyState === 'loading') { | if (document.readyState === 'loading') { | ||
document.addEventListener('DOMContentLoaded', initSliders); | document.addEventListener('DOMContentLoaded', initSliders); | ||
| Line 168: | Line 78: | ||
initSliders(); | initSliders(); | ||
} | } | ||
if (window.mw && mw.hook) mw.hook('wikipage.content').add(initSliders); | |||
if (window.mw && mw.hook) | |||
})(); | })(); | ||
/* Full | /* === Full Width Slider (mw-fullslider) === */ | ||
(function () { | (function () { | ||
function initFullSliders() { | function initFullSliders() { | ||
| Line 187: | Line 93: | ||
var btnPrev = slider.querySelector('.mw-fullslider-btn.prev'); | var btnPrev = slider.querySelector('.mw-fullslider-btn.prev'); | ||
var btnNext = slider.querySelector('.mw-fullslider-btn.next'); | var btnNext = slider.querySelector('.mw-fullslider-btn.next'); | ||
var current = 0; | var current = 0; | ||
function goTo(index | function goTo(index) { | ||
current = (index | current = (index + slides.length) % slides.length; | ||
var x = -current * slider.clientWidth; | var x = -current * slider.clientWidth; | ||
track.style.transform = 'translateX(' + x + 'px)'; | 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; | |||
var autoplay = true | function start() { | ||
function | |||
if (!autoplay) return; | 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(); | |||
}); | }); | ||
} | } | ||
| Line 329: | Line 121: | ||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initFullSliders); | if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initFullSliders); | ||
else initFullSliders(); | else initFullSliders(); | ||
if (window.mw && mw.hook) mw.hook('wikipage.content').add(initFullSliders); | if (window.mw && mw.hook) mw.hook('wikipage.content').add(initFullSliders); | ||
})(); | })(); | ||
Revision as of 11:17, 28 October 2025
/* === 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);
})();
