MediaWiki:Common.js: Difference between revisions

From Heroes 3 wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(36 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 every page load. */
(function() {
(function() {
function getCookie(cname) {
function getCookie(cname) {
var name = cname + '=';
var name = cname + '=';
Line 16: Line 18:
return '';
return '';
}
}
function showElements(desc) {
 
for (var elem of document.querySelectorAll(desc)) {
function showElements(desc, linkSelector) {
    elem.style = '';
var elems = document.querySelectorAll(desc);
}
for (var i = 0; i < elems.length; i++) {
elems[i].style = '';
}
elems = document.querySelectorAll('.' + linkSelector + desc);
for (var i = 0; i < elems.length; i++) {
elems[i].style = 'cursor: pointer; color: rgb(102, 177, 250);';
}
if (desc == '.onlyhota' || desc == '.onlysod') {
var main_page_tab = '';
if (desc == '.onlyhota') {
main_page_tab = document.querySelector('.mainpage.onlysod.onlyhota #tabs-input-1-2');
} else {
main_page_tab = document.querySelector('.mainpage.onlysod.onlyhota #tabs-input-1-1');
}
if (main_page_tab) {
main_page_tab.click();
}
}
}
}
function hideElements(desc) {
function hideElements(desc) {
for (var elem of document.querySelectorAll(desc)) {
var elems = document.querySelectorAll(desc);
    elem.style = 'display:none;';
for (var i = 0; i < elems.length; i++) {
}
elems[i].style = 'display:none;';
}
elems = document.querySelectorAll('.initialOnly');
for (var i = 0; i < elems.length; i++) {
elems[i].style = 'display:none;';
}
}
}
function togglePreferredExpansion() {
 
var preferredExpansion = getCookie('preferredExpansion');
function togglePreference(linkSelector, cookieName, cookie1, cookie2, link1, link2) {
var switchExpansion = document.querySelector('#switchExpansion');
var preference= getCookie(cookieName);
if (preferredExpansion == 'hota') {
var switchView = document.querySelector('#' + linkSelector);
preferredExpansion = 'sod';
if (preference == cookie2) {
switchExpansion.textContent = 'Switch to Horn of the Abyss';
preference = cookie1;
showElements('.onlysod');
switchView.textContent = 'Switch to ' + link2;
hideElements('.onlyhota');
hideElements('.only' + cookie2);
showElements('.only' + cookie1, linkSelector);
} else {
} else {
preferredExpansion = 'hota';
preference = cookie2;
switchExpansion.textContent = 'Switch to Shadow of Death';
switchView.textContent = 'Switch to ' + link1;
showElements('.onlyhota');
hideElements('.only' + cookie1);
hideElements('.onlysod');
showElements('.only' + cookie2, linkSelector);
}
}
var CookieDate = new Date;
var CookieDate = new Date();
CookieDate.setFullYear(CookieDate.getFullYear() + 1);
CookieDate.setFullYear(CookieDate.getFullYear() + 1);
document.cookie = 'preferredExpansion=' + preferredExpansion + '; expires=' + CookieDate.toUTCString() + ';';
document.cookie = cookieName + '=' + preference + '; expires=' + CookieDate.toUTCString() + ';';
}
 
function togglePreferredExpansion() {
togglePreference('switchExpansion', 'preferredExpansion', 'sod', 'hota', 'Shadow of Death', 'Horn of the Abyss');
}
}
function initPreferredExpansion() {
 
function togglePreferredView() {
togglePreference('switchView', 'preferredView', 'modern', 'legacy', 'Modern', 'Legacy');
}
 
function initPreference(linkSelector, cookieName, cookie1, cookie2, link1, link2, toggleFunc) {
var userlink = document.querySelector('#pt-anonuserpage');
var userlink = document.querySelector('#pt-anonuserpage');
if (!userlink) {
if (!userlink) {
Line 50: Line 85:
}
}
if (userlink) {
if (userlink) {
var switchExpansion = document.querySelector('#switchExpansion');
var switchView = document.querySelector('#' + linkSelector);
if (!switchExpansion) {
if (!switchView) {
switchExpansion = document.createElement('li');
switchView = document.createElement('li');
switchExpansion.style = 'cursor: pointer; color: rgb(102, 177, 250); text-decoration: underline;';
switchView.style = 'cursor: pointer; color: rgb(102, 177, 250);';
switchExpansion.id = 'switchExpansion';
switchView.id = linkSelector;
switchExpansion.addEventListener('click', togglePreferredExpansion);
switchView.addEventListener('click', toggleFunc);
userlink.parentElement.insertBefore(switchExpansion, null);
userlink.parentElement.insertBefore(switchView, null);
var elems = document.querySelectorAll('.' + linkSelector);
for (var i = 0; i < elems.length; i++) {
elems[i].addEventListener('click', toggleFunc);
elems[i].style = 'cursor: pointer; color: rgb(102, 177, 250);';
}
}
}
if (getCookie('preferredExpansion') == 'hota') {
if (getCookie(cookieName) == cookie2) {
switchExpansion.textContent = 'Switch to Horn of the Abyss';
switchView.textContent = 'Switch to ' + link1;
showElements('.onlyhota');
hideElements('.only' + cookie1);
hideElements('.onlysod');
showElements('.only' + cookie2);
} else {
} else {
switchExpansion.textContent = 'Switch to Shadow of Death';
switchView.textContent = 'Switch to ' + link2;
showElements('.onlysod');
hideElements('.only' + cookie2);
hideElements('.onlyhota');
showElements('.only' + cookie1);
}
}
}
}
}
}
function removeTooltips() {
var elems = document.querySelectorAll('.mainpage .tabs-content div div a');
for (var i = 0; i < elems.length; i++) {
elems[i].title = '';
}
}
function removeUnwantedTitles() {
var elems = document.querySelectorAll('#p-logo a');
for (var i = 0; i < elems.length; i++) {
elems[i].title = '';
}
}
function initCommon() {
initPreference('switchExpansion', 'preferredExpansion', 'sod', 'hota', 'Shadow of Death', 'Horn of the Abyss', togglePreferredExpansion);
var mainpage = document.querySelector('.mainpage.onlysod.onlyhota');
if (mainpage) {
initPreference('switchView', 'preferredView', 'modern', 'legacy', 'Modern', 'Legacy', togglePreferredView);
removeTooltips();
}
removeUnwantedTitles();
}
window.addEventListener('readystatechange', function() {
window.addEventListener('readystatechange', function() {
    initPreferredExpansion();
initCommon();
});
});
window.addEventListener('DOMContentLoaded', function() {
window.addEventListener('DOMContentLoaded', function() {
    initPreferredExpansion();
initCommon();
});
});
window.addEventListener('load', function() {
window.addEventListener('load', function() {
    initPreferredExpansion();
initCommon();
});
});
initPreferredExpansion();
 
initCommon();
 
})();
})();

Latest revision as of 19:39, 30 April 2024

/* Any JavaScript here will be loaded for all users on every page load. */

(function() {

function getCookie(cname) {
	var name = cname + '=';
	var decodedCookie = decodeURIComponent(document.cookie);
	var ca = decodedCookie.split(';');
	for (var i = 0; i <ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') {
			c = c.substring(1);
		}
		if (c.indexOf(name) == 0) {
			return c.substring(name.length, c.length);
		}
	}
	return '';
}

function showElements(desc, linkSelector) {
	var elems = document.querySelectorAll(desc);
	for (var i = 0; i < elems.length; i++) {
		elems[i].style = '';
	}
	elems = document.querySelectorAll('.' + linkSelector + desc);
	for (var i = 0; i < elems.length; i++) {
		elems[i].style = 'cursor: pointer; color: rgb(102, 177, 250);';
	}
	if (desc == '.onlyhota' || desc == '.onlysod') {
		var main_page_tab = '';
		if (desc == '.onlyhota') {
			main_page_tab = document.querySelector('.mainpage.onlysod.onlyhota #tabs-input-1-2');
		} else {
			main_page_tab = document.querySelector('.mainpage.onlysod.onlyhota #tabs-input-1-1');
		}
		if (main_page_tab) {
			main_page_tab.click();
		}
	}
}

function hideElements(desc) {
	var elems = document.querySelectorAll(desc);
	for (var i = 0; i < elems.length; i++) {
		elems[i].style = 'display:none;';
	}
	elems = document.querySelectorAll('.initialOnly');
	for (var i = 0; i < elems.length; i++) {
		elems[i].style = 'display:none;';
	}
}

function togglePreference(linkSelector, cookieName, cookie1, cookie2, link1, link2) {
	var preference= getCookie(cookieName);
	var switchView = document.querySelector('#' + linkSelector);
	if (preference == cookie2) {
		preference = cookie1;
		switchView.textContent = 'Switch to ' + link2;
		hideElements('.only' + cookie2);
		showElements('.only' + cookie1, linkSelector);
	} else {
		preference = cookie2;
		switchView.textContent = 'Switch to ' + link1;
		hideElements('.only' + cookie1);
		showElements('.only' + cookie2, linkSelector);
	}
	var CookieDate = new Date();
	CookieDate.setFullYear(CookieDate.getFullYear() + 1);
	document.cookie = cookieName + '=' + preference + '; expires=' + CookieDate.toUTCString() + ';';
}

function togglePreferredExpansion() {
	togglePreference('switchExpansion', 'preferredExpansion', 'sod', 'hota', 'Shadow of Death', 'Horn of the Abyss');
}

function togglePreferredView() {
	togglePreference('switchView', 'preferredView', 'modern', 'legacy', 'Modern', 'Legacy');
}

function initPreference(linkSelector, cookieName, cookie1, cookie2, link1, link2, toggleFunc) {
	var userlink = 	document.querySelector('#pt-anonuserpage');
	if (!userlink) {
		userlink = document.querySelector('#pt-userpage');
	}
	if (userlink) {
		var switchView = document.querySelector('#' + linkSelector);
		if (!switchView) {
			switchView = document.createElement('li');
			switchView.style = 'cursor: pointer; color: rgb(102, 177, 250);';
			switchView.id = linkSelector;
			switchView.addEventListener('click', toggleFunc);
			userlink.parentElement.insertBefore(switchView, null);
			var elems = document.querySelectorAll('.' + linkSelector);
			for (var i = 0; i < elems.length; i++) {
				elems[i].addEventListener('click', toggleFunc);
				elems[i].style = 'cursor: pointer; color: rgb(102, 177, 250);';
			}
		}
		if (getCookie(cookieName) == cookie2) {
			switchView.textContent = 'Switch to ' + link1;
			hideElements('.only' + cookie1);
			showElements('.only' + cookie2);
		} else {
			switchView.textContent = 'Switch to ' + link2;
			hideElements('.only' + cookie2);
			showElements('.only' + cookie1);
		}
	}
}

function removeTooltips() {
	var elems = document.querySelectorAll('.mainpage .tabs-content div div a');
	for (var i = 0; i < elems.length; i++) {
		elems[i].title = '';
	}
}

function removeUnwantedTitles() {
	var elems = document.querySelectorAll('#p-logo a');
	for (var i = 0; i < elems.length; i++) {
		elems[i].title = '';
	}
}

function initCommon() {
	initPreference('switchExpansion', 'preferredExpansion', 'sod', 'hota', 'Shadow of Death', 'Horn of the Abyss', togglePreferredExpansion);
	var mainpage = document.querySelector('.mainpage.onlysod.onlyhota');
	if (mainpage) {
		initPreference('switchView', 'preferredView', 'modern', 'legacy', 'Modern', 'Legacy', togglePreferredView);
		removeTooltips();
	}
	removeUnwantedTitles();
}

window.addEventListener('readystatechange', function() {
	initCommon();
});

window.addEventListener('DOMContentLoaded', function() {
	initCommon();
});

window.addEventListener('load', function() {
	initCommon();
});

initCommon();

})();