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

Iš MCSlime.LT.
Pereiti į navigaciją Jump to search
Nėra keitimo santraukos
Nėra keitimo santraukos
1 eilutė: 1 eilutė:
(function($, mw) {
(function($, mw) {
    var DARK_COOKIE = 'darkmode',
  var DARK_COOKIE = 'darkmode',
        THEME_COOKIE = 'theme',
      THEME_COOKIE = 'theme',
        isUsingDarkmode = $.cookie(THEME_COOKIE) === 'dark' || ($.cookie(THEME_COOKIE) == null && $.cookie(DARK_COOKIE) === 'true'),
      isUsingDarkmode = $.cookie(THEME_COOKIE) === 'dark' || ($.cookie(THEME_COOKIE) == null && $.cookie(DARK_COOKIE) === 'true'),
        isMobile = mw.config.get('wgMFMode') !== null,
      isMobile = mw.config.get('wgMFMode') !== null,
        portletLink;
      portletLink;


    var self = {
  var self = {
        init: function() {
    init: function() {
            // Apply the current theme on page load
      // Apply the current theme on page load
            self.applyTheme(isUsingDarkmode);
      self.applyTheme(isUsingDarkmode);


            // Create the dark mode toggle link
      // Create the dark mode toggle link
            portletLink = mw.util.addPortletLink(
      portletLink = mw.util.addPortletLink(
                (isMobile ? 'p-navigation' : 'p-personal'),
        (isMobile ? 'p-navigation' : 'p-personal'),
                '#', // Use '#' to prevent redirection
        '#', // Use '#' to prevent redirection
                (isMobile ? 'Toggle dark mode' : '🌓 '),
        (isMobile ? 'Toggle dark mode' : '🌓 '),
                'pt-dm-toggle',
        'pt-dm-toggle',
                'Toggle dark mode',
        'Toggle dark mode',
                null,
        null,
                $('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
        $('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
            );
      );


            // Toggle theme on link click
      // Toggle theme on link click
            $(portletLink).click(function(e) {
      $(portletLink).click(function(e) {
                e.preventDefault();
        e.preventDefault();
                isUsingDarkmode = !isUsingDarkmode;
                $.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', { expires: 365, path: '/' });
                $.cookie(DARK_COOKIE, isUsingDarkmode, { expires: 365, path: '/' });
                self.applyTheme(isUsingDarkmode);
            });
        },


         applyTheme: function(isDark) {
         isUsingDarkmode = !isUsingDarkmode;
            if (isDark) {
        $.cookie(THEME_COOKIE, isUsingDarkmode ? 'dark' : 'light', {expires: 365, path: '/'});
                $('body').addClass('wgl-theme-dark wgl-darkmode')
        $.cookie(DARK_COOKIE, isUsingDarkmode, {expires: 365, path: '/'});
                        .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');
            }
        }
    };


    // Ensure jQuery is loaded before initializing
        self.applyTheme(isUsingDarkmode);
     if (typeof $ !== 'undefined') {
 
         $(self.init);
        // Optional: update link text
    } else {
        $(portletLink).text(isUsingDarkmode ? '🌙 ' : '☀️');
         mw.loader.using(['jquery'], function() {
      });
            $(self.init);
     },
        });
 
    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);
})(jQuery, mediaWiki);

23:27, 13 balandžio 2025 versija

(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
        (isMobile ? 'Toggle dark mode' : '🌓 '),
        'pt-dm-toggle',
        'Toggle dark mode',
        null,
        $('#pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
      );

      // 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);

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

    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);