MediaWiki:Common.js: различия между версиями

мНет описания правки
мНет описания правки
Строка 1: Строка 1:
;(function($, mw){
;(function($, mw){
     if (mw.config.get('wgPageName') !== 'Обсуждение_участника:Pok') {
     if (mw.config.get('wgPageName') !== 'Обсуждение_участника:Pok') return;
        return;
    }


     var DARK_COOKIE  = 'darkmode',
     var COOKIES = {
        THEME_COOKIE = 'theme',
            DARK: 'darkmode',
         isUsingDarkmode = $.cookie(THEME_COOKIE) === 'dark'
            THEME: 'theme'
                    || ($.cookie(THEME_COOKIE) == null && $.cookie(DARK_COOKIE) === 'true');
        },
         $tools = $('#user-tools'),
        currentMode;


     var self = {
     function loadMode() {
         init: function () {
        var theme = $.cookie(COOKIES.THEME);
            $.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', { expires: 365, path: '/' });
         if (theme) return theme;
        return $.cookie(COOKIES.DARK) === 'true' ? 'dark' : 'light';
    }


            var $container = $('#user-tools');
    function saveMode(mode) {
        $.cookie(COOKIES.THEME, mode, { expires: 365, path: '/' });
        $.cookie(COOKIES.DARK, mode === 'dark', { expires: 365, path: '/' });
    }


            var $div  = $('<div>', { id: 'pt-dm-toggle' });
    function applyMode(mode) {
             var $link = $('<a>', {
        $('body')
                href:  '',
             .toggleClass('wgl-theme-dark', mode === 'dark')
                title: 'Переключить тёмную тему'
             .toggleClass('wgl-theme-light', mode === 'light');
             }).append($('<span>'));
        mw.hook('wgl.themeChanged').fire(mode);
            $div.append($link);
    }
 
            $container.prepend($div);
 
            $link.on('click', function(e) {
                e.preventDefault();


                isUsingDarkmode = !isUsingDarkmode;
    currentMode = loadMode();
                $.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', { expires: 365, path: '/' });
    applyMode(currentMode);
                $.cookie(DARK_COOKIE, isUsingDarkmode, { expires: 365, path: '/' });


                if (isUsingDarkmode) {
    var $toggle = $(
                    mw.loader.using(['wgl.theme.dark']).then(function() {
        '<div id="pt-dm-toggle">' +
                        $('body').addClass('wgl-theme-dark').removeClass('wgl-theme-light');
            '<a href="#" title="Переключить тёмную тему"><span></span></a>' +
                        mw.hook('wgl.themeChanged').fire('dark');
        '</div>'
                    });
    );
                } else {
    $tools.prepend($toggle);
                    $('body').addClass('wgl-theme-light').removeClass('wgl-theme-dark');
                    mw.hook('wgl.themeChanged').fire('light');
                }
            });
        }
    };


     $(self.init);
     $toggle.on('click', 'a', function(e) {
        e.preventDefault();
        currentMode = currentMode === 'dark' ? 'light' : 'dark';
        saveMode(currentMode);
        applyMode(currentMode);
    });


}(jQuery, mediaWiki));
}(jQuery, mediaWiki));