[dismiss]
Spoilers — Please keep the spoiler policy in mind while editing the wiki.
Citations — Please cite your sources when adding information to the wiki! Use our handy guide for assistance.
MediaWiki:Gadget-DarkToggle.js: Difference between revisions
From Destinypedia, the Destiny wiki
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
// Toggle a dark theme for supported skins | // Toggle a dark theme for supported skins | ||
function setCookie(c_name, value, expiredays) { | function setCookie(c_name, value, expiredays) { | ||
Line 31: | Line 30: | ||
$('body').removeClass('light'); | $('body').removeClass('light'); | ||
} else { | } else { | ||
$('body').removeClass('dark'); | |||
$('body').addClass('light'); | $('body').addClass('light'); | ||
} | } | ||
}); | }); | ||
Line 39: | Line 38: | ||
var isDark = false; | var isDark = false; | ||
var toggleText = 'Dark mode'; | var toggleText = 'Dark mode'; | ||
var footerList = $(':is(#f-list, #footer-places)'); | |||
if (getCookie('darkTheme') == 'on' || window.matchMedia('(prefers-color-scheme: dark)').matches && getCookie('darkTheme') != 'off') { | if (getCookie('darkTheme') == 'on' || window.matchMedia('(prefers-color-scheme: dark)').matches && getCookie('darkTheme') != 'off') { | ||
toggleText = 'Light mode'; | toggleText = 'Light mode'; | ||
Line 44: | Line 44: | ||
} | } | ||
if (mw.config.get('skin') == 'nimbus') | if (mw.config.get('skin') == 'nimbus') | ||
$('#wiki-login').prepend('<div id="toggleContainer" style="float:left;position:relative;right:5px;cursor:pointer"><img id="themeToggle" src="https://wiki.gallery/images/dark/moon/' + (isDark ? 'yellow' : 'white') + '.png" title="Toggle night theme"/></div>'); | $('#wiki-login').prepend('<div id="toggleContainer" style="float:left;position:relative;right:5px;cursor:pointer"><img id="themeToggle" src="https://wiki.gallery/images/dark/moon/' + (isDark ? 'yellow' : 'white') + '.png" title="Toggle night theme"/></div>'); | ||
Line 64: | Line 63: | ||
setCookie('darkTheme', 'on', 999); | setCookie('darkTheme', 'on', 999); | ||
} | } | ||
if (mw.config.get('wgUserId') || location.href.includes('?')) | if (mw.config.get('wgUserId') || location.href.includes('?')) | ||
location.reload(); | location.reload(); |
Revision as of 13:53, February 25, 2025
// Toggle a dark theme for supported skins
function setCookie(c_name, value, expiredays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + '=' + escape(value) + ';path=/' + ((expiredays === null) ? '' : ';expires=' + exdate.toGMTString());
}
function getCookie(c_name) {
if (document.cookie.length > 0) {
c_start = document.cookie.indexOf(c_name + '=');
if (c_start != -1) {
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(';', c_start);
if (c_end == -1) c_end = document.cookie.length;
return unescape(document.cookie.substring(c_start, c_end));
}
}
return '';
}
$(function() {
if (!getCookie('darkTheme')) {
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
$('body').addClass('dark');
$('body').removeClass('light');
}
window.matchMedia('(prefers-color-scheme: dark)').addListener(function(e) {
if (e.matches) {
$('body').addClass('dark');
$('body').removeClass('light');
} else {
$('body').removeClass('dark');
$('body').addClass('light');
}
});
}
var isDark = false;
var toggleText = 'Dark mode';
var footerList = $(':is(#f-list, #footer-places)');
if (getCookie('darkTheme') == 'on' || window.matchMedia('(prefers-color-scheme: dark)').matches && getCookie('darkTheme') != 'off') {
toggleText = 'Light mode';
isDark = true;
}
if (mw.config.get('skin') == 'nimbus')
$('#wiki-login').prepend('<div id="toggleContainer" style="float:left;position:relative;right:5px;cursor:pointer"><img id="themeToggle" src="https://wiki.gallery/images/dark/moon/' + (isDark ? 'yellow' : 'white') + '.png" title="Toggle night theme"/></div>');
else if (mw.config.get('skin') == 'minerva')
footerList.after('<ul id="toggleContainer" class="minerva-toggle hlist"><li><a id="themeToggle" href="javascript:;">Toggle night theme</a></li></ul>');
else
footerList.append('<li id="toggleContainer"><a id="themeToggle" href="javascript:;">' + toggleText + '</a></li>');
$('#themeToggle').click(function() {
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
if (isDark)
setCookie('darkTheme', 'off', 999);
else
setCookie('darkTheme', '', -1);
} else {
if (isDark)
setCookie('darkTheme', '', -1);
else
setCookie('darkTheme', 'on', 999);
}
if (mw.config.get('wgUserId') || location.href.includes('?'))
location.reload();
else
location = location.href + '?toggle';
});
});