MediaWiki:Gadget-darkmode.js: Skirtumas tarp puslapio versijų

(Naujas puslapis: →‎* * Toggle for dark mode * * @author [[User:Jayden]] * @see Based on https://runescape.wiki/w/MediaWiki:Gadget-skinTogglesNew.js: ;(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 () { $.cookie(THEME_COOKIE, isUsingD...)
 
Nėra keitimo santraukos
 
(nerodomos 11 tarpinės versijos, sukurtos to paties naudotojo)
1 eilutė: 1 eilutė:
/**
(function() {
* Toggle for dark mode
  var isDark = document.cookie.includes('theme=dark');
*
  if (isDark) {
* @author [[User:Jayden]]
    document.documentElement.classList.add('wgl-theme-dark', 'wgl-darkmode');
* @see Based on https://runescape.wiki/w/MediaWiki:Gadget-skinTogglesNew.js
  } else {
*/
    document.documentElement.classList.add('wgl-theme-light', 'wgl-lightmode');
;(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 = {
(function($, mw) {
init: function () {
  var DARK_COOKIE = 'darkmode',
$.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', {expires: 365, path: '/'});
      THEME_COOKIE = 'theme',
      isUsingDarkmode = $.cookie(THEME_COOKIE) === 'dark' || ($.cookie(THEME_COOKIE) == null && $.cookie(DARK_COOKIE) === 'true'),
      isMobile = mw.config.get('wgMFMode') !== null,
      portletLink;


portletLink = mw.util.addPortletLink(
  var self = {
( isMobile ? 'p-navigation' : 'p-personal' ),
    init: function() {
'',
      // Apply the current theme on page load
( isMobile ? 'Toggle dark mode' : '' ),
      self.applyTheme(isUsingDarkmode);
'pt-dm-toggle',
'Toggle dark mode',
null,
$('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
);
$(portletLink).find('a').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 === true) {
mw.loader.using(['wgl.theme.dark']).then(function() {
  $('body').addClass('wgl-theme-dark')
  $('body').removeClass('wgl-theme-light')
  mw.hook('wgl.themeChanged').fire('dark')
});
} else {
$('body').addClass('wgl-theme-light')
$('body').removeClass('wgl-theme-dark')
mw.hook('wgl.themeChanged').fire('light')
}
});
}
}
$(self.init);


}(jQuery, mediaWiki));
      // Create the dark mode toggle link
      portletLink = mw.util.addPortletLink(
        (isMobile ? 'p-navigation' : 'p-personal'),
        '#', // Use '#' to prevent redirection
        self.getToggleIcon(isUsingDarkmode), // Set initial icon based on current state
        'pt-dm-toggle',
        'Toggle dark mode',
        null,
        $('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
      );
 
      // Add pointer cursor style
      $(portletLink).css('cursor', 'pointer');
 
      // Toggle theme on link click
      $(portletLink).click(function(e) {
        e.preventDefault();
 
        isUsingDarkmode = !isUsingDarkmode;
        $.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', {expires: 365, path: '/'});
        $.cookie(DARK_COOKIE, isUsingDarkmode, {expires: 365, path: '/'});
 
        self.applyTheme(isUsingDarkmode);
 
        // Update link text with appropriate icon
        $(portletLink).html(self.getToggleIcon(isUsingDarkmode));
      });
    },
 
    // Helper function to get the appropriate icon based on current theme
    getToggleIcon: function(isDark) {
      if (isMobile) {
        return 'Toggle dark mode';
      } else {
        return isDark ? '🌙 ' : '☀️ ';
      }
    },
 
    applyTheme: function(isDark) {
      if (isDark) {
        $('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');
      }
      // Make the body visible after applying the theme
      $('body').css({visibility: 'visible', opacity: 1});
    }
  };
 
  // Ensure mediawiki.util is loaded before init
  mw.loader.using(['mediawiki.util'], function () {
    $(self.init);
  });
 
})(jQuery, mediaWiki);

Dabartinė 08:32, 14 balandžio 2025 versija

(function() {
  var isDark = document.cookie.includes('theme=dark');
  if (isDark) {
    document.documentElement.classList.add('wgl-theme-dark', 'wgl-darkmode');
  } else {
    document.documentElement.classList.add('wgl-theme-light', 'wgl-lightmode');
  }
})();

(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() {
      // Apply the current theme on page load
      self.applyTheme(isUsingDarkmode);

      // Create the dark mode toggle link
      portletLink = mw.util.addPortletLink(
        (isMobile ? 'p-navigation' : 'p-personal'),
        '#', // Use '#' to prevent redirection
        self.getToggleIcon(isUsingDarkmode), // Set initial icon based on current state
        'pt-dm-toggle',
        'Toggle dark mode',
        null,
        $('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
      );

      // Add pointer cursor style
      $(portletLink).css('cursor', 'pointer');

      // Toggle theme on link click
      $(portletLink).click(function(e) {
        e.preventDefault();

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

        self.applyTheme(isUsingDarkmode);

        // Update link text with appropriate icon
        $(portletLink).html(self.getToggleIcon(isUsingDarkmode));
      });
    },

    // Helper function to get the appropriate icon based on current theme
    getToggleIcon: function(isDark) {
      if (isMobile) {
        return 'Toggle dark mode';
      } else {
        return isDark ? '🌙 ' : '☀️ ';
      }
    },

    applyTheme: function(isDark) {
      if (isDark) {
        $('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');
      }
      // Make the body visible after applying the theme
      $('body').css({visibility: 'visible', opacity: 1});
    }
  };

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

})(jQuery, mediaWiki);