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 | /* Any JavaScript here will be loaded for all users on desktop */ | ||
/* Add user subpages toolbox link */ | |||
/* Add subpages toolbox link | |||
$(function() { | $(function() { | ||
if (mw.config.get('wgCanonicalNamespace') === 'User' && mw.config.get('skin') !== 'timeless') { | |||
if (mw.config.get('wgCanonicalNamespace') === 'User' | var subpagesLink = '/Special:PrefixIndex/User:' + mw.config.get('wgTitle').split('/')[0] + '/'; | ||
var subpagesLink = '/Special:PrefixIndex/User:' + | mw.util.addPortletLink('p-tb', subpagesLink, 'User subpages', 't-subpages', 'Subpages for this user'); | ||
} | } | ||
}); | }); | ||
Line 17: | Line 11: | ||
/* TOC ad unit */ | /* TOC ad unit */ | ||
function tocAdPositioner() { | function tocAdPositioner() { | ||
if ($('.desktopBox'). | if ($('.desktopBox').css('position') === 'relative') { | ||
var | var winTopPos = $(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; | ||
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); | $(tocAdPositioner); | ||
$(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);
});
}
});