MediaWiki:Common.js: Difference between revisions
From Hidden Mickey Wiki
No edit summary |
No edit summary |
||
| Line 33: | Line 33: | ||
}); | }); | ||
/* === Settings dropdown in mw-navbar-left === */ | |||
$(function () { | |||
// Avoid duplicates | |||
if ($('#mw-settings-dropdown').length) return; | |||
// Create container | |||
var $container = $('<div id="mw-settings-dropdown"></div>'); | |||
var $button = $('<button>Settings ▾</button>'); | |||
var $list = $('<ul></ul>'); | |||
// Add menu items | |||
var menuItems = [ | |||
{ title: 'Preferences', page: 'Special:Preferences' }, | |||
{ title: 'Watchlist', page: 'Special:Watchlist' } | |||
]; | |||
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 #mw-navbar-left | |||
var $navbar = $('#mw-navbar-left'); | |||
if ($navbar.length) { | |||
// Position at the far right | |||
$container.css({ | |||
display: 'inline-block', | |||
float: 'right', | |||
marginRight: '10px', | |||
position: 'relative' | |||
}); | |||
$navbar.append($container); | |||
} else { | |||
// fallback: append to body | |||
$container.css({ position: 'absolute', top: '10px', right: '10px' }); | |||
$('body').append($container); | |||
} | |||
// Toggle dropdown | |||
$button.on('click', function(e) { | |||
$list.toggle(); | |||
e.stopPropagation(); | |||
}); | |||
// Close dropdown on outside click | |||
$(document).on('click', function() { | |||
$list.hide(); | |||
}); | |||
$container.on('click', function(e) { | |||
e.stopPropagation(); | |||
}); | |||
}); | |||
Revision as of 15:38, 18 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
});
/* === Settings dropdown in mw-navbar-left === */
$(function () {
// Avoid duplicates
if ($('#mw-settings-dropdown').length) return;
// Create container
var $container = $('<div id="mw-settings-dropdown"></div>');
var $button = $('<button>Settings ▾</button>');
var $list = $('<ul></ul>');
// Add menu items
var menuItems = [
{ title: 'Preferences', page: 'Special:Preferences' },
{ title: 'Watchlist', page: 'Special:Watchlist' }
];
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 #mw-navbar-left
var $navbar = $('#mw-navbar-left');
if ($navbar.length) {
// Position at the far right
$container.css({
display: 'inline-block',
float: 'right',
marginRight: '10px',
position: 'relative'
});
$navbar.append($container);
} else {
// fallback: append to body
$container.css({ position: 'absolute', top: '10px', right: '10px' });
$('body').append($container);
}
// Toggle dropdown
$button.on('click', function(e) {
$list.toggle();
e.stopPropagation();
});
// Close dropdown on outside click
$(document).on('click', function() {
$list.hide();
});
$container.on('click', function(e) {
e.stopPropagation();
});
});