MediaWiki:Common.js: Difference between revisions

From Medalist Wiki
No edit summary
No edit summary
Line 2: Line 2:
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() {
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() {
     $(function() {
     $(function() {
         // Create the toggle button with a more modern style matching your toolbar
         // Create a single unified toggle button with dropdown
         var $toggleButton = $('<a id="content-toggle" class="mw-echo-notifications-badge">' +
         var $toggleContainer = $('<li class="vector-menu-dropdown vector-menu vector-menu-portal mw-list-item" id="content-mode-toggle">' +
             '<span>Content Mode</span>' +
            '<a class="vector-menu-heading vector-menu-checkbox-expanded">' +
             '</a>');
             '<span class="vector-menu-heading-label">Mode: </span>' +
       
            '<span class="mode-label">Anime</span>' +
        var $toggleMenu = $('<div class="content-toggle-menu vector-menu-content">' +
             '</a>' +
             '<ul>' +
            '<div class="vector-menu-content">' +
             '<ul class="menu">' +
             '<li data-mode="anime"><a>Caught up to Anime</a></li>' +
             '<li data-mode="anime"><a>Caught up to Anime</a></li>' +
             '<li data-mode="manga"><a>Caught up to Manga</a></li>' +
             '<li data-mode="manga"><a>Caught up to Manga</a></li>' +
             '</ul>' +
             '</ul>' +
             '</div>');
             '</div>' +
       
            '</li>');
         // Insert next to your other toolbar items
 
         $('.vector-user-links, #p-personal').append(
         // Insert at the start of the left navigation
            $('<li class="mw-list-item" id="pt-content-toggle"></li>').append($toggleButton)
         $('#mw-panel .vector-menu-portal:first').before($toggleContainer);
        );
        $toggleButton.after($toggleMenu);
          
          
         // Get user's current preference
         // Get user's current preference
Line 25: Line 24:
          
          
         // Handle toggle clicks
         // Handle toggle clicks
         $('.content-toggle-menu li').on('click', function() {
         $('#content-mode-toggle .menu li').on('click', function() {
             var mode = $(this).data('mode');
             var mode = $(this).data('mode');
             localStorage.setItem('contentMode', mode);
             localStorage.setItem('contentMode', mode);
             updateContentDisplay(mode);
             updateContentDisplay(mode);
        });
        // Toggle dropdown on click
        $('#content-mode-toggle > a').on('click', function(e) {
            e.preventDefault();
            $('#content-mode-toggle').toggleClass('vector-menu-expanded');
         });
         });
     });
     });
Line 42: Line 47:
     }
     }
      
      
     // Update visual state in menu
     // Update menu state
     $('.content-toggle-menu li').removeClass('active');
     $('#content-mode-toggle .menu li').removeClass('active');
     $('.content-toggle-menu li[data-mode="' + mode + '"]').addClass('active');
     $('#content-mode-toggle .menu li[data-mode="' + mode + '"]').addClass('active');
      
      
     // Update button text to show current mode
     // Update label
     $('#content-toggle span').text('Mode: ' + (mode === 'manga' ? 'Manga' : 'Anime'));
     $('#content-mode-toggle .mode-label').text(mode.charAt(0).toUpperCase() + mode.slice(1));
}
}

Revision as of 17:55, 6 February 2025

/* Any JavaScript here will be loaded for all users on every page load. */
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() {
    $(function() {
        // Create a single unified toggle button with dropdown
        var $toggleContainer = $('<li class="vector-menu-dropdown vector-menu vector-menu-portal mw-list-item" id="content-mode-toggle">' +
            '<a class="vector-menu-heading vector-menu-checkbox-expanded">' +
            '<span class="vector-menu-heading-label">Mode: </span>' +
            '<span class="mode-label">Anime</span>' +
            '</a>' +
            '<div class="vector-menu-content">' +
            '<ul class="menu">' +
            '<li data-mode="anime"><a>Caught up to Anime</a></li>' +
            '<li data-mode="manga"><a>Caught up to Manga</a></li>' +
            '</ul>' +
            '</div>' +
            '</li>');

        // Insert at the start of the left navigation
        $('#mw-panel .vector-menu-portal:first').before($toggleContainer);
        
        // Get user's current preference
        var currentMode = localStorage.getItem('contentMode') || 'anime';
        updateContentDisplay(currentMode);
        
        // Handle toggle clicks
        $('#content-mode-toggle .menu li').on('click', function() {
            var mode = $(this).data('mode');
            localStorage.setItem('contentMode', mode);
            updateContentDisplay(mode);
        });

        // Toggle dropdown on click
        $('#content-mode-toggle > a').on('click', function(e) {
            e.preventDefault();
            $('#content-mode-toggle').toggleClass('vector-menu-expanded');
        });
    });
});

function updateContentDisplay(mode) {
    $('.manga-content, .anime-content').hide();
    
    if (mode === 'manga') {
        $('.manga-content, .anime-content').show();
    } else {
        $('.anime-content').show();
    }
    
    // Update menu state
    $('#content-mode-toggle .menu li').removeClass('active');
    $('#content-mode-toggle .menu li[data-mode="' + mode + '"]').addClass('active');
    
    // Update label
    $('#content-mode-toggle .mode-label').text(mode.charAt(0).toUpperCase() + mode.slice(1));
}