MediaWiki:Minerva.js
From Elwiki
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.
/* All JavaScript here will be loaded for users of the MinervaNeue skin */
function docReady(fn) {
// see if DOM is already available
if (document.readyState === "complete" || document.readyState === "interactive") {
// call on next available tick
setTimeout(fn, 1);
} else {
document.addEventListener("DOMContentLoaded", fn);
}
}
var loadJS = function (url, implementationCode, location) {
var scriptTag = document.createElement('script');
scriptTag.src = url;
scriptTag.onload = implementationCode;
scriptTag.onreadystatechange = implementationCode;
location.appendChild(scriptTag);
};
var popperLoaded = function () {
var tippyLoaded = function () {
tippy('.tippy-btn', {
interactive: true,
allowHTML: true,
appendTo: document.body,
delay: 200
});
document.body.classList.add('tippy-loaded');
};
loadJS('https://elwiki.net/wiki/index.php?title=MediaWiki:Tippy.js&action=raw&ctype=text/javascript', tippyLoaded, document.body);
}
loadJS('https://unpkg.com/@popperjs/core@2.11.6/dist/umd/popper.min.js', popperLoaded, document.body);
$(function () {
$('.tabs.tabs-tabbox .tabs-container .tabs-header:first-of-type').click();
/* Tabs */
$('.tabber-new').each(function () {
var tabs = $(this).find('> ul li');
var cont = $(this);
tabs.unwrap();
tabs.each(function () {
$(this).wrap('<ul class="tabber-tab-wrap">');
$(this).parent().append(cont.find('> .tabber-content:first'));
});
});
$('.tabber-new .tabber-tab-wrap > li').click(function () {
var tabContent = $(this).parent().find('> .tabber-content');
$(this).parent().toggleClass('active');
tabContent.toggle();
});
$('.boss-timer-section .tabber-tab').click(function (e) {
if (e.screenX && e.screenX != 0 && e.screenY && e.screenY != 0) {
setCookie('current-server-timer', $(this).text());
}
});
// Different handling for boss timers etc.
$('.tabber-new').each(function () {
$(this).find('.tabber-tab:eq(0)').not('.boss-timer-section .tabber-tab').click();
var cookieValue = getCookie('current-server-timer');
if (cookieValue !== null && $(this).hasClass('boss-timer-section')) {
// Force all the tabs them closed (only if a cookie is detected)
$(this).find('> ul > .tabber-content').hide();
$(this).find('> ul > li.active').removeClass('active');
// Invoke the one saved in cookies
$(this).find('> ul > li:contains("' + cookieValue + '")').click();
console.log(cookieValue)
}
})
var tabber = window.location.hash.replace('#', '').replace(/_/g, ' ');
if (tabber != '') {
var matchedTabber = $('.tabber-tab:contains("' + tabber + '")');
matchedTabber.each(function () {
$(this).click();
$(this).parents('.tabber-new:eq(0)').find('.tabber-tab:eq(0)').click();
});
}
$('.embedvideo').unwrap();
$('.tabber-tab.active').removeClass('active').parent().addClass('active').find('> .tabber-content').show();
$('.section-border .mw-collapsible, .section-border.mw-collapsible').not('.segment').prepend('<div class="mw-collapsible-button mw-mobile-collapsed-button"></div>');
$('.mw-collapsible-button').each(function () {
$(this).next().addClass('mw-mobile-collapsed')
});
$('.mw-collapsible-button').click(function () {
var $content = $(this).next();
$content.toggleClass('mw-mobile-collapsed')
$(this).toggleClass('mw-mobile-collapsed-button mw-mobile-expanded-button')
});
$('.job-change-collapsible .segment-headers').prepend('<div class="mw-collapsible-button mw-mobile-collapsed-button"></div>');
$('.mw-collapsible-button').each(function () {
$(this).parent().next().addClass('mw-mobile-collapsed')
});
$('.mw-collapsible-button').click(function () {
var $content = $(this).parent().next();
$content.toggleClass('mw-mobile-collapsed')
$(this).toggleClass('mw-mobile-collapsed-button mw-mobile-expanded-button')
});
var time_loading = 0;
var chkReadyState = setInterval(function () {
if (document.readyState == "complete" || time_loading > 3000) {
// clear the interval
clearInterval(chkReadyState);
$('#loading-screen').css({ transition: '300ms', pointerEvents: 'none', opacity: 0 });
}
time_loading += 100;
}, 100);
});
docReady(function () {
$('.related-skills td[width="150"]').each(function () {
if (!$(this).find('.skill-wrap').length) {
$(this).wrapInner('<div class="skill-wrap-text"></div>');
$(this).wrapInner('<div class="skill-wrap"></div>');
}
});
$('.related-skills:not(.no-div):not(.skill-table)').each(function () {
var limit = 1;
var limitString = '';
if (limit !== undefined) limitString = " data-limit='" + limit + "'";
$(this).replaceWith($(this).html()
.replace(/<tbody/gi, "<div class='" + $(this).attr('class') + "'" + limitString)
.replace(/<tr/gi, "<div data-type='table-row'")
.replace(/<\/tr>/gi, "</div>")
.replace(/<td/gi, "<div data-type='table-cell'")
.replace(/<\/td>/gi, "</div>")
.replace(/<th/gi, "<div data-type='table-head'")
.replace(/<\/th>/gi, "</div>")
.replace(/<\/tbody/gi, "<\/div")
);
});
$('.skill-wrap:not(.no-div .skill-wrap)').click(function () {
var link = $(this).find('> .skill-wrap-text a:not(.image)').attr('href');
if (link.length) window.location.href = link;
});
$('.related-skills.no-div td[width="150"]').click(function () {
var link = $(this).find('.skill-wrap > .skill-wrap-text a:not(.image)').attr('href');
if (link.length) window.location.href = link;
});
function chunk(arr, len) {
var chunks = [],
i = 0,
n = arr.length;
while (i < n) {
chunks.push(arr.slice(i, i += len));
}
return chunks;
}
$('.related-skills:not(.skill-table)').each(function () {
var cell = $(this).find('[data-type="table-cell"]');
var limit = $(this).attr('data-limit');
if (limit !== undefined && limit != '' && !isNaN(limit)) limit = parseInt(limit) * 2;
else limit = 2;
var attempt = false;
$(this).find('[data-type="table-row"]').each(function () {
if ($(this).find('[data-type="table-cell"]').length > limit) attempt = true;
});
if (attempt) {
var overflow_elems = chunk(cell, limit);
$(this).empty();
for (var i = 0; i < overflow_elems.length; i++) {
$(this).append('<div data-type="table-row">');
$(this).find('[data-type="table-row"]:last').append(overflow_elems[i]);
}
}
});
$('.related-skills:not(.no-div):not(.skill-table)').addClass('shown');
if ($('.boss-timer').length) {
mw.loader.load('https://elwiki.net/wiki/index.php?title=MediaWiki:BossTimer.js&action=raw&ctype=text/javascript');
}
if ($('.server-time').length) {
mw.loader.load('https://elwiki.net/wiki/index.php?title=MediaWiki:ServerTime.js&action=raw&ctype=text/javascript');
}
setTimeout(function () {
$('.current-info .segment-contents > .mw-collapsible-content').css({ height: 'auto', overflow: 'initial' });
}, 100);
mw.loader.load('https://elwiki.net/wiki/index.php?title=MediaWiki:Character-Banner.js&action=raw&ctype=text/javascript')
});
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
function setCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}