MediaWiki:Common.js
Jump to navigation
Jump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* ============================================
THEME TOGGLER
============================================ */
// 1. INSTANT EXECUTION (PREVENTS FLASH OF WRONG THEME)
// This runs the millisecond the script loads, before the body renders.
(function() {
var savedTheme = localStorage.getItem('mb-wiki-theme');
if (savedTheme === 'break') {
document.documentElement.classList.add('theme-break');
}
})();
// 2. DOM READY EXECUTION (UI BINDING)
$(function() {
var isBreak = document.documentElement.classList.contains('theme-break');
var $btn = $('<button>', {
id: 'theme-toggle',
class: 'floating-theme-toggle',
text: isBreak ? '✦ Switch to Mana' : '✦ Switch to Break',
title: 'Toggle Light/Dark Theme'
});
$('body').append($btn);
$btn.on('click', function() {
var $html = $('html');
if ($html.hasClass('theme-break')) {
// Switching to Mana (Light)
$html.removeClass('theme-break');
localStorage.setItem('mb-wiki-theme', 'mana');
$(this).text('✦ Switch to Break');
} else {
// Switching to Break (Dark)
$html.addClass('theme-break');
localStorage.setItem('mb-wiki-theme', 'break');
$(this).text('✦ Switch to Mana');
}
});
});
/* ============================================
TITTLE FIX
============================================ */
(function() {
// Only on main page
if (mw.config.get('wgPageName') !== 'Main_Page' &&
!window.location.href.includes('Main_Page')) return;
console.log('=== APPLYING EMERGENCY TITLE FIX ===');
// 1. IMMEDIATELY set the title
document.title = 'MB Wiki - The Official Wiki';
// 2. Override the heading
function fixHeading() {
var heading = document.querySelector('#firstHeading, h1.firstHeading, .mw-page-title-main');
if (heading) {
heading.textContent = 'MB Wiki - The Official Wiki';
heading.style.display = 'none';
heading.style.visibility = 'hidden';
} else {
// Create heading if it doesn't exist
var newHeading = document.createElement('h1');
newHeading.id = 'firstHeading';
newHeading.className = 'firstHeading';
newHeading.textContent = 'MB Wiki - The Official Wiki';
var content = document.querySelector('#content, .mw-body');
if (content) content.prepend(newHeading);
}
}
// 3. Run now and keep running
fixHeading();
setTimeout(fixHeading, 100);
setTimeout(fixHeading, 500);
setTimeout(fixHeading, 1000);
setTimeout(fixHeading, 2000);
// 4. Monitor and fix any time title changes
var lastTitle = document.title;
setInterval(function() {
if (document.title !== lastTitle &&
document.title.includes('Coral Island')) {
console.log('Title changed to wrong value, fixing...');
document.title = 'MB Wiki - The Official Wiki';
lastTitle = document.title;
fixHeading();
}
}, 500);
// 5. Also fix meta tags
function fixMetaTags() {
var metaTags = document.querySelectorAll('meta[property="og:title"], meta[name="twitter:title"]');
metaTags.forEach(function(tag) {
tag.setAttribute('content', 'MB Wiki - The Official Wiki');
});
}
fixMetaTags();
console.log('Emergency title fix applied');
})();/* ============================================
THEME TOGGLER
============================================ */
// 1. INSTANT EXECUTION (PREVENTS FLASH OF WRONG THEME)
// This runs the millisecond the script loads, before the body renders.
(function() {
var savedTheme = localStorage.getItem('mb-wiki-theme');
if (savedTheme === 'break') {
document.documentElement.classList.add('theme-break');
}
})();
// 2. DOM READY EXECUTION (UI BINDING)
$(function() {
var isBreak = document.documentElement.classList.contains('theme-break');
var $btn = $('<button>', {
id: 'theme-toggle',
class: 'floating-theme-toggle',
text: isBreak ? '✦ Switch to Mana' : '✦ Switch to Break',
title: 'Toggle Light/Dark Theme'
});
$('body').append($btn);
$btn.on('click', function() {
var $html = $('html');
if ($html.hasClass('theme-break')) {
// Switching to Mana (Light)
$html.removeClass('theme-break');
localStorage.setItem('mb-wiki-theme', 'mana');
$(this).text('✦ Switch to Break');
} else {
// Switching to Break (Dark)
$html.addClass('theme-break');
localStorage.setItem('mb-wiki-theme', 'break');
$(this).text('✦ Switch to Mana');
}
});
});
/* ============================================
TITTLE FIX
============================================ */
(function() {
// Only on main page
if (mw.config.get('wgPageName') !== 'Main_Page' &&
!window.location.href.includes('Main_Page')) return;
console.log('=== APPLYING EMERGENCY TITLE FIX ===');
// 1. IMMEDIATELY set the title
document.title = 'MB Wiki - The Official Wiki';
// 2. Override the heading
function fixHeading() {
var heading = document.querySelector('#firstHeading, h1.firstHeading, .mw-page-title-main');
if (heading) {
heading.textContent = 'MB Wiki - The Official Wiki';
heading.style.display = 'none';
heading.style.visibility = 'hidden';
} else {
// Create heading if it doesn't exist
var newHeading = document.createElement('h1');
newHeading.id = 'firstHeading';
newHeading.className = 'firstHeading';
newHeading.textContent = 'MB Wiki - The Official Wiki';
var content = document.querySelector('#content, .mw-body');
if (content) content.prepend(newHeading);
}
}
// 3. Run now and keep running
fixHeading();
setTimeout(fixHeading, 100);
setTimeout(fixHeading, 500);
setTimeout(fixHeading, 1000);
setTimeout(fixHeading, 2000);
// 4. Monitor and fix any time title changes
var lastTitle = document.title;
setInterval(function() {
if (document.title !== lastTitle &&
document.title.includes('Coral Island')) {
console.log('Title changed to wrong value, fixing...');
document.title = 'MB Wiki - The Official Wiki';
lastTitle = document.title;
fixHeading();
}
}, 500);
// 5. Also fix meta tags
function fixMetaTags() {
var metaTags = document.querySelectorAll('meta[property="og:title"], meta[name="twitter:title"]');
metaTags.forEach(function(tag) {
tag.setAttribute('content', 'MB Wiki - The Official Wiki');
});
}
fixMetaTags();
console.log('Emergency title fix applied');
})();