MediaWiki:Common.js: Difference between revisions

From Medalist Wiki
(toggle prayge)
 
No edit summary
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */
// MediaWiki:Common.js
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() {
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() {
    // Create toggle button in user menu
     $(function() {
     $(function() {
         var $toggleButton = $('<li id="content-toggle"><span>Toggle Content Mode</span></li>');
        // Create the toggle button with a more modern style matching your toolbar
        var $toggleMenu = $('<ul class="content-toggle-menu">' +
         var $toggleButton = $('<a id="content-toggle" class="mw-echo-notifications-badge">' +
            '<li data-mode="anime">Caught up to Anime</li>' +
             '<span>Content Mode</span>' +
             '<li data-mode="manga">Caught up to Manga</li>' +
             '</a>');
             '</ul>');
          
          
         $('#p-personal ul').append($toggleButton);
         var $toggleMenu = $('<div class="content-toggle-menu vector-menu-content">' +
        $toggleButton.append($toggleMenu);
            '<ul>' +
            '<li data-mode="anime"><a>Caught up to Anime</a></li>' +
            '<li data-mode="manga"><a>Caught up to Manga</a></li>' +
            '</ul>' +
            '</div>');
          
          
         // Get user's current preference from localStorage
        // Insert next to your other toolbar items
        $('.vector-user-links, #p-personal').append(
            $('<li class="mw-list-item" id="pt-content-toggle"></li>').append($toggleButton)
        );
        $toggleButton.after($toggleMenu);
       
         // Get user's current preference
         var currentMode = localStorage.getItem('contentMode') || 'anime';
         var currentMode = localStorage.getItem('contentMode') || 'anime';
         updateContentDisplay(currentMode);
         updateContentDisplay(currentMode);
Line 27: Line 34:


function updateContentDisplay(mode) {
function updateContentDisplay(mode) {
    // Hide all spoiler content first
     $('.manga-content, .anime-content').hide();
     $('.manga-content, .anime-content').hide();
      
      
    // Show content based on selected mode
     if (mode === 'manga') {
     if (mode === 'manga') {
         $('.manga-content, .anime-content').show();
         $('.manga-content, .anime-content').show();
Line 37: Line 42:
     }
     }
      
      
     // Update active state in menu
     // Update visual state in menu
     $('.content-toggle-menu li').removeClass('active');
     $('.content-toggle-menu li').removeClass('active');
     $('.content-toggle-menu li[data-mode="' + mode + '"]').addClass('active');
     $('.content-toggle-menu li[data-mode="' + mode + '"]').addClass('active');
   
    // Update button text to show current mode
    $('#content-toggle span').text('Mode: ' + (mode === 'manga' ? 'Manga' : 'Anime'));
}
}
// MediaWiki:Common.css
#content-toggle {
    position: relative;
    cursor: pointer;
}
.content-toggle-menu {
    display: none;
    position: absolute;
    background: #fff;
    border: 1px solid #a2a9b1;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
    z-index: 1000;
    padding: 5px 0;
    min-width: 160px;
}
#content-toggle:hover .content-toggle-menu {
    display: block;
}
.content-toggle-menu li {
    padding: 5px 15px;
    cursor: pointer;
}
.content-toggle-menu li:hover {
    background: #eaecf0;
}
.content-toggle-menu li.active {
    background: #36c;
    color: #fff;
}
/* Template for marking content */
<div class="manga-content">
This content is only visible when "Caught up to Manga" is selected
</div>
<div class="anime-content">
This content is visible to all users
</div>

Revision as of 17:53, 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 the toggle button with a more modern style matching your toolbar
        var $toggleButton = $('<a id="content-toggle" class="mw-echo-notifications-badge">' +
            '<span>Content Mode</span>' +
            '</a>');
        
        var $toggleMenu = $('<div class="content-toggle-menu vector-menu-content">' +
            '<ul>' +
            '<li data-mode="anime"><a>Caught up to Anime</a></li>' +
            '<li data-mode="manga"><a>Caught up to Manga</a></li>' +
            '</ul>' +
            '</div>');
        
        // Insert next to your other toolbar items
        $('.vector-user-links, #p-personal').append(
            $('<li class="mw-list-item" id="pt-content-toggle"></li>').append($toggleButton)
        );
        $toggleButton.after($toggleMenu);
        
        // Get user's current preference
        var currentMode = localStorage.getItem('contentMode') || 'anime';
        updateContentDisplay(currentMode);
        
        // Handle toggle clicks
        $('.content-toggle-menu li').on('click', function() {
            var mode = $(this).data('mode');
            localStorage.setItem('contentMode', mode);
            updateContentDisplay(mode);
        });
    });
});

function updateContentDisplay(mode) {
    $('.manga-content, .anime-content').hide();
    
    if (mode === 'manga') {
        $('.manga-content, .anime-content').show();
    } else {
        $('.anime-content').show();
    }
    
    // Update visual state in menu
    $('.content-toggle-menu li').removeClass('active');
    $('.content-toggle-menu li[data-mode="' + mode + '"]').addClass('active');
    
    // Update button text to show current mode
    $('#content-toggle span').text('Mode: ' + (mode === 'manga' ? 'Manga' : 'Anime'));
}