MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 1: | Строка 1: | ||
;(function($, mw){ | ;(function($, mw){ | ||
if (mw.config.get('wgPageName') !== 'Обсуждение_участника:Pok') | if (mw.config.get('wgPageName') !== 'Обсуждение_участника:Pok') return; | ||
var | var COOKIES = { | ||
DARK: 'darkmode', | |||
THEME: 'theme' | |||
}, | |||
$tools = $('#user-tools'), | |||
currentMode; | |||
var | function loadMode() { | ||
var theme = $.cookie(COOKIES.THEME); | |||
if (theme) return theme; | |||
return $.cookie(COOKIES.DARK) === 'true' ? 'dark' : 'light'; | |||
} | |||
function saveMode(mode) { | |||
$.cookie(COOKIES.THEME, mode, { expires: 365, path: '/' }); | |||
$.cookie(COOKIES.DARK, mode === 'dark', { expires: 365, path: '/' }); | |||
} | |||
function applyMode(mode) { | |||
$('body') | |||
.toggleClass('wgl-theme-dark', mode === 'dark') | |||
.toggleClass('wgl-theme-light', mode === 'light'); | |||
mw.hook('wgl.themeChanged').fire(mode); | |||
} | |||
currentMode = loadMode(); | |||
applyMode(currentMode); | |||
var $toggle = $( | |||
'<div id="pt-dm-toggle">' + | |||
'<a href="#" title="Переключить тёмную тему"><span></span></a>' + | |||
'</div>' | |||
); | |||
$tools.prepend($toggle); | |||
$( | $toggle.on('click', 'a', function(e) { | ||
e.preventDefault(); | |||
currentMode = currentMode === 'dark' ? 'light' : 'dark'; | |||
saveMode(currentMode); | |||
applyMode(currentMode); | |||
}); | |||
}(jQuery, mediaWiki)); | }(jQuery, mediaWiki)); | ||