MediaWiki:Common.js: Difference between revisions

From Hidden Mickey Wiki

No edit summary
No edit summary
Line 45: Line 45:
     // Define menu items
     // Define menu items
     var menuItems = [
     var menuItems = [
    // Example: existing items
        { text: 'Main Page', href: mw.util.getUrl('Main_Page') },
         { title: 'Home', href: 'Disneyland' }
        { text: 'Sandbox', href: mw.util.getUrl('Sandbox') },
         { text: 'Help:Contents', href: mw.util.getUrl('Help:Contents') }
     ];
     ];
    menuItems.push({
        title: 'Edit Source',
        href: mw.util.getUrl(mw.util.getParamValue('title'), { action: 'edit' })
    });


     // Populate dropdown
     // Populate dropdown

Revision as of 17:23, 19 September 2025

/* Any JavaScript here will be loaded for all users on every page load. */
// JavaScript code to save checkbox state and restore it when the page loads
$(document).ready(function() {
    // Function to save the state of checkboxes to localStorage
    function saveCheckboxState() {
        $('input[type="checkbox"]').each(function() {
            localStorage.setItem($(this).attr('id'), $(this).prop('checked'));
        });
    }

    // Function to load the state of checkboxes from localStorage
    function loadCheckboxState() {
        $('input[type="checkbox"]').each(function() {
            const savedState = localStorage.getItem($(this).attr('id'));
            if (savedState !== null) {
                $(this).prop('checked', savedState === 'true');
            }
        });
    }

    // Load the saved checkbox state when the page is loaded
    loadCheckboxState();

    // Save the checkbox state whenever a checkbox is changed
    $('input[type="checkbox"]').change(function() {
        saveCheckboxState();
    });
});

// Adjust the search box width
$(document).ready(function () {
    $('#searchInput').css('width', '600px'); // Adjust width as needed
});

// "Where To" dropdown
$(function () {
    // Prevent duplicate
    if ($('#mw-settings-dropdown').length) return;

    // Create container
    var $container = $('<div id="mw-settings-dropdown"></div>');
    var $button = $('<button>Where To? ▾</button>');
    var $list = $('<ul></ul>');

    // Define menu items
    var menuItems = [
        { text: 'Main Page', href: mw.util.getUrl('Main_Page') },
        { text: 'Sandbox', href: mw.util.getUrl('Sandbox') },
        { text: 'Help:Contents', href: mw.util.getUrl('Help:Contents') }
    ];

    // Populate dropdown
    menuItems.forEach(function(item) {
        var $li = $('<li></li>');
        var $a = $('<a></a>').attr('href', mw.util.getUrl(item.page)).text(item.title);
        $li.append($a);
        $list.append($li);
    });

    $container.append($button).append($list);

    // Insert into navbar-right if exists
    var $navbar = $('#mw-navbar-right');
    if ($navbar.length) {
        // Prepend = place at far left of navbar-right
        $navbar.prepend($container);
    } else {
        // fallback: absolute top-right
        $container.css({ position: 'absolute', top: '10px', right: '10px' });
        $('body').append($container);
    }

    // Toggle dropdown
    $button.on('click', function(e) {
        $list.toggle();
        e.stopPropagation();
    });

    // Close dropdown when clicking outside
    $(document).on('click', function() {
        $list.hide();
    });

    $container.on('click', function(e) {
        e.stopPropagation();
    });
}); 

/* Add Edit Source to user dropdown
mw.loader.using('mediawiki.util', function () {
    // Add a new entry into the user dropdown
    mw.util.addPortletLink(
        'p-personal',                        // user menu ID
        mw.util.getUrl( mw.config.get('wgPageName'), { action: 'edit' } ), 
        'Edit Source',
        'pt-editsource'
    );
}); */

/* Drop down on the left
$(function() {
    // Find the site title container
    var $siteTitle = $('#p-logo');

    if ($siteTitle.length) {
        // Wrap the site title and dropdown in a flex container
        var $wrapper = $('<div>', { class: 'custom-title-wrapper' }).css({
            display: 'inline-flex',
            alignItems: 'center',
            gap: '10px' // spacing between title and menu
        });

        // Move the site title inside the wrapper
        $siteTitle.before($wrapper);
        $wrapper.append($siteTitle);

        // Create dropdown container
        var $leftDropdown = $('<div>', { class: 'custom-left-dropdown' }).css({
            position: 'relative'
        });

        // Create the button
        var $leftButton = $('<button>', {
            text: 'Menu ▼',
            class: 'custom-left-dropdown-btn'
        }).css({
            background: '#fff',
            border: '1px solid #ccc',
            padding: '3px 6px',
            cursor: 'pointer'
        });

        // Create the dropdown items
        var $leftMenu = $('<ul>', { class: 'custom-left-dropdown-menu' }).css({
            display: 'none',
            position: 'absolute',
            top: '100%',
            left: 0,
            background: '#fff',
            border: '1px solid #ccc',
            padding: 0,
            margin: 0,
            listStyle: 'none',
            zIndex: 1000,
            minWidth: '120px'
        });

        // Add items
        var leftItems = [
            { text: 'Home', href: '/' },
            { text: 'Recent changes', href: '/wiki/Special:RecentChanges' },
            { text: 'Random page', href: '/wiki/Special:Random' }
        ];

        leftItems.forEach(function(item) {
            var $li = $('<li>').css({ padding: '5px 10px' });
            var $a = $('<a>', { text: item.text, href: item.href }).css({ textDecoration: 'none', color: '#000' });
            $li.append($a);
            $leftMenu.append($li);
        });

        // Toggle menu on click
        $leftButton.on('click', function() {
            $leftMenu.toggle();
        });

        // Close if clicked outside
        $(document).on('click', function(e) {
            if (!$(e.target).closest($leftDropdown).length) {
                $leftMenu.hide();
            }
        });

        // Assemble dropdown and add to wrapper
        $leftDropdown.append($leftButton).append($leftMenu);
        $wrapper.append($leftDropdown);
    }
}); */