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

мНет описания правки
мНет описания правки
Метка: ручная отмена
Строка 1: Строка 1:
;(function($, mw){
;(function($, mw){
if (mw.config.get('wgPageName') !== 'Обсуждение_участника:Pok') return;
    if (mw.config.get('wgPageName') !== 'Обсуждение_участника:Pok') return;
    var DARK_COOKIE = 'darkmode',
        THEME_COOKIE = 'theme',
        isUsingDarkmode = $.cookie(THEME_COOKIE) === 'dark'
            || ($.cookie(THEME_COOKIE) == null && $.cookie(DARK_COOKIE) === 'true');


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


            var $toggle = $('<div>', {
    function loadMode() {
                id: 'pt-dm-toggle',
        var theme = $.cookie(COOKIES.THEME);
                html: $('<a>', {
        if (theme) return theme;
                    href: '#',
        return $.cookie(COOKIES.DARK) === 'true' ? 'dark' : 'light';
                    title: 'Переключить тёмную тему',
    }
                    text: 'Переключить тему'
                })
            });


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


             $toggle.find('a').on('click', function(e) {
    function applyMode(mode) {
                e.preventDefault();
        $('body')
             .toggleClass('wgl-theme-dark', mode === 'dark')
            .toggleClass('wgl-theme-light', mode === 'light');
        mw.hook('wgl.themeChanged').fire(mode);
    }


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


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


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


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