MediaWiki:Gadget-darkmode.js

Iš MCSlime.LT.
Pereiti į navigaciją Jump to search

Dėmesio: Išsaugojus jums gali prireikti išvalyti jūsų naršyklės podėlį, kad pamatytumėte pokyčius.

  • Firefox / Safari: Laikydami Shift pasirinkite Perkrauti, arba paspauskite Ctrl-F5 ar Ctrl-R (sistemoje Apple Mac ⌘-R)
  • Google Chrome: Spauskite Ctrl-Shift-R (sistemoje Apple Mac ⌘-Shift-R)
  • Internet Explorer / Edge: Laikydami Ctrl paspauskite Naujinti, arba paspauskite Ctrl-F5
  • Opera: Eikite į Meniu → Nuostatos (sistemoje Apple Mac Opera → Nustatymai), tuomet Privatumas ir sauga → išvalyti naršymo podėlį → išsaugotos talpyklos vaizdai ir failai.
;(function($, mw){
	var DARK_COOKIE = 'darkmode',
		THEME_COOKIE = 'theme',
		isUsingDarkmode = $.cookie(THEME_COOKIE) === 'dark' || ($.cookie(THEME_COOKIE) == null && $.cookie(DARK_COOKIE) === 'true'),
		isMobile = mw.config.get('wgMFMode') !== null,
		portletLink;

	var self = {
		init: function () {
			console.log("Dark mode toggle initialized");

			$.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', {expires: 365, path: '/'});

			portletLink = mw.util.addPortletLink(
				(isMobile ? 'p-navigation' : 'p-personal'),
				'#', // use '#' so it doesn't redirect
				(isMobile ? 'Toggle dark mode' : '🌓 '),
				'pt-dm-toggle',
				'Toggle dark mode',
				null,
				$('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
			);

			// If mw.util.addPortletLink returns an <a> directly, don't use .find('a')
			$(portletLink).click(function(e) {
				e.preventDefault();

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

				if (isUsingDarkmode) {
				    $('body')
				        .addClass('wgl-theme-dark wgl-darkmode')
				        .removeClass('wgl-theme-light wgl-lightmode');
				    mw.hook('wgl.themeChanged').fire('dark');
				} else {
				    $('body')
				        .addClass('wgl-theme-light wgl-lightmode')
				        .removeClass('wgl-theme-dark wgl-darkmode');
				    mw.hook('wgl.themeChanged').fire('light');
				}

				// Optional: update link text
				$(portletLink).text(isUsingDarkmode ? '🌙 ' : '☀️');
			});
		}
	};

	// Ensure mediawiki.util is loaded before init
	mw.loader.using(['mediawiki.util'], function () {
		$(self.init);
	});

}(jQuery, mediaWiki));