MediaWiki:Common.js: Difference between revisions

From the Super Mario Wiki, the Mario encyclopedia
Jump to navigationJump to search
No edit summary
mNo edit summary
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on desktop */


/* Fix desktop anchor ad close button */
/* Add user subpages toolbox link */
$('body.newbie').on('click', '#ssrt-close-anchor-button', function() {
$('body > .ad-sticky-wrapper').hide();
});
 
/* Add subpages toolbox link on user pages */
$(function() {
$(function() {
var title = mw.config.get('wgTitle');
if (mw.config.get('wgCanonicalNamespace') === 'User' && mw.config.get('skin') !== 'timeless') {
if (mw.config.get('wgCanonicalNamespace') === 'User' && !title.includes('/') && mw.config.get('skin') !== 'timeless') {
var subpagesLink = '/Special:PrefixIndex/User:' + mw.config.get('wgTitle').split('/')[0] + '/';
var subpagesLink = '/Special:PrefixIndex/User:' + title + '/';
mw.util.addPortletLink('p-tb', subpagesLink, 'User subpages', 't-subpages', 'Subpages for this user');
mediaWiki.util.addPortletLink('p-tb', subpagesLink, 'User subpages', 't-subpages', 'Subpages of this page');
}
}
});
});
Line 17: Line 11:
/* TOC ad unit */
/* TOC ad unit */
function tocAdPositioner() {
function tocAdPositioner() {
if ($('.desktopBox').length) {
if ($('.desktopBox').css('position') === 'relative') {
var topOffset = 10;
var winTopPos = $(window).scrollTop();
var windowTop = $(window).scrollTop();
var tocHeight = $('#toc').outerHeight();
var tocHeight = $('#toc').outerHeight();
var tocTopPos = $('#toc').offset().top;
var tocTopPos = $('#toc').offset().top;
var tocBotPos = tocTopPos + tocHeight;
var tocBotPos = tocTopPos + tocHeight;
var tocRightPos = $('#toc').offset().left + $('#toc').outerWidth();
if (tocBotPos > winTopPos) {
var boxWidth = $('.desktopBox').outerWidth();
var boxWidth = $('.desktopBox').outerWidth();
var boxHeight = $('.desktopBox').outerHeight();
var boxHeight = $('.desktopBox').outerHeight();
var boxMarginLeft = parseFloat($('.desktopBox').css('marginLeft'));
var boxMarginLeft = parseFloat($('.desktopBox').css('marginLeft'));
var boxBotPos = $('.desktopBox').offset().top + boxHeight;
var boxRightPos = $('.desktopBox').offset().left + boxWidth + parseFloat($('.desktopBox').css('right'));
var boxRightPos = $('.desktopBox').offset().left + boxWidth + parseFloat($('.desktopBox').css('right'));
var tocRightPos = $('#toc').offset().left + $('#toc').outerWidth();
$('.desktopBox').css('right', (boxRightPos - tocRightPos - boxWidth - boxMarginLeft)/2);
$('.desktopBox').css('right', (boxRightPos - tocRightPos - boxWidth - boxMarginLeft)/2);
if (tocBotPos >= boxBotPos)
if (tocHeight > boxHeight) {
if (tocTopPos - topOffset > windowTop)
var winBotPos = $(window).scrollTop() + $(window).outerHeight();
$('.desktopBox').css('top', 0);
var curBotPos = winBotPos > tocBotPos ? tocBotPos : winBotPos;
else if (tocBotPos - boxHeight - topOffset > windowTop)
var offsetVal = boxHeight > 300 ? 4 : 2;
$('.desktopBox').css('top', windowTop - tocTopPos + topOffset);
var topOffset = (curBotPos - winTopPos - boxHeight)/offsetVal;
else
if (tocTopPos - topOffset > winTopPos)
$('.desktopBox').css('top', tocHeight - boxHeight);
$('.desktopBox').css('top', 0);
else if (tocBotPos - boxHeight - topOffset > winTopPos)
$('.desktopBox').css('top', winTopPos - tocTopPos + topOffset);
else
$('.desktopBox').css('top', tocHeight - boxHeight);
}
}
}
}
}
}
$(tocAdPositioner);
$(function() {
$(window).scroll(function() {
if ($('.desktopBox').length) {
$(tocAdPositioner);
});
$(window).resize(function() {
clearTimeout(window.resizeFinished);
window.resizeFinished = setTimeout(function() {
$(tocAdPositioner);
$(tocAdPositioner);
}, 100);
$(window).on('scroll resize', function() {
$(tocAdPositioner);
});
}
});
});

Latest revision as of 16:18, April 3, 2024

/* Any JavaScript here will be loaded for all users on desktop */

/* Add user subpages toolbox link */
$(function() {
	if (mw.config.get('wgCanonicalNamespace') === 'User' && mw.config.get('skin') !== 'timeless') {
		var subpagesLink = '/Special:PrefixIndex/User:' + mw.config.get('wgTitle').split('/')[0] + '/';
		mw.util.addPortletLink('p-tb', subpagesLink, 'User subpages', 't-subpages', 'Subpages for this user');
	}
});

/* TOC ad unit */
function tocAdPositioner() {
	if ($('.desktopBox').css('position') === 'relative') {
		var winTopPos = $(window).scrollTop();
		var tocHeight = $('#toc').outerHeight();
		var tocTopPos = $('#toc').offset().top;
		var tocBotPos = tocTopPos + tocHeight;
		if (tocBotPos > winTopPos) {
			var boxWidth = $('.desktopBox').outerWidth();
			var boxHeight = $('.desktopBox').outerHeight();
			var boxMarginLeft = parseFloat($('.desktopBox').css('marginLeft'));
			var boxRightPos = $('.desktopBox').offset().left + boxWidth + parseFloat($('.desktopBox').css('right'));
			var tocRightPos = $('#toc').offset().left + $('#toc').outerWidth();
			$('.desktopBox').css('right', (boxRightPos - tocRightPos - boxWidth - boxMarginLeft)/2);
			if (tocHeight > boxHeight) {
				var winBotPos = $(window).scrollTop() + $(window).outerHeight();
				var curBotPos = winBotPos > tocBotPos ? tocBotPos : winBotPos;
				var offsetVal = boxHeight > 300 ? 4 : 2;
				var topOffset = (curBotPos - winTopPos - boxHeight)/offsetVal;
				if (tocTopPos - topOffset > winTopPos)
					$('.desktopBox').css('top', 0);
				else if (tocBotPos - boxHeight - topOffset > winTopPos)
					$('.desktopBox').css('top', winTopPos - tocTopPos + topOffset);
				else
					$('.desktopBox').css('top', tocHeight - boxHeight);
			}
		}
	}
}
$(function() {
	if ($('.desktopBox').length) {
		$(tocAdPositioner);
		$(window).on('scroll resize', function() {
			$(tocAdPositioner);
		});
	}
});